rdif_systick/
lib.rs

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);