fix(transmit): exclude FreeDV modes from Quindar tone allowlist#3320
Conversation
FreeDV (FDV/FDVU/FDVL) now uses RADAE — the same neural speech autoencoder as RADE mode. Injecting a Quindar sine tone into a RADAE-encoded TX stream produces codec-artifact noise on air, not a recognisable signalling tone. Remove FDV/FDVU/FDVL from the isPhoneModeForQuindar() allowlist for the same reason DIGU/DIGL/ RTTY/CW/FT8 are excluded. Update the comment to explain the RADAE connection. Closes aethersdr#3318. Surfaced during aethersdr#3224 / PR aethersdr#3317 review. Principle VIII. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
jensenpat
left a comment
There was a problem hiding this comment.
No findings.
I traced the Quindar gate from TransmitModel::requestPttOn()/requestPttOff() through the TX slice mode getter and the AudioEngine insertion point. Removing FDV/FDVU/FDVL from isPhoneModeForQuindar() means FreeDV no longer starts intro/outro phases, so the Quindar processor remains idle and the PTT path falls straight through to MOX. USB/LSB/AM/FM/NFM behavior is unchanged.
I also checked the RADE side: client RADE still activates on DIGU/DIGL and takes the early RADE TX branch, so it remains outside the Quindar voice-chain path. The current upstream main already contains #3317, and this PR applies as a single allowlist/comment change on top of it.
CI, macOS/Windows checks, and CodeQL are green on b3a1d2f. The only residual gap is that the private mode predicate still lacks direct unit coverage for the FDV false cases, but I do not think that blocks this one-line fix.
Summary
Closes #3318.
isPhoneModeForQuindar()previously allowed Quindar intro/outro tones to fire inFreeDV modes (FDV, FDVU, FDVL). FreeDV now uses RADAE — the same neural speech
autoencoder as RADE mode. The Quindar tone is injected into the TX audio stream
before it reaches the radio, where the radio's internal RADAE encoder processes it.
A 2525/2475 Hz sine fed into a neural encoder trained on speech produces
codec-artifact noise on air, not a recognisable signalling tone.
RADE mode was already correctly excluded (it uses DIGU/DIGL, never in the allowlist).
FreeDV was explicitly included, likely when FreeDV still used Codec2. This removes
the three FreeDV mode strings and updates the comment to explain the RADAE connection.
Impact
No user-visible Quindar behaviour was working correctly in FreeDV modes before this
change — the tone was being mangled by RADAE before transmission. This removes a
broken feature, not a working one.
SSB/AM/FM Quindar behaviour is unchanged.
Test plan
Refs
dispatchMoxOff()refactor where this was surfacedTransmitModel.cpp::isPhoneModeForQuindar()— the only function changed🤖 Generated with Claude Code