PEL: Add boot progress code to SRC hex data

Add the first 8 characters from the ASCII string field of the current
progress SRC, taken from the xyz.openbmc_project.State.Boot.Raw D-Bus
interface, to SRC hex word 4 when creating a PEL.

This is how the field is defined in the PEL spec, and is to help with
debug so that one can know which part of the boot was occurring when
the PEL was created.  Note that at this point most progress codes are
sent down from one of the host firmware subsystems and not created by
the BMC.

The field is only inserted into the SRC if those characters are present
and represent a valid 4 byte number, such as "C7004000".  This is then
represented as 0xC7004000 in the SRC word. Otherwise, the word is left
at a value of zero.

For example:
...
    "Valid Word Count":         "0x09",
    "Reference Code":           "BD8D1001",
    "Hex Word 2":               "00080455",
    "Hex Word 3":               "2E2D0010",
    "Hex Word 4":               "C7004000", <---Progress code
    "Hex Word 5":               "00000000",
    "Hex Word 6":               "00000005",
    "Hex Word 7":               "00000000",
    "Hex Word 8":               "00000000",
    "Hex Word 9":               "00000000"
...

Signed-off-by: Vijay Lobo <vijaylobo@gmail.com>
Signed-off-by: Matt Spinler <spinler@us.ibm.com>
Change-Id: Iba41e88626c0e081e5759b994e3630ef8b12daf4
diff --git a/extensions/openpower-pels/data_interface.hpp b/extensions/openpower-pels/data_interface.hpp
index e66cd0c..dbc4874 100644
--- a/extensions/openpower-pels/data_interface.hpp
+++ b/extensions/openpower-pels/data_interface.hpp
@@ -462,6 +462,14 @@
      */
     virtual std::vector<uint32_t> getLogIDWithHwIsolation() const = 0;
 
+    /**
+     * @brief Returns the latest raw progress SRC from the State.Boot.Raw
+     *        D-Bus interface.
+     *
+     * @return std::vector<uint8_t> - The progress SRC bytes
+     */
+    virtual std::vector<uint8_t> getRawProgressSRC() const = 0;
+
   protected:
     /**
      * @brief Sets the host on/off state and runs any
@@ -780,6 +788,14 @@
      */
     std::vector<uint32_t> getLogIDWithHwIsolation() const override;
 
+    /**
+     * @brief Returns the latest raw progress SRC from the State.Boot.Raw
+     *        D-Bus interface.
+     *
+     * @return std::vector<uint8_t>: The progress SRC bytes
+     */
+    std::vector<uint8_t> getRawProgressSRC() const override;
+
   private:
     /**
      * @brief Reads the BMC firmware version string and puts it into