blob: bb7dc3caacd4ae2533040e11e4add35c63ead51a [file] [log] [blame]
#pragma once
#include "types.hpp"
#include <sdbusplus/bus/match.hpp>
#include <bitset>
namespace phosphor::power::psu
{
/**
* @class UtilBase
* A base class to allow for mocking certain utility functions.
*/
class UtilBase
{
public:
virtual ~UtilBase() = default;
virtual bool getPresence(sdbusplus::bus::bus& bus,
const std::string& invpath) const = 0;
virtual void setPresence(sdbusplus::bus::bus& bus,
const std::string& invpath, bool present,
const std::string& name) const = 0;
virtual void setAvailable(sdbusplus::bus::bus& bus,
const std::string& invpath,
bool available) const = 0;
};
const UtilBase& getUtils();
inline bool getPresence(sdbusplus::bus::bus& bus, const std::string& invpath)
{
return getUtils().getPresence(bus, invpath);
}
inline void setPresence(sdbusplus::bus::bus& bus, const std::string& invpath,
bool present, const std::string& name)
{
return getUtils().setPresence(bus, invpath, present, name);
}
inline void setAvailable(sdbusplus::bus::bus& bus, const std::string& invpath,
bool available)
{
getUtils().setAvailable(bus, invpath, available);
}
class GPIOInterfaceBase
{
public:
virtual ~GPIOInterfaceBase() = default;
virtual int read() = 0;
virtual void write(int value, std::bitset<32> flags) = 0;
virtual std::string getName() const = 0;
};
} // namespace phosphor::power::psu