Use mapper to find service name

Use objectMapper to find the service name instead of using
hard-coded service name.

Change-Id: If436c65d9a9a4942eaf30ea20bc7b85e3e7694c1
Signed-off-by: Lei YU <mine260309@gmail.com>
diff --git a/manager.cpp b/manager.cpp
index 36ff351..03992b1 100644
--- a/manager.cpp
+++ b/manager.cpp
@@ -7,7 +7,6 @@
 
 namespace // anonymous
 {
-constexpr auto SETTINGS_SERVICE = "org.openbmc.settings.Host";
 constexpr auto SETTINGS_PATH = "/org/openbmc/settings/host0";
 constexpr auto SETTINGS_INTERFACE = "org.openbmc.settings.Host";
 
@@ -24,19 +23,17 @@
     rules::path("/org/openbmc/control/power0") +
     rules::interface("org.freedesktop.DBus.Properties");
 
-constexpr auto POWER_SERVICE = "org.openbmc.control.Power";
 constexpr auto POWER_PATH = "/org/openbmc/control/power0";
-constexpr auto POWER_INTERFACE = POWER_SERVICE;
+constexpr auto POWER_INTERFACE = "org.openbmc.control.Power";
 constexpr auto PGOOD_STR = "pgood";
 
 constexpr auto SYSTEMD_TIME_SERVICE = "org.freedesktop.timedate1";
 constexpr auto SYSTEMD_TIME_PATH = "/org/freedesktop/timedate1";
-constexpr auto SYSTEMD_TIME_INTERFACE = SYSTEMD_TIME_SERVICE;
+constexpr auto SYSTEMD_TIME_INTERFACE = "org.freedesktop.timedate1";
 constexpr auto METHOD_SET_NTP = "SetNTP";
 
-constexpr auto OBMC_NETWORK_SERVICE = "org.openbmc.NetworkManager";
 constexpr auto OBMC_NETWORK_PATH = "/org/openbmc/NetworkManager/Interface";
-constexpr auto OBMC_NETWORK_INTERFACE = OBMC_NETWORK_SERVICE;
+constexpr auto OBMC_NETWORK_INTERFACE = "org.openbmc.NetworkManager";
 constexpr auto METHOD_UPDATE_USE_NTP = "UpdateUseNtpField";
 }
 
@@ -92,8 +89,17 @@
 
 void Manager::checkHostOn()
 {
+    std::string powerService = utils::getService(bus,
+                                                 POWER_PATH,
+                                                 POWER_INTERFACE);
+    if (powerService.empty())
+    {
+        log<level::ERR>("Failed to get power service, assume host is off");
+        return;
+    }
+
     int pgood = utils::getProperty<int>(bus,
-                                        POWER_SERVICE,
+                                        powerService.c_str(),
                                         POWER_PATH,
                                         POWER_INTERFACE,
                                         PGOOD_STR);
@@ -102,12 +108,7 @@
 
 void Manager::checkDhcpNtp()
 {
-    std::string useDhcpNtp = utils::getProperty<std::string>(
-                                 bus,
-                                 SETTINGS_SERVICE,
-                                 SETTINGS_PATH,
-                                 SETTINGS_INTERFACE,
-                                 PROPERTY_DHCP_NTP);
+    std::string useDhcpNtp = getSettings(PROPERTY_DHCP_NTP);
     updateDhcpNtpSetting(useDhcpNtp);
 }
 
@@ -217,7 +218,16 @@
 
 void Manager::updateDhcpNtpSetting(const std::string& useDhcpNtp)
 {
-    auto method = bus.new_method_call(OBMC_NETWORK_SERVICE,
+    std::string networkService = utils::getService(bus,
+                                                   OBMC_NETWORK_PATH,
+                                                   OBMC_NETWORK_INTERFACE);
+    if (networkService.empty())
+    {
+        log<level::ERR>("Failed to get network service, ignore dhcp ntp");
+        return;
+    }
+
+    auto method = bus.new_method_call(networkService.c_str(),
                                       OBMC_NETWORK_PATH,
                                       OBMC_NETWORK_INTERFACE,
                                       METHOD_UPDATE_USE_NTP);
@@ -333,14 +343,23 @@
     }
 }
 
-std::string Manager::getSettings(const char* value) const
+std::string Manager::getSettings(const char* setting) const
 {
-    return utils::getProperty<std::string>(
-        bus,
-        SETTINGS_SERVICE,
-        SETTINGS_PATH,
-        SETTINGS_INTERFACE,
-        value);
+    std::string settingsService = utils::getService(bus,
+                                                    SETTINGS_PATH,
+                                                    SETTINGS_INTERFACE);
+    if (settingsService.empty())
+    {
+        log<level::ERR>("Failed to get settings service, unable to get setting",
+                        entry("SETTING=%s", setting));
+        return {};
+    }
+
+    return utils::getProperty<std::string>(bus,
+                                           settingsService.c_str(),
+                                           SETTINGS_PATH,
+                                           SETTINGS_INTERFACE,
+                                           setting);
 }
 
 }