blob: 87bd2d7152a452f1d0ee11b3803c87cc29e84a09 [file] [log] [blame] [edit]
#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;
};