xref: /openbmc/phosphor-bmc-code-mgmt/common/include/host_power.hpp (revision 1e833b44adc839829187ed04db62dd995633fb68)
1 #pragma once
2 
3 #include <sdbusplus/async/context.hpp>
4 #include <sdbusplus/async/match.hpp>
5 #include <xyz/openbmc_project/State/Host/client.hpp>
6 
7 namespace phosphor::software::host_power
8 {
9 
10 const auto stateOn =
11     sdbusplus::client::xyz::openbmc_project::state::Host<>::HostState::Running;
12 const auto stateOff =
13     sdbusplus::client::xyz::openbmc_project::state::Host<>::HostState::Off;
14 
15 using HostState =
16     sdbusplus::client::xyz::openbmc_project::state::Host<>::HostState;
17 
18 class HostPower
19 {
20   public:
21     HostPower(sdbusplus::async::context& ctx);
22 
23     // @param state   desired powerstate
24     // @returns       true on success
25     static sdbusplus::async::task<bool> setState(sdbusplus::async::context& ctx,
26                                                  HostState state);
27 
28     // @returns       host powerstate
29     static sdbusplus::async::task<HostState> getState(
30         sdbusplus::async::context& ctx);
31 
32     sdbusplus::async::match stateChangedMatch;
33 };
34 
35 }; // namespace phosphor::software::host_power
36