#![no_std]
#![doc = include_str!("../README.md")]
#![warn(missing_docs)]
use core::task::Waker;
pub trait TimerQueue {
fn schedule_wake(&'static self, at: u64, waker: &Waker);
}
extern "Rust" {
fn _embassy_time_schedule_wake(at: u64, waker: &Waker);
}
pub fn schedule_wake(at: u64, waker: &Waker) {
unsafe { _embassy_time_schedule_wake(at, waker) }
}
#[macro_export]
macro_rules! timer_queue_impl {
(static $name:ident: $t: ty = $val:expr) => {
static $name: $t = $val;
#[no_mangle]
fn _embassy_time_schedule_wake(at: u64, waker: &core::task::Waker) {
<$t as $crate::TimerQueue>::schedule_wake(&$name, at, waker);
}
};
}