docs(features): refresh power-saving entry for v1.16 merge

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 <noreply@anthropic.com>
This commit is contained in:
Jakub
2026-06-06 17:41:49 +02:00
parent 6099b39740
commit 484d8cb093

View File

@@ -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 during a fix; this device is used as a *live* navigator + trail recorder, so GPS
stays continuously powered. Don't gate it. stays continuously powered. Don't gate it.
Cross-check: MeshCore upstream is already moving here too Cross-check: as of the **v1.16 upstream merge**, MeshCore now ships native
([PR #1238 NRF52 powersaving](https://github.com/meshcore-dev/MeshCore/pull/1238), NRF52 companion power-saving ([PR #1238](https://github.com/meshcore-dev/MeshCore/pull/1238),
[docs/nrf52_power_management.md](docs/nrf52_power_management.md), duty-cycle [docs/nrf52_power_management.md](docs/nrf52_power_management.md)). The companion
enforcement since companion v1.14.1) — prefer adopting/merging upstream work over loop now sleeps via `board.sleep(0)` whenever `hasPendingWork()` is false — but
a parallel implementation where possible. Note ZephCore's licence before copying that only covers **MCU idle** (it does not touch the radio, which is the real
any code verbatim (architecture inspiration is fine). 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.** 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, The radio-side CAD windowing lives on the `feat/power-saving` branch and is now
then prototype CAD windowing behind a setting and measure before/after. **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 ### SOS broadcast