Move sensor adjust within sensor object
All sensor adjustments should be contained within the sensor object for
the sensor. This allows the adjustments to be retrieved for a given
sensor and applied accordingly.
Tested:
No change in adjusting a sensor value
No change in removing a sensor given a removal return code
Change-Id: I5e1e40fe41b4064422a47178aec1f297b781566d
Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
diff --git a/mainloop.cpp b/mainloop.cpp
index 595432d..02c3ebb 100644
--- a/mainloop.cpp
+++ b/mainloop.cpp
@@ -67,17 +67,6 @@
decltype(Thresholds<CriticalObject>::alarmHi) Thresholds<CriticalObject>::alarmHi =
&CriticalObject::criticalAlarmHigh;
-// The gain and offset to adjust a value
-struct valueAdjust
-{
- double gain = 1.0;
- int offset = 0;
- std::unordered_set<int> rmRCs;
-};
-
-// Store the valueAdjust for sensors
-std::map<SensorSet::key_type, valueAdjust> sensorAdjusts;
-
std::string MainLoop::getID(SensorSet::container_t::const_reference sensor)
{
std::string id;
@@ -196,24 +185,20 @@
hwmon::entry::cinput);
#ifndef REMOVE_ON_FAIL
// Check sensorAdjusts for sensor removal RCs
- const auto& it = sensorAdjusts.find(sensor.first);
- if (it != sensorAdjusts.end())
+ auto& sAdjusts = sensorObj->getAdjusts();
+ if (sAdjusts.rmRCs.count(e.code().value()) > 0)
{
- auto rmRCit = it->second.rmRCs.find(e.code().value());
- if (rmRCit != std::end(it->second.rmRCs))
+ // Return code found in sensor return code removal list
+ if (rmSensors.find(sensor.first) == rmSensors.end())
{
- // Return code found in sensor return code removal list
- if (rmSensors.find(sensor.first) == rmSensors.end())
- {
- // Trace for sensor not already removed from dbus
- log<level::INFO>("Sensor not added to dbus for read fail",
- entry("FILE=%s", file.c_str()),
- entry("RC=%d", e.code().value()));
- rmSensors[std::move(sensor.first)] =
- std::move(sensor.second);
- }
- return {};
+ // Trace for sensor not already removed from dbus
+ log<level::INFO>("Sensor not added to dbus for read fail",
+ entry("FILE=%s", file.c_str()),
+ entry("RC=%d", e.code().value()));
+ rmSensors[std::move(sensor.first)] =
+ std::move(sensor.second);
}
+ return {};
}
#endif
using namespace sdbusplus::xyz::openbmc_project::
@@ -469,25 +454,21 @@
hwmon::entry::cinput);
#ifndef REMOVE_ON_FAIL
// Check sensorAdjusts for sensor removal RCs
- const auto& it = sensorAdjusts.find(i.first);
- if (it != sensorAdjusts.end())
+ auto& sAdjusts = sensorObjects[i.first]->getAdjusts();
+ if (sAdjusts.rmRCs.count(e.code().value()) > 0)
{
- auto rmRCit = it->second.rmRCs.find(e.code().value());
- if (rmRCit != std::end(it->second.rmRCs))
+ // Return code found in sensor return code removal list
+ if (rmSensors.find(i.first) == rmSensors.end())
{
- // Return code found in sensor return code removal list
- if (rmSensors.find(i.first) == rmSensors.end())
- {
- // Trace for sensor not already removed from dbus
- log<level::INFO>(
- "Remove sensor from dbus for read fail",
- entry("FILE=%s", file.c_str()),
- entry("RC=%d", e.code().value()));
- // Mark this sensor to be removed from dbus
- rmSensors[i.first] = std::get<0>(i.second);
- }
- continue;
+ // Trace for sensor not already removed from dbus
+ log<level::INFO>(
+ "Remove sensor from dbus for read fail",
+ entry("FILE=%s", file.c_str()),
+ entry("RC=%d", e.code().value()));
+ // Mark this sensor to be removed from dbus
+ rmSensors[i.first] = std::get<0>(i.second);
}
+ continue;
}
#endif
using namespace sdbusplus::xyz::openbmc_project::