Summary
The APD (Adaptive Pre-Distortion) Active / Cal / Avail status indicators in the TX applet need further investigation to accurately reflect the radio's APD state.
Current State
- APD enable/disable toggle works (
apd enable=0|1)
- Radio sends
equalizer_active=0|1, configurable=1, linearity, sample_index, and insanity messages
- Indicators update but mapping may not match SmartSDR behavior
What We Know from FlexLib
public bool EqualizerActive { get; set; } // → "Active"
public bool EqualizerCalibrating => !EqualizerActive; // → "Cal" (computed: !Active)
public bool Available { get; set; } // → "Avail" (never set in FlexLib)
- Active and Cal are mutually exclusive (Cal = !Active)
- Avail is never set in FlexLib — derived in the SmartSDR WPF UI layer (which we don't have)
- Only one indicator should be lit at a time
- All indicators off when APD is disabled
Observed Radio Behavior
equalizer_active jumps from 0→1 after first TX (no intermediate state)
linearity score (0–1) appears before equalizer_active flips
sample_index increments with each TX while refining the equalizer
insanity messages list quality issues during calibration
mmx=0 field never changes (purpose unknown)
configurable=1 is always present on FLEX-8600
Open Questions
- What exactly drives the Avail indicator in SmartSDR?
- Should
insanity messages or linearity score affect indicator state?
- Does
mmx play a role in the state machine?
- Is
configurable the gate for Avail, or something else?
Related Files
src/gui/TxApplet.cpp — indicator display logic
src/models/TransmitModel.h/.cpp — APD state tracking
reference/FlexLib/FlexLib/APD.cs — FlexLib reference implementation
Summary
The APD (Adaptive Pre-Distortion) Active / Cal / Avail status indicators in the TX applet need further investigation to accurately reflect the radio's APD state.
Current State
apd enable=0|1)equalizer_active=0|1,configurable=1,linearity,sample_index, andinsanitymessagesWhat We Know from FlexLib
Observed Radio Behavior
equalizer_activejumps from 0→1 after first TX (no intermediate state)linearityscore (0–1) appears beforeequalizer_activeflipssample_indexincrements with each TX while refining the equalizerinsanitymessages list quality issues during calibrationmmx=0field never changes (purpose unknown)configurable=1is always present on FLEX-8600Open Questions
insanitymessages orlinearityscore affect indicator state?mmxplay a role in the state machine?configurablethe gate for Avail, or something else?Related Files
src/gui/TxApplet.cpp— indicator display logicsrc/models/TransmitModel.h/.cpp— APD state trackingreference/FlexLib/FlexLib/APD.cs— FlexLib reference implementation