Chris Sides | 2ab7341 | 2024-10-15 16:04:11 -0500 | [diff] [blame] | 1 | #include "machine_context.hpp" |
| 2 | |
| 3 | #include <memory> |
| 4 | |
| 5 | int main() |
| 6 | { |
| 7 | static constexpr auto reqDBusPath = "/xyz/openbmc_project/MachineContext"; |
| 8 | static constexpr auto reqDBusName = "xyz.openbmc_project.MachineContext"; |
| 9 | |
| 10 | /*Note: OpenBMC convention typically has service name = bus name, |
| 11 | where the bus name is representative of the underlying hardware. |
| 12 | |
| 13 | In the case of MachineContext, the BMC is not gathering data from |
| 14 | specific hardware, but is instead parsing device-tree nodes for |
| 15 | context about the hardware OpenBMC is running on. |
| 16 | |
| 17 | Because the VPD data being parsed is coming from device-tree, |
| 18 | the daemon and matching service name reflect that. |
| 19 | |
| 20 | Because the parsed data represents 'machine context' data, |
| 21 | the bus name and associated path the daemon writes to |
| 22 | reflects that instead. |
| 23 | */ |
| 24 | |
| 25 | sdbusplus::async::context ctx; |
| 26 | sdbusplus::server::manager_t manager{ctx, reqDBusPath}; |
| 27 | |
| 28 | std::unique_ptr<MachineContext> mc = nullptr; |
| 29 | if (MachineContext::keyNodeExists()) |
| 30 | { |
| 31 | mc = std::make_unique<MachineContext>(ctx, reqDBusPath); |
| 32 | mc->populateFromDeviceTree(); |
| 33 | } |
| 34 | |
| 35 | // NOLINTNEXTLINE(readability-static-accessed-through-instance) |
| 36 | ctx.spawn([](sdbusplus::async::context& ctx) -> sdbusplus::async::task<> { |
| 37 | ctx.request_name(reqDBusName); |
| 38 | co_return; |
| 39 | }(ctx)); |
| 40 | |
| 41 | ctx.run(); |
| 42 | |
| 43 | return 0; |
| 44 | }; |