Implement BmcEpoch set/get elapsed()
Getting elapsed returns BMC's time;
Setting elapsed will check the current time mode/owner, and will return
error when mode is NTP or owner is HOST.
Add unit test cases.
Change-Id: Ibf4e90957f3b26b68c4a1b6dc66dc364c66bef10
Signed-off-by: Lei YU <mine260309@gmail.com>
diff --git a/bmc_epoch.cpp b/bmc_epoch.cpp
index c17ddf5..5923e8e 100644
--- a/bmc_epoch.cpp
+++ b/bmc_epoch.cpp
@@ -24,23 +24,22 @@
uint64_t BmcEpoch::elapsed(uint64_t value)
{
- // TODO: set time based on current time mode and owner
- auto time = std::chrono::microseconds(value);
- switch (timeOwner)
+ if (timeMode == Mode::NTP)
{
- case Owner::BMC:
- {
- setTime(time);
- break;
- }
- // TODO: below cases are to be implemented
- case Owner::HOST:
- break;
- case Owner::SPLIT:
- break;
- case Owner::BOTH:
- break;
+ log<level::ERR>("Setting BmcTime with NTP mode is not allowed");
+ // TODO: throw NotAllowed exception
+ return 0;
}
+ if (timeOwner == Owner::HOST)
+ {
+ log<level::ERR>("Setting BmcTime with HOST owner is not allowed");
+ // TODO: throw NotAllowed exception
+ return 0;
+ }
+
+ auto time = std::chrono::microseconds(value);
+ setTime(time);
+
server::EpochTime::elapsed(value);
return value;
}