dda5ec17bb
Add VirtualChannelManager trait in trx-core::vchan with types VChannelInfo, VChanError, and SharedVChanManager alias. Re-export from trx-backend::vchan. Implement SdrVirtualChannelManager in trx-backend-soapysdr: - Wraps Arc<SdrPipeline> + shared AtomicI64 center_hz - add_channel / remove_channel / set_channel_freq / set_channel_mode - Slot-stability: on remove, shifts pipeline_slot for surviving channels - update_center_hz: recomputes IF offsets for all virtual channels on retune - update_primary_meta: keeps channel-0 freq/mode in sync for API consumers Wire into SoapySdrRig (holds Arc<SdrVirtualChannelManager>, exposes channel_manager()), SdrPipeline (shared_center_hz AtomicI64), and RigHandle (vchan_manager: Option<SharedVChanManager>). main.rs extracts the manager before boxing the SDR rig and stores it in the handle. Add max_virtual_channels to SdrConfig (default 4, TOML-configurable). Add 5 unit tests: add, remove, permanent guard, cap, out-of-bandwidth. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Signed-off-by: Stan Grams <sjg@haxx.space>
42 lines
1.1 KiB
TOML
42 lines
1.1 KiB
TOML
# SPDX-FileCopyrightText: 2025 Stanislaw Grams <stanislawgrams@gmail.com>
|
|
#
|
|
# SPDX-License-Identifier: BSD-2-Clause
|
|
|
|
[workspace]
|
|
members = [
|
|
"src/decoders/trx-ais",
|
|
"src/decoders/trx-aprs",
|
|
"src/decoders/trx-cw",
|
|
"src/decoders/trx-decode-log",
|
|
"src/decoders/trx-ft8",
|
|
"src/decoders/trx-rds",
|
|
"src/decoders/trx-vdes",
|
|
"src/decoders/trx-wspr",
|
|
"src/trx-core",
|
|
"src/trx-protocol",
|
|
"src/trx-app",
|
|
"src/trx-server",
|
|
"src/trx-server/trx-backend",
|
|
"src/trx-server/trx-backend/trx-backend-ft817",
|
|
"src/trx-server/trx-backend/trx-backend-ft450d",
|
|
"src/trx-server/trx-backend/trx-backend-soapysdr",
|
|
"src/trx-client",
|
|
"src/trx-client/trx-frontend",
|
|
"src/trx-client/trx-frontend/trx-frontend-http",
|
|
"src/trx-client/trx-frontend/trx-frontend-http-json",
|
|
"src/trx-client/trx-frontend/trx-frontend-rigctl",
|
|
]
|
|
resolver = "2"
|
|
|
|
[workspace.dependencies]
|
|
flate2 = "1"
|
|
tokio = "1"
|
|
uuid = { version = "1", features = ["v4", "serde"] }
|
|
tokio-serial = "5"
|
|
serde = "1"
|
|
serde_json = "1"
|
|
toml = "0.8"
|
|
tracing = "0.1"
|
|
tracing-subscriber = "0.3"
|
|
clap = "4"
|