#![no_std]
pub use fugit::*;
pub trait Timer<const TIMER_HZ: u64> {
type Error: core::fmt::Debug;
fn now(&mut self) -> TimerInstantU32<TIMER_HZ>;
fn start(&mut self, duration: TimerDurationU32<TIMER_HZ>) -> Result<(), Self::Error>;
fn cancel(&mut self) -> Result<(), Self::Error>;
fn wait(&mut self) -> nb::Result<(), Self::Error>;
}
pub trait Delay<const TIMER_HZ: u64> {
type Error: core::fmt::Debug;
fn delay(&mut self, duration: TimerDurationU32<TIMER_HZ>) -> Result<(), Self::Error>;
}