Files
trx-rs/Cargo.toml
T
sjg dda5ec17bb [feat](trx-backend): VirtualChannelManager trait + SdrVirtualChannelManager impl
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>
2026-03-11 00:48:31 +01:00

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"