xref: /openbmc/pldm/oem/meta/oem_meta.cpp (revision bca95a5aa082281ffac81bdbaf6a22a0cff60405)
1 #include "oem_meta.hpp"
2 
3 #include <libpldm/base.h>
4 
5 #include <utility>
6 
7 namespace pldm::oem_meta
8 {
9 
OemMETA(const pldm::utils::DBusHandler * dbusHandler,pldm::responder::Invoker & invoker,pldm::responder::platform::Handler * platformHandler)10 OemMETA::OemMETA(const pldm::utils::DBusHandler* dbusHandler,
11                  pldm::responder::Invoker& invoker,
12                  pldm::responder::platform::Handler* platformHandler)
13 {
14     oemEventManager = std::make_unique<oem_meta::OemEventManager>();
15     registerOemEventHandler(platformHandler);
16 
17     auto fileIOHandler =
18         std::make_unique<pldm::responder::oem_meta::FileIOHandler>(dbusHandler);
19     registerOemHandler(invoker, std::move(fileIOHandler));
20 }
21 
registerOemEventHandler(pldm::responder::platform::Handler * platformHandler)22 void OemMETA::registerOemEventHandler(
23     pldm::responder::platform::Handler* platformHandler)
24 {
25     platformHandler->registerEventHandlers(
26         PLDM_OEM_EVENT_CLASS_0xFB,
27         {[this](const pldm_msg* request, size_t payloadLength,
28                 uint8_t formatVersion, pldm_tid_t tid, size_t eventDataOffset) {
29             return this->oemEventManager->handleOemEvent(
30                 request, payloadLength, formatVersion, tid, eventDataOffset);
31         }});
32 }
33 
registerOemHandler(pldm::responder::Invoker & invoker,std::unique_ptr<pldm::responder::oem_meta::FileIOHandler> fileIOHandler)34 void OemMETA::registerOemHandler(
35     pldm::responder::Invoker& invoker,
36     std::unique_ptr<pldm::responder::oem_meta::FileIOHandler> fileIOHandler)
37 {
38     invoker.registerHandler(PLDM_OEM, std::move(fileIOHandler));
39 }
40 
41 } // namespace pldm::oem_meta
42