diff options
Diffstat (limited to 'extensions/openpower-pels')
-rw-r--r-- | extensions/openpower-pels/openpower-pels.mk | 1 | ||||
-rw-r--r-- | extensions/openpower-pels/severity.cpp | 54 | ||||
-rw-r--r-- | extensions/openpower-pels/severity.hpp | 20 |
3 files changed, 75 insertions, 0 deletions
diff --git a/extensions/openpower-pels/openpower-pels.mk b/extensions/openpower-pels/openpower-pels.mk index aa69a2e..89143b2 100644 --- a/extensions/openpower-pels/openpower-pels.mk +++ b/extensions/openpower-pels/openpower-pels.mk @@ -12,4 +12,5 @@ phosphor_log_manager_SOURCES += \ extensions/openpower-pels/private_header.cpp \ extensions/openpower-pels/registry.cpp \ extensions/openpower-pels/repository.cpp \ + extensions/openpower-pels/severity.cpp \ extensions/openpower-pels/user_header.cpp diff --git a/extensions/openpower-pels/severity.cpp b/extensions/openpower-pels/severity.cpp new file mode 100644 index 0000000..1911c12 --- /dev/null +++ b/extensions/openpower-pels/severity.cpp @@ -0,0 +1,54 @@ +#include "severity.hpp" + +namespace openpower +{ +namespace pels +{ + +using LogSeverity = phosphor::logging::Entry::Level; + +/** + * @brief The major types of severity values, based on the + * the left nibble of the severity value. + */ +enum class PELSeverityType : uint8_t +{ + nonError = 0x00, + recovered = 0x10, + predictive = 0x20, + unrecoverable = 0x40, + critical = 0x50, + diagnostic = 0x60, + symptom = 0x70 +}; + +uint8_t convertOBMCSeverityToPEL(LogSeverity severity) +{ + uint8_t pelSeverity = static_cast<uint8_t>(PELSeverityType::unrecoverable); + switch (severity) + { + case (LogSeverity::Notice): + case (LogSeverity::Informational): + case (LogSeverity::Debug): + pelSeverity = static_cast<uint8_t>(PELSeverityType::nonError); + break; + + case (LogSeverity::Warning): + pelSeverity = static_cast<uint8_t>(PELSeverityType::predictive); + break; + + case (LogSeverity::Critical): + pelSeverity = static_cast<uint8_t>(PELSeverityType::critical); + break; + + case (LogSeverity::Emergency): + case (LogSeverity::Alert): + case (LogSeverity::Error): + pelSeverity = static_cast<uint8_t>(PELSeverityType::unrecoverable); + break; + } + + return pelSeverity; +} +} // namespace pels +} // namespace openpower diff --git a/extensions/openpower-pels/severity.hpp b/extensions/openpower-pels/severity.hpp new file mode 100644 index 0000000..f2b9921 --- /dev/null +++ b/extensions/openpower-pels/severity.hpp @@ -0,0 +1,20 @@ +#pragma once + +#include "elog_entry.hpp" + +namespace openpower +{ +namespace pels +{ + +/** + * @brief Convert an OpenBMC event log severity to a PEL severity + * + * @param[in] severity - The OpenBMC event log severity + * + * @return uint8_t - The PEL severity value + */ +uint8_t convertOBMCSeverityToPEL(phosphor::logging::Entry::Level severity); + +} // namespace pels +} // namespace openpower |