Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Telink] Add PostOTAStateChangeEvent #35118

Merged
merged 1 commit into from
Aug 27, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 23 additions & 1 deletion src/platform/telink/OTAImageProcessorImpl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,22 @@
static struct stream_flash_ctx stream;

namespace chip {
namespace {

void PostOTAStateChangeEvent(DeviceLayer::OtaState newState)
{
DeviceLayer::ChipDeviceEvent otaChange;
otaChange.Type = DeviceLayer::DeviceEventType::kOtaStateChanged;
otaChange.OtaStateChanged.newState = newState;
CHIP_ERROR error = DeviceLayer::PlatformMgr().PostEvent(&otaChange);

if (error != CHIP_NO_ERROR)
{
ChipLogError(SoftwareUpdate, "Error while posting OtaChange event %" CHIP_ERROR_FORMAT, error.Format());
}
}
} // namespace

namespace DeviceLayer {

CHIP_ERROR OTAImageProcessorImpl::PrepareDownload()
Expand Down Expand Up @@ -60,6 +76,7 @@ CHIP_ERROR OTAImageProcessorImpl::PrepareDownloadImpl()
ChipLogError(SoftwareUpdate, "stream_flash_init failed (err %d)", err);
}

PostOTAStateChangeEvent(DeviceLayer::kOtaDownloadInProgress);
return System::MapErrorZephyr(err);
}

Expand All @@ -72,13 +89,14 @@ CHIP_ERROR OTAImageProcessorImpl::Finalize()
ChipLogError(SoftwareUpdate, "stream_flash_buffered_write failed (err %d)", err);
}

PostOTAStateChangeEvent(DeviceLayer::kOtaDownloadComplete);
return System::MapErrorZephyr(err);
}

CHIP_ERROR OTAImageProcessorImpl::Abort()
{
ChipLogError(SoftwareUpdate, "Image upgrade aborted");

PostOTAStateChangeEvent(DeviceLayer::kOtaDownloadAborted);
return CHIP_NO_ERROR;
}

Expand All @@ -87,6 +105,7 @@ CHIP_ERROR OTAImageProcessorImpl::Apply()
// Schedule update of image
int err = boot_request_upgrade(BOOT_UPGRADE_PERMANENT);

PostOTAStateChangeEvent(DeviceLayer::kOtaApplyInProgress);
#ifdef CONFIG_CHIP_OTA_REQUESTOR_REBOOT_ON_APPLY
if (!err)
{
Expand All @@ -101,6 +120,7 @@ CHIP_ERROR OTAImageProcessorImpl::Apply()
}
else
{
PostOTAStateChangeEvent(DeviceLayer::kOtaApplyFailed);
return System::MapErrorZephyr(err);
}
#else
Expand Down Expand Up @@ -131,6 +151,7 @@ CHIP_ERROR OTAImageProcessorImpl::ProcessBlock(ByteSpan & aBlock)
else
{
mDownloader->EndDownload(error);
PostOTAStateChangeEvent(DeviceLayer::kOtaDownloadFailed);
}
});
}
Expand All @@ -149,6 +170,7 @@ bool OTAImageProcessorImpl::IsFirstImageRun()

CHIP_ERROR OTAImageProcessorImpl::ConfirmCurrentImage()
{
PostOTAStateChangeEvent(DeviceLayer::kOtaApplyComplete);
return System::MapErrorZephyr(boot_write_img_confirmed());
}

Expand Down
Loading