Defer busy Companion TX-power updates without interrupting RX

A settings save could reach the power setter while RX, TX, duty cycling or a
profile transition owned the radio, returning BAD_STATE after earlier settings
had already saved. Distinguish busy admission from a hardware rejection and
reuse the existing command route, storage and three-second deadline for power.
Acknowledge only after hardware acceptance and a successful preference save.

Skip hardware work for verified unchanged power. Invalidate that verification
after failed writes or radio initialization, retaining rollback and exclusive
beacon/Morse ownership. Keep the existing firmware memory limits and features.

Cover retries, captured routes, timeout/rollover, disconnect, partial writes,
failed saves and recovery. Keep ESP-NOW/simulation adapters compatible and add
ESP-NOW Companion compilation to the existing sequential smoke job.
This commit is contained in:
mikecarper committed 2026-10-25 11:57:03 -07:00
1 parent af69918094
commit 8dfdba3f6d
17 files changed
+470 -57

No files matched your search

+5 -2
View File
@@ -201,9 +201,11 @@ jobs:
- uses: actions/checkout@v4
- name: Setup Build Environment
uses: ./.github/actions/setup-build-environment
- name: Compile RP2040 contact storage and Arduino 3 ESP32-C6 room services
- name: Compile RP2040 contacts, ESP32-C6 rooms and ESP-NOW Companion
# One process: PlatformIO environments share this checkout's build tree.
run: pio run -e Xiao_rp2040_companion_radio_usb -e LilyGo_Tlora_C6_room_server_
run: >-
pio run -e Xiao_rp2040_companion_radio_usb
-e LilyGo_Tlora_C6_room_server_ -e Generic_ESPNOW_comp_radio_usb
management-reports:
runs-on: ubuntu-latest
@@ -736,6 +738,7 @@ jobs:
python3 -B test/test_radio_profile_scan.py
python3 -B test/test_radio_profile_clock.py -v
python3 -B test/test_radio_profile_repair.py -v
python3 -B test/test_radio_tx_power_transaction.py -v
python3 -B test/test_radio_profile_runtime_recommendation.py -v
python3 -B test/test_radio_profile_idle_dispatcher.py -v
python3 -B test/test_radio_rxps_rejection.py -v