Reduce routine RX power-saving noise-floor refreshes

This commit is contained in:
mikecarper committed 2026-10-14 01:37:55 -07:00
1 parent d43bc23f5a
commit d7c8a3a104
4 files changed
+293 -28

No files matched your search

+27 -3
View File
@@ -11,6 +11,29 @@ Periodic requests coalesce while a block is active. RXPS resumes after a complet
block, including a held block, or at timeout. Receive and transmit activity are
never interrupted just to finish calibration.
In single-profile RXPS, routine refreshes wait at least 60 seconds after the
last completed or timed-out block before requesting another continuous-RX
window. Both periodic maintenance and passive retry checks use this cooldown;
retries do not restart a partially collected block. With RXPS off, or when the
selected tuple requires continuous-RX fallback, the existing two-second
maintenance tick and passive-probe age check are unchanged. Startup, explicit
gain/tuning changes, AGC resets, and radio recovery still request a fresh block
promptly. Dual-profile scanning retains
its separate refresh policy.
Frequent configured AGC resets can still dominate calibration time: Cascade
repeater builds default to an eight-second AGC interval, and MQTT observers
use 28 seconds. Those resets are not throttled by the routine cooldown. After
a timed-out startup block with no valid floor, the next routine RXPS attempt
also waits 60 seconds; passive retries retain their existing bounded busy
escape while waiting for a valid baseline.
The longer RXPS cooldown trades a slower response to ambient noise changes for
more time in duty-cycle RX. It does not reduce sample count, shorten settling,
or put the radio to sleep between samples. A large upward change still needs
three complete high blocks to pass the rise hold. No battery-life improvement
has been measured for this scheduling change.
The block estimate is the 12.5th percentile: the average of the eighth and
ninth sorted samples, retaining fractional dBm. A published update uses 25% of
the previous floor and 75% of the new estimate, with a -120 dBm lower bound. Initial calibration and explicit gain/tuning changes seed a new baseline.
@@ -30,9 +53,10 @@ out of 64 to avoid higher-valued traffic entirely. Nearly continuous
interference or enough low outliers can still mislead it. The rise hold delays
large changes but cannot identify their source.
RSSI sampling waits 20 ms after every receive re-arm, including CAD and TX
completion, to avoid unsettled frontend readings. The ten-second trial window
often failed to complete during heavy traffic with that settling guard; the
RSSI sampling waits 7 ms on SX1262, SX1268, and LLCC68 builds, or 20 ms on other
families, after every receive re-arm, including CAD and TX completion, to avoid
unsettled frontend readings. The ten-second trial window often failed to
complete during heavy traffic with that settling guard; the
30-second cap allows more idle opportunities. Partial blocks still time out
without publishing. Longer collection spends more time in continuous RX when
RXPS is enabled. A quiet minimum is about 3.2 seconds; real completion time