use crate::error::MotorError;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum Motor {
Motor1,
Motor2,
Motor3,
Motor4,
}
pub trait MotorDriver: Send + Sync {
fn set_motor_speed(&self, motor: Motor, speed: u16, forward: bool) -> Result<(), MotorError>;
fn stop_motor(&self, motor: Motor) -> Result<(), MotorError>;
fn stop_all(&self) -> Result<(), MotorError> {
self.stop_motor(Motor::Motor1)?;
self.stop_motor(Motor::Motor2)?;
self.stop_motor(Motor::Motor3)?;
self.stop_motor(Motor::Motor4)?;
Ok(())
}
}