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
         }