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