Add exponential backoff for channel busy detection

Replace fixed random(8000-22000ms) backoff with exponential backoff:
- 1st busy: 3-6s
- 2nd busy: 6-12s
- 3rd+ busy: 12-20s (capped)
- Reset counter on channel free

Results (48-byte simultaneous DM, JP SF12/BW125/CR4-5):
- 3/3 success, delivered within 0:23-0:45
- Previous fixed backoff: 1:03-3:55
This commit is contained in:
jirogit 2026-03-26 12:29:35 -07:00
parent c5bacd7de9
commit 2d11d9fedb
2 changed files with 20 additions and 14 deletions

View file

@ -9,6 +9,7 @@ protected:
mesh::MainBoard* _board;
uint32_t n_recv, n_sent, n_recv_errors, _tx_start_ms;
int16_t _noise_floor, _threshold;
uint8_t _busy_count; // consecutive busy detections for exponential backoff
uint16_t _num_floor_samples;
int32_t _floor_sample_sum;