1*1477fe6aSWludzik, Jozef #pragma once 2*1477fe6aSWludzik, Jozef 3*1477fe6aSWludzik, Jozef #include <boost/asio/spawn.hpp> 4*1477fe6aSWludzik, Jozef #include <sdbusplus/asio/object_server.hpp> 5*1477fe6aSWludzik, Jozef 6*1477fe6aSWludzik, Jozef #include <array> 7*1477fe6aSWludzik, Jozef #include <string> 8*1477fe6aSWludzik, Jozef #include <utility> 9*1477fe6aSWludzik, Jozef #include <vector> 10*1477fe6aSWludzik, Jozef 11*1477fe6aSWludzik, Jozef namespace utils 12*1477fe6aSWludzik, Jozef { 13*1477fe6aSWludzik, Jozef 14*1477fe6aSWludzik, Jozef using SensorPath = std::string; 15*1477fe6aSWludzik, Jozef using ServiceName = std::string; 16*1477fe6aSWludzik, Jozef using Ifaces = std::vector<std::string>; 17*1477fe6aSWludzik, Jozef using SensorIfaces = std::vector<std::pair<ServiceName, Ifaces>>; 18*1477fe6aSWludzik, Jozef using SensorTree = std::pair<SensorPath, SensorIfaces>; 19*1477fe6aSWludzik, Jozef 20*1477fe6aSWludzik, Jozef inline std::vector<SensorTree> 21*1477fe6aSWludzik, Jozef getSubTreeSensors(boost::asio::yield_context& yield, 22*1477fe6aSWludzik, Jozef const std::shared_ptr<sdbusplus::asio::connection>& bus) 23*1477fe6aSWludzik, Jozef { 24*1477fe6aSWludzik, Jozef std::array<const char*, 1> interfaces = { 25*1477fe6aSWludzik, Jozef "xyz.openbmc_project.Sensor.Value"}; 26*1477fe6aSWludzik, Jozef boost::system::error_code ec; 27*1477fe6aSWludzik, Jozef 28*1477fe6aSWludzik, Jozef auto tree = bus->yield_method_call<std::vector<SensorTree>>( 29*1477fe6aSWludzik, Jozef yield, ec, "xyz.openbmc_project.ObjectMapper", 30*1477fe6aSWludzik, Jozef "/xyz/openbmc_project/object_mapper", 31*1477fe6aSWludzik, Jozef "xyz.openbmc_project.ObjectMapper", "GetSubTree", 32*1477fe6aSWludzik, Jozef "/xyz/openbmc_project/sensors", 2, interfaces); 33*1477fe6aSWludzik, Jozef if (ec) 34*1477fe6aSWludzik, Jozef { 35*1477fe6aSWludzik, Jozef throw std::runtime_error("Failed to query ObjectMapper!"); 36*1477fe6aSWludzik, Jozef } 37*1477fe6aSWludzik, Jozef return tree; 38*1477fe6aSWludzik, Jozef } 39*1477fe6aSWludzik, Jozef 40*1477fe6aSWludzik, Jozef } // namespace utils 41