1 #pragma once 2 3 #include "libpldm/platform.h" 4 5 #include "pldmd/dbus_impl_requester.hpp" 6 7 #include <filesystem> 8 #include <fstream> 9 #include <map> 10 11 using namespace pldm::dbus_api; 12 13 namespace pldm 14 { 15 namespace requester 16 { 17 namespace oem_ibm 18 { 19 20 /** @class DbusToFileHandler 21 * @brief This class can process resource dump parameters and send PLDM 22 * new file available cmd to the hypervisor. This class can be used 23 * as a pldm requester in oem-ibm path. 24 */ 25 class DbusToFileHandler 26 { 27 public: 28 DbusToFileHandler(const DbusToFileHandler&) = delete; 29 DbusToFileHandler(DbusToFileHandler&&) = delete; 30 DbusToFileHandler& operator=(const DbusToFileHandler&) = delete; 31 DbusToFileHandler& operator=(DbusToFileHandler&&) = delete; 32 ~DbusToFileHandler() = default; 33 34 /** @brief Constructor 35 * @param[in] mctp_fd - fd of MCTP communications socket 36 * @param[in] mctp_eid - MCTP EID of host firmware 37 * @param[in] requester - pointer to a Requester object 38 * @param[in] resDumpCurrentObjPath - resource dump current object path 39 */ 40 DbusToFileHandler(int mctp_fd, uint8_t mctp_eid, 41 dbus_api::Requester* requester, 42 sdbusplus::message::object_path resDumpCurrentObjPath); 43 44 /** @brief Process the new resource dump request 45 * @param[in] vspString - vsp string 46 * @param[in] resDumpReqPass - resource dump password 47 */ 48 void processNewResourceDump(const std::string& vspString, 49 const std::string& resDumpReqPass); 50 51 /** @brief Process the new CSR file available 52 * @param[in] csr - CSR string 53 * @param[in] fileHandle - file Handle for new file request 54 */ 55 void newCsrFileAvailable(const std::string& csr, 56 const std::string fileHandle); 57 58 private: 59 /** @brief Send the new file available command request to hypervisor 60 * @param[in] fileSize - size of the file 61 */ 62 void sendNewFileAvailableCmd(uint64_t fileSize); 63 64 /** @brief Send the new file available command request to hypervisor 65 * @param[in] fileSize - size of the file 66 * @param[in] fileHandle - file handle 67 * @param[in] type - file type 68 */ 69 void newFileAvailableSendToHost(const uint32_t fileSize, 70 const uint32_t fileHandle, 71 const uint16_t type); 72 73 /** @brief fd of MCTP communications socket */ 74 int mctp_fd; 75 76 /** @brief MCTP EID of host firmware */ 77 uint8_t mctp_eid; 78 79 /** @brief Pointer to a Requester object, primarily used to access API to 80 * obtain PLDM instance id. 81 */ 82 dbus_api::Requester* requester; 83 84 /** @brief Hold the current resource dump object path */ 85 sdbusplus::message::object_path resDumpCurrentObjPath; 86 }; 87 88 } // namespace oem_ibm 89 } // namespace requester 90 } // namespace pldm 91