#[cfg(feature = "std")]
use derive_more::Display;
use enum_dispatch::enum_dispatch;
use crate::{
base::{Float, Observer, Pose, SensorOutput, Source, Transform},
sensors::hall_effect::{HallLatch, HallSwitch, LinearHallSensor},
};
#[derive(Clone, Debug, PartialEq, Eq)]
#[cfg_attr(feature = "std", derive(Display))]
#[enum_dispatch(Observer<T>, Transform<T>)]
pub enum Sensor<T: Float = f64> {
LinearHall(LinearHallSensor<T>),
HallSwitch(HallSwitch<T>),
HallLatch(HallLatch<T>),
}
#[cfg(all(test, feature = "std"))]
mod tests {
use super::*;
#[test]
fn test_display() {
let sensor: Sensor = LinearHallSensor::default().into();
assert_eq!(
format!("{}", sensor),
"LinearHallSensor (sensitive_axis=[0.0, 0.0, 1.0], sensitivity=1.0, supply_voltage=5.0) at pos=[0.0, 0.0, 0.0], rot=[0.0, 0.0, 0.0]"
);
}
}