summaryrefslogtreecommitdiffstats
path: root/extensions/openpower-pels/src.hpp
diff options
context:
space:
mode:
authorHarisuddin Mohamed Isa <harisuddin@gmail.com>2020-01-15 20:05:33 +0800
committerHarisuddin Mohamed Isa <harisuddin@gmail.com>2020-02-03 11:56:44 +0800
commit0f717e1063154f0baec62f80e043d4d1c3317ce0 (patch)
tree4c2e91a3a7fe18bdd7456c7a77212c8501d15bfe /extensions/openpower-pels/src.hpp
parent56e08263d6c3c7dccca02a7b3338cc0a37f4d716 (diff)
downloadphosphor-logging-0f717e1063154f0baec62f80e043d4d1c3317ce0.tar.gz
phosphor-logging-0f717e1063154f0baec62f80e043d4d1c3317ce0.zip
PEL: Print SRC section into JSON
For BMC created errors, look up the reason code in the message registry for error description and also meaning of data stored in hexwords 6-9 (if any). Added registry message field in peltool list output. "Primary SRC": { "Section Version": "1", "Sub-section type": "1", "Created by": "0x1000", "SRC Version": "0x02", "SRC Format": "0x55", "Power Control Net Fault": "False", "Error Details": { "Message": "PS 0x64 had a PGOOD Fault", "PS_NUM": "0x64" }, "Valid Word Count": "0x09", "Reference Code": "BD8D1001", "Hex Word 2": "00000055", "Hex Word 3": "00000010", "Hex Word 4": "00000000", "Hex Word 5": "00000000", "Hex Word 6": "00000064", "Hex Word 7": "00000000", "Hex Word 8": "00000000", "Hex Word 9": "00000000" } "Primary SRC": { "Section Version": "1", "Sub-section type": "0", "Created by": "0x4552", "SRC Version": "0x02", "SRC Format": "0x2008000", "Power Control Net Fault": "False", "Valid Word Count": "0x04", "Reference Code": "B2001020", "Hex Word 2": "02008000", "Hex Word 3": "00000000", "Hex Word 4": "00000012", "Callout Section": { "Callout Count": "1", "Callouts": [{ "FRU Type": "Symbolic FRU", "Priority": "Medium Priority", "Part Number": "NEXTLVL" }] } } Testing: Manually run peltool and verified out. All unit tests passed. Signed-off-by: Harisuddin Mohamed Isa <harisuddin@gmail.com> Change-Id: I124627ba785413ebda02305b7d9f95431922e714
Diffstat (limited to 'extensions/openpower-pels/src.hpp')
-rw-r--r--extensions/openpower-pels/src.hpp41
1 files changed, 40 insertions, 1 deletions
diff --git a/extensions/openpower-pels/src.hpp b/extensions/openpower-pels/src.hpp
index dada63a..2296f6f 100644
--- a/extensions/openpower-pels/src.hpp
+++ b/extensions/openpower-pels/src.hpp
@@ -21,6 +21,11 @@ constexpr uint8_t bmcSRCFormat = 0x55;
constexpr uint8_t primaryBMCPosition = 0x10;
constexpr size_t baseSRCSize = 72;
+enum class DetailLevel
+{
+ message = 0x01,
+ json = 0x02
+};
/**
* @class SRC
*
@@ -45,7 +50,10 @@ class SRC : public Section
enum HeaderFlags
{
additionalSections = 0x01,
- powerFaultEvent = 0x02
+ powerFaultEvent = 0x02,
+ hypDumpInit = 0x04,
+ i5OSServiceEventBit = 0x10,
+ virtualProgressSRC = 0x80
};
SRC() = delete;
@@ -212,6 +220,23 @@ class SRC : public Section
return wordNum - 2;
}
+ /**
+ * @brief Get section in JSON.
+ * @return std::optional<std::string> - SRC section's JSON
+ */
+ std::optional<std::string> getJSON() const override;
+
+ /**
+ * @brief Get error details based on refcode and hexwords
+ * @param[in] registry - Registry object
+ * @param[in] type - detail level enum value : single message or full json
+ * @param[in] toCache - boolean to cache registry in memory, default=false
+ * @return std::optional<std::string> - Error details
+ */
+ std::optional<std::string> getErrorDetails(message::Registry& registry,
+ DetailLevel type,
+ bool toCache = false) const;
+
private:
/**
* @brief Fills in the user defined hex words from the
@@ -281,6 +306,20 @@ class SRC : public Section
void validate() override;
/**
+ * @brief Get error description from message registry
+ * @param[in] regEntry - The message registry entry for the error
+ * @return std::optional<std::string> - Error message
+ */
+ std::optional<std::string>
+ getErrorMessage(const message::Entry& regEntry) const;
+
+ /**
+ * @brief Get Callout info in JSON
+ * @return std::optional<std::string> - Callout details
+ */
+ std::optional<std::string> getCallouts() const;
+
+ /**
* @brief The SRC version field
*/
uint8_t _version;
OpenPOWER on IntegriCloud