Factor out getPowerState() helper function
This same pattern had been open-coded in many of the sensor daemons;
let's reduce the duplication a bit.
Signed-off-by: Zev Weiss <zev@bewilderbeest.net>
Change-Id: I8556af30fdcd53cdf06e5a4911f9152d3265c7af
diff --git a/include/Utils.hpp b/include/Utils.hpp
index 92a8b6f..b823e5b 100644
--- a/include/Utils.hpp
+++ b/include/Utils.hpp
@@ -170,6 +170,19 @@
}
}
+inline PowerState getPowerState(const SensorBaseConfigMap& cfg)
+{
+ PowerState state = PowerState::always;
+ auto findPowerState = cfg.find("PowerState");
+ if (findPowerState != cfg.end())
+ {
+ std::string powerState =
+ std::visit(VariantToStringVisitor(), findPowerState->second);
+ setReadState(powerState, state);
+ }
+ return state;
+}
+
inline void setLed(const std::shared_ptr<sdbusplus::asio::connection>& conn,
const std::string& name, bool on)
{
diff --git a/src/ADCSensorMain.cpp b/src/ADCSensorMain.cpp
index cec0984..fe8334d 100644
--- a/src/ADCSensorMain.cpp
+++ b/src/ADCSensorMain.cpp
@@ -253,14 +253,7 @@
}
}
- auto findPowerOn = baseConfiguration->second.find("PowerState");
- PowerState readState = PowerState::always;
- if (findPowerOn != baseConfiguration->second.end())
- {
- std::string powerState =
- std::visit(VariantToStringVisitor(), findPowerOn->second);
- setReadState(powerState, readState);
- }
+ PowerState readState = getPowerState(baseConfiguration->second);
auto& sensor = sensors[sensorName];
sensor = nullptr;
diff --git a/src/ExternalSensorMain.cpp b/src/ExternalSensorMain.cpp
index cbe2388..0a42274 100644
--- a/src/ExternalSensorMain.cpp
+++ b/src/ExternalSensorMain.cpp
@@ -307,14 +307,7 @@
<< "\n";
}
- auto findPowerOn = baseConfiguration.second.find("PowerState");
- PowerState readState = PowerState::always;
- if (findPowerOn != baseConfiguration.second.end())
- {
- std::string powerState =
- std::visit(VariantToStringVisitor(), findPowerOn->second);
- setReadState(powerState, readState);
- }
+ PowerState readState = getPowerState(baseConfigMap);
auto& sensorEntry = sensors[sensorName];
sensorEntry = nullptr;
diff --git a/src/FanMain.cpp b/src/FanMain.cpp
index ff0ffaa..c55757c 100644
--- a/src/FanMain.cpp
+++ b/src/FanMain.cpp
@@ -405,17 +405,7 @@
redundancy = &systemRedundancy;
}
- PowerState powerState = PowerState::on;
- auto findPower = baseConfiguration->second.find("PowerState");
- if (findPower != baseConfiguration->second.end())
- {
- const auto* ptrPower =
- std::get_if<std::string>(&(findPower->second));
- if (ptrPower != nullptr)
- {
- setReadState(*ptrPower, powerState);
- }
- }
+ PowerState powerState = getPowerState(baseConfiguration->second);
constexpr double defaultMaxReading = 25000;
constexpr double defaultMinReading = 0;
diff --git a/src/HwmonTempMain.cpp b/src/HwmonTempMain.cpp
index 988e8b9..d1d50d6 100644
--- a/src/HwmonTempMain.cpp
+++ b/src/HwmonTempMain.cpp
@@ -400,14 +400,7 @@
}
}
- auto findPowerOn = baseConfigMap.find("PowerState");
- PowerState readState = PowerState::always;
- if (findPowerOn != baseConfigMap.end())
- {
- std::string powerState =
- std::visit(VariantToStringVisitor(), findPowerOn->second);
- setReadState(powerState, readState);
- }
+ PowerState readState = getPowerState(baseConfigMap);
auto permitSet = getPermitSet(baseConfigMap);
auto& sensor = sensors[sensorName];
diff --git a/src/IpmbSensor.cpp b/src/IpmbSensor.cpp
index 8d4dfaa..69c1e46 100644
--- a/src/IpmbSensor.cpp
+++ b/src/IpmbSensor.cpp
@@ -475,15 +475,7 @@
offsetVal = std::visit(VariantToDoubleVisitor(), findOffsetVal->second);
}
- auto findPowerState = entry.find("PowerState");
-
- if (findPowerState != entry.end())
- {
- std::string powerState =
- std::visit(VariantToStringVisitor(), findPowerState->second);
-
- setReadState(powerState, readState);
- }
+ readState = getPowerState(entry);
}
void createSensors(
diff --git a/src/PSUSensorMain.cpp b/src/PSUSensorMain.cpp
index 1683e39..0e4deea 100644
--- a/src/PSUSensorMain.cpp
+++ b/src/PSUSensorMain.cpp
@@ -484,14 +484,7 @@
checkGroupEvent(directory.string(), groupEventMatch,
groupEventPathList);
- PowerState readState = PowerState::always;
- auto findPowerOn = baseConfig->second.find("PowerState");
- if (findPowerOn != baseConfig->second.end())
- {
- std::string powerState =
- std::visit(VariantToStringVisitor(), findPowerOn->second);
- setReadState(powerState, readState);
- }
+ PowerState readState = getPowerState(baseConfig->second);
/* Check if there are more sensors in the same interface */
int i = 1;