summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--presence/fan_enclosure.cpp2
-rw-r--r--utility.cpp25
-rw-r--r--utility.hpp17
3 files changed, 35 insertions, 9 deletions
diff --git a/presence/fan_enclosure.cpp b/presence/fan_enclosure.cpp
index 262876e..ca97c07 100644
--- a/presence/fan_enclosure.cpp
+++ b/presence/fan_enclosure.cpp
@@ -69,7 +69,7 @@ void FanEnclosure::updInventory()
std::string invService;
try
{
- invService = getInvService(bus);
+ invService = phosphor::fan::util::getInvService(bus);
}
catch (const std::runtime_error& err)
{
diff --git a/utility.cpp b/utility.cpp
index db88712..2cfeac8 100644
--- a/utility.cpp
+++ b/utility.cpp
@@ -20,42 +20,53 @@ namespace phosphor
{
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;
diff --git a/utility.hpp b/utility.hpp
index d45fa02..b37987d 100644
--- a/utility.hpp
+++ b/utility.hpp
@@ -6,7 +6,7 @@ namespace phosphor
{
namespace fan
{
-namespace presence
+namespace util
{
/**
@@ -16,6 +16,21 @@ namespace presence
*/
std::string getInvService(sdbusplus::bus::bus& bus);
+
+/**
+ * @brief Get the service name from the mapper for the
+ * interface and path passed in.
+ *
+ * @param[in] path - the dbus path name
+ * @param[in] interface - the dbus interface name
+ * @param[in] bus - the dbus object
+ *
+ * @return The service name
+ */
+std::string getService(const std::string& path,
+ const std::string& interface,
+ sdbusplus::bus::bus& bus);
+
}
}
}
OpenPOWER on IntegriCloud