#include "fru_area.hpp" #include "frup.hpp" #include #include #include using namespace phosphor::logging; //---------------------------------------------------------------- // Constructor //---------------------------------------------------------------- IPMIFruArea::IPMIFruArea(const uint8_t fruid, const ipmi_fru_area_type type, bool bmc_fru) : iv_fruid(fruid), iv_type(type), iv_bmc_fru(bmc_fru) { if (iv_type == IPMI_FRU_AREA_INTERNAL_USE) { iv_name = "INTERNAL_"; } else if (iv_type == IPMI_FRU_AREA_CHASSIS_INFO) { iv_name = "CHASSIS_"; } else if (iv_type == IPMI_FRU_AREA_BOARD_INFO) { iv_name = "BOARD_"; } else if (iv_type == IPMI_FRU_AREA_PRODUCT_INFO) { iv_name = "PRODUCT_"; } else if (iv_type == IPMI_FRU_AREA_MULTI_RECORD) { iv_name = "MULTI_"; } else { iv_name = IPMI_FRU_AREA_TYPE_MAX; log("Invalid Area", entry("TYPE=%d", iv_type)); } } //----------------------------------------------------- // For a FRU area type, accepts the data and updates // area specific data. //----------------------------------------------------- void IPMIFruArea::set_data(const uint8_t* data, const size_t len) { iv_len = len; iv_data = new uint8_t[len]; std::memcpy(iv_data, data, len); } //----------------------------------------------------- // Sets the dbus parameters //----------------------------------------------------- void IPMIFruArea::update_dbus_paths(const char* bus_name, const char* obj_path, const char* intf_name) { iv_bus_name = bus_name; iv_obj_path = obj_path; iv_intf_name = intf_name; } //------------------- // Destructor //------------------- IPMIFruArea::~IPMIFruArea() { if (iv_data != NULL) { delete[] iv_data; iv_data = NULL; } }