blob: 576a965c59274d466c08bfecb5b419a955056b53 [file] [log] [blame]
Brandon Wyman3f1242f2020-01-28 13:11:25 -06001#pragma once
2
3#include "types.hpp"
4
5#include <sdbusplus/bus/match.hpp>
6
Adriana Kobylak52245b62021-09-13 15:46:21 +00007#include <bitset>
8
Brandon Wyman3f1242f2020-01-28 13:11:25 -06009namespace phosphor::power::psu
10{
11
12/**
13 * @class UtilBase
14 * A base class to allow for mocking certain utility functions.
15 */
16class UtilBase
17{
18 public:
19 virtual ~UtilBase() = default;
20
21 virtual bool getPresence(sdbusplus::bus::bus& bus,
22 const std::string& invpath) const = 0;
B. J. Wyman681b2a32021-04-20 22:31:22 +000023
24 virtual void setPresence(sdbusplus::bus::bus& bus,
25 const std::string& invpath, bool present,
26 const std::string& name) const = 0;
Matt Spinler0975eaf2022-02-14 15:38:30 -060027
28 virtual void setAvailable(sdbusplus::bus::bus& bus,
29 const std::string& invpath,
30 bool available) const = 0;
Matt Spinlerca1e9ea2022-02-18 14:03:08 -060031
32 virtual void handleChassisHealthRollup(sdbusplus::bus::bus& bus,
33 const std::string& invpath,
34 bool addRollup) const = 0;
Brandon Wyman3f1242f2020-01-28 13:11:25 -060035};
36
37const UtilBase& getUtils();
38
39inline bool getPresence(sdbusplus::bus::bus& bus, const std::string& invpath)
40{
41 return getUtils().getPresence(bus, invpath);
42}
43
B. J. Wyman681b2a32021-04-20 22:31:22 +000044inline void setPresence(sdbusplus::bus::bus& bus, const std::string& invpath,
45 bool present, const std::string& name)
46{
47 return getUtils().setPresence(bus, invpath, present, name);
48}
49
Matt Spinler0975eaf2022-02-14 15:38:30 -060050inline void setAvailable(sdbusplus::bus::bus& bus, const std::string& invpath,
51 bool available)
52{
53 getUtils().setAvailable(bus, invpath, available);
54}
55
Matt Spinlerca1e9ea2022-02-18 14:03:08 -060056inline void handleChassisHealthRollup(sdbusplus::bus::bus& bus,
57 const std::string& invpath,
58 bool addRollup)
59{
60 getUtils().handleChassisHealthRollup(bus, invpath, addRollup);
61}
62
Adriana Kobylak3ca062a2021-10-20 15:27:23 +000063class GPIOInterfaceBase
B. J. Wyman681b2a32021-04-20 22:31:22 +000064{
65 public:
Adriana Kobylak3ca062a2021-10-20 15:27:23 +000066 virtual ~GPIOInterfaceBase() = default;
B. J. Wyman681b2a32021-04-20 22:31:22 +000067
68 virtual int read() = 0;
Adriana Kobylak52245b62021-09-13 15:46:21 +000069 virtual void write(int value, std::bitset<32> flags) = 0;
B. J. Wymand8b8cb12021-07-15 22:03:34 +000070 virtual std::string getName() const = 0;
B. J. Wyman681b2a32021-04-20 22:31:22 +000071};
72
Brandon Wyman3f1242f2020-01-28 13:11:25 -060073} // namespace phosphor::power::psu