use cortex_m::interrupt;
pub trait InterruptModer {
#[doc(hidden)]
fn critical_section<R, F: FnOnce(&interrupt::CriticalSection) -> R>(f: F) -> R;
}
pub struct InterruptFree;
impl InterruptModer for InterruptFree {
#[inline]
#[doc(hidden)]
fn critical_section<R, F: FnOnce(&interrupt::CriticalSection) -> R>(f: F) -> R {
interrupt::free(f)
}
}
pub struct InterruptOk;
impl InterruptModer for InterruptOk {
#[inline]
#[doc(hidden)]
fn critical_section<R, F: FnOnce(&interrupt::CriticalSection) -> R>(f: F) -> R {
f(&unsafe { interrupt::CriticalSection::new() })
}
}