Commit Graph
10 Commits
Author SHA1 Message Date
jensandClaude Sonnet 5 2dba3a9a2f add UBX-MON-VER support and surface device identification in CLI/GUI
Add the Ver message parser and a fixed UbxQuery (was unused and had a
broken semaphore/state bug) to poll MON-VER once on connect. The CLI
prints hw/sw version and extensions; the GUI polls it per receiver,
pre-fills the read-only ID field with a connection counter and
rewrites it from the MOD= extension once the device answers, and
propagates the resolved display name to the Sky and Plot tabs so they
no longer show the stale placeholder ID.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XM4FNUjhu9x8df5Dp1hHvd
2026-07-16 20:22:25 +02:00
jensandClaude Sonnet 5 b3447a28c5 harden UBX parsing/dispatch and report peer-side disconnects in GUI
A struct size-mismatch or any other parse error in a listener could
propagate uncaught out of the socket-reading thread and silently kill
it. Catch broadly in the event loop and per-listener in call_listener,
and make the NAV-SAT/NAV-SIG/RXM-RAWX group parsers tolerate a
payload length that isn't an exact multiple of the group size instead
of crashing on a short struct.unpack.

Also wire NetworkBackend's socket-loss detection through to
ReceiverManager (via a queued signal, since the callback fires from
the backend thread) so the GUI reflects a peer-initiated disconnect
instead of leaving the row stuck showing "connected". Verified against
a real ZED-X20P: it drops the TCP session on its own after ~20-28s
regardless of traffic; the GUI now marks the receiver disconnected and
frees its ID for reconnecting.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AzmCaNjDb3TAqPpTwunKTY
2026-07-15 22:00:29 +02:00
jensandClaude Sonnet 4.6 dce570460e replay: delay per complete frame instead of per chunk
ReplayPacer (MsgListener+MsgTalker) sits between packetizer output and
downstream listeners; sleeps after each complete NMEA/UBX frame before
forwarding. FileBackend no longer owns the delay — it reads as fast as
possible and the pacer provides back-pressure on the same thread.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 13:11:40 +02:00
jensandClaude Sonnet 4.6 ff686b64f7 gui: add File source type to connection tab
- ConnectionConfig: new file_path and delay fields
- ConnectionRow: File page with path input, Browse button, delay
  spinner (0–10 s), and auto-fill of receiver-ID from filename
- ReceiverManager.connect_receiver: FileBackend wired for 'file' type;
  UBX poll timer skipped for file sources
- FileBackend.register_xcvr: fallback to first unoccupied entry when
  name does not match filename pattern

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 12:47:28 +02:00
jensandClaude Sonnet 4.6 9ae3667123 backend: rename serial.py to serial_backend.py
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 11:22:46 +02:00
jensandClaude Sonnet 4.6 68f8196fbb backend: rename network.py to network_backend.py
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 11:21:50 +02:00
jensandClaude Sonnet 4.6 4ab9a349a2 backend: move gui/backends.py to backend/serial.py
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 11:18:55 +02:00
jensandClaude Sonnet 4.6 53ed665f44 backend: move NetworkBackend and ABackend into backend/ folder
- network_backend.py -> backend/network.py
- a_backend.py -> backend/a_backend.py
- update all imports accordingly

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 11:16:23 +02:00
jensandClaude Sonnet 4.6 5efef47f1a data_model: add NavIC (GNSS id 7) to names, shorts, and colors
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-24 19:08:56 +02:00
jens 561d4ad77f added gui 2026-05-24 11:52:03 +02:00