1#![no_std]
4#![cfg_attr(nightly, feature(doc_cfg))]
5#![deny(missing_docs)]
6
7pub mod gpio;
8
9#[doc(hidden)]
10pub mod peripheral {
11 pub use embassy_rp::Peri;
12}
13#[cfg(context = "rp235xa")]
14mod picotool;
15
16#[cfg(feature = "wifi")]
17mod wifi;
18
19#[cfg(feature = "ble")]
20#[doc(hidden)]
21pub mod ble;
22
23#[cfg(any(feature = "ble-cyw43", feature = "wifi-cyw43"))]
24#[doc(hidden)]
25pub mod cyw43;
26
27#[cfg(feature = "hwrng")]
28#[doc(hidden)]
29pub mod hwrng;
30
31#[cfg(feature = "i2c")]
32pub mod i2c;
33
34#[doc(hidden)]
35pub mod identity {
36 use ariel_os_embassy_common::identity;
37
38 pub type DeviceId = identity::NoDeviceId<identity::NotImplemented>;
39}
40
41#[cfg(feature = "spi")]
42pub mod spi;
43
44#[cfg(feature = "uart")]
45pub mod uart;
46
47#[cfg(feature = "storage")]
48#[doc(hidden)]
49pub mod storage;
50
51#[cfg(feature = "usb")]
52#[doc(hidden)]
53pub mod usb;
54
55#[doc(hidden)]
56pub use embassy_rp::OptionalPeripherals;
57
58pub use embassy_rp::peripherals;
59
60#[cfg(feature = "executor-interrupt")]
61#[doc(hidden)]
62pub use embassy_executor::InterruptExecutor as Executor;
63#[cfg(feature = "executor-interrupt")]
64#[doc(hidden)]
65pub use embassy_rp::interrupt;
66
67use embassy_rp::{Peri, PeripheralType};
68
69#[cfg(feature = "executor-interrupt")]
70ariel_os_embassy_common::executor_swi!(SWI_IRQ_1);
71
72#[cfg(feature = "executor-interrupt")]
73#[doc(hidden)]
74pub static EXECUTOR: Executor = Executor::new();
75
76#[doc(hidden)]
77pub trait IntoPeripheral<'a, T: PeripheralType> {
78 fn into_hal_peripheral(self) -> Peri<'a, T>;
79}
80
81#[doc(hidden)]
82impl<'a, T: PeripheralType> IntoPeripheral<'a, T> for Peri<'a, T> {
83 fn into_hal_peripheral(self) -> Peri<'a, T> {
84 self
85 }
86}
87
88#[doc(hidden)]
89#[must_use]
90pub fn init() -> OptionalPeripherals {
91 #[cfg(feature = "executor-interrupt")]
92 {
93 use embassy_rp::interrupt::{InterruptExt as _, Priority};
95 SWI.set_priority(Priority::P3);
96 }
97
98 let peripherals = embassy_rp::init(embassy_rp::config::Config::default());
99 OptionalPeripherals::from(peripherals)
100}