blob: 91a35d07b15246f5bc5eb137da93cfef42a2706d [file] [log] [blame]
Andrew Geisslera90a31a2016-12-13 16:16:28 -06001#include <log.hpp>
2#include "chassis_state_manager.hpp"
3
4namespace phosphor
5{
6namespace state
7{
8namespace manager
9{
10
11// When you see server:: you know we're referencing our base class
12namespace server = sdbusplus::xyz::openbmc_project::State::server;
13
14using namespace phosphor::logging;
15
Andrew Geisslerdff50ed2016-12-13 20:39:04 -060016// TODO - Will be rewritten once sdbusplus client bindings are in place
17// and persistent storage design is in place and sdbusplus
18// has read property function
19void Chassis::determineInitialState()
20{
21 sdbusplus::message::variant<int> pgood = -1;
22 auto method = this->bus.new_method_call("org.openbmc.control.Power",
23 "/org/openbmc/control/power0",
24 "org.freedesktop.DBus.Properties",
25 "Get");
26
27 method.append("org.openbmc.control.Power", "pgood");
28 auto reply = this->bus.call(method);
29 reply.read(pgood);
30
31 if(pgood == 1)
32 {
33 log<level::INFO>("Initial Chassis State will be On",
34 entry("CHASSIS_CURRENT_POWER_STATE=%s",
35 convertForMessage(PowerState::On).c_str()));
36 server::Chassis::currentPowerState(PowerState::On);
37 server::Chassis::requestedPowerTransition(Transition::On);
38 }
39 else
40 {
41 log<level::INFO>("Initial Chassis State will be Off",
42 entry("CHASSIS_CURRENT_POWER_STATE=%s",
43 convertForMessage(PowerState::Off).c_str()));
44 server::Chassis::currentPowerState(PowerState::Off);
45 server::Chassis::requestedPowerTransition(Transition::Off);
46 }
47
48 return;
49}
50
Andrew Geisslera90a31a2016-12-13 16:16:28 -060051Chassis::Transition Chassis::requestedPowerTransition(Transition value)
52{
53
54 log<level::INFO>("Change to Chassis Requested Power State",
55 entry("CHASSIS_REQUESTED_POWER_STATE=%s",
56 convertForMessage(value).c_str()));
57 return server::Chassis::requestedPowerTransition(value);
58}
59
60Chassis::PowerState Chassis::currentPowerState(PowerState value)
61{
62 log<level::INFO>("Change to Chassis Power State",
63 entry("CHASSIS_CURRENT_POWER_STATE=%s",
64 convertForMessage(value).c_str()));
65 return server::Chassis::currentPowerState(value);
66}
67
68} // namespace manager
69} // namespace state
70} // namepsace phosphor