[feat](trx-server): make VFO priming optional via behavior.vfo_prime config

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Stan Grams <sjg@haxx.space>
This commit is contained in:
2026-03-21 21:45:59 +01:00
parent 2a720573f4
commit bc596dd9a1
3 changed files with 15 additions and 3 deletions
+4
View File
@@ -187,6 +187,9 @@ pub struct BehaviorConfig {
pub max_retries: u32,
/// Base delay for exponential backoff in milliseconds
pub retry_base_delay_ms: u64,
/// Whether to prime both VFOs on startup by toggling and reading each.
/// Defaults to true for rigs with dual VFOs (e.g. FT-817).
pub vfo_prime: bool,
}
impl Default for BehaviorConfig {
@@ -196,6 +199,7 @@ impl Default for BehaviorConfig {
poll_interval_tx_ms: 100,
max_retries: 3,
retry_base_delay_ms: 100,
vfo_prime: true,
}
}
}
+1
View File
@@ -445,6 +445,7 @@ fn build_rig_task_config(
pskreporter_status,
aprs_is_status,
histories,
vfo_prime: rig_cfg.behavior.vfo_prime,
prebuilt_rig: None,
}
}
+10 -3
View File
@@ -50,6 +50,8 @@ pub struct RigTaskConfig {
/// Per-rig decoder history store. Used by Reset* commands to clear the
/// history and by the audio listener to serve history on connection.
pub histories: Arc<DecoderHistories>,
/// Whether to prime both VFOs on startup by toggling and reading each.
pub vfo_prime: bool,
/// Pre-built rig backend. When `Some`, the registry factory is skipped.
/// Used by the SDR path in `main.rs` to pass a fully-configured
/// `SoapySdrRig` (built with channel config) without duplicating the
@@ -81,6 +83,7 @@ impl Default for RigTaskConfig {
pskreporter_status: None,
aprs_is_status: None,
histories: DecoderHistories::new(),
vfo_prime: true,
prebuilt_rig: None,
}
}
@@ -190,10 +193,14 @@ pub async fn run_rig_task(
}
// Prime VFO state
if let Err(e) = prime_vfo_state(&mut rig, &mut state, retry).await {
warn!("VFO priming failed: {:?}", e);
if config.vfo_prime {
if let Err(e) = prime_vfo_state(&mut rig, &mut state, retry).await {
warn!("VFO priming failed: {:?}", e);
} else {
initial_status_read = true;
}
} else {
initial_status_read = true;
info!("VFO priming disabled by config");
}
if initial_status_read {