PEL: Update bmc & platform dump status in SRC section

With every PEL creation, the status of bmc and platform dumps -
Hardware and Hypervisor would be checked and status bits in SRC
section updated accordingly.

Change-Id: I3ec7626611cf330f2ce235a97ee3046c0d32b6ab
Signed-off-by: Sumit Kumar <sumit_kumar@in.ibm.com>
diff --git a/extensions/openpower-pels/src.cpp b/extensions/openpower-pels/src.cpp
index 6c6a2d4..a9f1b7f 100644
--- a/extensions/openpower-pels/src.cpp
+++ b/extensions/openpower-pels/src.cpp
@@ -348,11 +348,12 @@
     //   M: Partition dump status = 0
     //   I: System boot state = TODO
     //   G: Partition Boot type = 0
-    //   V: BMC dump status = TODO
+    //   V: BMC dump status
     //   E: Platform boot mode = 0 (side = temporary, speed = fast)
-    //   P: Platform dump status = TODO
+    //   P: Platform dump status
     //  FF: SRC format, set below
 
+    setDumpStatus(dataIface);
     setBMCFormat();
     setBMCPosition();
     setMotherboardCCIN(dataIface);
@@ -1403,5 +1404,28 @@
     return mrus;
 }
 
+void SRC::setDumpStatus(const DataInterfaceBase& dataIface)
+{
+    std::vector<bool> dumpStatus{false, false, false};
+
+    try
+    {
+        std::vector<std::string> dumpType = {"bmc/entry", "resource/entry",
+                                             "system/entry"};
+        dumpStatus = dataIface.checkDumpStatus(dumpType);
+
+        // For bmc      - set bit 0 of nibble [4-7] bits of byte-1 SP dump
+        // For resource - set bit 2 of nibble [4-7] bits of byte-2 Hypervisor
+        // For system   - set bit 1 of nibble [4-7] bits of byte-2 HW dump
+        _hexData[0] |= ((dumpStatus[0] << 19) | (dumpStatus[1] << 9) |
+                        (dumpStatus[2] << 10));
+    }
+    catch (const std::exception& e)
+    {
+        // Exception - may be no dump interface on dbus or getProperty
+        // failed
+    }
+}
+
 } // namespace pels
 } // namespace openpower