update BootProgressLastUpdate when BootProgress is set
Per the boot-progress.md[1] design document, the BootProgressLastUpdate
property should be updated with the current time since epoch in
microseconds whenever the BootProgress property is updated.
Tested:
- Confirmed that when BootProgress is updated, the
BootProgressLastUpdate was updated with the correct time
[1]: https://github.com/openbmc/docs/blob/master/designs/boot-progress.md
Change-Id: I96bc1b03441e14dbb23bb5d175fc480fa25a1d52
Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
diff --git a/host_state_manager.cpp b/host_state_manager.cpp
index ac9181d..7637816 100644
--- a/host_state_manager.cpp
+++ b/host_state_manager.cpp
@@ -20,6 +20,7 @@
#include <xyz/openbmc_project/Control/Power/RestorePolicy/server.hpp>
#include <xyz/openbmc_project/State/Host/error.hpp>
+#include <chrono>
#include <filesystem>
#include <format>
#include <fstream>
@@ -450,6 +451,19 @@
Host::ProgressStages Host::bootProgress(ProgressStages value)
{
auto retVal = bootprogress::Progress::bootProgress(value);
+
+ // Update the BootProgressLastUpdate anytime BootProgress is updated
+ auto timeStamp = std::chrono::duration_cast<std::chrono::microseconds>(
+ std::chrono::system_clock::now().time_since_epoch())
+ .count();
+ this->bootProgressLastUpdate(timeStamp);
+ serialize();
+ return retVal;
+}
+
+uint64_t Host::bootProgressLastUpdate(uint64_t value)
+{
+ auto retVal = bootprogress::Progress::bootProgressLastUpdate(value);
serialize();
return retVal;
}
diff --git a/host_state_manager.hpp b/host_state_manager.hpp
index 6bf4f94..5314a56 100644
--- a/host_state_manager.hpp
+++ b/host_state_manager.hpp
@@ -95,6 +95,9 @@
/** @brief Set Value for boot progress */
ProgressStages bootProgress(ProgressStages value) override;
+ /** @brief Updated whenever BootProgress is updated */
+ uint64_t bootProgressLastUpdate(uint64_t value) override;
+
/** @brief Set Value for Operating System Status */
OSStatus operatingSystemState(OSStatus value) override;