#include "machine_context.hpp" #include <memory> int main() { static constexpr auto reqDBusPath = "/xyz/openbmc_project/MachineContext"; static constexpr auto reqDBusName = "xyz.openbmc_project.MachineContext"; /*Note: OpenBMC convention typically has service name = bus name, where the bus name is representative of the underlying hardware. In the case of MachineContext, the BMC is not gathering data from specific hardware, but is instead parsing device-tree nodes for context about the hardware OpenBMC is running on. Because the VPD data being parsed is coming from device-tree, the daemon and matching service name reflect that. Because the parsed data represents 'machine context' data, the bus name and associated path the daemon writes to reflects that instead. */ sdbusplus::async::context ctx; sdbusplus::server::manager_t manager{ctx, reqDBusPath}; std::unique_ptr<MachineContext> mc = nullptr; if (MachineContext::keyNodeExists()) { mc = std::make_unique<MachineContext>(ctx, reqDBusPath); mc->populateFromDeviceTree(); } // NOLINTNEXTLINE(readability-static-accessed-through-instance) ctx.spawn([](sdbusplus::async::context& ctx) -> sdbusplus::async::task<> { ctx.request_name(reqDBusName); co_return; }(ctx)); ctx.run(); return 0; };