| #pragma once |
| |
| #include "types.hpp" |
| |
| #include <sdbusplus/bus/match.hpp> |
| |
| #include <bitset> |
| #include <chrono> |
| |
| 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_t& bus, |
| const std::string& invpath) const = 0; |
| |
| virtual void setPresence(sdbusplus::bus_t& bus, const std::string& invpath, |
| bool present, const std::string& name) const = 0; |
| |
| virtual void setAvailable(sdbusplus::bus_t& bus, const std::string& invpath, |
| bool available) const = 0; |
| |
| virtual void handleChassisHealthRollup(sdbusplus::bus_t& bus, |
| const std::string& invpath, |
| bool addRollup) const = 0; |
| }; |
| |
| const UtilBase& getUtils(); |
| |
| inline bool getPresence(sdbusplus::bus_t& bus, const std::string& invpath) |
| { |
| return getUtils().getPresence(bus, invpath); |
| } |
| |
| inline void setPresence(sdbusplus::bus_t& bus, const std::string& invpath, |
| bool present, const std::string& name) |
| { |
| return getUtils().setPresence(bus, invpath, present, name); |
| } |
| |
| inline void setAvailable(sdbusplus::bus_t& bus, const std::string& invpath, |
| bool available) |
| { |
| getUtils().setAvailable(bus, invpath, available); |
| } |
| |
| inline void handleChassisHealthRollup(sdbusplus::bus_t& bus, |
| const std::string& invpath, |
| bool addRollup) |
| { |
| getUtils().handleChassisHealthRollup(bus, invpath, addRollup); |
| } |
| |
| class GPIOInterfaceBase |
| { |
| public: |
| virtual ~GPIOInterfaceBase() = default; |
| |
| virtual int read() = 0; |
| virtual void write(int value, std::bitset<32> flags) = 0; |
| virtual void toggleLowHigh(const std::chrono::milliseconds& delay) = 0; |
| virtual std::string getName() const = 0; |
| }; |
| |
| } // namespace phosphor::power::psu |