Commit Graph
20 Commits
Author SHA1 Message Date
ew8bakandClaude Sonnet 4.6 efc21b92e6 Add configurable VFO frequency range with GHz support
- Settings > Display: new "VFO Display" control to select max frequency
  range (999 MHz / 9.999 GHz / 99.999 GHz), persisted as freq_mhz_digits
- FreqDisplay: extend digit map [0..10] to support up to 11 digit positions;
  keyboard navigation adapts to MinMhzDigits dynamically
- MainForm/LayoutTopVfoBlock: VFO panel width scales automatically with
  selected digit count using dynamic text measurement
- Web VFO: fix broken HTML (class attr not closed before data-s — wheel and
  hover were completely non-functional); rewrite fmtVfo to use variable MHz
  digit count synced from server state; fix missing </span> for .vfo-hz
- WebServer: publish freq_mhz_digits in state JSON; updated from
  ApplyFreqMhzDigits so desktop and web stay in sync
- Fix Int32 overflow on frequencies above ~2.15 GHz: CATEngine.Pad V param
  Int64, FormatFreq/FormatFreqSV Mhz var Int64 (Mhz*1000000 overflowed)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-15 13:13:52 +03:00
ew8bak 5ac7ddc976 Match web S-meter to desktop style 2026-05-14 21:28:38 +03:00
ew8bak 4164097893 Improve mobile web remote layout 2026-05-14 21:17:54 +03:00
ew8bak 020b9422e0 add trancverter 2026-05-14 20:24:50 +03:00
ew8bakandClaude Sonnet 4.6 2ab90e8855 add browser mic TX: Opus-encoded mic audio from web client to WDSP TX chain
- Browser: AudioWorklet accumulates 960-sample frames, AudioEncoder encodes
  to Opus, sends binary WS frame 'M' + raw Opus packet
- Server: opcode $02 handler decodes Opus via libopus, calls OnWebMic callback
- MainForm: WebOnMic converts PSingle→Double, pushes to PushTXMicSamplesD;
  ApplyMOX switches mic source to txmsWeb when web client active, restores on TX-off
- WDSPEngine: added txmsWeb to TTXMicSource enum

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-09 21:49:51 +03:00
ew8bakandClaude Sonnet 4.6 3d25f837af fix WebSocket deadlock on slow client + mobile TX controls visibility
Deadlock: BroadcastBinary held FClientLock during blocking SockSend;
slow/stalled client caused Stop() to wait forever. Fix: set SO_SNDTIMEO=1s
on each accepted socket so SockSend returns error instead of hanging,
mark client wsClosed on send failure so subsequent ticks skip it.

Mobile: move TONE/TX-slider/MOX to front of toolbar via CSS order so
they are immediately visible without horizontal scroll on phones.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-09 16:39:43 +03:00
ew8bakandClaude Sonnet 4.6 9662d3d090 web: red filter passband overlay during TX/TUN
Change filter passband fill from blue/white to semi-transparent red
on both spectrum and waterfall when transmitting or tuning, matching
the desktop behaviour.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-09 16:16:59 +03:00
ew8bakandClaude Sonnet 4.6 22e01a6e3f fix web TX spectrum position in CTUN mode
Add 'dup' field to state JSON (FDisplayDuplex). In CTUN+non-DUP TX,
use vfo_a_hz as spectrum center so the TX signal renders at the VFO
position instead of the display center. In CTUN+DUP TX, keep center_hz
so the RX spectrum stays correctly positioned at the filter.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-09 16:15:34 +03:00
ew8bakandClaude Sonnet 4.6 9ae77ddeb4 fix web wheel: filter slides smoothly without passing through center
Track wheelActiveTs on each wheel tick; suppress server center_hz
overwrites for 300ms after last wheel event so localCenter stays at
the current VFO position instead of snapping back to screen center.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-09 16:02:56 +03:00
ew8bakandClaude Sonnet 4.6 0e738e1967 web: fix filter passband position on click and VFO wheel tuning
Click on spectrum/waterfall no longer sets localCenter immediately.
The filter passband now appears exactly at the clicked pixel instead of
jumping to screen center. Server's center_hz (arrives ~200ms later)
naturally re-centers the display once fresh spectrum data is ready.

VFO display wheel (vDispA/vDispB) now updates localCenter when tuning
the active VFO. Previously localCenter lagged behind, causing applyState
to teleport the filter back to center every 200ms (the "passes through
center" oscillation).

Spectrum canvas wheel (doWheel) is unchanged: user expects the spectrum
to scroll when wheel-scrolling over it, filter stays at center — correct.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-09 15:12:52 +03:00
ew8bakandClaude Sonnet 4.6 154b6eccba web: fix A=B/SWAP VFO ops, wire attenuator, TUN button, FNP filter overlay
- Add freq_a command: sets VFO A regardless of active VFO; fixes A=B and
  SWAP when VFO B is active (prev. sent freq_b which overwrote wrong VFO)
- Add pend("freq") to B=A / A=B / SWAP to guard local display during round-trip
- RX step attenuator: HPSDRNetwork.SetStepAtten → bytes 1442/1443 in HP packet;
  WebServer attn command; MainForm FAtten + SyncWebAttn; attSel.onchange in JS
- TUN mode: set_tun WebSocket command wired to ApplyTUN(); toneBtn toggles
  with on/off highlight and pending protection; tuning field in state JSON
- FNP button opens semi-transparent filter overlay (10 buttons, 5×2 grid)
  with mode-appropriate widths (SSB/CW/AM/FM); active filter highlighted;
  cur.filter_bw updated immediately on click so passband redraws within 50ms

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-09 15:04:23 +03:00
ew8bak 77d380acfd fix fft, waterfall 2026-04-22 22:09:42 +03:00
ew8bak a34d25bdba fix web 2026-03-11 22:14:30 +03:00
ew8bak 4407511d56 scroll freq 2026-03-11 22:06:37 +03:00
ew8bak 8d64bba6fc fix vfo on web 2026-03-11 21:58:23 +03:00
ew8bak 01de71c60f add nb nr 2026-03-09 20:55:19 +03:00
ew8bak e5441be063 fix s-meter 2026-03-08 23:51:56 +03:00
ew8bak 19b4efea6b fix chnage mode web 2026-03-06 00:29:16 +03:00
ew8bak 5934098b73 fix audio web 2026-03-05 21:15:34 +03:00
ew8bak 7521a46bbc init 2026-03-05 16:19:26 +03:00