diff --git a/src/platform/GenericOTARequestorDriver.cpp b/src/platform/GenericOTARequestorDriver.cpp index 461696a0168299..cccdfb3ffa63e9 100644 --- a/src/platform/GenericOTARequestorDriver.cpp +++ b/src/platform/GenericOTARequestorDriver.cpp @@ -32,6 +32,8 @@ GenericOTARequestorDriver * ToDriver(void * context) return static_cast(context); } +constexpr System::Clock::Seconds32 kDefaultDelayedActionTime = System::Clock::Seconds32(120); + } // namespace bool GenericOTARequestorDriver::CanConsent() @@ -58,7 +60,15 @@ void GenericOTARequestorDriver::UpdateAvailable(const UpdateDescription & update void GenericOTARequestorDriver::UpdateNotFound(UpdateNotFoundReason reason, System::Clock::Seconds32 delay) { - // TODO: Schedule the next QueryImage + VerifyOrDie(mRequestor != nullptr); + + if (delay < kDefaultDelayedActionTime) + { + delay = kDefaultDelayedActionTime; + } + + ScheduleDelayedAction(UpdateFailureState::kQuerying, delay, + [](System::Layer *, void * context) { ToDriver(context)->mRequestor->TriggerImmediateQuery(); }); } void GenericOTARequestorDriver::UpdateDownloaded() @@ -77,6 +87,12 @@ void GenericOTARequestorDriver::UpdateConfirmed(System::Clock::Seconds32 delay) void GenericOTARequestorDriver::UpdateSuspended(System::Clock::Seconds32 delay) { VerifyOrDie(mRequestor != nullptr); + + if (delay < kDefaultDelayedActionTime) + { + delay = kDefaultDelayedActionTime; + } + ScheduleDelayedAction(UpdateFailureState::kAwaitingNextAction, delay, [](System::Layer *, void * context) { ToDriver(context)->mRequestor->ApplyUpdate(); }); }