mirror of
https://github.com/cjfranko/NTP-Timeturner.git
synced 2025-11-08 18:32:02 +00:00
fix: resolve build errors by adapting to clock delta refactor
Co-authored-by: aider (gemini/gemini-2.5-pro-preview-05-06) <aider@aider.chat>
This commit is contained in:
parent
cc782fcd7e
commit
80faf4db9a
3 changed files with 11 additions and 34 deletions
13
src/api.rs
13
src/api.rs
|
|
@ -220,11 +220,15 @@ mod tests {
|
||||||
let ltc_state = Arc::new(Mutex::new(get_test_ltc_state()));
|
let ltc_state = Arc::new(Mutex::new(get_test_ltc_state()));
|
||||||
let config = Arc::new(Mutex::new(Config {
|
let config = Arc::new(Mutex::new(Config {
|
||||||
hardware_offset_ms: 10,
|
hardware_offset_ms: 10,
|
||||||
timeturner_offset: TimeturnerOffset {
|
timeturner_offset: TimeturnerOffset::default(),
|
||||||
hours: 0, minutes: 0, seconds: 0, frames: 0
|
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]
|
#[actix_web::test]
|
||||||
|
|
@ -282,6 +286,7 @@ mod tests {
|
||||||
|
|
||||||
let new_config_json = serde_json::json!({
|
let new_config_json = serde_json::json!({
|
||||||
"hardwareOffsetMs": 55,
|
"hardwareOffsetMs": 55,
|
||||||
|
"defaultNudgeMs": 2,
|
||||||
"timeturnerOffset": { "hours": 1, "minutes": 2, "seconds": 3, "frames": 4 }
|
"timeturnerOffset": { "hours": 1, "minutes": 2, "seconds": 3, "frames": 4 }
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,6 @@ use crate::config::watch_config;
|
||||||
use crate::serial_input::start_serial_thread;
|
use crate::serial_input::start_serial_thread;
|
||||||
use crate::sync_logic::LtcState;
|
use crate::sync_logic::LtcState;
|
||||||
use crate::ui::start_ui;
|
use crate::ui::start_ui;
|
||||||
use chrono::TimeZone;
|
|
||||||
use clap::Parser;
|
use clap::Parser;
|
||||||
use daemonize::Daemonize;
|
use daemonize::Daemonize;
|
||||||
|
|
||||||
|
|
|
||||||
31
src/ui.rs
31
src/ui.rs
|
|
@ -54,7 +54,7 @@ pub fn start_ui(
|
||||||
.map(|ifa| ifa.ip().to_string())
|
.map(|ifa| ifa.ip().to_string())
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
// 3️⃣ jitter + Δ
|
// 3️⃣ jitter
|
||||||
{
|
{
|
||||||
let mut st = state.lock().unwrap();
|
let mut st = state.lock().unwrap();
|
||||||
if let Some(frame) = st.latest.clone() {
|
if let Some(frame) = st.latest.clone() {
|
||||||
|
|
@ -64,33 +64,6 @@ pub fn start_ui(
|
||||||
let raw = (now_utc - frame.timestamp).num_milliseconds();
|
let raw = (now_utc - frame.timestamp).num_milliseconds();
|
||||||
let measured = raw - hw_offset_ms;
|
let measured = raw - hw_offset_ms;
|
||||||
st.record_offset(measured);
|
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.average_frames(),
|
||||||
st.timecode_match().to_string(),
|
st.timecode_match().to_string(),
|
||||||
st.lock_ratio(),
|
st.lock_ratio(),
|
||||||
st.average_clock_delta(),
|
st.get_ewma_clock_delta(),
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue