From e165def530afd6a4b7024a1dce273583940294b4 Mon Sep 17 00:00:00 2001 From: Scott Mabin Date: Tue, 20 Feb 2024 15:58:45 +0000 Subject: [PATCH] Instead of duplicating the config, we now use const eval to validate the config --- esp-wifi/build.rs | 61 --------------------------------------------- esp-wifi/src/lib.rs | 9 +++++++ 2 files changed, 9 insertions(+), 61 deletions(-) diff --git a/esp-wifi/build.rs b/esp-wifi/build.rs index 07cdcb3d..666163b7 100644 --- a/esp-wifi/build.rs +++ b/esp-wifi/build.rs @@ -86,8 +86,6 @@ fn main() -> Result<(), String> { println!("cargo:warning=coex is enabled but ble is not"); } - validate_config(); - let version_output = std::process::Command::new( std::env::var_os("RUSTC").unwrap_or_else(|| std::ffi::OsString::from("rustc")), ) @@ -172,62 +170,3 @@ impl PartialOrd for Version4 { fn print_warning(message: impl core::fmt::Display) { println!("cargo:warning={}", message); } - -#[toml_cfg::toml_config] -/// Tunable parameters for the WiFi driver -struct Config { - #[default(5)] - rx_queue_size: usize, - #[default(3)] - tx_queue_size: usize, - #[default(10)] - static_rx_buf_num: usize, - #[default(32)] - dynamic_rx_buf_num: usize, - #[default(0)] - static_tx_buf_num: usize, - #[default(32)] - dynamic_tx_buf_num: usize, - #[default(0)] - ampdu_rx_enable: usize, - #[default(0)] - ampdu_tx_enable: usize, - #[default(0)] - amsdu_tx_enable: usize, - #[default(6)] - rx_ba_win: usize, - #[default(1)] - max_burst_size: usize, - #[default("CN")] - country_code: &'static str, - #[default(0)] - country_code_operating_class: u8, - #[default(1492)] - mtu: usize, - #[default(65536)] - heap_size: usize, - #[default(200)] - tick_rate_hz: u32, - #[default(3)] - listen_interval: u16, - #[default(6)] - beacon_timeout: u16, - #[default(300)] - ap_beacon_timeout: u16, - #[default(1)] - failure_retry_cnt: u8, - #[default(0)] - scan_method: u32, -} - -fn validate_config() { - if CONFIG.rx_ba_win > CONFIG.dynamic_rx_buf_num { - print_warning( - "WiFi configuration check: rx_ba_win should not be larger than dynamic_rx_buf_num!", - ); - } - - if CONFIG.rx_ba_win > (CONFIG.static_rx_buf_num * 2) { - print_warning("WiFi configuration check: rx_ba_win should not be larger than double of the static_rx_buf_num!"); - } -} diff --git a/esp-wifi/src/lib.rs b/esp-wifi/src/lib.rs index a68b9477..6304826c 100644 --- a/esp-wifi/src/lib.rs +++ b/esp-wifi/src/lib.rs @@ -142,6 +142,15 @@ struct Config { scan_method: u32, } +// Validate the configuration at compile time +const _: () = { + assert!( + CONFIG.rx_ba_win < CONFIG.dynamic_rx_buf_num, + "WiFi configuration check: rx_ba_win should not be larger than dynamic_rx_buf_num!" + ); + assert!(CONFIG.rx_ba_win < (CONFIG.static_rx_buf_num * 2), "WiFi configuration check: rx_ba_win should not be larger than double of the static_rx_buf_num!"); +}; + const HEAP_SIZE: usize = crate::CONFIG.heap_size; #[cfg_attr(esp32, link_section = ".dram2_uninit")]