Use pgood signal to keep internal state updated

Change-Id: I35a2e67afc877488ceb1a0e0255b99b9db792201
Signed-off-by: Andrew Geissler <andrewg@us.ibm.com>
diff --git a/chassis_state_manager.cpp b/chassis_state_manager.cpp
index 91a35d0..a2b6dbf 100644
--- a/chassis_state_manager.cpp
+++ b/chassis_state_manager.cpp
@@ -13,6 +13,31 @@
 
 using namespace phosphor::logging;
 
+/* TODO:Issue 774 - Use systemd target signals to control chassis state */
+int Chassis::handlePgoodOn(sd_bus_message* /*msg*/, void* usrData,
+                           sd_bus_error* retError)
+{
+    log<level::INFO>("Pgood has turned on",
+                     entry("CHASSIS_CURRENT_POWER_STATE=%s",
+                           convertForMessage(PowerState::On).c_str()));
+    auto chassisInst = static_cast<Chassis*>(usrData);
+    chassisInst->currentPowerState(PowerState::On);
+
+    return 0;
+}
+
+int Chassis::handlePgoodOff(sd_bus_message* /*msg*/, void* usrData,
+                           sd_bus_error* retError)
+{
+    log<level::INFO>("Pgood has turned off",
+                     entry("CHASSIS_CURRENT_POWER_STATE=%s",
+                           convertForMessage(PowerState::Off).c_str()));
+    auto chassisInst = static_cast<Chassis*>(usrData);
+    chassisInst->currentPowerState(PowerState::Off);
+
+    return 0;
+}
+
 // TODO - Will be rewritten once sdbusplus client bindings are in place
 //        and persistent storage design is in place and sdbusplus
 //        has read property function