PEL: Make action flags optional in the registry
A future commit will fill in the field if it isn't
present.
Signed-off-by: Matt Spinler <spinler@us.ibm.com>
Change-Id: I67371433162ce2198a362796d274695a1bd6a6dc
diff --git a/extensions/openpower-pels/registry.cpp b/extensions/openpower-pels/registry.cpp
index f0efb3e..dc5a71a 100644
--- a/extensions/openpower-pels/registry.cpp
+++ b/extensions/openpower-pels/registry.cpp
@@ -291,7 +291,11 @@
Entry entry;
entry.name = (*e)["Name"];
entry.subsystem = helper::getSubsystem((*e)["Subsystem"]);
- entry.actionFlags = helper::getActionFlags((*e)["ActionFlags"]);
+
+ if (e->find("ActionFlags") != e->end())
+ {
+ entry.actionFlags = helper::getActionFlags((*e)["ActionFlags"]);
+ }
if (e->find("MfgActionFlags") != e->end())
{
diff --git a/extensions/openpower-pels/registry.hpp b/extensions/openpower-pels/registry.hpp
index c55c624..d75c30a 100644
--- a/extensions/openpower-pels/registry.hpp
+++ b/extensions/openpower-pels/registry.hpp
@@ -99,7 +99,7 @@
/**
* @brief The PEL action flags field.
*/
- uint16_t actionFlags;
+ std::optional<uint16_t> actionFlags;
/**
* @brief The optional action flags to use instead when in manufacturing
diff --git a/extensions/openpower-pels/user_header.cpp b/extensions/openpower-pels/user_header.cpp
index 6dfbc09..f4337f3 100644
--- a/extensions/openpower-pels/user_header.cpp
+++ b/extensions/openpower-pels/user_header.cpp
@@ -56,7 +56,7 @@
_problemDomain = 0;
_problemVector = 0;
- _actionFlags = entry.actionFlags;
+ _actionFlags = entry.actionFlags.value_or(0);
_reserved4Byte2 = 0;
diff --git a/test/openpower-pels/registry_test.cpp b/test/openpower-pels/registry_test.cpp
index a16370f..7105c82 100644
--- a/test/openpower-pels/registry_test.cpp
+++ b/test/openpower-pels/registry_test.cpp
@@ -16,7 +16,6 @@
{
"Name": "xyz.openbmc_project.Power.Fault",
"Subsystem": "power_supply",
- "ActionFlags": ["service_action", "report"],
"SRC":
{
@@ -105,7 +104,7 @@
EXPECT_EQ(entry->subsystem, 0x62);
EXPECT_EQ(*(entry->severity), 0x40);
EXPECT_EQ(*(entry->mfgSeverity), 0x00);
- EXPECT_EQ(entry->actionFlags, 0xA800);
+ EXPECT_EQ(*(entry->actionFlags), 0xA800);
EXPECT_EQ(*(entry->mfgActionFlags), 0x4000);
EXPECT_EQ(entry->componentID, 0x2300);
EXPECT_FALSE(entry->eventType);
@@ -148,7 +147,7 @@
EXPECT_FALSE(entry->severity);
EXPECT_FALSE(entry->mfgSeverity);
EXPECT_FALSE(entry->mfgActionFlags);
- EXPECT_EQ(entry->actionFlags, 0xA000);
+ EXPECT_FALSE(entry->actionFlags);
EXPECT_EQ(entry->componentID, 0x2000);
EXPECT_FALSE(entry->eventType);
EXPECT_FALSE(entry->eventScope);