blob: e3918797f6a2c087af2a673b536142f81ebe3889 [file] [log] [blame]
#pragma once
namespace openpower
{
namespace vpd
{
/** @brief OpenPOWER VPD records we're interested in */
enum class Record
{
VINI, /**< Initial information, common to all OpenPOWER FRUs */
OPFR, /**< OpenPOWER FRU information, common to all OpenPOWER FRUs */
OSYS /**< Information specific to a system board */
};
/** @brief Convert VPD Record name from enum to string
* @tparam R - VPD Record
* @returns string representation of Record name
*/
template<Record R>
constexpr const char* getRecord() = delete;
template<>
constexpr const char* getRecord<Record::VINI>()
{
return "VINI";
}
template<>
constexpr const char* getRecord<Record::OPFR>()
{
return "OPFR";
}
template<>
constexpr const char* getRecord<Record::OSYS>()
{
return "OSYS";
}
namespace record
{
/** @brief OpenPOWER VPD keywords we're interested in */
enum class Keyword
{
DR, /**< FRU name/description */
PN, /**< FRU part number */
SN, /**< FRU serial number */
CC, /**< Customer Card Identification Number (CCIN) */
HW, /**< FRU version */
B1, /**< MAC Address */
VN, /**< FRU manufacturer name */
MB, /**< FRU manufacture date */
MM /**< FRU model */
};
/** @brief Convert VPD Keyword name from enum to string
* @tparam K - VPD Keyword
* @returns string representation of Keyword name
*/
template<Keyword K>
constexpr const char* getKeyword() = delete;
template<>
constexpr const char* getKeyword<Keyword::DR>()
{
return "DR";
}
template<>
constexpr const char* getKeyword<Keyword::PN>()
{
return "PN";
}
template<>
constexpr const char* getKeyword<Keyword::SN>()
{
return "SN";
}
template<>
constexpr const char* getKeyword<Keyword::CC>()
{
return "CC";
}
template<>
constexpr const char* getKeyword<Keyword::HW>()
{
return "HW";
}
template<>
constexpr const char* getKeyword<Keyword::B1>()
{
return "B1";
}
template<>
constexpr const char* getKeyword<Keyword::VN>()
{
return "VN";
}
template<>
constexpr const char* getKeyword<Keyword::MB>()
{
return "MB";
}
template<>
constexpr const char* getKeyword<Keyword::MM>()
{
return "MM";
}
} // namespace record
/** @brief FRUs whose VPD we're interested in
*
* BMC The VPD on the BMC planar, for eg
* ETHERNET The ethernet card on the BMC
*/
enum Fru
{
BMC,
ETHERNET
};
} // namespace vpd
} // namespace openpower