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