blob: d73726734accb2313ac140e92178b7a23067eade [file] [log] [blame]
Matt Spinler835a8692019-08-27 13:56:05 -05001#pragma once
2
Matt Spinler455587e2020-01-15 14:31:52 -06003#include "pel_types.hpp"
4
Aatir186ce8c2019-10-20 15:13:39 -05005#include <map>
Matt Spinler835a8692019-08-27 13:56:05 -05006#include <string>
7#include <tuple>
8#include <vector>
9
10namespace openpower
11{
12namespace pels
13{
14namespace pel_values
15{
16
17// The actual value as it shows up in the PEL
18const int fieldValuePos = 0;
19
20// The name of the value as specified in the message registry
21const int registryNamePos = 1;
22
23// The description of the field, used by PEL parsers
24const int descriptionPos = 2;
25
26using PELFieldValue = std::tuple<uint32_t, const char*, const char*>;
27using PELValues = std::vector<PELFieldValue>;
28
Harisuddin Mohamed Isabebeb942020-03-12 17:12:24 +080029const std::string sectionVer = "Section Version";
30const std::string subSection = "Sub-section type";
31const std::string createdBy = "Created by";
32
Matt Spinler835a8692019-08-27 13:56:05 -050033/**
Aatir7b291ec2019-11-19 10:37:37 -060034 * @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
Vijay Lobo593a4c62021-06-16 14:25:26 -050038 * @param[in] uint8_t - position in the pel_values table to read
Aatir7b291ec2019-11-19 10:37:37 -060039 */
Vijay Lobo593a4c62021-06-16 14:25:26 -050040std::string getValue(const uint8_t field, const pel_values::PELValues& values,
41 const uint8_t position = pel_values::descriptionPos);
Aatir7b291ec2019-11-19 10:37:37 -060042
43/**
Harisuddin Mohamed Isa600d15a2019-12-20 12:42:26 +080044 * @brief Helper function to get value vector from lookup tables.
45 *
46 * @param[in] value - the value to lookup
47 * @param[in] table - lookup table
48 *
49 * @return std::vector<std::string> - the value vector
50 */
51std::vector<std::string> getValuesBitwise(uint16_t value,
52 const pel_values::PELValues& table);
53/**
Matt Spinler835a8692019-08-27 13:56:05 -050054 * @brief Find the desired entry in a PELValues table based on the
55 * field value.
56 *
57 * @param[in] value - the PEL value to find
58 * @param[in] fields - the PEL values table to use
59 *
60 * @return PELValues::const_iterator - an iterator to the table entry
61 */
62PELValues::const_iterator findByValue(uint32_t value, const PELValues& fields);
63
64/**
65 * @brief Find the desired entry in a PELValues table based on the
66 * field message registry name.
67 *
68 * @param[in] name - the PEL message registry enum name
69 * @param[in] fields - the PEL values table to use
70 *
71 * @return PELValues::const_iterator - an iterator to the table entry
72 */
73PELValues::const_iterator findByName(const std::string& name,
74 const PELValues& fields);
75
76/**
77 * @brief The values for the 'subsystem' field in the User Header
78 */
79extern const PELValues subsystemValues;
80
81/**
82 * @brief The values for the 'severity' field in the User Header
83 */
84extern const PELValues severityValues;
85
86/**
87 * @brief The values for the 'Event Type' field in the User Header
88 */
89extern const PELValues eventTypeValues;
90
91/**
92 * @brief The values for the 'Event Scope' field in the User Header
93 */
94extern const PELValues eventScopeValues;
95
96/**
97 * @brief The values for the 'Action Flags' field in the User Header
98 */
99extern const PELValues actionFlagsValues;
100
101/**
102 * @brief The values for callout priorities in the SRC section
103 */
104extern const PELValues calloutPriorityValues;
105
Aatir186ce8c2019-10-20 15:13:39 -0500106/**
107 * @brief Map for section IDs
108 */
109extern const std::map<std::string, std::string> sectionTitles;
110
Aatirc92b4eb2019-11-18 13:44:51 -0600111/**
112 * @brief Map for creator IDs
113 */
114extern const std::map<std::string, std::string> creatorIDs;
115
Matt Spinler455587e2020-01-15 14:31:52 -0600116/**
117 * @brief Map for transmission states
118 */
119extern const std::map<TransmissionState, std::string> transmissionStates;
120
Harisuddin Mohamed Isa0f717e12020-01-15 20:05:33 +0800121/**
122 * @brief Map for Procedure Descriptions
123 */
124extern const std::map<std::string, std::string> procedureDesc;
125
126/**
127 * @brief Map for Callout Failing Component Types
128 */
129extern const std::map<uint8_t, std::string> failingComponentType;
130
131/**
132 * @brief Map for Boolean value
133 */
134extern const std::map<bool, std::string> boolString;
135
Matt Spinler578e0702020-03-13 09:40:43 -0500136/**
Matt Spinlera27e2e52020-04-09 11:06:11 -0500137 * @brief Map for maintenance procedures
Matt Spinler578e0702020-03-13 09:40:43 -0500138 */
Matt Spinlera27e2e52020-04-09 11:06:11 -0500139extern const std::map<std::string, std::string> maintenanceProcedures;
Matt Spinler578e0702020-03-13 09:40:43 -0500140
Matt Spinler2b6dfa02020-04-09 11:39:05 -0500141/**
142 * @brief Map for symbolic FRUs.
143 */
144extern const std::map<std::string, std::string> symbolicFRUs;
145
Matt Spinler835a8692019-08-27 13:56:05 -0500146} // namespace pel_values
147} // namespace pels
148} // namespace openpower