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