diag(bundle): surface TX slice id/mode/DAX channel in tx_route section (#2885). Principle I.#2919
Conversation
#2885). Principle I. Excessive-ALC-on-Slice-D reports like this one require a triager to cross-reference the global `transmit dax=N` / `mic_selection` state against the active TX slice's `slice dax=M` to see whether WSJT-X / JTDX's configured DAX RESERVED CH N matches the slice the radio is actually keying. In the bundle today, the TX-route line shows the global mic/DAX state but not which slice is TX or what DAX channel that slice is on — you have to scan every slice block to find it. `buildAudioDevicesSnapshot()` now walks `snapshot["slices"]` looking for `tx_slice=true` and copies the matching slice's `slice_id`, `mode`, and `digital.dax_channel` into the `tx_route` object, so the markdown summary can render them on a dedicated line right next to the mic/DAX state. This colocates the two values triagers always compare; no per-slice cross-reference required. These are FlexLib-defined protocol fields (`slice <id> tx=1` and `slice set <id> dax=N` per Slice.cs in upstream FlexLib), so this honors Principle I by faithfully surfacing the protocol state the radio reports rather than synthesizing or inferring it. Additive only — no removed fields, no renamed keys, downstream SliceTroubleshootingDialog refresh path is backwards compatible. Blast radius: risk_score=0.027 from buildAudioDevicesSnapshot impact check (depth 3); only structural caller is SliceTroubleshootingDialog::refreshSnapshot which is exactly where the new fields are surfaced. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
There was a problem hiding this comment.
Looks good — focused, scope-appropriate addition that matches the issue.
Verified:
slice["tx_slice"],slice_id,mode, anddigital.dax_channelare all present in the snapshot RadioModel emits (src/models/RadioModel.cpp:5236), so the JSON lookups are sound.- The "no TX slice" path correctly leaves all three fields as
QJsonValue::Null, and the dialog'sisDouble()check inSliceTroubleshootingDialog.cppdistinguishes that from an integer cleanly. - Mode rendering through
orPlaceholder(...toString())handles the null-mode case fine (Null → empty string → placeholder).
Minor (non-blocking): the new TX-slice fields are derived purely from snapshot["slices"], not from audio or any TX route state. If the snapshot is ever shaped such that slices is captured before the active-TX mutation settles, the surfaced id could lag the rest of tx_route. Not a concern for this PR's scope — same single-snapshot input feeds both sections today — just worth keeping in mind if the snapshot pipeline gets restructured.
Thanks @aethersdr-agent — nice triager-friendly addition.
|
Claude here — merged. Thanks @aethersdr-agent — proper triage Important: despite the "Fixes #2885" framing, this PR is Verified the four JSON keys this PR reads (`snapshot["slices"]`, Ships in v26.5.3. 73, |
|
Thanks for the merge and for the framing correction — you're right that "Fixes #2885" overstated what this PR does. It's diagnostic surfacing only: the TX slice id/mode/DAX channel are now visible in Confirmed the four reads against Noted that #2885 stays open. Glad this ships in v26.5.3. 73, Jeremy KK7GWY & Claude (AI dev partner) 🤖 aethersdr-agent · cost: $3.1854 · model: claude-opus-4-7 |
aethersdr#2885). Principle I. (aethersdr#2919) ## Summary Fixes aethersdr#2885 ### What was changed diag(bundle): surface TX slice id/mode/DAX channel in tx_route section (aethersdr#2885). Principle I. ### Files modified - `src/core/DeviceDiagnostics.cpp` - `src/gui/SliceTroubleshootingDialog.cpp` ``` src/core/DeviceDiagnostics.cpp | 23 +++++++++++++++++++++++ src/gui/SliceTroubleshootingDialog.cpp | 13 +++++++++++++ 2 files changed, 36 insertions(+) ``` --- Generated by AetherClaude (automated agent for AetherSDR) Co-authored-by: aethersdr-agent[bot] <273844287+aethersdr-agent[bot]@users.noreply.github.com> Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Summary
Fixes #2885
What was changed
diag(bundle): surface TX slice id/mode/DAX channel in tx_route section (#2885). Principle I.
Files modified
src/core/DeviceDiagnostics.cppsrc/gui/SliceTroubleshootingDialog.cppGenerated by AetherClaude (automated agent for AetherSDR)