use super::*;
use core::marker::PhantomData;
use embedded_hal::delay::DelayNs;
use fugit::ExtU32;
pub struct TickDelay<T> {
frequency: u32,
_t: PhantomData<T>,
}
impl<T> TickDelay<T>
where
T: TickInstant,
{
pub fn new(frequency: u32) -> Self {
Self {
frequency,
_t: PhantomData,
}
}
}
impl<T> DelayNs for TickDelay<T>
where
T: TickInstant,
{
#[inline]
fn delay_ns(&mut self, ns: u32) {
let w = TickWaiter::<T, _, _>::ns(ns.nanos(), NonInterval::new(), self.frequency);
let mut t = w.start();
while !t.timeout() {}
}
}