#pragma once #include "pel_types.hpp" #include #include #include #include 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; using PELValues = std::vector; const std::string sectionVer = "Section Version"; const std::string subSection = "Sub-section type"; const std::string createdBy = "Created by"; /** * @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 - the value vector */ std::vector 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 sectionTitles; /** * @brief Map for creator IDs */ extern const std::map creatorIDs; /** * @brief Map for transmission states */ extern const std::map transmissionStates; /** * @brief Map for Procedure Descriptions */ extern const std::map procedureDesc; /** * @brief Map for Callout Failing Component Types */ extern const std::map failingComponentType; /** * @brief Map for Boolean value */ extern const std::map boolString; /** * @brief Map for maintenance procedures */ extern const std::map maintenanceProcedures; /** * @brief Map for symbolic FRUs. */ extern const std::map symbolicFRUs; } // namespace pel_values } // namespace pels } // namespace openpower