Repository navigation
OTAmpy v4.9.0
·
17 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
OTAmpy 4.9.0 — 2026-09-13
Major (breaking changes)
- None.
Minor (functionality added in a backward compatible manner)
- Added
OTA.mark_application_alive(), which clears the boot marker without polling the transport. An application that only callspoll()whenframe_ready()is true (becausepoll()can block for up toACK_TIMEOUT_MSon an idle link) never cleared the marker in a boot where no OTA command arrived. The next boot then paid the wideOTA_BOOT_RECOVERY_LISTEN_MSwindow, which does not answerPING, andotampy rollbackcould miss itspost-commit-ready-timeout. Call it once, immediately before the main loop. It never touches the transport, never raises, and a second call does nothing. Applications that poll unconditionally, including both shipped scaffolds, need no change.
Patch (backward compatible bug fixes)
docs/protocol.md§2.4 anddocs/architecture.mdno longer say that reachingpoll()is the only proof the application is alive. Both now describemark_application_alive()and theframe_ready()case that needs it.- The
examples/shared-uart/main.pyscaffold has a new comment pointing real-time loops atframe_ready()plusmark_application_alive(). The scaffold code is unchanged. - Updated the README with trial-boot updates, rollback and recovery details.
CHANGELOG.mdnow has separate, dated 4.7.0 and 4.8.0 sections instead of anUnreleasedblock. It also adds the missing 4.8.0 entries forotampy cp device:<path>(device-to-host copy) andotampy upd --all-filesskipping__pycache__and*.example.*.