bmc: firmware updateStarted: stat(session)

Signed-off-by: Patrick Venture <venture@google.com>
Change-Id: I3d34f52aacbb004bccf18748c8f8cd591dbb0490
diff --git a/firmware_handler.cpp b/firmware_handler.cpp
index d446f66..13e5d72 100644
--- a/firmware_handler.cpp
+++ b/firmware_handler.cpp
@@ -202,19 +202,22 @@
 
     if (item->second->activePath == verifyBlobId)
     {
-        VerifyCheckResponses value;
+        VerifyCheckResponses value = VerifyCheckResponses::other;
 
         switch (state)
         {
             case UpdateState::verificationPending:
                 value = VerifyCheckResponses::other;
                 break;
+            case UpdateState::verificationStarted:
+                value = verification->status();
+                lastVerificationResponse = value;
+                break;
             case UpdateState::verificationCompleted:
                 value = lastVerificationResponse;
                 break;
             default:
-                value = verification->checkVerificationState();
-                lastVerificationResponse = value;
+                break;
         }
 
         meta->metadata.push_back(static_cast<std::uint8_t>(value));
@@ -240,18 +243,36 @@
     }
     else if (item->second->activePath == updateBlobId)
     {
-        UpdateStatus value;
+        UpdateStatus value = UpdateStatus::unknown;
 
         switch (state)
         {
             case UpdateState::updatePending:
                 value = UpdateStatus::unknown;
                 break;
+            case UpdateState::updateStarted:
+                value = update->status();
+                break;
             default:
                 break;
         }
 
         meta->metadata.push_back(static_cast<std::uint8_t>(value));
+
+        if (value == UpdateStatus::success || value == UpdateStatus::failed)
+        {
+            state = UpdateState::updateCompleted;
+            item->second->flags &= ~blobs::StateFlags::committing;
+
+            if (value == UpdateStatus::success)
+            {
+                item->second->flags |= blobs::StateFlags::committed;
+            }
+            else
+            {
+                item->second->flags |= blobs::StateFlags::commit_error;
+            }
+        }
     }
 
     /* The blobState here relates to an active sesion, so we should return the