How conductors-senior-project-rit/detector-station works
TrackSense is a desktop telemetry receiver for End-of-Train (EOT) and Head-of-Train (HOT) radio data. An operator starts tracking in the Qt interface; the handler consumes bit data published by the GNU Radio workflow, recognizes frames, decodes valid packets, updates the live table and local logs, and optionally posts telemetry to the server. Failed posts are retained and replayed, while a separate heartbeat reports station availability. The excerpts support the main runtime links; some UI details, handler setup, and configuration values were not sampled, so those relationships are kept at subsystem level.
Main entry points: eot_handler.py EOT handler · TrackSenseGUIWrapper.py GUI wrapper · information_sender.py Telemetry requests · dropped_data_handler.py Dropped-data handler
Components 15
Desktop UI
- App entry
standalone_app/main.py - GUI wrapper
standalone_app/QtGUI/TrackSenseGUIWrapper.py - Qt interface
standalone_app/QtGUI/TrackSenseGUI.py
Telemetry processing
- EOT handler
standalone_app/EOT/eot_handler.py - GNU Radio source
standalone_app/TrackSenseGNURadioWorkflow.grc - EOT/HOT decoders
standalone_app/EOT/decoders.py
Server delivery
- Telemetry requests
standalone_app/EOT/information_sender.py - Dropped-data handler
standalone_app/EOT/dropped_data_handler.py - Dropped packets
standalone_app/dist/dropped_data.json - Heartbeat worker
standalone_app/EOT/ping.py
Local monitoring
- Audio monitor
standalone_app/EOT/audio_amplitude.py - Local logs
standalone_app/TrackSenseLogger.py - Telemetry text logs
standalone_app/EOT/eot_handler.py
Other components
- Operator
- TrackSense API
Connections 20
- Operator → Qt interface: operates
- App entry → GUI wrapper: creates
- GUI wrapper → Qt interface: sets up
- GUI wrapper → EOT handler: starts tracking
- GNU Radio source → EOT handler: publishes bits
- EOT handler → EOT/HOT decoders: decodes frames
- EOT handler → GUI wrapper: emits table data
- GUI wrapper → Audio monitor: starts monitoring
- Audio monitor → GUI wrapper: emits level
- EOT handler → Telemetry requests: dispatches packets
- Telemetry requests → TrackSense API: posts history
- Telemetry requests → Dropped-data handler: saves failures
- Telemetry requests → Dropped-data handler: requests replay
- Dropped-data handler → Dropped packets: reads/writes
- Dropped-data handler → TrackSense API: replays history
- EOT handler → Heartbeat worker: starts heartbeat
- Heartbeat worker → TrackSense API: posts status
- EOT handler → Telemetry text logs: writes telemetry
- GUI wrapper → Local logs: logs events
- EOT handler → Local logs: logs events