ExitAirTempSensor: Replace iterator pairs with structured bindings
Signed-off-by: Zev Weiss <zev@bewilderbeest.net>
Change-Id: I9d536105564c725ee29c34ef0162cca6172daa43
diff --git a/src/ExitAirTempSensor.cpp b/src/ExitAirTempSensor.cpp
index e256bb1..3c1d7e4 100644
--- a/src/ExitAirTempSensor.cpp
+++ b/src/ExitAirTempSensor.cpp
@@ -593,25 +593,27 @@
{
return;
}
- for (const auto& item : subtree)
+ for (const auto& [path, matches] : subtree)
{
- size_t lastSlash = item.first.rfind('/');
- if (lastSlash == std::string::npos ||
- lastSlash == item.first.size() || item.second.empty())
+ size_t lastSlash = path.rfind('/');
+ if (lastSlash == std::string::npos || lastSlash == path.size() ||
+ matches.empty())
{
continue;
}
- std::string sensorName = item.first.substr(lastSlash + 1);
+ std::string sensorName = path.substr(lastSlash + 1);
if (boost::starts_with(sensorName, "PS") &&
boost::ends_with(sensorName, "Input_Power"))
{
- const std::string& path = item.first;
+ // lambda capture requires a proper variable (not a structured
+ // binding)
+ const std::string& cbPath = path;
self->dbusConnection->async_method_call(
- [weakRef, path](boost::system::error_code ec,
- const std::variant<double>& value) {
+ [weakRef, cbPath](boost::system::error_code ec,
+ const std::variant<double>& value) {
if (ec)
{
- std::cerr << "Error getting value from " << path
+ std::cerr << "Error getting value from " << cbPath
<< "\n";
}
auto self = weakRef.lock();
@@ -623,11 +625,11 @@
std::visit(VariantToDoubleVisitor(), value);
if constexpr (debug)
{
- std::cerr << path << "Reading " << reading << "\n";
+ std::cerr << cbPath << "Reading " << reading << "\n";
}
- self->powerReadings[path] = reading;
+ self->powerReadings[cbPath] = reading;
},
- item.second[0].first, item.first, properties::interface,
+ matches[0].first, cbPath, properties::interface,
properties::get, sensorValueInterface, "Value");
}
}
@@ -718,13 +720,13 @@
}
double totalPower = 0;
- for (const auto& reading : powerReadings)
+ for (const auto& [path, reading] : powerReadings)
{
- if (std::isnan(reading.second))
+ if (std::isnan(reading))
{
continue;
}
- totalPower += reading.second;
+ totalPower += reading;
}
// Calculate power correction factor
@@ -869,58 +871,48 @@
[&objectServer, &dbusConnection,
&exitAirSensor](const ManagedObjectType& resp) {
cfmSensors.clear();
- for (const auto& pathPair : resp)
+ for (const auto& [path, interfaces] : resp)
{
- for (const auto& entry : pathPair.second)
+ for (const auto& [intf, cfg] : interfaces)
{
- if (entry.first == exitAirIface)
+ if (intf == exitAirIface)
{
// thresholds should be under the same path
std::vector<thresholds::Threshold> sensorThresholds;
- parseThresholdsFromConfig(pathPair.second,
- sensorThresholds);
+ parseThresholdsFromConfig(interfaces, sensorThresholds);
- std::string name =
- loadVariant<std::string>(entry.second, "Name");
+ std::string name = loadVariant<std::string>(cfg, "Name");
exitAirSensor = std::make_shared<ExitAirTempSensor>(
- dbusConnection, name, pathPair.first.str, objectServer,
+ dbusConnection, name, path.str, objectServer,
std::move(sensorThresholds));
exitAirSensor->powerFactorMin =
- loadVariant<double>(entry.second, "PowerFactorMin");
+ loadVariant<double>(cfg, "PowerFactorMin");
exitAirSensor->powerFactorMax =
- loadVariant<double>(entry.second, "PowerFactorMax");
- exitAirSensor->qMin =
- loadVariant<double>(entry.second, "QMin");
- exitAirSensor->qMax =
- loadVariant<double>(entry.second, "QMax");
- exitAirSensor->alphaS =
- loadVariant<double>(entry.second, "AlphaS");
- exitAirSensor->alphaF =
- loadVariant<double>(entry.second, "AlphaF");
+ loadVariant<double>(cfg, "PowerFactorMax");
+ exitAirSensor->qMin = loadVariant<double>(cfg, "QMin");
+ exitAirSensor->qMax = loadVariant<double>(cfg, "QMax");
+ exitAirSensor->alphaS = loadVariant<double>(cfg, "AlphaS");
+ exitAirSensor->alphaF = loadVariant<double>(cfg, "AlphaF");
}
- else if (entry.first == cfmIface)
-
+ else if (intf == cfmIface)
{
// thresholds should be under the same path
std::vector<thresholds::Threshold> sensorThresholds;
- parseThresholdsFromConfig(pathPair.second,
- sensorThresholds);
- std::string name =
- loadVariant<std::string>(entry.second, "Name");
+ parseThresholdsFromConfig(interfaces, sensorThresholds);
+ std::string name = loadVariant<std::string>(cfg, "Name");
auto sensor = std::make_shared<CFMSensor>(
- dbusConnection, name, pathPair.first.str, objectServer,
+ dbusConnection, name, path.str, objectServer,
std::move(sensorThresholds), exitAirSensor);
- loadVariantPathArray(entry.second, "Tachs", sensor->tachs);
- sensor->maxCFM =
- loadVariant<double>(entry.second, "MaxCFM");
+ loadVariantPathArray(cfg, "Tachs", sensor->tachs);
+ sensor->maxCFM = loadVariant<double>(cfg, "MaxCFM");
// change these into percent upon getting the data
- sensor->c1 = loadVariant<double>(entry.second, "C1") / 100;
- sensor->c2 = loadVariant<double>(entry.second, "C2") / 100;
+ sensor->c1 = loadVariant<double>(cfg, "C1") / 100;
+ sensor->c2 = loadVariant<double>(cfg, "C2") / 100;
sensor->tachMinPercent =
- loadVariant<double>(entry.second, "TachMinPercent");
+ loadVariant<double>(cfg, "TachMinPercent");
sensor->tachMaxPercent =
- loadVariant<double>(entry.second, "TachMaxPercent");
+ loadVariant<double>(cfg, "TachMaxPercent");
sensor->createMaxCFMIface();
sensor->setupMatches();