[fix](trx-frontend-http): persist satellite pass preemption config

The SchedulerConfig struct was missing a `satellites` field, so the
frontend's satellite configuration (enabled flag, pretune seconds,
satellite entries) was silently dropped by serde on every PUT request,
causing the setting to reset immediately.

Added SatelliteConfig, SatelliteEntry structs and the `satellites`
field to SchedulerConfig.

https://claude.ai/code/session_01FMcYoHGy5K21maudnntueB
Signed-off-by: Claude <noreply@anthropic.com>
This commit is contained in:
Claude
2026-03-28 19:51:58 +00:00
committed by Stan Grams
parent 4eac4458bf
commit 9461ba2a85
@@ -88,6 +88,40 @@ pub struct ScheduleEntry {
pub bookmark_ids: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SatelliteEntry {
pub id: String,
pub satellite: String,
pub norad_id: u32,
pub bookmark_id: String,
#[serde(default = "default_min_elevation")]
pub min_elevation_deg: f64,
#[serde(default)]
pub priority: i32,
#[serde(default)]
pub center_hz: Option<u64>,
#[serde(default)]
pub bookmark_ids: Vec<String>,
}
fn default_min_elevation() -> f64 {
5.0
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct SatelliteConfig {
#[serde(default)]
pub enabled: bool,
#[serde(default = "default_pretune_secs")]
pub pretune_secs: u32,
#[serde(default)]
pub entries: Vec<SatelliteEntry>,
}
fn default_pretune_secs() -> u32 {
60
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct SchedulerConfig {
pub remote: String,
@@ -101,6 +135,8 @@ pub struct SchedulerConfig {
/// `None` (or 0) disables interleaving — the first matching entry wins.
#[serde(default)]
pub interleave_min: Option<u32>,
#[serde(default)]
pub satellites: Option<SatelliteConfig>,
}
// ============================================================================
@@ -893,6 +929,7 @@ pub async fn get_scheduler(
grayline: None,
entries: vec![],
interleave_min: None,
satellites: None,
});
HttpResponse::Ok().json(config)
}