dbus: move debugPrint to util

Signed-off-by: Patrick Venture <venture@google.com>
Change-Id: Idbea54f13527a4ca3108cc4dccbee07b7b3a7d34
diff --git a/Makefile.am b/Makefile.am
index b859f32..7465a72 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -79,6 +79,7 @@
 	$(CODE_COVERAGE_CXXFLAGS)
 
 libswampd_la_SOURCES = \
+	util.cpp \
 	notimpl/readonly.cpp \
 	notimpl/writeonly.cpp \
 	dbus/dbusconfiguration.cpp \
diff --git a/conf.hpp b/conf.hpp
index 428d446..f2157e1 100644
--- a/conf.hpp
+++ b/conf.hpp
@@ -60,5 +60,7 @@
 
 using PIDConf = std::map<std::string, struct ControllerInfo>;
 
+constexpr bool DEBUG = false; // enable to print found configuration
+
 } // namespace conf
 } // namespace pid_control
diff --git a/dbus/dbusconfiguration.cpp b/dbus/dbusconfiguration.cpp
index a33a966..09f0d88 100644
--- a/dbus/dbusconfiguration.cpp
+++ b/dbus/dbusconfiguration.cpp
@@ -37,8 +37,6 @@
 namespace pid_control
 {
 
-static constexpr bool DEBUG = false; // enable to print found configuration
-
 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;
@@ -87,74 +85,6 @@
     return retString;
 }
 
-// this function prints the configuration into a form similar to the cpp
-// generated code to help in verification, should be turned off during normal
-// use
-void debugPrint(void)
-{
-    // print sensor config
-    std::cout << "sensor config:\n";
-    std::cout << "{\n";
-    for (const auto& pair : sensorConfig)
-    {
-
-        std::cout << "\t{" << pair.first << ",\n\t\t{";
-        std::cout << pair.second.type << ", ";
-        std::cout << pair.second.readPath << ", ";
-        std::cout << pair.second.writePath << ", ";
-        std::cout << pair.second.min << ", ";
-        std::cout << pair.second.max << ", ";
-        std::cout << pair.second.timeout << "},\n\t},\n";
-    }
-    std::cout << "}\n\n";
-    std::cout << "ZoneDetailsConfig\n";
-    std::cout << "{\n";
-    for (const auto& zone : zoneDetailsConfig)
-    {
-        std::cout << "\t{" << zone.first << ",\n";
-        std::cout << "\t\t{" << zone.second.minThermalOutput << ", ";
-        std::cout << zone.second.failsafePercent << "}\n\t},\n";
-    }
-    std::cout << "}\n\n";
-    std::cout << "ZoneConfig\n";
-    std::cout << "{\n";
-    for (const auto& zone : zoneConfig)
-    {
-        std::cout << "\t{" << zone.first << "\n";
-        for (const auto& pidconf : zone.second)
-        {
-            std::cout << "\t\t{" << pidconf.first << ",\n";
-            std::cout << "\t\t\t{" << pidconf.second.type << ",\n";
-            std::cout << "\t\t\t{";
-            for (const auto& input : pidconf.second.inputs)
-            {
-                std::cout << "\n\t\t\t" << input << ",\n";
-            }
-            std::cout << "\t\t\t}\n";
-            std::cout << "\t\t\t" << pidconf.second.setpoint << ",\n";
-            std::cout << "\t\t\t{" << pidconf.second.pidInfo.ts << ",\n";
-            std::cout << "\t\t\t" << pidconf.second.pidInfo.proportionalCoeff
-                      << ",\n";
-            std::cout << "\t\t\t" << pidconf.second.pidInfo.integralCoeff
-                      << ",\n";
-            std::cout << "\t\t\t" << pidconf.second.pidInfo.feedFwdOffset
-                      << ",\n";
-            std::cout << "\t\t\t" << pidconf.second.pidInfo.feedFwdGain
-                      << ",\n";
-            std::cout << "\t\t\t{" << pidconf.second.pidInfo.integralLimit.min
-                      << "," << pidconf.second.pidInfo.integralLimit.max
-                      << "},\n";
-            std::cout << "\t\t\t{" << pidconf.second.pidInfo.outLim.min << ","
-                      << pidconf.second.pidInfo.outLim.max << "},\n";
-            std::cout << "\t\t\t" << pidconf.second.pidInfo.slewNeg << ",\n";
-            std::cout << "\t\t\t" << pidconf.second.pidInfo.slewPos << ",\n";
-            std::cout << "\t\t\t}\n\t\t}\n";
-        }
-        std::cout << "\t},\n";
-    }
-    std::cout << "}\n\n";
-}
-
 std::vector<std::string> getSelectedProfiles(sdbusplus::bus::bus& bus)
 {
     std::vector<std::string> ret;
@@ -211,7 +141,7 @@
             ret.emplace_back(std::move(mode));
         }
     }
-    if constexpr (DEBUG)
+    if constexpr (pid_control::conf::DEBUG)
     {
         std::cout << "Profiles selected: ";
         for (const auto& profile : ret)
@@ -949,9 +879,9 @@
             }
         }
     }
-    if constexpr (DEBUG)
+    if constexpr (pid_control::conf::DEBUG)
     {
-        debugPrint();
+        debugPrint(sensorConfig, zoneConfig, zoneDetailsConfig);
     }
     if (zoneConfig.empty() || zoneDetailsConfig.empty())
     {
diff --git a/util.cpp b/util.cpp
new file mode 100644
index 0000000..4ecd8ce
--- /dev/null
+++ b/util.cpp
@@ -0,0 +1,99 @@
+/*
+// Copyright (c) 2018 Intel Corporation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+*/
+#include "util.hpp"
+
+#include "conf.hpp"
+
+#include <cstdint>
+#include <iostream>
+#include <map>
+#include <string>
+
+namespace pid_control
+{
+
+void debugPrint(const std::map<std::string, conf::SensorConfig>& sensorConfig,
+                const std::map<int64_t, conf::PIDConf>& zoneConfig,
+                const std::map<int64_t, conf::ZoneConfig>& zoneDetailsConfig)
+{
+    if constexpr (!conf::DEBUG)
+    {
+        return;
+    }
+    // print sensor config
+    std::cout << "sensor config:\n";
+    std::cout << "{\n";
+    for (const auto& pair : sensorConfig)
+    {
+
+        std::cout << "\t{" << pair.first << ",\n\t\t{";
+        std::cout << pair.second.type << ", ";
+        std::cout << pair.second.readPath << ", ";
+        std::cout << pair.second.writePath << ", ";
+        std::cout << pair.second.min << ", ";
+        std::cout << pair.second.max << ", ";
+        std::cout << pair.second.timeout << "},\n\t},\n";
+    }
+    std::cout << "}\n\n";
+    std::cout << "ZoneDetailsConfig\n";
+    std::cout << "{\n";
+    for (const auto& zone : zoneDetailsConfig)
+    {
+        std::cout << "\t{" << zone.first << ",\n";
+        std::cout << "\t\t{" << zone.second.minThermalOutput << ", ";
+        std::cout << zone.second.failsafePercent << "}\n\t},\n";
+    }
+    std::cout << "}\n\n";
+    std::cout << "ZoneConfig\n";
+    std::cout << "{\n";
+    for (const auto& zone : zoneConfig)
+    {
+        std::cout << "\t{" << zone.first << "\n";
+        for (const auto& pidconf : zone.second)
+        {
+            std::cout << "\t\t{" << pidconf.first << ",\n";
+            std::cout << "\t\t\t{" << pidconf.second.type << ",\n";
+            std::cout << "\t\t\t{";
+            for (const auto& input : pidconf.second.inputs)
+            {
+                std::cout << "\n\t\t\t" << input << ",\n";
+            }
+            std::cout << "\t\t\t}\n";
+            std::cout << "\t\t\t" << pidconf.second.setpoint << ",\n";
+            std::cout << "\t\t\t{" << pidconf.second.pidInfo.ts << ",\n";
+            std::cout << "\t\t\t" << pidconf.second.pidInfo.proportionalCoeff
+                      << ",\n";
+            std::cout << "\t\t\t" << pidconf.second.pidInfo.integralCoeff
+                      << ",\n";
+            std::cout << "\t\t\t" << pidconf.second.pidInfo.feedFwdOffset
+                      << ",\n";
+            std::cout << "\t\t\t" << pidconf.second.pidInfo.feedFwdGain
+                      << ",\n";
+            std::cout << "\t\t\t{" << pidconf.second.pidInfo.integralLimit.min
+                      << "," << pidconf.second.pidInfo.integralLimit.max
+                      << "},\n";
+            std::cout << "\t\t\t{" << pidconf.second.pidInfo.outLim.min << ","
+                      << pidconf.second.pidInfo.outLim.max << "},\n";
+            std::cout << "\t\t\t" << pidconf.second.pidInfo.slewNeg << ",\n";
+            std::cout << "\t\t\t" << pidconf.second.pidInfo.slewPos << ",\n";
+            std::cout << "\t\t\t}\n\t\t}\n";
+        }
+        std::cout << "\t},\n";
+    }
+    std::cout << "}\n\n";
+}
+
+} // namespace pid_control
diff --git a/util.hpp b/util.hpp
index efe920c..032e1ca 100644
--- a/util.hpp
+++ b/util.hpp
@@ -1,11 +1,14 @@
 #pragma once
 
+#include "conf.hpp"
 #include "pid/ec/pid.hpp"
 
 #include <phosphor-logging/log.hpp>
 #include <sdbusplus/bus.hpp>
 
+#include <cstdint>
 #include <limits>
+#include <map>
 #include <string>
 
 namespace pid_control
@@ -37,4 +40,11 @@
  */
 std::string FixupPath(std::string original);
 
+/*
+ * Dump active configuration.
+ */
+void debugPrint(const std::map<std::string, conf::SensorConfig>& sensorConfig,
+                const std::map<int64_t, conf::PIDConf>& zoneConfig,
+                const std::map<int64_t, conf::ZoneConfig>& zoneDetailsConfig);
+
 } // namespace pid_control