summaryrefslogtreecommitdiffstats
path: root/chassis_state_manager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'chassis_state_manager.cpp')
-rw-r--r--chassis_state_manager.cpp88
1 files changed, 39 insertions, 49 deletions
diff --git a/chassis_state_manager.cpp b/chassis_state_manager.cpp
index 9c771bd..ece0b1c 100644
--- a/chassis_state_manager.cpp
+++ b/chassis_state_manager.cpp
@@ -15,22 +15,22 @@ namespace server = sdbusplus::xyz::openbmc_project::State::server;
using namespace phosphor::logging;
constexpr auto CHASSIS_STATE_POWEROFF_TGT = "obmc-chassis-poweroff@0.target";
-constexpr auto CHASSIS_STATE_HARD_POWEROFF_TGT = "obmc-chassis-hard-poweroff@0.target";
+constexpr auto CHASSIS_STATE_HARD_POWEROFF_TGT =
+ "obmc-chassis-hard-poweroff@0.target";
constexpr auto CHASSIS_STATE_POWERON_TGT = "obmc-chassis-poweron@0.target";
constexpr auto ACTIVE_STATE = "active";
constexpr auto ACTIVATING_STATE = "activating";
/* Map a transition to it's systemd target */
-const std::map<server::Chassis::Transition,std::string> SYSTEMD_TARGET_TABLE =
-{
+const std::map<server::Chassis::Transition, std::string> SYSTEMD_TARGET_TABLE =
+ {
// Use the hard off target to ensure we shutdown immediately
{server::Chassis::Transition::Off, CHASSIS_STATE_HARD_POWEROFF_TGT},
- {server::Chassis::Transition::On, CHASSIS_STATE_POWERON_TGT}
-};
+ {server::Chassis::Transition::On, CHASSIS_STATE_POWERON_TGT}};
-constexpr auto SYSTEMD_SERVICE = "org.freedesktop.systemd1";
-constexpr auto SYSTEMD_OBJ_PATH = "/org/freedesktop/systemd1";
+constexpr auto SYSTEMD_SERVICE = "org.freedesktop.systemd1";
+constexpr auto SYSTEMD_OBJ_PATH = "/org/freedesktop/systemd1";
constexpr auto SYSTEMD_INTERFACE = "org.freedesktop.systemd1.Manager";
constexpr auto SYSTEMD_PROPERTY_IFACE = "org.freedesktop.DBus.Properties";
@@ -38,10 +38,8 @@ constexpr auto SYSTEMD_INTERFACE_UNIT = "org.freedesktop.systemd1.Unit";
void Chassis::subscribeToSystemdSignals()
{
- auto method = this->bus.new_method_call(SYSTEMD_SERVICE,
- SYSTEMD_OBJ_PATH,
- SYSTEMD_INTERFACE,
- "Subscribe");
+ auto method = this->bus.new_method_call(SYSTEMD_SERVICE, SYSTEMD_OBJ_PATH,
+ SYSTEMD_INTERFACE, "Subscribe");
this->bus.call_noreply(method);
return;
@@ -53,16 +51,15 @@ void Chassis::subscribeToSystemdSignals()
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");
+ 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)
+ if (pgood == 1)
{
log<level::INFO>("Initial Chassis State will be On",
entry("CHASSIS_CURRENT_POWER_STATE=%s",
@@ -86,10 +83,8 @@ void Chassis::executeTransition(Transition tranReq)
{
auto sysdTarget = SYSTEMD_TARGET_TABLE.find(tranReq)->second;
- auto method = this->bus.new_method_call(SYSTEMD_SERVICE,
- SYSTEMD_OBJ_PATH,
- SYSTEMD_INTERFACE,
- "StartUnit");
+ auto method = this->bus.new_method_call(SYSTEMD_SERVICE, SYSTEMD_OBJ_PATH,
+ SYSTEMD_INTERFACE, "StartUnit");
method.append(sysdTarget);
method.append("replace");
@@ -104,16 +99,14 @@ bool Chassis::stateActive(const std::string& target)
sdbusplus::message::variant<std::string> currentState;
sdbusplus::message::object_path unitTargetPath;
- auto method = this->bus.new_method_call(SYSTEMD_SERVICE,
- SYSTEMD_OBJ_PATH,
- SYSTEMD_INTERFACE,
- "GetUnit");
+ auto method = this->bus.new_method_call(SYSTEMD_SERVICE, SYSTEMD_OBJ_PATH,
+ SYSTEMD_INTERFACE, "GetUnit");
method.append(target);
auto result = this->bus.call(method);
- //Check that the bus call didn't result in an error
- if(result.is_method_error())
+ // Check that the bus call didn't result in an error
+ if (result.is_method_error())
{
log<level::ERR>("Error in bus call - could not resolve GetUnit for:",
entry(" %s", SYSTEMD_INTERFACE));
@@ -122,17 +115,16 @@ bool Chassis::stateActive(const std::string& target)
result.read(unitTargetPath);
- method = this->bus.new_method_call(SYSTEMD_SERVICE,
- static_cast<const std::string&>
- (unitTargetPath).c_str(),
- SYSTEMD_PROPERTY_IFACE,
- "Get");
+ method = this->bus.new_method_call(
+ SYSTEMD_SERVICE,
+ static_cast<const std::string&>(unitTargetPath).c_str(),
+ SYSTEMD_PROPERTY_IFACE, "Get");
method.append(SYSTEMD_INTERFACE_UNIT, "ActiveState");
result = this->bus.call(method);
- //Check that the bus call didn't result in an error
- if(result.is_method_error())
+ // Check that the bus call didn't result in an error
+ if (result.is_method_error())
{
log<level::ERR>("Error in bus call - could not resolve Get for:",
entry(" %s", SYSTEMD_PROPERTY_IFACE));
@@ -141,40 +133,38 @@ bool Chassis::stateActive(const std::string& target)
result.read(currentState);
- if(currentState != ACTIVE_STATE && currentState != ACTIVATING_STATE)
+ if (currentState != ACTIVE_STATE && currentState != ACTIVATING_STATE)
{
- //False - not active
+ // False - not active
return false;
}
- //True - active
+ // True - active
return true;
-
}
int Chassis::sysStateChange(sdbusplus::message::message& msg)
{
- uint32_t newStateID {};
+ uint32_t newStateID{};
sdbusplus::message::object_path newStateObjPath;
std::string newStateUnit{};
std::string newStateResult{};
- //Read the msg and populate each variable
+ // Read the msg and populate each variable
msg.read(newStateID, newStateObjPath, newStateUnit, newStateResult);
- if((newStateUnit == CHASSIS_STATE_POWEROFF_TGT) &&
- (newStateResult == "done") &&
- (!stateActive(CHASSIS_STATE_POWERON_TGT)))
+ if ((newStateUnit == CHASSIS_STATE_POWEROFF_TGT) &&
+ (newStateResult == "done") && (!stateActive(CHASSIS_STATE_POWERON_TGT)))
{
log<level::INFO>("Received signal that power OFF is complete");
this->currentPowerState(server::Chassis::PowerState::Off);
}
- else if((newStateUnit == CHASSIS_STATE_POWERON_TGT) &&
- (newStateResult == "done") &&
- (stateActive(CHASSIS_STATE_POWERON_TGT)))
- {
- log<level::INFO>("Received signal that power ON is complete");
- this->currentPowerState(server::Chassis::PowerState::On);
- }
+ else if ((newStateUnit == CHASSIS_STATE_POWERON_TGT) &&
+ (newStateResult == "done") &&
+ (stateActive(CHASSIS_STATE_POWERON_TGT)))
+ {
+ log<level::INFO>("Received signal that power ON is complete");
+ this->currentPowerState(server::Chassis::PowerState::On);
+ }
return 0;
}
OpenPOWER on IntegriCloud