1*1d0c3566SBrandon Kim #pragma once
2*1d0c3566SBrandon Kim 
3*1d0c3566SBrandon Kim #include <cstdint>
4*1d0c3566SBrandon Kim #include <span>
5*1d0c3566SBrandon Kim #include <vector>
6*1d0c3566SBrandon Kim 
7*1d0c3566SBrandon Kim namespace bios_bmc_smm_error_logger
8*1d0c3566SBrandon Kim {
9*1d0c3566SBrandon Kim 
10*1d0c3566SBrandon Kim /**
11*1d0c3566SBrandon Kim  * Each data transport mechanism must implement the DataInterface.
12*1d0c3566SBrandon Kim  */
13*1d0c3566SBrandon Kim class DataInterface
14*1d0c3566SBrandon Kim {
15*1d0c3566SBrandon Kim   public:
16*1d0c3566SBrandon Kim     virtual ~DataInterface() = default;
17*1d0c3566SBrandon Kim 
18*1d0c3566SBrandon Kim     /**
19*1d0c3566SBrandon Kim      * Read bytes from shared buffer (blocking call).
20*1d0c3566SBrandon Kim      *
21*1d0c3566SBrandon Kim      * @param[in] offset - offset to read from
22*1d0c3566SBrandon Kim      * @param[in] length - number of bytes to read
23*1d0c3566SBrandon Kim      * @return the bytes read
24*1d0c3566SBrandon Kim      */
25*1d0c3566SBrandon Kim     virtual std::vector<uint8_t> read(const uint32_t offset,
26*1d0c3566SBrandon Kim                                       const uint32_t length) = 0;
27*1d0c3566SBrandon Kim 
28*1d0c3566SBrandon Kim     /**
29*1d0c3566SBrandon Kim      * Write bytes to shared buffer.
30*1d0c3566SBrandon Kim      *
31*1d0c3566SBrandon Kim      * @param[in] offset - offset to write to
32*1d0c3566SBrandon Kim      * @param[in] bytes - byte vector of data.
33*1d0c3566SBrandon Kim      * @return return the byte length written
34*1d0c3566SBrandon Kim      */
35*1d0c3566SBrandon Kim     virtual uint32_t write(const uint32_t offset,
36*1d0c3566SBrandon Kim                            const std::span<const uint8_t> bytes) = 0;
37*1d0c3566SBrandon Kim 
38*1d0c3566SBrandon Kim     /**
39*1d0c3566SBrandon Kim      * Getter for Memory Region Size
40*1d0c3566SBrandon Kim      *
41*1d0c3566SBrandon Kim      * @return return Memory Region size allocated
42*1d0c3566SBrandon Kim      */
43*1d0c3566SBrandon Kim     virtual uint32_t getMemoryRegionSize() = 0;
44*1d0c3566SBrandon Kim };
45*1d0c3566SBrandon Kim 
46*1d0c3566SBrandon Kim } // namespace bios_bmc_smm_error_logger
47