xref: /openbmc/pldm/oem/meta/libpldmresponder/file_io_by_type.hpp (revision b4c52ce6712625f18c54fc1994c847fbb5182c27)
1 #pragma once
2 
3 #include <libpldm/base.h>
4 #include <libpldm/oem/meta/file_io.h>
5 
6 #include <cstdint>
7 #include <span>
8 
9 namespace pldm::responder::oem_meta
10 {
11 using message = std::span<uint8_t>;
12 
13 enum class FileIOType : uint8_t
14 {
15     POST_CODE = 0x00,
16     BIOS_VERSION = 0x01,
17     POWER_CONTROL = 0x02,
18     HTTP_BOOT = 0x03,
19     APML_ALERT = 0x04
20 };
21 
22 /**
23  *  @class FileHandler
24  *
25  *  Base class to handle read/write of all OEM file types
26  */
27 class FileHandler
28 {
29   protected:
30     FileHandler() = default;
31 
32   public:
33     FileHandler(const FileHandler&) = delete;
34     FileHandler(FileHandler&&) = delete;
35     FileHandler& operator=(const FileHandler&) = delete;
36     FileHandler& operator=(FileHandler&&) = delete;
37     virtual ~FileHandler() = default;
38 
39     /** @brief Method to write data to BMC
40      *  @param[in] data - eventData
41      *  @return  PLDM status code
42      */
write(const message & data)43     virtual int write([[maybe_unused]] const message& data)
44     {
45         return PLDM_ERROR_UNSUPPORTED_PLDM_CMD;
46     }
47 
48     /** @brief Method to read data from BIC
49      *  @param[in] data - eventData
50      *  @return  PLDM status code
51      */
read(struct pldm_oem_meta_file_io_read_resp * data)52     virtual int read(
53         [[maybe_unused]] struct pldm_oem_meta_file_io_read_resp* data)
54     {
55         return PLDM_ERROR_UNSUPPORTED_PLDM_CMD;
56     }
57 };
58 
59 } // namespace pldm::responder::oem_meta
60