extras: move peripherals from nrf to extras

This commit is contained in:
Dario Nieuwenhuis 2021-03-21 20:57:49 +01:00
parent ec7309962a
commit c0876187dd
3 changed files with 47 additions and 48 deletions

View File

@ -3,6 +3,7 @@
// This mod MUST go first, so that the others see its macros. // This mod MUST go first, so that the others see its macros.
pub(crate) mod fmt; pub(crate) mod fmt;
mod macros;
pub mod peripheral; pub mod peripheral;
pub mod ring_buffer; pub mod ring_buffer;
pub mod usb; pub mod usb;

View File

@ -0,0 +1,45 @@
#[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: () },
)*
}
}
}
};
}

View File

@ -1,51 +1,4 @@
use embassy::util::PeripheralBorrow; embassy_extras::peripherals! {
macro_rules! peripherals {
($($(#[$cfg:meta])? $name:ident: $type:ident),*$(,)?) => {
$(
$(#[$cfg])?
#[allow(non_camel_case_types)]
pub struct $type { _private: () }
$(#[$cfg])?
impl PeripheralBorrow for $type {
type Target = $type;
unsafe fn unborrow(self) -> $type {
self
}
}
$(#[$cfg])?
impl 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: () },
)*
}
}
}
};
}
peripherals! {
// RTC // RTC
rtc0: RTC0, rtc0: RTC0,
rtc1: RTC1, rtc1: RTC1,