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.cpp b/utils.cpp
index c9a21e5..6c122f9 100644
--- a/utils.cpp
+++ b/utils.cpp
@@ -92,6 +92,26 @@
bus.call_noreply(method);
}
+const std::vector<std::string>
+ DBusHandler::getSubTreePaths(const std::string& objectPath,
+ const std::string& interface)
+{
+ std::vector<std::string> paths;
+
+ auto& bus = DBusHandler::getBus();
+
+ auto method = bus.new_method_call(MAPPER_BUSNAME, MAPPER_OBJ_PATH,
+ MAPPER_IFACE, "GetSubTreePaths");
+ method.append(objectPath.c_str());
+ method.append(0); // Depth 0 to search all
+ method.append(std::vector<std::string>({interface.c_str()}));
+ auto reply = bus.call(method);
+
+ reply.read(paths);
+
+ return paths;
+}
+
} // namespace utils
} // namespace led
} // namespace phosphor
\ No newline at end of file