xref: /openbmc/pldm/oem/ibm/libpldmresponder/file_io_type_pel.hpp (revision dde014625c1aac2b423cc7dbcf3a189ff58dc233)
1 #pragma once
2 
3 #include "file_io_by_type.hpp"
4 
5 namespace pldm
6 {
7 namespace responder
8 {
9 
10 /** @class PelHandler
11  *
12  *  @brief Inherits and implements FileHandler. This class is used
13  *  to read/write pels.
14  */
15 class PelHandler : public FileHandler
16 {
17   public:
18     /** @brief PelHandler constructor
19      */
PelHandler(uint32_t fileHandle)20     PelHandler(uint32_t fileHandle) : FileHandler(fileHandle) {}
21 
22     virtual int writeFromMemory(uint32_t offset, uint32_t length,
23                                 uint64_t address,
24                                 oem_platform::Handler* /*oemPlatformHandler*/);
25 
26     virtual int readIntoMemory(uint32_t offset, uint32_t length,
27                                uint64_t address,
28                                oem_platform::Handler* /*oemPlatformHandler*/);
29 
30     virtual int read(uint32_t offset, uint32_t& length, Response& response,
31                      oem_platform::Handler* /*oemPlatformHandler*/);
32 
33     virtual int write(const char* /*buffer*/, uint32_t /*offset*/,
34                       uint32_t& /*length*/,
35                       oem_platform::Handler* /*oemPlatformHandler*/);
36 
37     virtual int fileAck(uint8_t fileStatus);
38 
fileAckWithMetaData(uint8_t,uint32_t,uint32_t,uint32_t,uint32_t)39     virtual int fileAckWithMetaData(
40         uint8_t /*fileStatus*/, uint32_t /*metaDataValue1*/,
41         uint32_t /*metaDataValue2*/, uint32_t /*metaDataValue3*/,
42         uint32_t /*metaDataValue4*/)
43     {
44         return PLDM_ERROR_UNSUPPORTED_PLDM_CMD;
45     }
46 
47     /** @brief method to store a pel file in tempfs and send
48      *  d-bus notification to pel daemon that it is ready for consumption
49      *
50      *  @param[in] pelFileName - the pel file path
51      */
52     virtual int storePel(std::string&& pelFileName);
53 
newFileAvailable(uint64_t)54     virtual int newFileAvailable(uint64_t /*length*/)
55     {
56         return PLDM_ERROR_UNSUPPORTED_PLDM_CMD;
57     }
58 
newFileAvailableWithMetaData(uint64_t,uint32_t,uint32_t,uint32_t,uint32_t)59     virtual int newFileAvailableWithMetaData(
60         uint64_t /*length*/, uint32_t /*metaDataValue1*/,
61         uint32_t /*metaDataValue2*/, uint32_t /*metaDataValue3*/,
62         uint32_t /*metaDataValue4*/)
63     {
64         return PLDM_ERROR_UNSUPPORTED_PLDM_CMD;
65     }
66 
67     /** @brief PelHandler destructor
68      */
~PelHandler()69     ~PelHandler() {}
70 };
71 
72 } // namespace responder
73 } // namespace pldm
74