Documentation
SDR controllers
Source:
controllers/sdr/README.md
This package contains application-facing SDR++ integration that is shared by OpenRoadCode frontends.
Responsibilities
sdrpp_control.pyexposes display controls such as waterfall, band plan, FFT peak hold, auto range, and theme selection without leaking the SDR++ remote-control wire protocol into the UI.sdr_telemetry_monitor.pycombines read-only SDR++ telemetry with radio-specific metadata such as FM RDS.sdr_telemetry_worker.pypolls telemetry off the UI thread and publishes the latest snapshot for frontends.- SDR++ process launch and lifecycle remain in
apps/launchers/sdrpp_launcher.py; they do not belong in this controller package.
SDR++ local interfaces
OpenRoadCode deliberately separates three local interfaces:
| Port | Interface | Purpose |
|---|---|---|
| 4532 | RigCTL | RF tuning, mode/bandwidth, receiver state, and FM RDS |
| 4533 | ORC SDR++ remote control | Waterfall, band plan, FFT hold, auto range, themes |
| 4534 | ORC telemetry | Read-only signal, SNR, FFT, VFO, frequency, and bandwidth telemetry |
Keeping these interfaces separate prevents UI/display controls and telemetry from becoming accidental extensions of the radio backend.
Frontend use
Frontends should depend on SDRPPControl and SDRTelemetryWorker, not protocol clients directly. The RF radio UI may continue operating when telemetry is unavailable; telemetry is supplemental and must not make tuning fail.
FM RDS is intentionally enabled only for the FM radio profile. Other RF profiles leave RDS polling and presentation disabled.