backon/
embassy_timer_sleep.rs

1use core::time::Duration;
2
3use crate::BlockingSleeper;
4use crate::Sleeper;
5
6/// A no_std async sleeper based on the embassy framework (https://embassy.dev)
7#[derive(Clone, Copy, Debug, Default)]
8pub struct EmbassySleeper;
9
10impl Sleeper for EmbassySleeper {
11    type Sleep = embassy_time::Timer;
12
13    fn sleep(&self, dur: Duration) -> Self::Sleep {
14        embassy_time::Timer::after_millis(dur.as_millis() as u64)
15    }
16}
17
18impl BlockingSleeper for EmbassySleeper {
19    fn sleep(&self, dur: Duration) {
20        embassy_time::block_for(embassy_time::Duration::from_millis(dur.as_millis() as u64));
21    }
22}