use crate::sensor::SensorSpec;
#[derive(Debug, Clone)]
pub struct Tick {
pub index: u64,
pub timestamp: f64,
pub data: Vec<(String, f64)>,
}
impl Tick {
pub fn from_sensors(index: u64, timestamp: f64, sensors: &[SensorSpec]) -> Self {
let data: Vec<(String, f64)> = sensors
.iter()
.map(|s| {
let val = (s.callback)();
(s.name.clone(), val)
})
.collect();
Tick {
index,
timestamp,
data,
}
}
pub fn get(&self, sensor_name: &str) -> Option<f64> {
self.data
.iter()
.find(|(name, _)| name == sensor_name)
.map(|(_, v)| *v)
}
}