const HIGH_INTENSITY: u8 = 100;
const LOW_INTENSITY: u8 = 0;
pub enum FtOutputCommand {
On(u8),
Off,
High,
Low,
}
pub trait FtOutput<E> {
fn turn_on(&mut self, intensity: u8) -> Result<(), E>;
fn turn_off(&mut self) -> Result<(), E>;
fn set_output(&mut self, cmd: FtOutputCommand) -> Result<(), E> {
match cmd {
FtOutputCommand::On(intensity) => self.turn_on(intensity),
FtOutputCommand::Off => self.turn_off(),
FtOutputCommand::High => self.turn_on(HIGH_INTENSITY),
FtOutputCommand::Low => self.turn_on(LOW_INTENSITY),
}
}
}