#include "utils.hpp" #include #include #include namespace openpower { namespace vpd { namespace inventory { auto getPIMService() { auto bus = sdbusplus::bus::new_default(); auto mapper = bus.new_method_call("xyz.openbmc_project.ObjectMapper", "/xyz/openbmc_project/object_mapper", "xyz.openbmc_project.ObjectMapper", "GetObject"); mapper.append(pimPath); mapper.append(std::vector({pimIntf})); auto result = bus.call(mapper); if (result.is_method_error()) { throw std::runtime_error("ObjectMapper GetObject failed"); } std::map> response; result.read(response); if (response.empty()) { throw std::runtime_error("ObjectMapper GetObject bad response"); } return response.begin()->first; } void callPIM(ObjectMap&& objects) { std::string service; try { service = getPIMService(); auto bus = sdbusplus::bus::new_default(); auto pimMsg = bus.new_method_call(service.c_str(), pimPath, pimIntf, "Notify"); pimMsg.append(std::move(objects)); auto result = bus.call(pimMsg); if (result.is_method_error()) { std::cerr << "PIM Notify() failed\n"; } } catch (const std::runtime_error& e) { using namespace phosphor::logging; log(e.what()); } } } // namespace inventory } // namespace vpd } // namespace openpower