1#![no_std]
2
3extern crate alloc;
4
5use alloc::boxed::Box;
6
7use rdif_base::def_driver;
8pub use rdif_base::{DriverGeneric, KError, irq::*};
9
10pub trait Interface: DriverGeneric {
11 fn cpu_local(&mut self) -> local::Boxed;
12}
13
14pub mod local {
15 use super::*;
16
17 pub type Boxed = Box<dyn Interface>;
18
19 pub trait Interface: Send + Sync {
20 fn set_timeval(&self, ticks: usize);
21 fn current_ticks(&self) -> usize;
22 fn tick_hz(&self) -> usize;
23 fn set_irq_enable(&self, enable: bool);
24 fn get_irq_status(&self) -> bool;
25 fn irq(&self) -> IrqConfig;
26 }
27}
28
29def_driver!(Systick, Interface);