xref: /openbmc/entity-manager/src/entity_manager/power_status_monitor.hpp (revision 0ab32b3ff6a89e752350befe1821b36e6edc7d04)
1*0ab32b3fSAlexander Hansen #pragma once
2*0ab32b3fSAlexander Hansen 
3*0ab32b3fSAlexander Hansen #include <sdbusplus/asio/connection.hpp>
4*0ab32b3fSAlexander Hansen #include <sdbusplus/bus/match.hpp>
5*0ab32b3fSAlexander Hansen 
6*0ab32b3fSAlexander Hansen namespace power
7*0ab32b3fSAlexander Hansen {
8*0ab32b3fSAlexander Hansen 
9*0ab32b3fSAlexander Hansen const static constexpr char* busname = "xyz.openbmc_project.State.Host";
10*0ab32b3fSAlexander Hansen const static constexpr char* interface = "xyz.openbmc_project.State.Host";
11*0ab32b3fSAlexander Hansen const static constexpr char* path = "/xyz/openbmc_project/state/host0";
12*0ab32b3fSAlexander Hansen const static constexpr char* property = "CurrentHostState";
13*0ab32b3fSAlexander Hansen 
14*0ab32b3fSAlexander Hansen class PowerStatusMonitor
15*0ab32b3fSAlexander Hansen {
16*0ab32b3fSAlexander Hansen   public:
17*0ab32b3fSAlexander Hansen     bool isPowerOn();
18*0ab32b3fSAlexander Hansen     void setupPowerMatch(
19*0ab32b3fSAlexander Hansen         const std::shared_ptr<sdbusplus::asio::connection>& conn);
20*0ab32b3fSAlexander Hansen 
21*0ab32b3fSAlexander Hansen   private:
22*0ab32b3fSAlexander Hansen     bool powerStatusOn = false;
23*0ab32b3fSAlexander Hansen     std::unique_ptr<sdbusplus::bus::match_t> powerMatch = nullptr;
24*0ab32b3fSAlexander Hansen };
25*0ab32b3fSAlexander Hansen 
26*0ab32b3fSAlexander Hansen } // namespace power
27