diff --git a/daemon/src/server.rs b/daemon/src/server.rs index 50f028e..6d454da 100644 --- a/daemon/src/server.rs +++ b/daemon/src/server.rs @@ -191,10 +191,15 @@ pub struct SetTimeOffsetRequest { } pub async fn get_time() -> Json { + let system_time = Local::now(); + let adjusted_time = rayhunter::clock::get_adjusted_now(); + let offset_seconds = adjusted_time + .signed_duration_since(system_time) + .num_seconds(); Json(TimeResponse { - system_time: Local::now(), - adjusted_time: rayhunter::clock::get_adjusted_now(), - offset_seconds: rayhunter::clock::get_offset().num_seconds(), + system_time, + adjusted_time, + offset_seconds, }) } diff --git a/lib/src/clock.rs b/lib/src/clock.rs index 723b92a..b905d9d 100644 --- a/lib/src/clock.rs +++ b/lib/src/clock.rs @@ -10,7 +10,7 @@ use std::sync::RwLock; static CLOCK_OFFSET: RwLock = RwLock::new(TimeDelta::zero()); /// Get the current clock offset. -pub fn get_offset() -> TimeDelta { +fn get_offset() -> TimeDelta { *CLOCK_OFFSET.read().unwrap() } diff --git a/lib/src/diag.rs b/lib/src/diag.rs index eb8d396..fcdb33b 100644 --- a/lib/src/diag.rs +++ b/lib/src/diag.rs @@ -360,8 +360,7 @@ impl Timestamp { let mut delta_seconds = ts_upper as f64 * 1.25; delta_seconds += ts_lower as f64 / 40960.0; let ts_delta = chrono::Duration::milliseconds(delta_seconds as i64); - // Apply global clock offset to adjust for incorrect device time - epoch + ts_delta + crate::clock::get_offset() + epoch + ts_delta } }