use nv_core::MonotonicTs;
#[derive(Clone, Debug, PartialEq)]
pub struct PtzTelemetry {
pub pan: f32,
pub tilt: f32,
pub zoom: f32,
pub ts: MonotonicTs,
}
#[derive(Clone, Debug, PartialEq)]
pub enum PtzEvent {
MoveStart {
ts: MonotonicTs,
},
MoveStop {
ts: MonotonicTs,
},
PresetRecall {
preset_id: u32,
ts: MonotonicTs,
},
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn ptz_telemetry_clone_eq() {
let t = PtzTelemetry {
pan: 45.0,
tilt: -10.0,
zoom: 0.5,
ts: MonotonicTs::from_nanos(1_000_000),
};
let t2 = t.clone();
assert_eq!(t, t2);
}
#[test]
fn ptz_event_variants() {
let ts = MonotonicTs::from_nanos(100);
let start = PtzEvent::MoveStart { ts };
let stop = PtzEvent::MoveStop { ts };
let preset = PtzEvent::PresetRecall { preset_id: 3, ts };
assert_ne!(start, stop);
assert_ne!(stop, preset.clone());
assert_eq!(preset.clone(), preset);
}
}