Skip to content

Fix RADE status label not appearing after mode selection#1049

Merged
ten9876 merged 4 commits into
aethersdr:mainfrom
NF0T:fix/rade-status-label-initial-state
Apr 9, 2026
Merged

Fix RADE status label not appearing after mode selection#1049
ten9876 merged 4 commits into
aethersdr:mainfrom
NF0T:fix/rade-status-label-initial-state

Conversation

@NF0T
Copy link
Copy Markdown
Collaborator

@NF0T NF0T commented Apr 9, 2026

Summary

  • The RADE status label (showing sync state and SNR) never appeared after selecting RADE mode, even though the engine started and activated successfully.
  • Deactivating RADE also silently failed to clear the label.

Root Cause

activateRADE() and deactivateRADE() both used spectrum()->vfoWidget() (no-arg), which returns m_vfoWidget — an alias maintained by setActiveVfoWidget(). This alias is only set when the user switches between slices. In the most common case — a single-slice session — setActiveVfoWidget() is never called because there is no slice-switch event to trigger it, so m_vfoWidget remains null for the entire session. Both functions were silently skipping all label updates via a null pointer guard.

Confirmed via debug logging:

spectrum= 0x... vfoWidget= QWidget(0x0) vfoWidget(sliceId)= AetherSDR::VfoWidget(0x...)

vfoWidget(sliceId) looks up by slice ID in the m_vfoWidgets map and always returns the correct widget regardless of whether a slice switch has occurred.

Changes

  • activateRADE(): use sw->vfoWidget(sliceId) instead of sw->vfoWidget(); call setRadeSynced(false) immediately after setRadeActive(true) so the label shows "RADE ○ ---" before any DAX audio arrives (previously syncChanged would only fire once feedRxAudio() ran, requiring an active received signal)
  • deactivateRADE(): same fix, and also moved the setRadeActive(false) call before m_radeSliceId = -1 since the slice ID was already cleared by the time the old lookup ran

Test plan

  • Connect radio, select RADE from mode dropdown — status label shows "RADE ○ ---" immediately
  • Receive a RADE signal — label updates to show sync state and SNR
  • Switch away from RADE — label disappears
  • Repeat with a single slice open (most common case)

🤖 Generated with Claude Code

NF0T and others added 4 commits April 8, 2026 19:35
syncChanged is only emitted from feedRxAudio(), which requires DAX audio
to be flowing on the RADE slice's DAX channel. On activation the label
became visible but showed no text — appearing as if RADE wasn't working.

Call setRadeSynced(false) immediately after setRadeActive(true) so the
label shows "RADE ○ ---" from the moment RADE is selected, before any
received signal arrives.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
spectrum()->vfoWidget() returns m_vfoWidget, an alias set by
setActiveVfoWidget(). This alias is null until explicitly set,
so activateRADE/deactivateRADE were silently skipping the label
update on every invocation.

vfoWidget(sliceId) looks up by slice ID and always returns the
correct widget. Also fix deactivateRADE() which was reading
m_radeSliceId after it had already been reset to -1.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@NF0T NF0T requested a review from ten9876 as a code owner April 9, 2026 00:58
@ten9876 ten9876 merged commit 5e13d54 into aethersdr:main Apr 9, 2026
5 checks passed
aethersdr-agent Bot pushed a commit that referenced this pull request Apr 10, 2026
* Fix RADE status label blank after activation until DAX audio flows

syncChanged is only emitted from feedRxAudio(), which requires DAX audio
to be flowing on the RADE slice's DAX channel. On activation the label
became visible but showed no text — appearing as if RADE wasn't working.

Call setRadeSynced(false) immediately after setRadeActive(true) so the
label shows "RADE ○ ---" from the moment RADE is selected, before any
received signal arrives.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Debug: log vfoWidget pointer in activateRADE

* Fix RADE status label not appearing — use vfoWidget(sliceId) not alias

spectrum()->vfoWidget() returns m_vfoWidget, an alias set by
setActiveVfoWidget(). This alias is null until explicitly set,
so activateRADE/deactivateRADE were silently skipping the label
update on every invocation.

vfoWidget(sliceId) looks up by slice ID and always returns the
correct widget. Also fix deactivateRADE() which was reading
m_radeSliceId after it had already been reset to -1.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
@NF0T NF0T deleted the fix/rade-status-label-initial-state branch April 13, 2026 00:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants