13f1242f3SBrandon Wyman #pragma once
23f1242f3SBrandon Wyman
33f1242f3SBrandon Wyman #include "types.hpp"
43f1242f3SBrandon Wyman
53f1242f3SBrandon Wyman #include <sdbusplus/bus/match.hpp>
63f1242f3SBrandon Wyman
752245b69SAdriana Kobylak #include <bitset>
818a24d92SBrandon Wyman #include <chrono>
952245b69SAdriana Kobylak
103f1242f3SBrandon Wyman namespace phosphor::power::psu
113f1242f3SBrandon Wyman {
123f1242f3SBrandon Wyman
133f1242f3SBrandon Wyman /**
143f1242f3SBrandon Wyman * @class UtilBase
153f1242f3SBrandon Wyman * A base class to allow for mocking certain utility functions.
163f1242f3SBrandon Wyman */
173f1242f3SBrandon Wyman class UtilBase
183f1242f3SBrandon Wyman {
193f1242f3SBrandon Wyman public:
203f1242f3SBrandon Wyman virtual ~UtilBase() = default;
213f1242f3SBrandon Wyman
227354ce62SPatrick Williams virtual bool getPresence(sdbusplus::bus_t& bus,
233f1242f3SBrandon Wyman const std::string& invpath) const = 0;
24681b2a36SB. J. Wyman
257354ce62SPatrick Williams virtual void setPresence(sdbusplus::bus_t& bus, const std::string& invpath,
267354ce62SPatrick Williams bool present, const std::string& name) const = 0;
270975eaf4SMatt Spinler
287354ce62SPatrick Williams virtual void setAvailable(sdbusplus::bus_t& bus, const std::string& invpath,
290975eaf4SMatt Spinler bool available) const = 0;
30ca1e9ea1SMatt Spinler
317354ce62SPatrick Williams virtual void handleChassisHealthRollup(sdbusplus::bus_t& bus,
32ca1e9ea1SMatt Spinler const std::string& invpath,
33ca1e9ea1SMatt Spinler bool addRollup) const = 0;
34592bd27cSMatt Spinler
35592bd27cSMatt Spinler virtual std::string getChassis(sdbusplus::bus_t& /*bus*/,
36592bd27cSMatt Spinler const std::string& /*invpath*/) const = 0;
373f1242f3SBrandon Wyman };
383f1242f3SBrandon Wyman
393f1242f3SBrandon Wyman const UtilBase& getUtils();
403f1242f3SBrandon Wyman
getPresence(sdbusplus::bus_t & bus,const std::string & invpath)417354ce62SPatrick Williams inline bool getPresence(sdbusplus::bus_t& bus, const std::string& invpath)
423f1242f3SBrandon Wyman {
433f1242f3SBrandon Wyman return getUtils().getPresence(bus, invpath);
443f1242f3SBrandon Wyman }
453f1242f3SBrandon Wyman
setPresence(sdbusplus::bus_t & bus,const std::string & invpath,bool present,const std::string & name)467354ce62SPatrick Williams inline void setPresence(sdbusplus::bus_t& bus, const std::string& invpath,
47681b2a36SB. J. Wyman bool present, const std::string& name)
48681b2a36SB. J. Wyman {
49681b2a36SB. J. Wyman return getUtils().setPresence(bus, invpath, present, name);
50681b2a36SB. J. Wyman }
51681b2a36SB. J. Wyman
setAvailable(sdbusplus::bus_t & bus,const std::string & invpath,bool available)527354ce62SPatrick Williams inline void setAvailable(sdbusplus::bus_t& bus, const std::string& invpath,
530975eaf4SMatt Spinler bool available)
540975eaf4SMatt Spinler {
550975eaf4SMatt Spinler getUtils().setAvailable(bus, invpath, available);
560975eaf4SMatt Spinler }
570975eaf4SMatt Spinler
handleChassisHealthRollup(sdbusplus::bus_t & bus,const std::string & invpath,bool addRollup)58*f5402197SPatrick Williams inline void handleChassisHealthRollup(
59*f5402197SPatrick Williams sdbusplus::bus_t& bus, const std::string& invpath, bool addRollup)
60ca1e9ea1SMatt Spinler {
61ca1e9ea1SMatt Spinler getUtils().handleChassisHealthRollup(bus, invpath, addRollup);
62ca1e9ea1SMatt Spinler }
63ca1e9ea1SMatt Spinler
getChassis(sdbusplus::bus_t & bus,const std::string & invpath)64592bd27cSMatt Spinler inline std::string getChassis(sdbusplus::bus_t& bus, const std::string& invpath)
65592bd27cSMatt Spinler {
66592bd27cSMatt Spinler return getUtils().getChassis(bus, invpath);
67592bd27cSMatt Spinler }
68592bd27cSMatt Spinler
693ca062aeSAdriana Kobylak class GPIOInterfaceBase
70681b2a36SB. J. Wyman {
71681b2a36SB. J. Wyman public:
723ca062aeSAdriana Kobylak virtual ~GPIOInterfaceBase() = default;
73681b2a36SB. J. Wyman
74681b2a36SB. J. Wyman virtual int read() = 0;
7552245b69SAdriana Kobylak virtual void write(int value, std::bitset<32> flags) = 0;
7618a24d92SBrandon Wyman virtual void toggleLowHigh(const std::chrono::milliseconds& delay) = 0;
77d8b8cb15SB. J. Wyman virtual std::string getName() const = 0;
78681b2a36SB. J. Wyman };
79681b2a36SB. J. Wyman
803f1242f3SBrandon Wyman } // namespace phosphor::power::psu
81