diff --git a/src/trx-server/src/config.rs b/src/trx-server/src/config.rs index 3857556..3913152 100644 --- a/src/trx-server/src/config.rs +++ b/src/trx-server/src/config.rs @@ -32,6 +32,9 @@ use trx_core::rig::state::RigMode; pub struct RigInstanceConfig { /// Stable rig identifier used in protocol routing. pub id: String, + /// Display name for the rig (e.g., "HF Transceiver", "VHF/UHF SDR"). + /// If not specified, defaults to the rig id. + pub name: Option, /// Rig backend configuration. pub rig: RigConfig, /// Polling and retry behavior. @@ -52,6 +55,7 @@ impl Default for RigInstanceConfig { fn default() -> Self { Self { id: "default".to_string(), + name: None, rig: RigConfig::default(), behavior: BehaviorConfig::default(), audio: AudioConfig::default(), @@ -63,6 +67,14 @@ impl Default for RigInstanceConfig { } } +impl RigInstanceConfig { + /// Get the display name for this rig. + /// Returns the configured name if set, otherwise the id. + pub fn display_name(&self) -> &str { + self.name.as_deref().unwrap_or(&self.id) + } +} + /// Top-level server configuration structure. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(default)] @@ -618,6 +630,7 @@ impl ServerConfig { } vec![RigInstanceConfig { id: "default".to_string(), + name: None, rig: self.rig.clone(), behavior: self.behavior.clone(), audio: self.audio.clone(), diff --git a/src/trx-server/src/listener.rs b/src/trx-server/src/listener.rs index c0944c6..d9f3c24 100644 --- a/src/trx-server/src/listener.rs +++ b/src/trx-server/src/listener.rs @@ -243,6 +243,7 @@ async fn handle_client( if let Some(snapshot) = state.snapshot() { entries.push(RigEntry { rig_id: handle.rig_id.clone(), + display_name: Some(handle.display_name.clone()), state: snapshot, audio_port: Some(handle.audio_port), }); diff --git a/src/trx-server/src/main.rs b/src/trx-server/src/main.rs index 183086e..8adc2e5 100644 --- a/src/trx-server/src/main.rs +++ b/src/trx-server/src/main.rs @@ -798,6 +798,7 @@ async fn main() -> DynResult<()> { rig_cfg.id.clone(), RigHandle { rig_id: rig_cfg.id.clone(), + display_name: rig_cfg.display_name().to_string(), rig_tx, state_rx, audio_port: rig_cfg.audio.port, diff --git a/src/trx-server/src/rig_handle.rs b/src/trx-server/src/rig_handle.rs index 761c1e7..acef2db 100644 --- a/src/trx-server/src/rig_handle.rs +++ b/src/trx-server/src/rig_handle.rs @@ -16,6 +16,8 @@ use trx_core::rig::state::RigState; pub struct RigHandle { /// Stable rig identifier, matches the key in the HashMap. pub rig_id: String, + /// Display name for the rig (from config, or rig_id if not set). + pub display_name: String, /// Send commands to the rig task. pub rig_tx: mpsc::Sender, /// Watch the latest rig state for fast GetState/GetRigs responses.