From 9461ba2a859ed58d30cf9774c7dc7ad09bf5bbab Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 28 Mar 2026 19:51:58 +0000 Subject: [PATCH] [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 --- .../trx-frontend-http/src/scheduler.rs | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/src/trx-client/trx-frontend/trx-frontend-http/src/scheduler.rs b/src/trx-client/trx-frontend/trx-frontend-http/src/scheduler.rs index 8dc9d87..ab38b38 100644 --- a/src/trx-client/trx-frontend/trx-frontend-http/src/scheduler.rs +++ b/src/trx-client/trx-frontend/trx-frontend-http/src/scheduler.rs @@ -88,6 +88,40 @@ pub struct ScheduleEntry { pub bookmark_ids: Vec, } +#[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, + #[serde(default)] + pub bookmark_ids: Vec, +} + +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, +} + +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, + #[serde(default)] + pub satellites: Option, } // ============================================================================ @@ -893,6 +929,7 @@ pub async fn get_scheduler( grayline: None, entries: vec![], interleave_min: None, + satellites: None, }); HttpResponse::Ok().json(config) }