Sleep between noise-floor samples and reduce idle refreshes

This commit is contained in:
mikecarper committed 2026-10-17 10:18:14 -07:00
1 parent 190941e7b8
commit bd09019ada
38 files changed
+955 -121

No files matched your search

+24 -1
View File
@@ -31,7 +31,9 @@ after off starts a fresh window. Collection defaults off at every boot.
- `bridge`, `bridge.cleanup`, `bridge.wake`: active UART/network bridge,
shutdown work or an overdue standby wake. A suspended RS232 owner is not
diagnosed as running just because its saved enabled flag is on.
- `calibration`, `radio.watchdog`: radio observation/calibration work.
- `calibration`: noise-floor work is due now. The CPU can idle between sample
deadlines even while the radio remains in continuous RX for calibration.
- `radio.watchdog`: radio observation/recovery work.
- `queue`, `retry`, `scheduled`, `mesh`, `ota`, `radio2`: pending role work.
- `wireless`, `network`, `serial`, `button`, `tracker`, `morse`: a matching
existing service guard is active.
@@ -60,6 +62,27 @@ than the 32-bit `micros()` wrap (about 71 minutes); the normal wait paths here
are much shorter. Keep gaps between policy observations below the `millis()`
wrap (about 49 days).
## Noise-floor sampling and sleep
Startup still collects a complete baseline promptly: 64 accepted samples,
at least 50 ms apart, after the radio frontend has settled. Collection keeps
the radio in continuous RX when needed, but the CPU may sleep between reads.
Pending packet interrupts retain their normal receive owner. Rejected readings
retry at 50 ms intervals, and the existing 30-second collection timeout bounds
an attempt on a busy channel.
After a successful baseline, ordinary single-profile refresh waits five
minutes. A rejected rise or failed attempt retains the last usable floor and
retries after one minute. Gain, tuning and AGC changes still request immediate
recalibration, so a configured short AGC interval can refresh more frequently.
Dual-profile scanning keeps its existing timing and calibration policy.
ESP32 timed sleep uses a millisecond timer capped at the next sample deadline.
nRF52, RP2040 and STM32 retain their interrupt-idle wake paths. Other sleep
guards, including USB/logging, packet queues and bridges, still apply.
These changes have host scheduling tests and firmware build coverage; their
power benefit requires a new matched hardware/current measurement.
See the [CLI reference](cli_commands.md#diagnose-what-prevents-power-saving)
for all page names and commands.
+4 -2
View File
@@ -25,8 +25,10 @@ The ordinary Wio Tracker L1 BLE build reproduced a runtime RAM failure with
48,964 bytes available against 59,968 required. Enabling the existing cache
for high-contact nRF52 profiles recovered 30,200 bytes: the linked build has
79,164 bytes available and a 19,196-byte margin against the unchanged budget.
Its 350 contacts, 40 channels and configured 256-frame offline/held-DM pool
are retained. This is a linked-capacity result, not a physical load/soak test.
It keeps 350 contacts, 40 channels and 256 normal offline frames. As on the
cached RAK profiles, up to 15 held one-key DMs temporarily use queue slots;
their storage is shared instead of reserving a second pool. This is a
linked-capacity result, not a physical load/soak test.
## Paths and persistence