embassy/embassy-extras/src/macros.rs

46 lines
1.1 KiB
Rust
Raw Normal View History

#[macro_export]
macro_rules! peripherals {
($($(#[$cfg:meta])? $name:ident: $type:ident),*$(,)?) => {
$(
$(#[$cfg])?
#[allow(non_camel_case_types)]
pub struct $type { _private: () }
$(#[$cfg])?
impl embassy::util::PeripheralBorrow for $type {
type Target = $type;
unsafe fn unborrow(self) -> $type {
self
}
}
$(#[$cfg])?
impl embassy::util::PeripheralBorrow for &mut $type {
type Target = $type;
unsafe fn unborrow(self) -> $type {
::core::ptr::read(self)
}
}
)*
pub struct Peripherals {
$(
$(#[$cfg])?
pub $name: $type,
)*
}
impl Peripherals {
pub unsafe fn steal() -> Self {
Self {
$(
$(#[$cfg])?
$name: $type { _private: () },
)*
}
}
}
};
}