diff options
-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 | ||||
-rw-r--r-- | test/openpower-pels/Makefile.include | 10 | ||||
-rw-r--r-- | test/openpower-pels/severity_test.cpp | 18 |
5 files changed, 103 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 diff --git a/test/openpower-pels/Makefile.include b/test/openpower-pels/Makefile.include index 18df9ec..e6f08e2 100644 --- a/test/openpower-pels/Makefile.include +++ b/test/openpower-pels/Makefile.include @@ -13,6 +13,7 @@ check_PROGRAMS += \ registry_test \ repository_test \ section_header_test \ + severity_test \ stream_test \ user_header_test @@ -23,6 +24,7 @@ pel_objects = \ $(top_builddir)/extensions/openpower-pels/pel_values.o \ $(top_builddir)/extensions/openpower-pels/private_header.o \ $(top_builddir)/extensions/openpower-pels/registry.o \ + $(top_builddir)/extensions/openpower-pels/severity.o \ $(top_builddir)/extensions/openpower-pels/user_header.o additional_data_test_SOURCES = %reldir%/additional_data_test.cpp @@ -121,6 +123,14 @@ registry_test_LDADD = \ $(top_builddir)/extensions/openpower-pels/pel_values.o registry_test_LDFLAGS = $(test_ldflags) +severity_test_SOURCES = %reldir%/severity_test.cpp +severity_test_CPPFLAGS = $(test_cppflags) +severity_test_CXXFLAGS = $(test_cxxflags) +severity_test_LDADD = \ + $(test_ldflags) \ + $(top_builddir)/extensions/openpower-pels/severity.o +severity_test_LDFLAGS = $(test_ldflags) + mtms_test_SOURCES = %reldir%/mtms_test.cpp mtms_test_CPPFLAGS = $(test_cppflags) mtms_test_CXXFLAGS = $(test_cxxflags) diff --git a/test/openpower-pels/severity_test.cpp b/test/openpower-pels/severity_test.cpp new file mode 100644 index 0000000..293196b --- /dev/null +++ b/test/openpower-pels/severity_test.cpp @@ -0,0 +1,18 @@ +#include "extensions/openpower-pels/severity.hpp" + +#include <gtest/gtest.h> + +using namespace openpower::pels; +using LogSeverity = phosphor::logging::Entry::Level; + +TEST(SeverityTest, SeverityMapTest) +{ + ASSERT_EQ(convertOBMCSeverityToPEL(LogSeverity::Informational), 0x00); + ASSERT_EQ(convertOBMCSeverityToPEL(LogSeverity::Notice), 0x00); + ASSERT_EQ(convertOBMCSeverityToPEL(LogSeverity::Debug), 0x00); + ASSERT_EQ(convertOBMCSeverityToPEL(LogSeverity::Warning), 0x20); + ASSERT_EQ(convertOBMCSeverityToPEL(LogSeverity::Critical), 0x50); + ASSERT_EQ(convertOBMCSeverityToPEL(LogSeverity::Emergency), 0x40); + ASSERT_EQ(convertOBMCSeverityToPEL(LogSeverity::Alert), 0x40); + ASSERT_EQ(convertOBMCSeverityToPEL(LogSeverity::Error), 0x40); +} |