1 #pragma once 2 3 #include "pel_types.hpp" 4 5 #include <map> 6 #include <string> 7 #include <tuple> 8 #include <vector> 9 10 namespace openpower 11 { 12 namespace pels 13 { 14 namespace pel_values 15 { 16 17 // The actual value as it shows up in the PEL 18 const int fieldValuePos = 0; 19 20 // The name of the value as specified in the message registry 21 const int registryNamePos = 1; 22 23 // The description of the field, used by PEL parsers 24 const int descriptionPos = 2; 25 26 using PELFieldValue = std::tuple<uint32_t, const char*, const char*>; 27 using PELValues = std::vector<PELFieldValue>; 28 29 const std::string sectionVer = "Section Version"; 30 const std::string subSection = "Sub-section type"; 31 const std::string createdBy = "Created by"; 32 33 /** 34 * @brief Helper function to get values from lookup tables. 35 * @return std::string - the value 36 * @param[in] uint8_t - field to get value for 37 * @param[in] PELValues - lookup table 38 */ 39 std::string getValue(const uint8_t field, const pel_values::PELValues& values); 40 41 /** 42 * @brief Helper function to get value vector from lookup tables. 43 * 44 * @param[in] value - the value to lookup 45 * @param[in] table - lookup table 46 * 47 * @return std::vector<std::string> - the value vector 48 */ 49 std::vector<std::string> getValuesBitwise(uint16_t value, 50 const pel_values::PELValues& table); 51 /** 52 * @brief Find the desired entry in a PELValues table based on the 53 * field value. 54 * 55 * @param[in] value - the PEL value to find 56 * @param[in] fields - the PEL values table to use 57 * 58 * @return PELValues::const_iterator - an iterator to the table entry 59 */ 60 PELValues::const_iterator findByValue(uint32_t value, const PELValues& fields); 61 62 /** 63 * @brief Find the desired entry in a PELValues table based on the 64 * field message registry name. 65 * 66 * @param[in] name - the PEL message registry enum name 67 * @param[in] fields - the PEL values table to use 68 * 69 * @return PELValues::const_iterator - an iterator to the table entry 70 */ 71 PELValues::const_iterator findByName(const std::string& name, 72 const PELValues& fields); 73 74 /** 75 * @brief The values for the 'subsystem' field in the User Header 76 */ 77 extern const PELValues subsystemValues; 78 79 /** 80 * @brief The values for the 'severity' field in the User Header 81 */ 82 extern const PELValues severityValues; 83 84 /** 85 * @brief The values for the 'Event Type' field in the User Header 86 */ 87 extern const PELValues eventTypeValues; 88 89 /** 90 * @brief The values for the 'Event Scope' field in the User Header 91 */ 92 extern const PELValues eventScopeValues; 93 94 /** 95 * @brief The values for the 'Action Flags' field in the User Header 96 */ 97 extern const PELValues actionFlagsValues; 98 99 /** 100 * @brief The values for callout priorities in the SRC section 101 */ 102 extern const PELValues calloutPriorityValues; 103 104 /** 105 * @brief Map for section IDs 106 */ 107 extern const std::map<std::string, std::string> sectionTitles; 108 109 /** 110 * @brief Map for creator IDs 111 */ 112 extern const std::map<std::string, std::string> creatorIDs; 113 114 /** 115 * @brief Map for transmission states 116 */ 117 extern const std::map<TransmissionState, std::string> transmissionStates; 118 119 /** 120 * @brief Map for Procedure Descriptions 121 */ 122 extern const std::map<std::string, std::string> procedureDesc; 123 124 /** 125 * @brief Map for Callout Failing Component Types 126 */ 127 extern const std::map<uint8_t, std::string> failingComponentType; 128 129 /** 130 * @brief Map for Boolean value 131 */ 132 extern const std::map<bool, std::string> boolString; 133 134 } // namespace pel_values 135 } // namespace pels 136 } // namespace openpower 137