Determine chassis power state on application startup
Change-Id: I406b2a6c7af1e4c26af0e43a432a130c967d84bc
Signed-off-by: Andrew Geissler <andrewg@us.ibm.com>
diff --git a/chassis_state_manager.cpp b/chassis_state_manager.cpp
index c146087..91a35d0 100644
--- a/chassis_state_manager.cpp
+++ b/chassis_state_manager.cpp
@@ -13,6 +13,41 @@
using namespace phosphor::logging;
+// TODO - Will be rewritten once sdbusplus client bindings are in place
+// and persistent storage design is in place and sdbusplus
+// has read property function
+void Chassis::determineInitialState()
+{
+ sdbusplus::message::variant<int> pgood = -1;
+ auto method = this->bus.new_method_call("org.openbmc.control.Power",
+ "/org/openbmc/control/power0",
+ "org.freedesktop.DBus.Properties",
+ "Get");
+
+ method.append("org.openbmc.control.Power", "pgood");
+ auto reply = this->bus.call(method);
+ reply.read(pgood);
+
+ if(pgood == 1)
+ {
+ log<level::INFO>("Initial Chassis State will be On",
+ entry("CHASSIS_CURRENT_POWER_STATE=%s",
+ convertForMessage(PowerState::On).c_str()));
+ server::Chassis::currentPowerState(PowerState::On);
+ server::Chassis::requestedPowerTransition(Transition::On);
+ }
+ else
+ {
+ log<level::INFO>("Initial Chassis State will be Off",
+ entry("CHASSIS_CURRENT_POWER_STATE=%s",
+ convertForMessage(PowerState::Off).c_str()));
+ server::Chassis::currentPowerState(PowerState::Off);
+ server::Chassis::requestedPowerTransition(Transition::Off);
+ }
+
+ return;
+}
+
Chassis::Transition Chassis::requestedPowerTransition(Transition value)
{