[feat](trx-server): wire SoapySDR backend and AudioSource into server startup

- Call validate_sdr() at startup and abort on errors (SDR.md §11)
- Build SoapySdrRig with full [[sdr.channels]] config when access_type is
  "sdr"; subscribe to its primary-channel PCM sender before handing the
  pre-built rig to the rig task via RigTaskConfig.prebuilt_rig
- Skip cpal capture when an SDR audio source is available; bridge the
  SdrPipeline PCM broadcast into pcm_tx so all decoder tasks are unchanged
- Add trx-backend-soapysdr optional dep and soapysdr feature to trx-server
- Add prebuilt_rig field to RigTaskConfig so rig_task skips the registry
  factory when a pre-built rig is supplied by main

Marks SDR-08 complete.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Stan Grams <sjg@haxx.space>
This commit is contained in:
2026-02-24 22:27:15 +01:00
parent dc3fd63a83
commit 319e935d97
5 changed files with 163 additions and 7 deletions
+4
View File
@@ -8,6 +8,9 @@ version = "0.1.0"
edition = "2021"
build = "build.rs"
[features]
soapysdr = ["dep:trx-backend-soapysdr", "trx-backend/soapysdr"]
[dependencies]
tokio = { workspace = true, features = ["full"] }
tokio-serial = { workspace = true }
@@ -23,6 +26,7 @@ cpal = "0.15"
opus = "0.3"
trx-app = { path = "../trx-app" }
trx-backend = { path = "trx-backend" }
trx-backend-soapysdr = { path = "trx-backend/trx-backend-soapysdr", optional = true }
trx-core = { path = "../trx-core" }
trx-aprs = { path = "../decoders/trx-aprs" }
trx-cw = { path = "../decoders/trx-cw" }