diff --git a/src/trx-server/src/main.rs b/src/trx-server/src/main.rs index 3d56634..49703cd 100644 --- a/src/trx-server/src/main.rs +++ b/src/trx-server/src/main.rs @@ -24,11 +24,9 @@ use tracing::{error, info}; use trx_core::audio::AudioStreamInfo; use trx_backend::{is_backend_registered, register_builtin_backends, registered_backends, RigAccess}; -use trx_core::radio::freq::Freq; use trx_core::rig::controller::{AdaptivePolling, ExponentialBackoff}; use trx_core::rig::request::RigRequest; use trx_core::rig::state::RigState; -use trx_core::rig::{RigControl, RigRxStatus, RigStatus, RigTxStatus}; use trx_core::DynResult; use config::ServerConfig; @@ -188,51 +186,6 @@ fn resolve_config(cli: &Cli, cfg: &ServerConfig) -> DynResult { }) } -fn build_initial_state(cfg: &ServerConfig, resolved: &ResolvedConfig) -> RigState { - let callsign = &resolved.callsign; - RigState { - rig_info: None, - status: RigStatus { - freq: Freq { - hz: cfg.rig.initial_freq_hz, - }, - mode: cfg.rig.initial_mode.clone(), - tx_en: false, - vfo: None, - tx: Some(RigTxStatus { - power: None, - limit: None, - swr: None, - alc: None, - }), - rx: Some(RigRxStatus { sig: None }), - lock: Some(false), - }, - initialized: false, - control: RigControl { - rpt_offset_hz: None, - ctcss_hz: None, - dcs_code: None, - lock: Some(false), - clar_hz: None, - clar_on: None, - enabled: Some(false), - }, - server_callsign: callsign.clone(), - server_version: Some(env!("CARGO_PKG_VERSION").to_string()), - server_latitude: resolved.latitude, - server_longitude: resolved.longitude, - aprs_decode_enabled: false, - cw_decode_enabled: false, - cw_auto: true, - cw_wpm: 15, - cw_tone_hz: 700, - ft8_decode_enabled: false, - aprs_decode_reset_seq: 0, - cw_decode_reset_seq: 0, - ft8_decode_reset_seq: 0, - } -} fn build_rig_task_config( resolved: &ResolvedConfig, @@ -306,7 +259,14 @@ async fn main() -> DynResult<()> { } let (tx, rx) = mpsc::channel::(RIG_TASK_CHANNEL_BUFFER); - let initial_state = build_initial_state(&cfg, &resolved); + let initial_state = RigState::new_with_metadata( + resolved.callsign.clone(), + Some(env!("CARGO_PKG_VERSION").to_string()), + resolved.latitude, + resolved.longitude, + cfg.rig.initial_freq_hz, + cfg.rig.initial_mode.clone(), + ); let (state_tx, state_rx) = watch::channel(initial_state); // Keep receivers alive so channels don't close prematurely let _state_rx = state_rx; diff --git a/src/trx-server/src/rig_task.rs b/src/trx-server/src/rig_task.rs index f0a6cc4..ab1b3fe 100644 --- a/src/trx-server/src/rig_task.rs +++ b/src/trx-server/src/rig_task.rs @@ -20,7 +20,7 @@ use trx_core::rig::controller::{ }; use trx_core::rig::request::RigRequest; use trx_core::rig::state::{RigMode, RigSnapshot, RigState}; -use trx_core::rig::{RigCat, RigControl, RigRxStatus, RigStatus, RigTxStatus}; +use trx_core::rig::{RigCat, RigRxStatus, RigTxStatus}; use trx_core::{DynResult, RigError, RigResult}; use crate::audio; @@ -89,50 +89,14 @@ pub async fn run_rig_task( // Initialize state machine and state let mut machine = RigStateMachine::new(); let emitter = RigEventEmitter::new(); - let server_callsign = config.server_callsign.clone(); - let server_version = config.server_version.clone(); - let server_latitude = config.server_latitude; - let server_longitude = config.server_longitude; - let mut state = RigState { - rig_info: None, - status: RigStatus { - freq: Freq { hz: 144_300_000 }, - mode: RigMode::USB, - tx_en: false, - vfo: None, - tx: Some(RigTxStatus { - power: None, - limit: None, - swr: None, - alc: None, - }), - rx: Some(RigRxStatus { sig: None }), - lock: Some(false), - }, - initialized: false, - control: RigControl { - rpt_offset_hz: None, - ctcss_hz: None, - dcs_code: None, - lock: Some(false), - clar_hz: None, - clar_on: None, - enabled: Some(false), - }, - server_callsign, - server_version, - server_latitude, - server_longitude, - aprs_decode_enabled: false, - cw_decode_enabled: false, - cw_auto: true, - cw_wpm: 15, - cw_tone_hz: 700, - ft8_decode_enabled: false, - aprs_decode_reset_seq: 0, - cw_decode_reset_seq: 0, - ft8_decode_reset_seq: 0, - }; + let mut state = RigState::new_with_metadata( + config.server_callsign.clone(), + config.server_version.clone(), + config.server_latitude, + config.server_longitude, + config.initial_freq_hz, + config.initial_mode.clone(), + ); // Polling configuration let polling = &config.polling;