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
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>
- --network NAME HOST PORT (repeatable)
- --serial NAME DEVICE BAUD (repeatable)
- --file PATH (repeatable, replayed via FileBackend)
- --log-dir DIR (frame logging, default ./log)
- --delay SECS (file replay inter-frame delay, default 1.0)
- --project FILE load config from JSON project file
- --save FILE export current config as JSON project file
Multiple source types can be combined. Network sources share one
NetworkBackend; serial sources each get their own SerialBackend;
file sources share one FileBackend. The poll loop runs only for
network sources; file-only mode joins the reader threads; serial-only
mode blocks on signal.pause().
file_backend: rename _source_id -> source_id_from_path (public),
add join() to wait for reader threads.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- msg/frame_logger.py: MsgListener that writes raw byte stream per
source to timestamped log files (<YYYY_MM_DD_HH_MM_SS_source>.log)
- main.py: entry point extracted from network_backend.py; adds
--log-dir argument (default ./log) and wires FrameLogger per transceiver
- network_backend.py: now contains only the NetworkBackend class
- .gitignore: exclude log/ directory
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>