Attn: Treat HB primary src as hex not ascii

When retrieving the HB primary src from TI info the field needs to be
treated as hex (versus ascii in hypervisor case).

Signed-off-by: Ben Tyner <ben.tyner@ibm.com>
Change-Id: I2f9bfb7a04693d5435e242381025eb15a1177641
diff --git a/attn/ti_handler.cpp b/attn/ti_handler.cpp
index f04f111..9752fca 100644
--- a/attn/ti_handler.cpp
+++ b/attn/ti_handler.cpp
@@ -87,11 +87,10 @@
         tiAdditionalData["Subsystem"] =
             std::to_string(static_cast<uint8_t>(pel::SubsystemID::hypervisor));
 
-        // copy ascii src chars to additional data
-        char srcChar[9]; // 8 char src + null term
-        memcpy(srcChar, &(i_tiDataArea->asciiData0), 4);
-        memcpy(&srcChar[4], &(i_tiDataArea->asciiData1), 4);
-        srcChar[8]                   = 0;
+        // Copy all ascii src chars to additional data
+        char srcChar[33]; // 32 ascii chars + null term
+        memcpy(srcChar, &(i_tiDataArea->asciiData0), 32);
+        srcChar[32]                  = 0;
         tiAdditionalData["SrcAscii"] = std::string{srcChar};
 
         // TI event
@@ -244,10 +243,12 @@
             tiAdditionalData["Subsystem"] = std::to_string(
                 static_cast<uint8_t>(pel::SubsystemID::hostboot));
 
-            char srcChar[8];
-            memcpy(srcChar, &(i_tiDataArea->srcWord12HbWord0), 4);
-            memcpy(&srcChar[4], &(i_tiDataArea->asciiData1), 4);
-            tiAdditionalData["SrcAscii"] = std::string{srcChar};
+            // Translate hex src value to ascii. This results in an 8 character
+            // SRC (hostboot SRC is 32 bits)
+            std::stringstream src;
+            src << std::setw(8) << std::setfill('0') << std::hex
+                << be32toh(i_tiDataArea->srcWord12HbWord0);
+            tiAdditionalData["SrcAscii"] = src.str();
 
             eventTerminate(tiAdditionalData, (char*)i_tiDataArea);
         }