From 80faf4db9ae58551a846154615310ac6f8514aed Mon Sep 17 00:00:00 2001 From: John Rogers Date: Mon, 28 Jul 2025 23:58:52 +0100 Subject: [PATCH] fix: resolve build errors by adapting to clock delta refactor Co-authored-by: aider (gemini/gemini-2.5-pro-preview-05-06) --- src/api.rs | 13 +++++++++---- src/main.rs | 1 - src/ui.rs | 31 ++----------------------------- 3 files changed, 11 insertions(+), 34 deletions(-) diff --git a/src/api.rs b/src/api.rs index 588acdb..aa3314a 100644 --- a/src/api.rs +++ b/src/api.rs @@ -220,11 +220,15 @@ mod tests { let ltc_state = Arc::new(Mutex::new(get_test_ltc_state())); let config = Arc::new(Mutex::new(Config { hardware_offset_ms: 10, - timeturner_offset: TimeturnerOffset { - hours: 0, minutes: 0, seconds: 0, frames: 0 - } + timeturner_offset: TimeturnerOffset::default(), + default_nudge_ms: 2, })); - web::Data::new(AppState { ltc_state, config }) + let log_buffer = Arc::new(Mutex::new(VecDeque::new())); + web::Data::new(AppState { + ltc_state, + config, + log_buffer, + }) } #[actix_web::test] @@ -282,6 +286,7 @@ mod tests { let new_config_json = serde_json::json!({ "hardwareOffsetMs": 55, + "defaultNudgeMs": 2, "timeturnerOffset": { "hours": 1, "minutes": 2, "seconds": 3, "frames": 4 } }); diff --git a/src/main.rs b/src/main.rs index f418f91..698eabe 100644 --- a/src/main.rs +++ b/src/main.rs @@ -13,7 +13,6 @@ use crate::config::watch_config; use crate::serial_input::start_serial_thread; use crate::sync_logic::LtcState; use crate::ui::start_ui; -use chrono::TimeZone; use clap::Parser; use daemonize::Daemonize; diff --git a/src/ui.rs b/src/ui.rs index 7d1c265..2f04ccb 100644 --- a/src/ui.rs +++ b/src/ui.rs @@ -54,7 +54,7 @@ pub fn start_ui( .map(|ifa| ifa.ip().to_string()) .collect(); - // 3️⃣ jitter + Δ + // 3️⃣ jitter { let mut st = state.lock().unwrap(); if let Some(frame) = st.latest.clone() { @@ -64,33 +64,6 @@ pub fn start_ui( let raw = (now_utc - frame.timestamp).num_milliseconds(); let measured = raw - hw_offset_ms; st.record_offset(measured); - - // Δ = system clock - LTC timecode (use LOCAL time, with offset) - let today_local = Local::now().date_naive(); - let ms = ((frame.frames as f64 / frame.frame_rate) * 1000.0).round() as u32; - let tc_naive = NaiveTime::from_hms_milli_opt( - frame.hours, frame.minutes, frame.seconds, ms, - ).expect("Invalid LTC timecode"); - let naive_dt_local = today_local.and_time(tc_naive); - let mut dt_local = Local - .from_local_datetime(&naive_dt_local) - .single() - .expect("Invalid local time"); - - // Apply timeturner offset before calculating delta - let offset = &cfg.timeturner_offset; - dt_local = dt_local - + ChronoDuration::hours(offset.hours) - + ChronoDuration::minutes(offset.minutes) - + ChronoDuration::seconds(offset.seconds); - let frame_offset_ms = (offset.frames as f64 / frame.frame_rate * 1000.0).round() as i64; - dt_local = dt_local + ChronoDuration::milliseconds(frame_offset_ms); - - let delta_ms = (Local::now() - dt_local).num_milliseconds(); - st.record_clock_delta(delta_ms); - } else { - st.clear_offsets(); - st.clear_clock_deltas(); } } } @@ -103,7 +76,7 @@ pub fn start_ui( st.average_frames(), st.timecode_match().to_string(), st.lock_ratio(), - st.average_clock_delta(), + st.get_ewma_clock_delta(), ) };