diff options
author | Harisuddin Mohamed Isa <harisuddin@gmail.com> | 2020-01-15 20:05:33 +0800 |
---|---|---|
committer | Harisuddin Mohamed Isa <harisuddin@gmail.com> | 2020-02-03 11:56:44 +0800 |
commit | 0f717e1063154f0baec62f80e043d4d1c3317ce0 (patch) | |
tree | 4c2e91a3a7fe18bdd7456c7a77212c8501d15bfe /extensions/openpower-pels/src.hpp | |
parent | 56e08263d6c3c7dccca02a7b3338cc0a37f4d716 (diff) | |
download | phosphor-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.hpp | 41 |
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; |