diff options
Diffstat (limited to 'utility.cpp')
-rw-r--r-- | utility.cpp | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/utility.cpp b/utility.cpp new file mode 100644 index 0000000..db88712 --- /dev/null +++ b/utility.cpp @@ -0,0 +1,66 @@ +/** + * Copyright © 2017 IBM Corporation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include <string> +#include "utility.hpp" + +namespace phosphor +{ +namespace fan +{ +namespace presence +{ + +//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"; + +std::string getInvService(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})); + + auto mapperResponseMsg = bus.call(mapperCall); + if (mapperResponseMsg.is_method_error()) + { + throw std::runtime_error( + "Error in mapper call to get inventory 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"); + } + + return mapperResponse.begin()->first; +} + +} +} +} |