From 484d8cb093de41c75d6d5d743681848016c423d6 Mon Sep 17 00:00:00 2001 From: Jakub <106778416+MarekZegare4@users.noreply.github.com> Date: Sat, 6 Jun 2026 17:41:49 +0200 Subject: [PATCH] docs(features): refresh power-saving entry for v1.16 merge MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Upstream's native NRF52 companion power-saving (PR #1238) and the preamble 16->32 bump for SF<9 both landed in the v1.16 merge. Update the battery/power roadmap entry: the MCU now sleeps via board.sleep(0) when !hasPendingWork() (no toggle — not sleeping only wastes power; it doesn't touch the radio), and the preamble fix unblocks the CAD RX-windowing experiment on feat/power-saving. Note the radio_set_*() globals were removed upstream (replace with radio_driver.*) so that branch will need a rebase. Co-Authored-By: Claude Opus 4.8 --- FEATURES.md | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/FEATURES.md b/FEATURES.md index 57d54743..e9a8bfe8 100644 --- a/FEATURES.md +++ b/FEATURES.md @@ -367,16 +367,24 @@ whose battery edge comes from radio/peripheral power technique, not the kernel: during a fix; this device is used as a *live* navigator + trail recorder, so GPS stays continuously powered. Don't gate it. -Cross-check: MeshCore upstream is already moving here too -([PR #1238 NRF52 powersaving](https://github.com/meshcore-dev/MeshCore/pull/1238), -[docs/nrf52_power_management.md](docs/nrf52_power_management.md), duty-cycle -enforcement since companion v1.14.1) — prefer adopting/merging upstream work over -a parallel implementation where possible. Note ZephCore's licence before copying -any code verbatim (architecture inspiration is fine). +Cross-check: as of the **v1.16 upstream merge**, MeshCore now ships native +NRF52 companion power-saving ([PR #1238](https://github.com/meshcore-dev/MeshCore/pull/1238), +[docs/nrf52_power_management.md](docs/nrf52_power_management.md)). The companion +loop now sleeps via `board.sleep(0)` whenever `hasPendingWork()` is false — but +that only covers **MCU idle** (it does not touch the radio, which is the real +draw), and there is no on/off toggle because not-sleeping would only waste power. +The same merge also brought the **preamble 16→32 bump for SF<9**, which was the +blocker for our CAD RX-windowing experiment (short windows dropped long packets +at preamble 16). Prefer adopting/extending upstream work over a parallel +implementation. Note ZephCore's licence before copying any code verbatim +(architecture inspiration is fine). Sequencing: **deferred until the trail/waypoints/nav polishing is finished.** -First step when picked up: profile with a PPK2/meter to confirm RX is the hog, -then prototype CAD windowing behind a setting and measure before/after. +The radio-side CAD windowing lives on the `feat/power-saving` branch and is now +**unblocked** by the preamble fix. First step when picked up: rebase it onto the +v1.16 merge (it will hit the removed `radio_set_tx_power()`/`radio_set_params()` +globals — replace with `radio_driver.*` like the merge did), then re-test whether +long messages still drop at preamble 32, ideally profiling with a PPK2/meter. ### SOS broadcast