Attn: Add TI info command field to valid check

Added an additional check of command == 0xa1 in the TI info data area to
determine if the TI info data has been populated.

Signed-off-by: Ben Tyner <ben.tyner@ibm.com>
Change-Id: I3f8c43c4fdcb086acb66d235c9b53712d21b58c1
diff --git a/attn/attn_handler.cpp b/attn/attn_handler.cpp
index b8181b8..d1f028d 100644
--- a/attn/attn_handler.cpp
+++ b/attn/attn_handler.cpp
@@ -298,6 +298,8 @@
         }
     }
 
+    bool tiInfoValid = false; // TI area data not valid or not available
+
     // If TI area exists and is marked valid we can assume TI occurred
     if ((nullptr != tiInfo) && (0 != tiInfo[0]))
     {
@@ -311,27 +313,36 @@
         trace<level::INFO>(ss.str().c_str());
         ss.str(std::string());
 
-        ss << "TI data hb_terminate_type = "
-           << (int)tiDataArea->hbTerminateType;
-        trace<level::INFO>(ss.str().c_str());
-        ss.str(std::string());
-
-        ss << "TI data SRC format = " << (int)tiDataArea->srcFormat;
-        trace<level::INFO>(ss.str().c_str());
-        ss.str(std::string());
-
-        ss << "TI data source = " << (int)tiDataArea->source;
-        trace<level::INFO>(ss.str().c_str());
-        ss.str(std::string());
-
-        if (true == (i_attention->getConfig()->getFlag(enTerminate)))
+        // Another check for valid TI Info since it has been seen that
+        // tiInfo[0] != 0 but TI info is not valid
+        if (0xa1 == tiDataArea->command)
         {
-            // Call TI special attention handler
-            rc = tiHandler(tiDataArea);
+            tiInfoValid = true;
+
+            // trace some more data since TI info appears valid
+            ss << "TI data hb_terminate_type = "
+               << (int)tiDataArea->hbTerminateType;
+            trace<level::INFO>(ss.str().c_str());
+            ss.str(std::string());
+
+            ss << "TI data SRC format = " << (int)tiDataArea->srcFormat;
+            trace<level::INFO>(ss.str().c_str());
+            ss.str(std::string());
+
+            ss << "TI data source = " << (int)tiDataArea->source;
+            trace<level::INFO>(ss.str().c_str());
+            ss.str(std::string());
+
+            if (true == (i_attention->getConfig()->getFlag(enTerminate)))
+            {
+                // Call TI special attention handler
+                rc = tiHandler(tiDataArea);
+            }
         }
     }
-    // TI area not valid or not available
-    else
+
+    // If TI area not valid or not available
+    if (false == tiInfoValid)
     {
         trace<level::INFO>("TI info NOT available");