1 #pragma once 2 3 #include "types.hpp" 4 5 #include <sdbusplus/bus/match.hpp> 6 7 #include <bitset> 8 #include <chrono> 9 10 namespace phosphor::power::psu 11 { 12 13 /** 14 * @class UtilBase 15 * A base class to allow for mocking certain utility functions. 16 */ 17 class UtilBase 18 { 19 public: 20 virtual ~UtilBase() = default; 21 22 virtual bool getPresence(sdbusplus::bus_t& bus, 23 const std::string& invpath) const = 0; 24 25 virtual void setPresence(sdbusplus::bus_t& bus, const std::string& invpath, 26 bool present, const std::string& name) const = 0; 27 28 virtual void setAvailable(sdbusplus::bus_t& bus, const std::string& invpath, 29 bool available) const = 0; 30 31 virtual void handleChassisHealthRollup(sdbusplus::bus_t& bus, 32 const std::string& invpath, 33 bool addRollup) const = 0; 34 35 virtual std::string getChassis(sdbusplus::bus_t& /*bus*/, 36 const std::string& /*invpath*/) const = 0; 37 }; 38 39 const UtilBase& getUtils(); 40 41 inline bool getPresence(sdbusplus::bus_t& bus, const std::string& invpath) 42 { 43 return getUtils().getPresence(bus, invpath); 44 } 45 46 inline void setPresence(sdbusplus::bus_t& bus, const std::string& invpath, 47 bool present, const std::string& name) 48 { 49 return getUtils().setPresence(bus, invpath, present, name); 50 } 51 52 inline void setAvailable(sdbusplus::bus_t& bus, const std::string& invpath, 53 bool available) 54 { 55 getUtils().setAvailable(bus, invpath, available); 56 } 57 58 inline void handleChassisHealthRollup(sdbusplus::bus_t& bus, 59 const std::string& invpath, 60 bool addRollup) 61 { 62 getUtils().handleChassisHealthRollup(bus, invpath, addRollup); 63 } 64 65 inline std::string getChassis(sdbusplus::bus_t& bus, const std::string& invpath) 66 { 67 return getUtils().getChassis(bus, invpath); 68 } 69 70 class GPIOInterfaceBase 71 { 72 public: 73 virtual ~GPIOInterfaceBase() = default; 74 75 virtual int read() = 0; 76 virtual void write(int value, std::bitset<32> flags) = 0; 77 virtual void toggleLowHigh(const std::chrono::milliseconds& delay) = 0; 78 virtual std::string getName() const = 0; 79 }; 80 81 } // namespace phosphor::power::psu 82