Commit Graph
67 Commits
Author SHA1 Message Date
jensandClaude Sonnet 4.6 eba3a9dde9 main: full CLI config with network/serial/file sources and JSON project export
- --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>
2026-05-25 11:44:34 +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 c5ec65f2d6 add frame logging and extract entry point to main.py
- 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>
2026-05-25 11:12:15 +02:00
jensandClaude Sonnet 4.6 a920802cce add conversation recap document
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-24 20:13:07 +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
jensandClaude Sonnet 4.6 d54259a772 sky tab: add Msg column with 10s activity indicator per satellite row
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-24 17:33:43 +02:00
jensandClaude Sonnet 4.6 7862989fd4 sky tab: extend trail storage to 24h, add visible trail depth spinbox
Trail history increased from 1h to 24h (86400 points). Added a spinbox
(0-24h, default 1h) next to 'Show Trails' to control how much trail is
rendered; spinbox is disabled when trails are off.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-24 15:08:13 +02:00
jensandClaude Sonnet 4.6 7fe6c34fd2 sky tab: replace per-satellite trail toggle with global 'Show Trails' checkbox
Removed Trail column from satellite table. Added a single 'Show Trails'
checkbox in the source selector box that enables/disables all trails at once.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-24 14:55:31 +02:00
jensandClaude Sonnet 4.6 1522a2eb6a sky plot: add per-satellite trajectory trails
- Store up to 1 hour of (elevation, azimuth) history per satellite/source
- Trail column in satellite table (checkbox, default off); clicking the
  column header toggles all trails on/off
- Trail rendered in GNSS color with alpha fading from 15 (oldest) to 200
  (newest), subsampled to max 120 points for render performance
- Trail column fixed at 42 px to avoid checkbox + empty-text visual split

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-24 13:23:14 +02:00
jens bfe70aff22 network_backend: allow host names 2026-05-24 13:03:25 +02:00
jensandClaude Sonnet 4.6 19cf6fa05e plot tab: fix y-axis scaling, add Visible/Used Sats modes, right-click menu
- Fix _nice_ticks: use floor for first tick and ceil for last tick so the
  tick range always fully brackets the data; data was previously clipped
  when the maximum fell between two nice tick values
- Add 5% headroom padding so data does not sit flush against plot edges
- Add 'Visible Sats' and 'Used Sats' y-axis modes (global, like pDOP)
- Right-click context menu on plot canvas: Save as PNG and Copy to clipboard

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-24 12:46:52 +02:00
jensandClaude Sonnet 4.6 495f4c15c9 sky tab: add per-receiver info bar with pDOP, visible and used satellite counts
One card per receiver showing receiver ID, pDOP, visible satellites and
used satellites. Cards are added/removed dynamically with receivers.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-24 12:27:36 +02:00
jensandClaude Sonnet 4.6 07444fd299 sky tab: decouple table rebuilds from sky updates, update cells in-place
- Sky widget always gets the latest data immediately (off-thread render)
- Table rebuilds throttled to ~2 Hz via single-shot QTimer
- Cell values updated in-place when satellite set is unchanged, preserving
  scroll position; full rebuild only when satellites appear/disappear

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-24 12:18:49 +02:00
jens d492e32a8b plot tab remembers now value, satellite, points 2026-05-24 12:07:41 +02:00
jens 45ef58ea8d refactored connection tab 2026-05-24 11:59:34 +02:00
jens 561d4ad77f added gui 2026-05-24 11:52:03 +02:00
jens 74b949f864 - refactored
- added claude.md
2026-05-24 09:21:26 +02:00
jens 670c4db7a4 refactored 2026-03-29 15:37:18 +02:00
jens f7b1b18b2f - removed name property from Msg container
- added source property to MsgContainer
2026-03-29 11:01:41 +02:00
jens af94c39b3e reverted introducing stream 2026-03-29 10:37:49 +02:00
jens 8208edfc46 - added stream talker
- added stream listener
2026-03-28 12:03:54 +01:00
jens 2e01a70d53 refactored Transceiver 2026-03-25 06:33:18 +01:00
jens 888dd850f3 refactored 2026-03-25 05:59:58 +01:00
jens e5da1b663b refactored 2026-03-25 05:53:06 +01:00
jens 7c1e65253b refactored 2026-03-25 05:40:50 +01:00
jens 0ed01e0164 refactored 2026-03-25 05:35:17 +01:00
jens 533e441d3e refactored NmeaReceiver 2026-03-25 05:34:49 +01:00
jens e7178efa23 refactored UbxReceiver 2026-03-25 05:32:21 +01:00
jens 3a85765347 refactored MsgSink and MsgSource 2026-03-25 05:29:59 +01:00
jens 83e5867983 added UbxQuery 2026-03-23 15:46:02 +01:00
jens 4427995ed6 - send() uses bytes no Msg 2026-03-23 15:42:24 +01:00
jens f24224623e added UBX:NAV:SAT message 2026-03-22 11:00:40 +01:00
jens 9acddacb1c added UBX:RXM:RAWX 2026-03-19 08:11:28 +01:00
jens e8d54ebc87 added UBX:NAV:SIG message 2026-03-18 20:23:23 +01:00
jens b6d8d1c772 use recv buffer 64 2026-03-17 22:21:04 +01:00
jens 4cc3d15b35 - Ubx-packetizer: disable debug 2026-03-17 20:08:59 +01:00
jens ce0fa22c58 - UbxReceiver: added catch all 2026-03-17 20:01:39 +01:00
jens 39f3e688b0 added send path to ASCII art 2026-03-17 19:38:47 +01:00
jens 4a3758d5f1 added signal (SIGINT) handler for gracefully exit 2026-03-17 19:33:19 +01:00
jens eaec8d8691 implemented send 2026-03-17 19:09:48 +01:00
jens 58f7c32747 ubx packetizer: permit sync bytes length > 2 2026-03-17 12:39:28 +01:00
jens ff61c757fd UBX always wait for sync 2026-03-17 08:29:14 +01:00
jens 63f21de1f5 fixed UBX reception 2026-03-17 08:04:11 +01:00
jens b5cd671ed4 - UBX: fixed data loss when sync byte in payload
- refactored
2026-03-16 17:00:11 +01:00
jens e004b71f3e added UBX reception 2026-03-16 16:12:11 +01:00
jens 2e83aeeb62 connect UBX Rx to UBX packetizer 2026-03-16 15:36:19 +01:00
jens fd0be82719 refactored 2026-03-16 15:30:10 +01:00