PEL: Updated PEL spec error action flag bit#10

- This will help to indicate which SRCs need to be collected and
regularly called home.
- Defined new entry in message registry schema action flags field
- Set this action flag in the registry for the daily clock PEL
and the voltage regulator N+1 phase fault PEL

Tested:
Sample output:
```bash
$ peltool -af
...
    "Action Flags": [
                                "Report Externally",
                                "Heartbeat Call Home Event"
...
    "Action Flags": [
                                "Report Externally",
                                "HMC Call Home",
                                "Heartbeat Call Home Event"
...
$ peltool -afx
...
00000030  55 48 00 18 01 00 20 00  60 03 00 01 00 00 00 00  |
00000040  00 00 20 20 00 00 00 00  50 53 00 50 01 01 27 00  |
...
00000030  55 48 00 18 01 00 20 00  58 03 00 01 00 00 00 00  |
00000040  00 00 28 20 00 00 00 00  50 53 00 50 01 01 30 00  |
...

```
Change-Id: Ifa181374692013dfadc0dd744f6db61baad3d42e
Signed-off-by: Harsh Agarwal <Harsh.Agarwal@ibm.com>
diff --git a/extensions/openpower-pels/pel_types.hpp b/extensions/openpower-pels/pel_types.hpp
index 99ed1cb..d18d3b7 100644
--- a/extensions/openpower-pels/pel_types.hpp
+++ b/extensions/openpower-pels/pel_types.hpp
@@ -117,7 +117,8 @@
     isolationIncompleteFlagBit = 10, // 0x0400
     spCallHomeFlagBit = 8,           // 0x0100
     osSWErrorBit = 7,                // 0x0080
-    osHWErrorBit = 6                 // 0x0040
+    osHWErrorBit = 6,                // 0x0040
+    heartbeatCallHomeFlagBit = 5     // 0x0020
 };
 
 /**
diff --git a/extensions/openpower-pels/pel_values.cpp b/extensions/openpower-pels/pel_values.cpp
index a94606c..d584c3a 100644
--- a/extensions/openpower-pels/pel_values.cpp
+++ b/extensions/openpower-pels/pel_values.cpp
@@ -199,7 +199,8 @@
     {0x0800, "call_home", "HMC Call Home"},
     {0x0400, "isolation_incomplete",
      "Isolation Incomplete, further analysis required"},
-    {0x0100, "termination", "Service Processor Call Home Required"}};
+    {0x0100, "termination", "Service Processor Call Home Required"},
+    {0x0020, "heartbeat_call_home", "Heartbeat Call Home Event"}};
 
 /**
  * The possible values for the Callout Priority field in the SRC.
diff --git a/extensions/openpower-pels/registry/message_registry.json b/extensions/openpower-pels/registry/message_registry.json
index 7aed193..c4e3963 100644
--- a/extensions/openpower-pels/registry/message_registry.json
+++ b/extensions/openpower-pels/registry/message_registry.json
@@ -806,7 +806,7 @@
             "Subsystem": "cec_clocks",
             "ComponentID": "0x3000",
             "Severity": "non_error",
-            "ActionFlags": ["report", "call_home"],
+            "ActionFlags": ["report", "call_home", "heartbeat_call_home"],
 
             "SRC": {
                 "ReasonCode": "0x300A",
@@ -3648,7 +3648,7 @@
             "Subsystem": "power",
             "Severity": "non_error",
             "MfgSeverity": "predictive_redundancy_loss",
-            "ActionFlags": ["report"],
+            "ActionFlags": ["report", "heartbeat_call_home"],
             "MfgActionFlags": ["service_action", "report", "call_home"],
             "ComponentID": "0x2700",
 
diff --git a/extensions/openpower-pels/registry/schema/schema.json b/extensions/openpower-pels/registry/schema/schema.json
index d4fea9d..2391fea 100644
--- a/extensions/openpower-pels/registry/schema/schema.json
+++ b/extensions/openpower-pels/registry/schema/schema.json
@@ -389,7 +389,8 @@
                     "dont_report",
                     "call_home",
                     "isolation_incomplete",
-                    "termination"
+                    "termination",
+                    "heartbeat_call_home"
                 ]
             }
         },
diff --git a/test/openpower-pels/registry_test.cpp b/test/openpower-pels/registry_test.cpp
index ce17e9b..322c25b 100644
--- a/test/openpower-pels/registry_test.cpp
+++ b/test/openpower-pels/registry_test.cpp
@@ -153,6 +153,29 @@
                     }
                 ]
             }
+        },
+
+        {
+            "Name": "org.open_power.PHAL.Info.ClockDailyLog",
+            "Subsystem": "cec_clocks",
+            "ComponentID": "0x3000",
+            "Severity": "non_error",
+            "ActionFlags": ["report", "call_home", "heartbeat_call_home"],
+
+            "SRC":
+            {
+                "ReasonCode": "0x300A",
+                "Words6To9": {}
+            },
+
+            "Documentation":
+            {
+                "Description": "Informational error to house clock debug info",
+                "Message": "Informational error to house clock debug info",
+                "Notes": [
+                    "User data includes processor and clock register state information."
+                ]
+            }
         }
     ]
 }
@@ -261,6 +284,12 @@
     entry = registry.lookup("0x2333", LookupType::reasonCode);
     ASSERT_TRUE(entry);
     EXPECT_EQ(entry->name, "xyz.openbmc_project.Power.OverVoltage");
+
+    entry = registry.lookup("org.open_power.PHAL.Info.ClockDailyLog",
+                            LookupType::name);
+    ASSERT_TRUE(entry);
+    EXPECT_EQ(entry->name, "org.open_power.PHAL.Info.ClockDailyLog");
+    EXPECT_EQ(*(entry->actionFlags), 0x2820);
 }
 
 // Check the entry that mostly uses defaults
@@ -319,6 +348,12 @@
                                    "termination"};
     EXPECT_EQ(getActionFlags(flags), 0x9100);
 
+    flags.push_back("heartbeat_call_home");
+    EXPECT_EQ(getActionFlags(flags), 0x9120);
+    flags.clear();
+    flags.push_back("heartbeat_call_home");
+    EXPECT_EQ(getActionFlags(flags), 0x0020);
+
     flags.clear();
     flags.push_back("foo");
     EXPECT_THROW(getActionFlags(flags), std::runtime_error);