From 776f34cff176a9a2247dc491010cee43b862a81e Mon Sep 17 00:00:00 2001 From: Jesse Braham Date: Thu, 18 Jul 2024 09:31:03 +0000 Subject: [PATCH] Re-export the `esp_hal_procmacros::main` macro from `esp-hal-embassy` instead of `esp-hal` (#1828) * Re-export the `main` procmacro from `esp-hal-embassy` rather than `esp-hal` * Fix documentation warnings * Flatten the `time_driver` module * clippy * Update `CHANGELOG.md` --- esp-hal-embassy/CHANGELOG.md | 2 ++ esp-hal-embassy/Cargo.toml | 1 + esp-hal-embassy/src/executor/interrupt.rs | 8 +++++--- esp-hal-embassy/src/lib.rs | 1 + .../src/{time_driver/mod.rs => time_driver.rs} | 0 esp-hal-procmacros/src/embassy.rs | 2 +- esp-hal/CHANGELOG.md | 2 ++ esp-hal/Cargo.toml | 2 +- examples/src/bin/embassy_hello_world.rs | 3 +-- examples/src/bin/embassy_i2c.rs | 2 +- examples/src/bin/embassy_i2c_bmp180_calibration_data.rs | 2 +- examples/src/bin/embassy_i2s_read.rs | 2 +- examples/src/bin/embassy_i2s_sound.rs | 2 +- examples/src/bin/embassy_multicore.rs | 2 +- examples/src/bin/embassy_multiprio.rs | 5 ++--- examples/src/bin/embassy_parl_io_rx.rs | 2 +- examples/src/bin/embassy_parl_io_tx.rs | 2 +- examples/src/bin/embassy_rmt_rx.rs | 2 +- examples/src/bin/embassy_rmt_tx.rs | 2 +- examples/src/bin/embassy_serial.rs | 3 +-- examples/src/bin/embassy_spi.rs | 2 +- examples/src/bin/embassy_twai.rs | 3 +-- examples/src/bin/embassy_usb_serial.rs | 2 +- examples/src/bin/embassy_usb_serial_jtag.rs | 3 +-- examples/src/bin/embassy_wait.rs | 3 +-- examples/src/bin/wifi_embassy_access_point.rs | 3 +-- examples/src/bin/wifi_embassy_access_point_with_sta.rs | 3 +-- examples/src/bin/wifi_embassy_bench.rs | 3 +-- examples/src/bin/wifi_embassy_ble.rs | 3 +-- examples/src/bin/wifi_embassy_dhcp.rs | 3 +-- examples/src/bin/wifi_embassy_esp_now.rs | 3 +-- examples/src/bin/wifi_embassy_esp_now_duplex.rs | 3 +-- 32 files changed, 38 insertions(+), 43 deletions(-) rename esp-hal-embassy/src/{time_driver/mod.rs => time_driver.rs} (100%) diff --git a/esp-hal-embassy/CHANGELOG.md b/esp-hal-embassy/CHANGELOG.md index 018b33cec..2726d794f 100644 --- a/esp-hal-embassy/CHANGELOG.md +++ b/esp-hal-embassy/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added +- This package now re-exports the `esp_hal_procmacros::main` macro (#1828) + ### Changed ### Fixed diff --git a/esp-hal-embassy/Cargo.toml b/esp-hal-embassy/Cargo.toml index 6e1283ad1..aed8bc5e6 100644 --- a/esp-hal-embassy/Cargo.toml +++ b/esp-hal-embassy/Cargo.toml @@ -19,6 +19,7 @@ embassy-executor = { version = "0.5.0", optional = true } embassy-time-driver = { version = "0.1.0", features = [ "tick-hz-1_000_000" ] } esp-hal = { version = "0.19.0", path = "../esp-hal" } log = { version = "0.4.22", optional = true } +macros = { version = "0.12.0", features = ["embassy"], package = "esp-hal-procmacros", path = "../esp-hal-procmacros" } portable-atomic = "1.6.0" [build-dependencies] diff --git a/esp-hal-embassy/src/executor/interrupt.rs b/esp-hal-embassy/src/executor/interrupt.rs index b9859a2d5..89369a81c 100644 --- a/esp-hal-embassy/src/executor/interrupt.rs +++ b/esp-hal-embassy/src/executor/interrupt.rs @@ -97,12 +97,14 @@ impl InterruptExecutor { /// The executor keeps running in the background through the interrupt. /// /// This returns a [`SendSpawner`] you can use to spawn tasks on it. A - /// [`SendSpawner`] is returned instead of a [`Spawner`] because the + /// [`SendSpawner`] is returned instead of a + /// [`Spawner`](embassy_executor::Spawner) because the /// executor effectively runs in a different "thread" (the interrupt), /// so spawning tasks on it is effectively sending them. /// - /// To obtain a [`Spawner`] for this executor, use - /// [`Spawner::for_current_executor()`] from a task running in it. + /// To obtain a [`Spawner`](embassy_executor::Spawner) for this executor, + /// use [`Spawner::for_current_executor`](embassy_executor::Spawner::for_current_executor) + /// from a task running in it. pub fn start(&'static mut self, priority: interrupt::Priority) -> SendSpawner { if self .core diff --git a/esp-hal-embassy/src/lib.rs b/esp-hal-embassy/src/lib.rs index 3848534c8..93b6a1114 100644 --- a/esp-hal-embassy/src/lib.rs +++ b/esp-hal-embassy/src/lib.rs @@ -37,6 +37,7 @@ mod fmt; use esp_hal::clock::Clocks; +pub use macros::main; #[cfg(feature = "executors")] pub use self::executor::{Executor, InterruptExecutor}; diff --git a/esp-hal-embassy/src/time_driver/mod.rs b/esp-hal-embassy/src/time_driver.rs similarity index 100% rename from esp-hal-embassy/src/time_driver/mod.rs rename to esp-hal-embassy/src/time_driver.rs diff --git a/esp-hal-procmacros/src/embassy.rs b/esp-hal-procmacros/src/embassy.rs index 34c9dcc53..fdd44ff86 100644 --- a/esp-hal-procmacros/src/embassy.rs +++ b/esp-hal-procmacros/src/embassy.rs @@ -157,7 +157,7 @@ pub(crate) mod main { pub fn main() -> TokenStream { quote! { - #[entry] + #[esp_hal::entry] fn main() -> ! { let mut executor = ::esp_hal_embassy::Executor::new(); let executor = unsafe { __make_static(&mut executor) }; diff --git a/esp-hal/CHANGELOG.md b/esp-hal/CHANGELOG.md index 3d5ff4f77..a290b6147 100644 --- a/esp-hal/CHANGELOG.md +++ b/esp-hal/CHANGELOG.md @@ -15,6 +15,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Removed +- This package no longer re-exports the `esp_hal_procmacros::main` macro (#1828) + ## [0.19.0] - 2024-07-15 ### Added diff --git a/esp-hal/Cargo.toml b/esp-hal/Cargo.toml index 798ab828e..31774d215 100644 --- a/esp-hal/Cargo.toml +++ b/esp-hal/Cargo.toml @@ -42,7 +42,7 @@ log = { version = "0.4.22", optional = true } nb = "1.1.0" paste = "1.0.15" portable-atomic = { version = "1.6.0", default-features = false } -procmacros = { version = "0.12.0", features = ["embassy", "enum-dispatch", "interrupt", "ram"], package = "esp-hal-procmacros", path = "../esp-hal-procmacros" } +procmacros = { version = "0.12.0", features = ["enum-dispatch", "interrupt", "ram"], package = "esp-hal-procmacros", path = "../esp-hal-procmacros" } riscv = { version = "0.11.1", optional = true } strum = { version = "0.26.3", default-features = false, features = ["derive"] } void = { version = "1.0.2", default-features = false } diff --git a/examples/src/bin/embassy_hello_world.rs b/examples/src/bin/embassy_hello_world.rs index 953b2f64b..418a714ad 100644 --- a/examples/src/bin/embassy_hello_world.rs +++ b/examples/src/bin/embassy_hello_world.rs @@ -15,7 +15,6 @@ use esp_backtrace as _; use esp_hal::{ clock::ClockControl, peripherals::Peripherals, - prelude::*, system::SystemControl, timer::{timg::TimerGroup, ErasedTimer, OneShotTimer}, }; @@ -38,7 +37,7 @@ async fn run() { } } -#[main] +#[esp_hal_embassy::main] async fn main(spawner: Spawner) { esp_println::logger::init_logger_from_env(); diff --git a/examples/src/bin/embassy_i2c.rs b/examples/src/bin/embassy_i2c.rs index 89e34ce10..57d32a9ed 100644 --- a/examples/src/bin/embassy_i2c.rs +++ b/examples/src/bin/embassy_i2c.rs @@ -40,7 +40,7 @@ macro_rules! mk_static { }}; } -#[main] +#[esp_hal_embassy::main] async fn main(_spawner: Spawner) { let peripherals = Peripherals::take(); let system = SystemControl::new(peripherals.SYSTEM); diff --git a/examples/src/bin/embassy_i2c_bmp180_calibration_data.rs b/examples/src/bin/embassy_i2c_bmp180_calibration_data.rs index 683cefd57..74df6a140 100644 --- a/examples/src/bin/embassy_i2c_bmp180_calibration_data.rs +++ b/examples/src/bin/embassy_i2c_bmp180_calibration_data.rs @@ -40,7 +40,7 @@ macro_rules! mk_static { }}; } -#[main] +#[esp_hal_embassy::main] async fn main(_spawner: Spawner) { let peripherals = Peripherals::take(); let system = SystemControl::new(peripherals.SYSTEM); diff --git a/examples/src/bin/embassy_i2s_read.rs b/examples/src/bin/embassy_i2s_read.rs index 2d486f450..404cdac3e 100644 --- a/examples/src/bin/embassy_i2s_read.rs +++ b/examples/src/bin/embassy_i2s_read.rs @@ -42,7 +42,7 @@ macro_rules! mk_static { }}; } -#[main] +#[esp_hal_embassy::main] async fn main(_spawner: Spawner) { println!("Init!"); let peripherals = Peripherals::take(); diff --git a/examples/src/bin/embassy_i2s_sound.rs b/examples/src/bin/embassy_i2s_sound.rs index cd523eb83..8589456a4 100644 --- a/examples/src/bin/embassy_i2s_sound.rs +++ b/examples/src/bin/embassy_i2s_sound.rs @@ -64,7 +64,7 @@ macro_rules! mk_static { }}; } -#[main] +#[esp_hal_embassy::main] async fn main(_spawner: Spawner) { println!("Init!"); let peripherals = Peripherals::take(); diff --git a/examples/src/bin/embassy_multicore.rs b/examples/src/bin/embassy_multicore.rs index 2d93ecb33..8d7d201d6 100644 --- a/examples/src/bin/embassy_multicore.rs +++ b/examples/src/bin/embassy_multicore.rs @@ -63,7 +63,7 @@ async fn control_led( } } -#[main] +#[esp_hal_embassy::main] async fn main(_spawner: Spawner) { let peripherals = Peripherals::take(); let system = SystemControl::new(peripherals.SYSTEM); diff --git a/examples/src/bin/embassy_multiprio.rs b/examples/src/bin/embassy_multiprio.rs index 63121a7fc..8094e8e7d 100644 --- a/examples/src/bin/embassy_multiprio.rs +++ b/examples/src/bin/embassy_multiprio.rs @@ -11,7 +11,7 @@ //! demonstrates that this task will continue to run even while the low //! priority blocking task is running. -// The thread-executor is created by the `#[main]` macro and is used to spawn `low_prio_async` and `low_prio_blocking`. +// The thread-executor is created by the `#[esp_hal_embassy::main]` macro and is used to spawn `low_prio_async` and `low_prio_blocking`. // The interrupt-executor is created in `main` and is used to spawn `high_prio`. //% CHIPS: esp32 esp32c2 esp32c3 esp32c6 esp32h2 esp32s2 esp32s3 @@ -27,7 +27,6 @@ use esp_hal::{ clock::ClockControl, interrupt::Priority, peripherals::Peripherals, - prelude::*, system::SystemControl, timer::{/*systimer::SystemTimer,*/ timg::TimerGroup, ErasedTimer, OneShotTimer}, }; @@ -80,7 +79,7 @@ async fn low_prio_async() { } } -#[main] +#[esp_hal_embassy::main] async fn main(low_prio_spawner: Spawner) { esp_println::logger::init_logger_from_env(); println!("Init!"); diff --git a/examples/src/bin/embassy_parl_io_rx.rs b/examples/src/bin/embassy_parl_io_rx.rs index e1cf73a1e..998338a08 100644 --- a/examples/src/bin/embassy_parl_io_rx.rs +++ b/examples/src/bin/embassy_parl_io_rx.rs @@ -36,7 +36,7 @@ macro_rules! mk_static { }}; } -#[main] +#[esp_hal_embassy::main] async fn main(_spawner: Spawner) { esp_println::println!("Init!"); let peripherals = Peripherals::take(); diff --git a/examples/src/bin/embassy_parl_io_tx.rs b/examples/src/bin/embassy_parl_io_tx.rs index ff989fed3..e0e4b211c 100644 --- a/examples/src/bin/embassy_parl_io_tx.rs +++ b/examples/src/bin/embassy_parl_io_tx.rs @@ -47,7 +47,7 @@ macro_rules! mk_static { }}; } -#[main] +#[esp_hal_embassy::main] async fn main(_spawner: Spawner) { esp_println::println!("Init!"); let peripherals = Peripherals::take(); diff --git a/examples/src/bin/embassy_rmt_rx.rs b/examples/src/bin/embassy_rmt_rx.rs index d553294d9..f82c4319c 100644 --- a/examples/src/bin/embassy_rmt_rx.rs +++ b/examples/src/bin/embassy_rmt_rx.rs @@ -49,7 +49,7 @@ async fn signal_task(mut pin: Output<'static, Gpio5>) { } } -#[main] +#[esp_hal_embassy::main] async fn main(spawner: Spawner) { println!("Init!"); let peripherals = Peripherals::take(); diff --git a/examples/src/bin/embassy_rmt_tx.rs b/examples/src/bin/embassy_rmt_tx.rs index 34e94a686..c2aa779b1 100644 --- a/examples/src/bin/embassy_rmt_tx.rs +++ b/examples/src/bin/embassy_rmt_tx.rs @@ -35,7 +35,7 @@ macro_rules! mk_static { }}; } -#[main] +#[esp_hal_embassy::main] async fn main(_spawner: Spawner) { println!("Init!"); let peripherals = Peripherals::take(); diff --git a/examples/src/bin/embassy_serial.rs b/examples/src/bin/embassy_serial.rs index 0e7448e94..a81090b02 100644 --- a/examples/src/bin/embassy_serial.rs +++ b/examples/src/bin/embassy_serial.rs @@ -16,7 +16,6 @@ use esp_hal::{ clock::ClockControl, gpio::Io, peripherals::{Peripherals, UART0}, - prelude::*, system::SystemControl, timer::{timg::TimerGroup, ErasedTimer, OneShotTimer}, uart::{ @@ -88,7 +87,7 @@ async fn reader( } } -#[main] +#[esp_hal_embassy::main] async fn main(spawner: Spawner) { esp_println::println!("Init!"); let peripherals = Peripherals::take(); diff --git a/examples/src/bin/embassy_spi.rs b/examples/src/bin/embassy_spi.rs index 8b95b4374..5238ae085 100644 --- a/examples/src/bin/embassy_spi.rs +++ b/examples/src/bin/embassy_spi.rs @@ -46,7 +46,7 @@ macro_rules! mk_static { }}; } -#[main] +#[esp_hal_embassy::main] async fn main(_spawner: Spawner) { esp_println::println!("Init!"); let peripherals = Peripherals::take(); diff --git a/examples/src/bin/embassy_twai.rs b/examples/src/bin/embassy_twai.rs index 7df8aab9c..eb192d1c5 100644 --- a/examples/src/bin/embassy_twai.rs +++ b/examples/src/bin/embassy_twai.rs @@ -29,7 +29,6 @@ use esp_hal::{ gpio::Io, interrupt, peripherals::{self, Peripherals, TWAI0}, - prelude::*, system::SystemControl, timer::{timg::TimerGroup, ErasedTimer, OneShotTimer}, twai::{self, EspTwaiFrame, TwaiRx, TwaiTx}, @@ -93,7 +92,7 @@ async fn transmitter( } } -#[main] +#[esp_hal_embassy::main] async fn main(spawner: Spawner) { let peripherals = Peripherals::take(); let system = SystemControl::new(peripherals.SYSTEM); diff --git a/examples/src/bin/embassy_usb_serial.rs b/examples/src/bin/embassy_usb_serial.rs index 34e861442..4cc49cd59 100644 --- a/examples/src/bin/embassy_usb_serial.rs +++ b/examples/src/bin/embassy_usb_serial.rs @@ -43,7 +43,7 @@ macro_rules! mk_static { }}; } -#[main] +#[esp_hal_embassy::main] async fn main(_spawner: Spawner) -> () { esp_println::println!("Init!"); let peripherals = Peripherals::take(); diff --git a/examples/src/bin/embassy_usb_serial_jtag.rs b/examples/src/bin/embassy_usb_serial_jtag.rs index b7d072ae7..c983743b4 100644 --- a/examples/src/bin/embassy_usb_serial_jtag.rs +++ b/examples/src/bin/embassy_usb_serial_jtag.rs @@ -14,7 +14,6 @@ use esp_backtrace as _; use esp_hal::{ clock::ClockControl, peripherals::Peripherals, - prelude::*, system::SystemControl, timer::{timg::TimerGroup, ErasedTimer, OneShotTimer}, usb_serial_jtag::{UsbSerialJtag, UsbSerialJtagRx, UsbSerialJtagTx}, @@ -73,7 +72,7 @@ async fn reader( } } -#[main] +#[esp_hal_embassy::main] async fn main(spawner: Spawner) -> () { esp_println::println!("Init!"); let peripherals = Peripherals::take(); diff --git a/examples/src/bin/embassy_wait.rs b/examples/src/bin/embassy_wait.rs index 6832d1ec8..5e123d9b6 100644 --- a/examples/src/bin/embassy_wait.rs +++ b/examples/src/bin/embassy_wait.rs @@ -15,7 +15,6 @@ use esp_hal::{ clock::ClockControl, gpio::{Input, Io, Pull}, peripherals::Peripherals, - prelude::*, system::SystemControl, timer::{timg::TimerGroup, ErasedTimer, OneShotTimer}, }; @@ -30,7 +29,7 @@ macro_rules! mk_static { }}; } -#[main] +#[esp_hal_embassy::main] async fn main(_spawner: Spawner) { esp_println::println!("Init!"); let peripherals = Peripherals::take(); diff --git a/examples/src/bin/wifi_embassy_access_point.rs b/examples/src/bin/wifi_embassy_access_point.rs index 228066928..333b923db 100644 --- a/examples/src/bin/wifi_embassy_access_point.rs +++ b/examples/src/bin/wifi_embassy_access_point.rs @@ -30,7 +30,6 @@ use esp_backtrace as _; use esp_hal::{ clock::ClockControl, peripherals::Peripherals, - prelude::*, rng::Rng, system::SystemControl, timer::{ErasedTimer, OneShotTimer, PeriodicTimer}, @@ -60,7 +59,7 @@ macro_rules! mk_static { }}; } -#[main] +#[esp_hal_embassy::main] async fn main(spawner: Spawner) -> ! { esp_println::logger::init_logger_from_env(); diff --git a/examples/src/bin/wifi_embassy_access_point_with_sta.rs b/examples/src/bin/wifi_embassy_access_point_with_sta.rs index fe06a9243..6946f17df 100644 --- a/examples/src/bin/wifi_embassy_access_point_with_sta.rs +++ b/examples/src/bin/wifi_embassy_access_point_with_sta.rs @@ -33,7 +33,6 @@ use esp_backtrace as _; use esp_hal::{ clock::ClockControl, peripherals::Peripherals, - prelude::*, rng::Rng, system::SystemControl, timer::{ErasedTimer, OneShotTimer, PeriodicTimer}, @@ -68,7 +67,7 @@ macro_rules! mk_static { }}; } -#[main] +#[esp_hal_embassy::main] async fn main(spawner: Spawner) -> ! { esp_println::logger::init_logger_from_env(); diff --git a/examples/src/bin/wifi_embassy_bench.rs b/examples/src/bin/wifi_embassy_bench.rs index 75ef2ef6e..596167d9b 100644 --- a/examples/src/bin/wifi_embassy_bench.rs +++ b/examples/src/bin/wifi_embassy_bench.rs @@ -24,7 +24,6 @@ use esp_backtrace as _; use esp_hal::{ clock::ClockControl, peripherals::Peripherals, - prelude::*, rng::Rng, system::SystemControl, timer::{ErasedTimer, OneShotTimer, PeriodicTimer}, @@ -70,7 +69,7 @@ const UPLOAD_DOWNLOAD_PORT: u16 = 4323; static mut RX_BUFFER: [u8; RX_BUFFER_SIZE] = [0; RX_BUFFER_SIZE]; static mut TX_BUFFER: [u8; TX_BUFFER_SIZE] = [0; TX_BUFFER_SIZE]; -#[main] +#[esp_hal_embassy::main] async fn main(spawner: Spawner) -> ! { esp_println::logger::init_logger_from_env(); diff --git a/examples/src/bin/wifi_embassy_ble.rs b/examples/src/bin/wifi_embassy_ble.rs index 11ae185e5..03962e565 100644 --- a/examples/src/bin/wifi_embassy_ble.rs +++ b/examples/src/bin/wifi_embassy_ble.rs @@ -30,7 +30,6 @@ use esp_hal::{ clock::ClockControl, gpio::{Input, Io, Pull}, peripherals::*, - prelude::*, rng::Rng, system::SystemControl, timer::{ErasedTimer, OneShotTimer, PeriodicTimer}, @@ -48,7 +47,7 @@ macro_rules! mk_static { }}; } -#[main] +#[esp_hal_embassy::main] async fn main(_spawner: Spawner) -> ! { esp_println::logger::init_logger_from_env(); diff --git a/examples/src/bin/wifi_embassy_dhcp.rs b/examples/src/bin/wifi_embassy_dhcp.rs index 7598eb2ea..44f7b959a 100644 --- a/examples/src/bin/wifi_embassy_dhcp.rs +++ b/examples/src/bin/wifi_embassy_dhcp.rs @@ -20,7 +20,6 @@ use esp_backtrace as _; use esp_hal::{ clock::ClockControl, peripherals::Peripherals, - prelude::*, rng::Rng, system::SystemControl, timer::{ErasedTimer, OneShotTimer, PeriodicTimer}, @@ -53,7 +52,7 @@ macro_rules! mk_static { const SSID: &str = env!("SSID"); const PASSWORD: &str = env!("PASSWORD"); -#[main] +#[esp_hal_embassy::main] async fn main(spawner: Spawner) -> ! { esp_println::logger::init_logger_from_env(); diff --git a/examples/src/bin/wifi_embassy_esp_now.rs b/examples/src/bin/wifi_embassy_esp_now.rs index 64d139665..c78c142e7 100644 --- a/examples/src/bin/wifi_embassy_esp_now.rs +++ b/examples/src/bin/wifi_embassy_esp_now.rs @@ -17,7 +17,6 @@ use esp_backtrace as _; use esp_hal::{ clock::ClockControl, peripherals::Peripherals, - prelude::*, rng::Rng, system::SystemControl, timer::{ErasedTimer, OneShotTimer, PeriodicTimer}, @@ -39,7 +38,7 @@ macro_rules! mk_static { }}; } -#[main] +#[esp_hal_embassy::main] async fn main(_spawner: Spawner) -> ! { esp_println::logger::init_logger_from_env(); diff --git a/examples/src/bin/wifi_embassy_esp_now_duplex.rs b/examples/src/bin/wifi_embassy_esp_now_duplex.rs index c48ccbe78..8f5b5c453 100644 --- a/examples/src/bin/wifi_embassy_esp_now_duplex.rs +++ b/examples/src/bin/wifi_embassy_esp_now_duplex.rs @@ -17,7 +17,6 @@ use esp_backtrace as _; use esp_hal::{ clock::ClockControl, peripherals::Peripherals, - prelude::*, rng::Rng, system::SystemControl, timer::{ErasedTimer, OneShotTimer, PeriodicTimer}, @@ -39,7 +38,7 @@ macro_rules! mk_static { }}; } -#[main] +#[esp_hal_embassy::main] async fn main(spawner: Spawner) -> ! { esp_println::logger::init_logger_from_env();