diff options
Diffstat (limited to 'extensions/openpower-pels/pel_values.hpp')
-rw-r--r-- | extensions/openpower-pels/pel_values.hpp | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/extensions/openpower-pels/pel_values.hpp b/extensions/openpower-pels/pel_values.hpp new file mode 100644 index 0000000..2424c63 --- /dev/null +++ b/extensions/openpower-pels/pel_values.hpp @@ -0,0 +1,132 @@ +#pragma once + +#include "pel_types.hpp" + +#include <map> +#include <string> +#include <tuple> +#include <vector> + +namespace openpower +{ +namespace pels +{ +namespace pel_values +{ + +// The actual value as it shows up in the PEL +const int fieldValuePos = 0; + +// The name of the value as specified in the message registry +const int registryNamePos = 1; + +// The description of the field, used by PEL parsers +const int descriptionPos = 2; + +using PELFieldValue = std::tuple<uint32_t, const char*, const char*>; +using PELValues = std::vector<PELFieldValue>; + +/** + * @brief Helper function to get values from lookup tables. + * @return std::string - the value + * @param[in] uint8_t - field to get value for + * @param[in] PELValues - lookup table + */ +std::string getValue(const uint8_t field, const pel_values::PELValues& values); + +/** + * @brief Helper function to get value vector from lookup tables. + * + * @param[in] value - the value to lookup + * @param[in] table - lookup table + * + * @return std::vector<std::string> - the value vector + */ +std::vector<std::string> getValuesBitwise(uint16_t value, + const pel_values::PELValues& table); +/** + * @brief Find the desired entry in a PELValues table based on the + * field value. + * + * @param[in] value - the PEL value to find + * @param[in] fields - the PEL values table to use + * + * @return PELValues::const_iterator - an iterator to the table entry + */ +PELValues::const_iterator findByValue(uint32_t value, const PELValues& fields); + +/** + * @brief Find the desired entry in a PELValues table based on the + * field message registry name. + * + * @param[in] name - the PEL message registry enum name + * @param[in] fields - the PEL values table to use + * + * @return PELValues::const_iterator - an iterator to the table entry + */ +PELValues::const_iterator findByName(const std::string& name, + const PELValues& fields); + +/** + * @brief The values for the 'subsystem' field in the User Header + */ +extern const PELValues subsystemValues; + +/** + * @brief The values for the 'severity' field in the User Header + */ +extern const PELValues severityValues; + +/** + * @brief The values for the 'Event Type' field in the User Header + */ +extern const PELValues eventTypeValues; + +/** + * @brief The values for the 'Event Scope' field in the User Header + */ +extern const PELValues eventScopeValues; + +/** + * @brief The values for the 'Action Flags' field in the User Header + */ +extern const PELValues actionFlagsValues; + +/** + * @brief The values for callout priorities in the SRC section + */ +extern const PELValues calloutPriorityValues; + +/** + * @brief Map for section IDs + */ +extern const std::map<std::string, std::string> sectionTitles; + +/** + * @brief Map for creator IDs + */ +extern const std::map<std::string, std::string> creatorIDs; + +/** + * @brief Map for transmission states + */ +extern const std::map<TransmissionState, std::string> transmissionStates; + +/** + * @brief Map for Procedure Descriptions + */ +extern const std::map<std::string, std::string> procedureDesc; + +/** + * @brief Map for Callout Failing Component Types + */ +extern const std::map<uint8_t, std::string> failingComponentType; + +/** + * @brief Map for Boolean value + */ +extern const std::map<bool, std::string> boolString; + +} // namespace pel_values +} // namespace pels +} // namespace openpower |