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