[debug](trx-backend-soapysdr,trx-frontend-http): add RDS diagnostics
Add server-side debug log when RDS data is decoded (PI, PS, PTY). Extend the RDS panel with active mode, frame counter, and a raw JSON dump of the last spectrum frame (bins excluded) to help diagnose why RDS remains absent from the SSE stream. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Signed-off-by: Stan Grams <sjg@haxx.space>
This commit is contained in:
@@ -350,6 +350,7 @@ function syncTopBarAccess() {
|
||||
|
||||
let overviewDrawPending = false;
|
||||
let lastSpectrumData = null;
|
||||
let rdsFrameCount = 0;
|
||||
let lastControl;
|
||||
let lastTxEn = null;
|
||||
let lastHasTx = true;
|
||||
@@ -3099,6 +3100,7 @@ function startSpectrumStreaming() {
|
||||
}
|
||||
try {
|
||||
lastSpectrumData = JSON.parse(evt.data);
|
||||
rdsFrameCount++;
|
||||
pushOverviewWaterfallFrame(lastSpectrumData);
|
||||
refreshCenterFreqDisplay();
|
||||
scheduleSpectrumDraw();
|
||||
@@ -3125,6 +3127,7 @@ function stopSpectrumStreaming() {
|
||||
}
|
||||
spectrumDrawPending = false;
|
||||
lastSpectrumData = null;
|
||||
rdsFrameCount = 0;
|
||||
overviewWaterfallRows = [];
|
||||
overviewWaterfallPushCount = 0;
|
||||
_wfResetOffscreen();
|
||||
@@ -3155,6 +3158,7 @@ function updateRdsPsOverlay(rds) {
|
||||
|
||||
// RDS debug panel
|
||||
const statusEl = document.getElementById("rds-status");
|
||||
const modeEl = document.getElementById("rds-mode");
|
||||
const piEl = document.getElementById("rds-pi");
|
||||
const psEl = document.getElementById("rds-ps");
|
||||
const ptyEl = document.getElementById("rds-pty");
|
||||
@@ -3162,6 +3166,11 @@ function updateRdsPsOverlay(rds) {
|
||||
const rawEl = document.getElementById("rds-raw");
|
||||
if (!statusEl) return;
|
||||
|
||||
// Always show the current mode, frame counter, and a sanitised spectrum snapshot
|
||||
if (modeEl) modeEl.textContent = document.getElementById("mode")?.value || "--";
|
||||
const framesEl = document.getElementById("rds-frames");
|
||||
if (framesEl) framesEl.textContent = String(rdsFrameCount);
|
||||
|
||||
if (!rds) {
|
||||
statusEl.textContent = "No signal";
|
||||
statusEl.className = "rds-value rds-no-signal";
|
||||
@@ -3169,7 +3178,10 @@ function updateRdsPsOverlay(rds) {
|
||||
psEl.textContent = "--";
|
||||
ptyEl.textContent = "--";
|
||||
ptyNameEl.textContent = "--";
|
||||
rawEl.textContent = "--";
|
||||
if (rawEl && lastSpectrumData) {
|
||||
const { bins: _b, ...rest } = lastSpectrumData;
|
||||
rawEl.textContent = JSON.stringify(rest, null, 2);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -3344,7 +3356,7 @@ function drawSpectrum(data) {
|
||||
ctx.stroke();
|
||||
ctx.restore();
|
||||
|
||||
// Peak markers for easier snap-tune targeting.
|
||||
// ── Peak markers for easier snap-tune targeting ──────────────────────────
|
||||
const markerPeaks = visibleSpectrumPeakIndices(data);
|
||||
if (markerPeaks.length > 0) {
|
||||
ctx.save();
|
||||
|
||||
@@ -274,12 +274,14 @@
|
||||
<div id="subtab-rds" class="sub-tab-panel" style="display:none;">
|
||||
<div class="rds-grid">
|
||||
<div class="rds-field"><span class="rds-label">Status</span><span id="rds-status" class="rds-value rds-no-signal">No signal</span></div>
|
||||
<div class="rds-field"><span class="rds-label">Active mode</span><span id="rds-mode" class="rds-value">--</span></div>
|
||||
<div class="rds-field"><span class="rds-label">Frames received</span><span id="rds-frames" class="rds-value">0</span></div>
|
||||
<div class="rds-field"><span class="rds-label">PI</span><span id="rds-pi" class="rds-value">--</span></div>
|
||||
<div class="rds-field"><span class="rds-label">PS</span><span id="rds-ps" class="rds-value rds-ps">--</span></div>
|
||||
<div class="rds-field"><span class="rds-label">PTY</span><span id="rds-pty" class="rds-value">--</span></div>
|
||||
<div class="rds-field"><span class="rds-label">PTY Name</span><span id="rds-pty-name" class="rds-value">--</span></div>
|
||||
</div>
|
||||
<div class="rds-raw-label">Raw JSON</div>
|
||||
<div class="rds-raw-label">Raw JSON (last spectrum frame)</div>
|
||||
<pre id="rds-raw" class="rds-raw">--</pre>
|
||||
</div>
|
||||
<div id="subtab-map" class="sub-tab-panel" style="display:none;">
|
||||
|
||||
@@ -123,6 +123,11 @@ body {
|
||||
input.status-input, select.status-input { width: 100%; padding: 0.45rem 0.5rem; font-size: 1rem; border: 1px solid var(--border-light); border-radius: 6px; background: var(--input-bg); color: var(--text); }
|
||||
#mode { height: var(--control-height); }
|
||||
#freq { font-family: 'DSEG14 Classic', monospace; font-size: 2rem; padding: 0.5rem 0.6rem; letter-spacing: 0.05em; text-align: center; }
|
||||
#freq:disabled,
|
||||
#center-freq:disabled {
|
||||
opacity: 1;
|
||||
-webkit-text-fill-color: currentColor;
|
||||
}
|
||||
#center-freq { color: var(--wavelength-fg); }
|
||||
.controls-row {
|
||||
display: grid;
|
||||
|
||||
Reference in New Issue
Block a user