Fan control: Add getService() utility function
This function returns the service name from the mapper
based on the dbus path and interface passed in.
Eventually, getInvService can be removed and this call
can be used instead.
Change-Id: Ieb090a9b650803e8cfaf2f24143f25a4bbf1cd23
Signed-off-by: Matt Spinler <spinler@us.ibm.com>
diff --git a/utility.cpp b/utility.cpp
index db88712..2cfeac8 100644
--- a/utility.cpp
+++ b/utility.cpp
@@ -20,42 +20,53 @@
{
namespace fan
{
-namespace presence
+namespace util
{
+using namespace std::string_literals;
+
//TODO Should get these from phosphor-objmgr config.h
constexpr auto MAPPER_BUSNAME = "xyz.openbmc_project.ObjectMapper";
constexpr auto MAPPER_PATH = "/xyz/openbmc_project/object_mapper";
constexpr auto MAPPER_INTERFACE = "xyz.openbmc_project.ObjectMapper";
//TODO Should get these from phosphor-inventory-manager config.h
-constexpr auto INVENTORY_PATH = "/xyz/openbmc_project/inventory";
-constexpr auto INVENTORY_INTF = "xyz.openbmc_project.Inventory.Manager";
+const auto INVENTORY_PATH = "/xyz/openbmc_project/inventory"s;
+const auto INVENTORY_INTF = "xyz.openbmc_project.Inventory.Manager"s;
std::string getInvService(sdbusplus::bus::bus& bus)
{
+ return getService(INVENTORY_PATH, INVENTORY_INTF, bus);
+}
+
+
+std::string getService(const std::string& path,
+ const std::string& interface,
+ sdbusplus::bus::bus& bus)
+{
auto mapperCall = bus.new_method_call(MAPPER_BUSNAME,
MAPPER_PATH,
MAPPER_INTERFACE,
"GetObject");
- mapperCall.append(INVENTORY_PATH);
- mapperCall.append(std::vector<std::string>({INVENTORY_INTF}));
+ mapperCall.append(path);
+ mapperCall.append(std::vector<std::string>({interface}));
auto mapperResponseMsg = bus.call(mapperCall);
if (mapperResponseMsg.is_method_error())
{
throw std::runtime_error(
- "Error in mapper call to get inventory service name");
+ "Error in mapper call to get service name");
}
+
std::map<std::string, std::vector<std::string>> mapperResponse;
mapperResponseMsg.read(mapperResponse);
if (mapperResponse.empty())
{
throw std::runtime_error(
- "Error in mapper response for inventory service name");
+ "Error in mapper response for getting service name");
}
return mapperResponse.begin()->first;