diff --git a/esp-hal/CHANGELOG.md b/esp-hal/CHANGELOG.md index 6fefe8f4f..5a5b59b1d 100644 --- a/esp-hal/CHANGELOG.md +++ b/esp-hal/CHANGELOG.md @@ -25,6 +25,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Configuration structs in the I2C, SPI, and UART drivers now implement the Builder Lite pattern (#2614) - Added `I8080::apply_config`, `DPI::apply_config` and `Camera::apply_config` (#2610) - Introduced the `unstable` feature which will be used to restrict stable APIs to a subset of esp-hal. (#2628) +- HAL configuration structs now implement the Builder Lite pattern (#2645) ### Changed diff --git a/esp-hal/src/clock/mod.rs b/esp-hal/src/clock/mod.rs index e7bc554ff..39950ac41 100644 --- a/esp-hal/src/clock/mod.rs +++ b/esp-hal/src/clock/mod.rs @@ -38,26 +38,8 @@ //! ```rust, no_run #![doc = crate::before_snippet!()] //! // Initialize with the highest possible frequency for this chip -//! let peripherals = esp_hal::init({ -//! let mut config = esp_hal::Config::default(); -//! config.cpu_clock = CpuClock::max(); -//! config -//! }); -//! -//! // Initialize with custom clock frequency -//! // let peripherals = esp_hal::init({ -//! // let mut config = esp_hal::Config::default(); -#![cfg_attr( - not(any(esp32c2, esp32h2)), - doc = "// config.cpu_clock = CpuClock::Clock160MHz;" -)] -#![cfg_attr(esp32c2, doc = "// config.cpu_clock = CpuClock::Clock120MHz;")] -#![cfg_attr(esp32h2, doc = "// config.cpu_clock = CpuClock::Clock96MHz;")] -//! // config -//! // }); -//! // -//! // Initialize with default clock frequency for this chip -//! // let peripherals = esp_hal::init(esp_hal::Config::default()); +//! let config = esp_hal::Config::default().with_cpu_clock(CpuClock::max()); +//! let peripherals = esp_hal::init(config); //! # } //! ``` diff --git a/esp-hal/src/config.rs b/esp-hal/src/config.rs index be63d1aa2..1ab015732 100644 --- a/esp-hal/src/config.rs +++ b/esp-hal/src/config.rs @@ -22,10 +22,10 @@ //! ### Custom initialization //! ```rust, no_run #![doc = crate::before_snippet!()] -//! let mut config = esp_hal::Config::default(); -//! config.cpu_clock = CpuClock::max(); -//! config.watchdog.rwdt = -//! esp_hal::config::WatchdogStatus::Enabled(fugit::MicrosDurationU64::millis(1000 as u64)); +//! let config = +//! esp_hal::Config::default().with_cpu_clock(CpuClock::max()). +//! with_watchdog(esp_hal::config::WatchdogConfig::default(). +//! with_rwdt(esp_hal::config::WatchdogStatus::Enabled(fugit::MicrosDurationU64::millis(1000u64)))); //! let peripherals = esp_hal::init(config); //! # } //! ``` @@ -42,7 +42,7 @@ pub enum WatchdogStatus { /// Watchdog configuration. #[non_exhaustive] -#[derive(Default)] +#[derive(Default, procmacros::BuilderLite)] pub struct WatchdogConfig { #[cfg(not(any(esp32, esp32s2)))] /// Enable the super watchdog timer, which has a trigger time of slightly diff --git a/esp-hal/src/lib.rs b/esp-hal/src/lib.rs index 42f3ee3d2..59c8f7e5b 100644 --- a/esp-hal/src/lib.rs +++ b/esp-hal/src/lib.rs @@ -75,12 +75,8 @@ //! //! #[entry] //! fn main() -> ! { -//! let peripherals = esp_hal::init({ -//! let mut config = esp_hal::Config::default(); -//! // Configure the CPU to run at the maximum frequency. -//! config.cpu_clock = CpuClock::max(); -//! config -//! }); +//! let config = esp_hal::Config::default().with_cpu_clock(CpuClock::max()); +//! let peripherals = esp_hal::init(config); //! //! // Set GPIO0 as an output, and set its state high initially. //! let mut led = Output::new(peripherals.GPIO0, Level::High); @@ -482,7 +478,7 @@ use crate::{ /// /// For usage examples, see the [config module documentation](crate::config). #[non_exhaustive] -#[derive(Default)] +#[derive(Default, procmacros::BuilderLite)] pub struct Config { /// The CPU clock configuration. pub cpu_clock: CpuClock, diff --git a/examples/src/bin/wifi_80211_tx.rs b/examples/src/bin/wifi_80211_tx.rs index d05782790..857061a30 100644 --- a/examples/src/bin/wifi_80211_tx.rs +++ b/examples/src/bin/wifi_80211_tx.rs @@ -31,11 +31,8 @@ const MAC_ADDRESS: [u8; 6] = [0x00, 0x80, 0x41, 0x13, 0x37, 0x42]; #[entry] fn main() -> ! { esp_println::logger::init_logger_from_env(); - let peripherals = esp_hal::init({ - let mut config = esp_hal::Config::default(); - config.cpu_clock = CpuClock::max(); - config - }); + let config = esp_hal::Config::default().with_cpu_clock(CpuClock::max()); + let peripherals = esp_hal::init(config); esp_alloc::heap_allocator!(72 * 1024); diff --git a/examples/src/bin/wifi_access_point.rs b/examples/src/bin/wifi_access_point.rs index 235668705..ae0459de3 100644 --- a/examples/src/bin/wifi_access_point.rs +++ b/examples/src/bin/wifi_access_point.rs @@ -40,11 +40,8 @@ use smoltcp::iface::{SocketSet, SocketStorage}; #[entry] fn main() -> ! { esp_println::logger::init_logger_from_env(); - let peripherals = esp_hal::init({ - let mut config = esp_hal::Config::default(); - config.cpu_clock = CpuClock::max(); - config - }); + let config = esp_hal::Config::default().with_cpu_clock(CpuClock::max()); + let peripherals = esp_hal::init(config); esp_alloc::heap_allocator!(72 * 1024); diff --git a/examples/src/bin/wifi_access_point_with_sta.rs b/examples/src/bin/wifi_access_point_with_sta.rs index 4321ca142..b6a4b5454 100644 --- a/examples/src/bin/wifi_access_point_with_sta.rs +++ b/examples/src/bin/wifi_access_point_with_sta.rs @@ -46,11 +46,8 @@ const PASSWORD: &str = env!("PASSWORD"); #[entry] fn main() -> ! { esp_println::logger::init_logger(log::LevelFilter::Info); - let peripherals = esp_hal::init({ - let mut config = esp_hal::Config::default(); - config.cpu_clock = CpuClock::max(); - config - }); + let config = esp_hal::Config::default().with_cpu_clock(CpuClock::max()); + let peripherals = esp_hal::init(config); esp_alloc::heap_allocator!(72 * 1024); diff --git a/examples/src/bin/wifi_bench.rs b/examples/src/bin/wifi_bench.rs index e561c0f2d..4c132b06c 100644 --- a/examples/src/bin/wifi_bench.rs +++ b/examples/src/bin/wifi_bench.rs @@ -57,11 +57,8 @@ const UPLOAD_DOWNLOAD_PORT: u16 = 4323; #[entry] fn main() -> ! { esp_println::logger::init_logger_from_env(); - let peripherals = esp_hal::init({ - let mut config = esp_hal::Config::default(); - config.cpu_clock = CpuClock::max(); - config - }); + let config = esp_hal::Config::default().with_cpu_clock(CpuClock::max()); + let peripherals = esp_hal::init(config); esp_alloc::heap_allocator!(72 * 1024); diff --git a/examples/src/bin/wifi_ble.rs b/examples/src/bin/wifi_ble.rs index 84e383e07..83192f83a 100644 --- a/examples/src/bin/wifi_ble.rs +++ b/examples/src/bin/wifi_ble.rs @@ -37,11 +37,8 @@ use esp_wifi::{ble::controller::BleConnector, init}; #[entry] fn main() -> ! { esp_println::logger::init_logger_from_env(); - let peripherals = esp_hal::init({ - let mut config = esp_hal::Config::default(); - config.cpu_clock = CpuClock::max(); - config - }); + let config = esp_hal::Config::default().with_cpu_clock(CpuClock::max()); + let peripherals = esp_hal::init(config); esp_alloc::heap_allocator!(72 * 1024); diff --git a/examples/src/bin/wifi_coex.rs b/examples/src/bin/wifi_coex.rs index c6926b3bc..9ecdee2c9 100644 --- a/examples/src/bin/wifi_coex.rs +++ b/examples/src/bin/wifi_coex.rs @@ -53,11 +53,8 @@ const PASSWORD: &str = env!("PASSWORD"); #[entry] fn main() -> ! { esp_println::logger::init_logger_from_env(); - let peripherals = esp_hal::init({ - let mut config = esp_hal::Config::default(); - config.cpu_clock = CpuClock::max(); - config - }); + let config = esp_hal::Config::default().with_cpu_clock(CpuClock::max()); + let peripherals = esp_hal::init(config); static mut HEAP: core::mem::MaybeUninit<[u8; 72 * 1024]> = core::mem::MaybeUninit::uninit(); diff --git a/examples/src/bin/wifi_csi.rs b/examples/src/bin/wifi_csi.rs index fd06cfe49..599efa2a9 100644 --- a/examples/src/bin/wifi_csi.rs +++ b/examples/src/bin/wifi_csi.rs @@ -45,11 +45,8 @@ const PASSWORD: &str = env!("PASSWORD"); #[entry] fn main() -> ! { esp_println::logger::init_logger_from_env(); - let peripherals = esp_hal::init({ - let mut config = esp_hal::Config::default(); - config.cpu_clock = CpuClock::max(); - config - }); + let config = esp_hal::Config::default().with_cpu_clock(CpuClock::max()); + let peripherals = esp_hal::init(config); esp_alloc::heap_allocator!(72 * 1024); diff --git a/examples/src/bin/wifi_dhcp.rs b/examples/src/bin/wifi_dhcp.rs index 81b954157..190a129ef 100644 --- a/examples/src/bin/wifi_dhcp.rs +++ b/examples/src/bin/wifi_dhcp.rs @@ -47,11 +47,8 @@ const PASSWORD: &str = env!("PASSWORD"); #[entry] fn main() -> ! { esp_println::logger::init_logger_from_env(); - let peripherals = esp_hal::init({ - let mut config = esp_hal::Config::default(); - config.cpu_clock = CpuClock::max(); - config - }); + let config = esp_hal::Config::default().with_cpu_clock(CpuClock::max()); + let peripherals = esp_hal::init(config); esp_alloc::heap_allocator!(72 * 1024); diff --git a/examples/src/bin/wifi_dhcp_smoltcp_nal.rs b/examples/src/bin/wifi_dhcp_smoltcp_nal.rs index a4ad4ca6d..e912d7547 100644 --- a/examples/src/bin/wifi_dhcp_smoltcp_nal.rs +++ b/examples/src/bin/wifi_dhcp_smoltcp_nal.rs @@ -49,11 +49,8 @@ const PASSWORD: &str = env!("PASSWORD"); #[entry] fn main() -> ! { esp_println::logger::init_logger_from_env(); - let peripherals = esp_hal::init({ - let mut config = esp_hal::Config::default(); - config.cpu_clock = CpuClock::max(); - config - }); + let config = esp_hal::Config::default().with_cpu_clock(CpuClock::max()); + let peripherals = esp_hal::init(config); esp_alloc::heap_allocator!(72 * 1024); diff --git a/examples/src/bin/wifi_embassy_access_point.rs b/examples/src/bin/wifi_embassy_access_point.rs index 3ceca80c8..4a2abef76 100644 --- a/examples/src/bin/wifi_embassy_access_point.rs +++ b/examples/src/bin/wifi_embassy_access_point.rs @@ -57,11 +57,8 @@ macro_rules! mk_static { #[esp_hal_embassy::main] async fn main(spawner: Spawner) -> ! { esp_println::logger::init_logger_from_env(); - let peripherals = esp_hal::init({ - let mut config = esp_hal::Config::default(); - config.cpu_clock = CpuClock::max(); - config - }); + let config = esp_hal::Config::default().with_cpu_clock(CpuClock::max()); + let peripherals = esp_hal::init(config); esp_alloc::heap_allocator!(72 * 1024); 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 fd52e8328..2af40305a 100644 --- a/examples/src/bin/wifi_embassy_access_point_with_sta.rs +++ b/examples/src/bin/wifi_embassy_access_point_with_sta.rs @@ -65,11 +65,8 @@ macro_rules! mk_static { #[esp_hal_embassy::main] async fn main(spawner: Spawner) -> ! { esp_println::logger::init_logger_from_env(); - let peripherals = esp_hal::init({ - let mut config = esp_hal::Config::default(); - config.cpu_clock = CpuClock::max(); - config - }); + let config = esp_hal::Config::default().with_cpu_clock(CpuClock::max()); + let peripherals = esp_hal::init(config); esp_alloc::heap_allocator!(72 * 1024); diff --git a/examples/src/bin/wifi_embassy_bench.rs b/examples/src/bin/wifi_embassy_bench.rs index 30536e2a3..8ce9a7ab7 100644 --- a/examples/src/bin/wifi_embassy_bench.rs +++ b/examples/src/bin/wifi_embassy_bench.rs @@ -68,11 +68,8 @@ static mut TX_BUFFER: [u8; TX_BUFFER_SIZE] = [0; TX_BUFFER_SIZE]; #[esp_hal_embassy::main] async fn main(spawner: Spawner) -> ! { esp_println::logger::init_logger_from_env(); - let peripherals = esp_hal::init({ - let mut config = esp_hal::Config::default(); - config.cpu_clock = CpuClock::max(); - config - }); + let config = esp_hal::Config::default().with_cpu_clock(CpuClock::max()); + let peripherals = esp_hal::init(config); static mut HEAP: core::mem::MaybeUninit<[u8; 32 * 1024]> = core::mem::MaybeUninit::uninit(); diff --git a/examples/src/bin/wifi_embassy_ble.rs b/examples/src/bin/wifi_embassy_ble.rs index 17d52f211..3e3c82c81 100644 --- a/examples/src/bin/wifi_embassy_ble.rs +++ b/examples/src/bin/wifi_embassy_ble.rs @@ -50,11 +50,8 @@ macro_rules! mk_static { #[esp_hal_embassy::main] async fn main(_spawner: Spawner) -> ! { esp_println::logger::init_logger_from_env(); - let peripherals = esp_hal::init({ - let mut config = esp_hal::Config::default(); - config.cpu_clock = CpuClock::max(); - config - }); + let config = esp_hal::Config::default().with_cpu_clock(CpuClock::max()); + let peripherals = esp_hal::init(config); esp_alloc::heap_allocator!(72 * 1024); diff --git a/examples/src/bin/wifi_embassy_dhcp.rs b/examples/src/bin/wifi_embassy_dhcp.rs index 2f514c352..e023839d0 100644 --- a/examples/src/bin/wifi_embassy_dhcp.rs +++ b/examples/src/bin/wifi_embassy_dhcp.rs @@ -50,11 +50,8 @@ const PASSWORD: &str = env!("PASSWORD"); #[esp_hal_embassy::main] async fn main(spawner: Spawner) -> ! { esp_println::logger::init_logger_from_env(); - let peripherals = esp_hal::init({ - let mut config = esp_hal::Config::default(); - config.cpu_clock = CpuClock::max(); - config - }); + let config = esp_hal::Config::default().with_cpu_clock(CpuClock::max()); + let peripherals = esp_hal::init(config); esp_alloc::heap_allocator!(72 * 1024); diff --git a/examples/src/bin/wifi_embassy_esp_now.rs b/examples/src/bin/wifi_embassy_esp_now.rs index fc3b93022..e26151ab0 100644 --- a/examples/src/bin/wifi_embassy_esp_now.rs +++ b/examples/src/bin/wifi_embassy_esp_now.rs @@ -36,11 +36,8 @@ macro_rules! mk_static { #[esp_hal_embassy::main] async fn main(_spawner: Spawner) -> ! { esp_println::logger::init_logger_from_env(); - let peripherals = esp_hal::init({ - let mut config = esp_hal::Config::default(); - config.cpu_clock = CpuClock::max(); - config - }); + let config = esp_hal::Config::default().with_cpu_clock(CpuClock::max()); + let peripherals = esp_hal::init(config); esp_alloc::heap_allocator!(72 * 1024); diff --git a/examples/src/bin/wifi_embassy_esp_now_duplex.rs b/examples/src/bin/wifi_embassy_esp_now_duplex.rs index 8f0b3e646..b69d03fc8 100644 --- a/examples/src/bin/wifi_embassy_esp_now_duplex.rs +++ b/examples/src/bin/wifi_embassy_esp_now_duplex.rs @@ -36,11 +36,8 @@ macro_rules! mk_static { #[esp_hal_embassy::main] async fn main(spawner: Spawner) -> ! { esp_println::logger::init_logger_from_env(); - let peripherals = esp_hal::init({ - let mut config = esp_hal::Config::default(); - config.cpu_clock = CpuClock::max(); - config - }); + let config = esp_hal::Config::default().with_cpu_clock(CpuClock::max()); + let peripherals = esp_hal::init(config); esp_alloc::heap_allocator!(72 * 1024); diff --git a/examples/src/bin/wifi_embassy_trouble.rs b/examples/src/bin/wifi_embassy_trouble.rs index 7f8af099b..31a6c2b5e 100644 --- a/examples/src/bin/wifi_embassy_trouble.rs +++ b/examples/src/bin/wifi_embassy_trouble.rs @@ -44,11 +44,8 @@ macro_rules! mk_static { #[esp_hal_embassy::main] async fn main(_s: Spawner) { esp_println::logger::init_logger_from_env(); - let peripherals = esp_hal::init({ - let mut config = esp_hal::Config::default(); - config.cpu_clock = CpuClock::max(); - config - }); + let config = esp_hal::Config::default().with_cpu_clock(CpuClock::max()); + let peripherals = esp_hal::init(config); esp_alloc::heap_allocator!(72 * 1024); diff --git a/examples/src/bin/wifi_esp_now.rs b/examples/src/bin/wifi_esp_now.rs index dc32a7879..9f23f1ebd 100644 --- a/examples/src/bin/wifi_esp_now.rs +++ b/examples/src/bin/wifi_esp_now.rs @@ -25,11 +25,8 @@ use esp_wifi::{ #[entry] fn main() -> ! { esp_println::logger::init_logger_from_env(); - let peripherals = esp_hal::init({ - let mut config = esp_hal::Config::default(); - config.cpu_clock = CpuClock::max(); - config - }); + let config = esp_hal::Config::default().with_cpu_clock(CpuClock::max()); + let peripherals = esp_hal::init(config); esp_alloc::heap_allocator!(72 * 1024); diff --git a/examples/src/bin/wifi_sniffer.rs b/examples/src/bin/wifi_sniffer.rs index d6c26840c..e89dc9ec9 100644 --- a/examples/src/bin/wifi_sniffer.rs +++ b/examples/src/bin/wifi_sniffer.rs @@ -29,11 +29,8 @@ static KNOWN_SSIDS: Mutex>> = Mutex::new(RefCell::new(B #[entry] fn main() -> ! { esp_println::logger::init_logger_from_env(); - let peripherals = esp_hal::init({ - let mut config = esp_hal::Config::default(); - config.cpu_clock = CpuClock::max(); - config - }); + let config = esp_hal::Config::default().with_cpu_clock(CpuClock::max()); + let peripherals = esp_hal::init(config); esp_alloc::heap_allocator!(72 * 1024); diff --git a/examples/src/bin/wifi_static_ip.rs b/examples/src/bin/wifi_static_ip.rs index 8344a6103..e06f8e65e 100644 --- a/examples/src/bin/wifi_static_ip.rs +++ b/examples/src/bin/wifi_static_ip.rs @@ -45,11 +45,8 @@ const GATEWAY_IP: &str = env!("GATEWAY_IP"); #[entry] fn main() -> ! { esp_println::logger::init_logger_from_env(); - let peripherals = esp_hal::init({ - let mut config = esp_hal::Config::default(); - config.cpu_clock = CpuClock::max(); - config - }); + let config = esp_hal::Config::default().with_cpu_clock(CpuClock::max()); + let peripherals = esp_hal::init(config); esp_alloc::heap_allocator!(72 * 1024); diff --git a/hil-test/tests/aes.rs b/hil-test/tests/aes.rs index 67fc6c29c..bf474107c 100644 --- a/hil-test/tests/aes.rs +++ b/hil-test/tests/aes.rs @@ -22,11 +22,8 @@ mod tests { #[init] fn init() -> Context<'static> { - let peripherals = esp_hal::init({ - let mut config = esp_hal::Config::default(); - config.cpu_clock = CpuClock::max(); - config - }); + let config = esp_hal::Config::default().with_cpu_clock(CpuClock::max()); + let peripherals = esp_hal::init(config); let aes = Aes::new(peripherals.AES); Context { aes } diff --git a/hil-test/tests/ecc.rs b/hil-test/tests/ecc.rs index 04a36dfac..773043d1e 100644 --- a/hil-test/tests/ecc.rs +++ b/hil-test/tests/ecc.rs @@ -54,11 +54,8 @@ mod tests { #[init] fn init() -> Context<'static> { - let peripherals = esp_hal::init({ - let mut config = esp_hal::Config::default(); - config.cpu_clock = CpuClock::max(); - config - }); + let config = esp_hal::Config::default().with_cpu_clock(CpuClock::max()); + let peripherals = esp_hal::init(config); let ecc = Ecc::new(peripherals.ECC); let rng = Rng::new(peripherals.RNG); diff --git a/hil-test/tests/esp_wifi_floats.rs b/hil-test/tests/esp_wifi_floats.rs index 51ee012f4..d8eff1217 100644 --- a/hil-test/tests/esp_wifi_floats.rs +++ b/hil-test/tests/esp_wifi_floats.rs @@ -58,11 +58,8 @@ mod tests { fn test_init() -> Peripherals { esp_alloc::heap_allocator!(72 * 1024); - esp_hal::init({ - let mut config = esp_hal::Config::default(); - config.cpu_clock = CpuClock::max(); - config - }) + let config = esp_hal::Config::default().with_cpu_clock(CpuClock::max()); + esp_hal::init(config) } #[test] diff --git a/hil-test/tests/interrupt.rs b/hil-test/tests/interrupt.rs index 7388bf75c..54fc77bfb 100644 --- a/hil-test/tests/interrupt.rs +++ b/hil-test/tests/interrupt.rs @@ -64,11 +64,8 @@ mod tests { #[init] fn init() -> Context { - let peripherals = esp_hal::init({ - let mut config = esp_hal::Config::default(); - config.cpu_clock = CpuClock::max(); - config - }); + let config = esp_hal::Config::default().with_cpu_clock(CpuClock::max()); + let peripherals = esp_hal::init(config); let sw_ints = SoftwareInterruptControl::new(peripherals.SW_INTERRUPT); cfg_if::cfg_if! { diff --git a/hil-test/tests/sha.rs b/hil-test/tests/sha.rs index 157592af3..3a97d7618 100644 --- a/hil-test/tests/sha.rs +++ b/hil-test/tests/sha.rs @@ -169,8 +169,7 @@ mod tests { // FIXME: max speed fails...? let config = esp_hal::Config::default(); } else { - let mut config = esp_hal::Config::default(); - config.cpu_clock = CpuClock::max(); + let config = esp_hal::Config::default().with_cpu_clock(CpuClock::max()); } } diff --git a/qa-test/src/bin/embassy_executor_benchmark.rs b/qa-test/src/bin/embassy_executor_benchmark.rs index f85ffdcb0..e1945bfca 100644 --- a/qa-test/src/bin/embassy_executor_benchmark.rs +++ b/qa-test/src/bin/embassy_executor_benchmark.rs @@ -55,11 +55,8 @@ static TASK1: TaskStorage = TaskStorage::new(); #[esp_hal_embassy::main] async fn main(spawner: Spawner) { - let peripherals = esp_hal::init({ - let mut config = esp_hal::Config::default(); - config.cpu_clock = CLOCK; - config - }); + let config = esp_hal::Config::default().with_cpu_clock(CpuClock::max()); + let peripherals = esp_hal::init(config); let systimer = SystemTimer::new(peripherals.SYSTIMER); esp_hal_embassy::init(systimer.alarm0); println!("Embassy initialized!");