led-use-json: Use specific config files

- When enabled `led-use-json`, it should use the JsonConfig class to
  find the JSON file name, and do not start until JSON config is
  found.

- If it has to wait for the IBMCompatible interface to show up on
  D-bus first, it will wait for that.

Tested:
- If there is a `/etc/phosphor-led-manager/led-group-config.json`
  path, congfile=/etc/phosphor-led-manager/led-group-config.json
- If there is a `/usr/share/phosphor-led-manager/led-group-config.json`
  path and there is not `/etc/phosphor-led-manager/`,
  congfile=/usr/share/phosphor-led-manager/led-group-config.json
- If the above two paths do not exist, get the `Name` property of the
  `xyz.openbmc_project.Configuration.IBMCompatibleSystem` interface,
  congfile=/usr/share/phosphor-led-manager/${Name}/led-group-config.json

Signed-off-by: George Liu <liuxiwei@inspur.com>
Change-Id: I1528a3d3711ef6b604868387ad42cb3c0afde119
diff --git a/utils.hpp b/utils.hpp
index 68a616a..ef56f5f 100644
--- a/utils.hpp
+++ b/utils.hpp
@@ -76,6 +76,17 @@
                      const std::string& interface,
                      const std::string& propertyName,
                      const PropertyValue& value) const;
+
+    /** @brief Get sub tree paths by the path and interface of the DBus.
+     *
+     *  @param[in]  objectPath   -  D-Bus object path
+     *  @param[in]  interface    -  D-Bus object interface
+     *
+     *  @return std::vector<std::string> vector of subtree paths
+     */
+    const std::vector<std::string>
+        getSubTreePaths(const std::string& objectPath,
+                        const std::string& interface);
 };
 
 } // namespace utils