diff --git a/simulator/src/integrated/simulation_engine/actions.rs b/simulator/src/integrated/simulation_engine/actions.rs index 2cfaa5eb2..af40bd06c 100644 --- a/simulator/src/integrated/simulation_engine/actions.rs +++ b/simulator/src/integrated/simulation_engine/actions.rs @@ -3,6 +3,7 @@ use crate::integrated::simulation_elements::{ run_messages::{SendAlarm, SendRunLogData, SendRunStart, SendRunStop, SendSampleEnvLog}, utils::NumConstant, }; +use chrono::{DateTime, Utc}; use serde::Deserialize; #[derive(Clone, Copy, Debug, Deserialize)] @@ -60,6 +61,7 @@ pub(crate) struct Loop { #[serde(rename_all = "kebab-case")] pub(crate) enum Timestamp { Now, + To(DateTime), AdvanceByMs(usize), RewindByMs(usize), } diff --git a/simulator/src/integrated/simulation_engine/engine.rs b/simulator/src/integrated/simulation_engine/engine.rs index f10640a3d..fa38f0d2b 100644 --- a/simulator/src/integrated/simulation_engine/engine.rs +++ b/simulator/src/integrated/simulation_engine/engine.rs @@ -120,6 +120,7 @@ fn set_timestamp( ) -> Result<(), SimulationEngineError> { match timestamp { Timestamp::Now => engine.state.metadata.timestamp = Utc::now(), + Timestamp::To(ts) => engine.state.metadata.timestamp = *ts, Timestamp::AdvanceByMs(ms) => { engine.state.metadata.timestamp = engine .state