Restore SX1276 CW support and calibrated power sweeps

Retain the original carrier feature from PR #11 with zero-deviation FSK, board PA calibration, and LoRa restoration. Re-key after power changes without extending the timeout, and restore prior power after a failed sweep. Cover native and SX1276 transitions, failure recovery, external PA and RFO mapping; verify Linkflow repeater and Heltec V2 USB Companion builds.
This commit is contained in:
mikecarper committed 2026-09-14 19:39:33 -07:00
1 parent 9de1373bd9
commit 27e4a0d0db
6 files changed
+226 -14

No files matched your search

+7 -1
View File
@@ -2,7 +2,7 @@
`cw` and `cw2` transmit a continuous, unmodulated carrier at the selected
profile's frequency and the configured TX power. They are available in the
shared ASCII CLI on SX1262-family and LR1110 builds, including repeaters,
shared ASCII CLI on SX1276-family, SX1262-family, and LR1110 builds, including repeaters,
Companions, room servers, and sensors that use that CLI.
| Command | Action |
@@ -32,6 +32,12 @@ or a busy radio. Profile retuning waits until the carrier stops; replacement
or expiry of the active second profile stops its carrier. Nothing about CW
is saved across reboot.
The normal `set tx <dBm>` command also works during CW for meter sweeps. It
keeps the board's power limits and PA calibration, resumes the carrier after
changing power, and does not extend the CW timeout. TX power retains its usual
saved behavior. SX1276 temporarily uses FSK with zero frequency deviation,
then rebuilds the LoRa configuration before resuming reception.
Use the local USB or BLE console for immediate replies and manual stopping.
An on-air CLI reply must wait until the carrier ends because LoRa packets
cannot transmit during the test.
+24
View File
@@ -46,6 +46,30 @@ no outbound packet pending. The observer has no autonomous transmission.
`src/Mesh.cpp` and test-file contents; the actual implementation uses
`ota_context_if_active()`. This is separate from the CW changes.
## SX1276 follow-up
The SX1276 carrier feature from [PR #11](https://github.com/mikecarper/MeshCore/pull/11)
is included alongside SX1262 and LR1110 support. It switches to FSK with zero
deviation, applies the board's calibrated TX power, and rebuilds the runtime
LoRa configuration when stopped. External-PA settings pass through the same
DAC/drive-power mapping used for packets, including RFO selection.
The normal TX power command can adjust a running carrier for meter sweeps.
RadioLib's SX1276 power setter enters standby, so the carrier is restarted
afterward without extending the deadline. Failed power changes stop the
carrier and restore the previous cached power.
Follow-up checks use base `9dd9881d520b4b791600a00fff1f8e1436921054` plus the
SX1276 changes. Production-method regression tests cover both profiles,
zero deviation, external-PA calibration, RFO, power sweeps, timeout, failed
FSK entry, failed restoration, retry guards, and return to LoRa. The native
CW paths and existing radio/profile/sleep/PA checks pass as well.
Both `GEPRC_Linkflow_900_repeater` (external PA) and
`Heltec_v2_companion_radio_usb` firmware builds pass, including size checks.
SX1276 RF output has not been measured in this follow-up. The physical RF
results above apply to SX1262 and LR1110.
## Bench qualifications
The first CW2 request arrived before radio2's existing delayed activation.