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::Peripheral;
12}
13
14#[cfg(context = "rp235xa")]
15mod picotool;
16
17#[cfg(feature = "wifi")]
18mod wifi;
19
20#[cfg(feature = "ble")]
21#[doc(hidden)]
22pub mod ble;
23
24#[cfg(any(feature = "ble-cyw43", feature = "wifi-cyw43"))]
25#[doc(hidden)]
26pub mod cyw43;
27
28#[cfg(feature = "hwrng")]
29#[doc(hidden)]
30pub mod hwrng;
31
32#[cfg(feature = "i2c")]
33pub mod i2c;
34
35#[doc(hidden)]
36pub mod identity {
37 use ariel_os_embassy_common::identity;
38
39 pub type DeviceId = identity::NoDeviceId<identity::NotImplemented>;
40}
41
42#[cfg(feature = "spi")]
43pub mod spi;
44
45#[cfg(feature = "uart")]
46pub mod uart;
47
48#[cfg(feature = "storage")]
49#[doc(hidden)]
50pub mod storage;
51
52#[cfg(feature = "usb")]
53#[doc(hidden)]
54pub mod usb;
55
56#[doc(hidden)]
57pub use embassy_rp::OptionalPeripherals;
58
59pub use embassy_rp::peripherals;
60
61#[cfg(feature = "executor-interrupt")]
62#[doc(hidden)]
63pub use embassy_executor::InterruptExecutor as Executor;
64#[cfg(feature = "executor-interrupt")]
65#[doc(hidden)]
66pub use embassy_rp::interrupt;
67
68#[cfg(feature = "executor-interrupt")]
69ariel_os_embassy_common::executor_swi!(SWI_IRQ_1);
70
71#[cfg(feature = "executor-interrupt")]
72#[doc(hidden)]
73pub static EXECUTOR: Executor = Executor::new();
74
75#[doc(hidden)]
76#[must_use]
77pub fn init() -> OptionalPeripherals {
78 #[cfg(feature = "executor-interrupt")]
79 {
80 use embassy_rp::interrupt::{InterruptExt as _, Priority};
82 SWI.set_priority(Priority::P3);
83 }
84
85 let peripherals = embassy_rp::init(embassy_rp::config::Config::default());
86 OptionalPeripherals::from(peripherals)
87}