#![no_std]
use embedded_time::clock::Error;
use embedded_time::duration::Fraction;
use embedded_time::{Clock, Instant};
#[derive(Copy, Clone, Debug)]
pub struct EmbassyClock {
start: embassy_time::Instant,
}
impl Default for EmbassyClock {
fn default() -> Self {
EmbassyClock {
start: embassy_time::Instant::now(),
}
}
}
impl Clock for EmbassyClock {
type T = u64;
const SCALING_FACTOR: Fraction = Fraction::new(1, 1_000_000);
fn try_now(&self) -> Result<Instant<Self>, Error> {
let now = embassy_time::Instant::now();
let elapsed = now.duration_since(self.start);
Ok(Instant::new(elapsed.as_micros()))
}
}