#ifndef __IPMI_FRU_AREA_H__ #define __IPMI_FRU_AREA_H__ #include "frup.hpp" #include "writefrudata.hpp" #include #include #include #include using std::uint8_t; class IPMIFruArea { public: IPMIFruArea() = delete; ~IPMIFruArea() = default; // constructor IPMIFruArea(const uint8_t fruID, const ipmi_fru_area_type type, bool bmcOnlyFru = false); // Sets the present bit inline void setPresent(const bool present) { isPresent = present; } // returns fru id; uint8_t getFruID() const { return fruID; } // Returns the length. size_t getLength() const { return data.size(); } // Returns the type of the current fru area ipmi_fru_area_type getType() const { return type; } // Returns the name const char* getName() const { return name.c_str(); } // Returns the data portion inline const uint8_t* getData() const { return data.data(); } // Accepts a pointer to data and sets it in the object. void setData(const uint8_t*, const size_t); private: // Unique way of identifying a FRU uint8_t fruID = 0; // Type of the fru matching offsets in common header ipmi_fru_area_type type = IPMI_FRU_AREA_INTERNAL_USE; // Name of the fru area. ( BOARD/CHASSIS/PRODUCT ) std::string name; // Special bit for BMC readable eeprom only. bool bmcOnlyFru = false; // If a FRU is physically present. bool isPresent = false; // Whether a particular area is valid ? bool isValid = false; // Actual area data. std::vector data; }; #endif