dbus: parameterize dbusconfiguration init
Signed-off-by: Patrick Venture <venture@google.com>
Change-Id: I9cb6c0a19d4625d79da8613bd6eea13d6cc04220
diff --git a/dbus/dbusconfiguration.cpp b/dbus/dbusconfiguration.cpp
index 09f0d88..161f14a 100644
--- a/dbus/dbusconfiguration.cpp
+++ b/dbus/dbusconfiguration.cpp
@@ -37,10 +37,6 @@
namespace pid_control
{
-extern std::map<std::string, struct conf::SensorConfig> sensorConfig;
-extern std::map<int64_t, conf::PIDConf> zoneConfig;
-extern std::map<int64_t, struct conf::ZoneConfig> zoneDetailsConfig;
-
constexpr const char* pidConfigurationInterface =
"xyz.openbmc_project.Configuration.Pid";
constexpr const char* objectManagerInterface =
@@ -264,7 +260,8 @@
void populatePidInfo(
sdbusplus::bus::bus& bus,
const std::unordered_map<std::string, DbusVariantType>& base,
- struct conf::ControllerInfo& info, const std::string* thresholdProperty)
+ struct conf::ControllerInfo& info, const std::string* thresholdProperty,
+ const std::map<std::string, conf::SensorConfig>& sensorConfig)
{
info.type = std::get<std::string>(getPIDAttribute(base, "Class"));
if (info.type == "fan")
@@ -289,7 +286,7 @@
{
interface = thresholds::criticalInterface;
}
- const std::string& path = sensorConfig[info.inputs.front()].readPath;
+ const std::string& path = sensorConfig.at(info.inputs.front()).readPath;
DbusHelper helper(sdbusplus::bus::new_system());
std::string service = helper.getService(interface, path);
@@ -349,7 +346,10 @@
info.pidInfo.positiveHysteresis = positiveHysteresis;
}
-bool init(sdbusplus::bus::bus& bus, boost::asio::steady_timer& timer)
+bool init(sdbusplus::bus::bus& bus, boost::asio::steady_timer& timer,
+ std::map<std::string, conf::SensorConfig>& sensorConfig,
+ std::map<int64_t, conf::PIDConf>& zoneConfig,
+ std::map<int64_t, conf::ZoneConfig>& zoneDetailsConfig)
{
sensorConfig.clear();
@@ -755,7 +755,7 @@
struct conf::ControllerInfo& info =
conf[std::get<std::string>(base.at("Name"))];
info.inputs = std::move(inputSensorNames);
- populatePidInfo(bus, base, info, nullptr);
+ populatePidInfo(bus, base, info, nullptr, sensorConfig);
}
else
{
@@ -765,7 +765,8 @@
{
struct conf::ControllerInfo& info = conf[input];
info.inputs.emplace_back(input);
- populatePidInfo(bus, base, info, &offsetType);
+ populatePidInfo(bus, base, info, &offsetType,
+ sensorConfig);
}
}
}
diff --git a/dbus/dbusconfiguration.hpp b/dbus/dbusconfiguration.hpp
index 29f8597..aef3622 100644
--- a/dbus/dbusconfiguration.hpp
+++ b/dbus/dbusconfiguration.hpp
@@ -21,6 +21,7 @@
#include <sdbusplus/bus.hpp>
#include <cstdint>
+#include <map>
#include <string>
#include <unordered_map>
#include <variant>
@@ -39,6 +40,20 @@
{
namespace dbus_configuration
{
-bool init(sdbusplus::bus::bus& bus, boost::asio::steady_timer& timer);
+
+/**
+ * Initialize a dbus-based configuration.
+ *
+ * @param bus - the sdbusplus connection to use
+ * @param timer - the timer to use
+ * @param sensorConfig - The configuration converted sensor list.
+ * @param zoneConfig - The configuration converted PID list.
+ * @param zoneDetailsConfig - The configuration converted Zone configuration.
+ */
+bool init(sdbusplus::bus::bus& bus, boost::asio::steady_timer& timer,
+ std::map<std::string, conf::SensorConfig>& sensorConfig,
+ std::map<int64_t, conf::PIDConf>& zoneConfig,
+ std::map<int64_t, conf::ZoneConfig>& zoneDetailsConfig);
+
} // namespace dbus_configuration
} // namespace pid_control
diff --git a/main.cpp b/main.cpp
index b55a111..f5d34e0 100644
--- a/main.cpp
+++ b/main.cpp
@@ -114,7 +114,8 @@
else
{
static boost::asio::steady_timer reloadTimer(io);
- if (!dbus_configuration::init(modeControlBus, reloadTimer))
+ if (!dbus_configuration::init(modeControlBus, reloadTimer, sensorConfig,
+ zoneConfig, zoneDetailsConfig))
{
return; // configuration not ready
}