From d46dfc4a7de5eb30ebc3b644d1abeaa52bc0b64a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A1niel=20Buga?= Date: Tue, 5 Dec 2023 11:45:59 +0100 Subject: [PATCH] Update dependencies, port to portable-atomic (#342) * Update dependencies, port to portable-atomic * Drop futures-* * Add patches * Make portable-atomic optional * Don't depend on smoltcp and embedded-svc releases * Update esp-hal to disallow duplicate versions * Backtrack on the S2 changes * Remove features from cargo run aliasses * Update esp-hal, always use portable-atomic --- Cargo.toml | 32 +++++++++---- esp-wifi/.cargo/config.toml | 47 +++---------------- esp-wifi/Cargo.toml | 17 ++++--- esp-wifi/automated-tests/open_access_point.rs | 2 +- esp-wifi/automated-tests/test_connect.rs | 2 +- esp-wifi/examples/access_point.rs | 2 +- esp-wifi/examples/access_point_with_sta.rs | 6 +-- esp-wifi/examples/bench.rs | 4 +- esp-wifi/examples/coex.rs | 4 +- esp-wifi/examples/dhcp.rs | 4 +- esp-wifi/examples/embassy_access_point.rs | 2 +- .../examples/embassy_access_point_with_sta.rs | 6 +-- esp-wifi/examples/embassy_bench.rs | 4 +- esp-wifi/examples/embassy_dhcp.rs | 4 +- esp-wifi/examples/static_ip.rs | 4 +- .../common_adapter/common_adapter_esp32.rs | 12 ++--- .../common_adapter/common_adapter_esp32c2.rs | 8 ++-- .../common_adapter/common_adapter_esp32c3.rs | 11 ++--- .../common_adapter/common_adapter_esp32c6.rs | 3 +- .../common_adapter/common_adapter_esp32s2.rs | 11 ++--- .../common_adapter/common_adapter_esp32s3.rs | 11 ++--- esp-wifi/src/esp_now/mod.rs | 3 +- esp-wifi/src/timer/riscv.rs | 4 +- esp-wifi/src/timer/timer_esp32c6.rs | 4 +- esp-wifi/src/timer/xtensa.rs | 4 +- esp-wifi/src/wifi/mod.rs | 4 +- esp-wifi/src/wifi/os_adapter_esp32c2.rs | 4 +- esp-wifi/src/wifi/os_adapter_esp32c3.rs | 4 +- esp-wifi/src/wifi/os_adapter_esp32c6.rs | 4 +- esp-wifi/src/wifi/state.rs | 4 +- esp-wifi/src/wifi_interface.rs | 2 +- 31 files changed, 105 insertions(+), 128 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index f40c3a55..b29963e9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,16 +24,16 @@ esp32s3-hal = { version = "0.13.0", default-features = false } esp32s2-hal = { version = "0.13.0", default-features = false } smoltcp = { version = "0.10.0", default-features=false, features = ["medium-ethernet", "socket-raw"] } critical-section = "1.1.1" -atomic-polyfill = "1.0.2" -atomic_enum = "0.2.0" # uses core atomic types which should be fine as long as only load and store is used on them -log = "0.4.18" +portable-atomic = { version = "1.5", default-features = false } +portable_atomic_enum = { version = "0.3.0", features = ["portable-atomic"] } +log = "0.4.20" embedded-svc = { version = "0.26.1", default-features = false, features = [] } -enumset = { version = "1", default-features = false } +enumset = { version = "1.1.3", default-features = false } linked_list_allocator = { version = "0.10.5", default-features = false, features = ["const_mut_refs"] } embedded-io = "0.6.1" fugit = "0.3.7" heapless = { version = "0.7.16", default-features = false } -num-derive = { version = "0.3", features = ["full-syntax"] } +num-derive = { version = "0.4" } num-traits = { version = "0.2", default-features = false } esp-wifi-sys = { version = "0.1.0", path = "../esp-wifi-sys" } embassy-sync = { version = "0.4.0" } @@ -41,14 +41,26 @@ embassy-futures = { version = "0.1.0" } toml-cfg = "0.1.3" libm = "0.2.7" cfg-if = "1.0.0" -static_cell = { version = "=1.2", features = ["nightly"] } +static_cell = { version = "2.0", features = ["nightly"] } embassy-net = { version = "0.2.1", features = ["nightly", "tcp", "udp", "dhcpv4", "medium-ethernet"] } bleps = { git = "https://github.com/bjoernQ/bleps", package = "bleps", rev = "0db8fcb", features = ["macros"] } -embassy-executor = { version = "=0.3.2", package = "embassy-executor", features = ["nightly", "executor-thread", "integrated-timers"] } # temporarily pin because we aren't ready for portable-atomic yet +embassy-executor = { version = "0.3.3", package = "embassy-executor", features = ["nightly", "integrated-timers"] } embassy-time = { version = "0.1.3", features = ["nightly"] } -futures-util = { version = "0.3.28", default-features = false } -esp-println = { version = "0.6.0" } -esp-backtrace = { version = "0.8.0", features = ["panic-handler", "exception-handler", "print-uart"] } +esp-println = { version = "0.7.0" } +esp-backtrace = { version = "0.9.0", features = ["panic-handler", "exception-handler", "print-uart"] } embedded-hal-async = { version = "1.0.0-rc.1" } embedded-io-async = { version = "0.6.0" } + +futures-util = { version = "0.3.28", default-features = false, features = ["portable-atomic"] } # need this to activate portable-atomic on AtomicWaker even though we don't use it +atomic-waker = { version = "1.1.2", default-features = false, features = ["portable-atomic"] } # need this to activate portable-atomic on AtomicWaker used by embedded-svc even though we don't use it + +# portable-atomic compatible esp-hal revisions +[patch.crates-io] +esp32-hal = { git = "https://github.com/esp-rs/esp-hal.git", rev = "22f14fd" } +esp32c2-hal = { git = "https://github.com/esp-rs/esp-hal.git", rev = "22f14fd" } +esp32c3-hal = { git = "https://github.com/esp-rs/esp-hal.git", rev = "22f14fd" } +esp32c6-hal = { git = "https://github.com/esp-rs/esp-hal.git", rev = "22f14fd" } +esp32s2-hal = { git = "https://github.com/esp-rs/esp-hal.git", rev = "22f14fd" } +esp32s3-hal = { git = "https://github.com/esp-rs/esp-hal.git", rev = "22f14fd" } +esp-hal-common = { git = "https://github.com/esp-rs/esp-hal.git", rev = "22f14fd" } diff --git a/esp-wifi/.cargo/config.toml b/esp-wifi/.cargo/config.toml index 59ac563d..83c7032d 100644 --- a/esp-wifi/.cargo/config.toml +++ b/esp-wifi/.cargo/config.toml @@ -7,40 +7,23 @@ esp32 = "run --features esp32 --target xtensa-esp32-none-elf --features esp32-hal/default,esp32-hal/embassy-time-timg0,esp32-hal/embassy-executor-thread" esp32s2 = "run --features esp32s2 --target xtensa-esp32s2-none-elf --features esp32s2-hal/default,esp32s2-hal/embassy-time-timg0,esp32s2-hal/embassy-executor-thread" esp32s3 = "run --features esp32s3 --target xtensa-esp32s3-none-elf --features esp32s3-hal/default,esp32s3-hal/embassy-time-timg0,esp32s3-hal/embassy-executor-thread" -esp32c2 = "run --features esp32c2 --target riscv32imc-unknown-none-elf --features esp32c2-hal/default,esp32c2-hal/embassy-time-timg0" -esp32c3 = "run --features esp32c3 --target riscv32imc-unknown-none-elf --features esp32c3-hal/default,esp32c3-hal/embassy-time-timg0" -esp32c6 = "run --features esp32c6 --target riscv32imac-unknown-none-elf --features esp32c6-hal/default,esp32c6-hal/embassy-time-timg0" +esp32c2 = "run --features esp32c2 --target riscv32imc-unknown-none-elf --features esp32c2-hal/default,esp32c2-hal/embassy-time-timg0,esp32c2-hal/embassy-executor-thread" +esp32c3 = "run --features esp32c3 --target riscv32imc-unknown-none-elf --features esp32c3-hal/default,esp32c3-hal/embassy-time-timg0,esp32c3-hal/embassy-executor-thread" +esp32c6 = "run --features esp32c6 --target riscv32imac-unknown-none-elf --features esp32c6-hal/default,esp32c6-hal/embassy-time-timg0,esp32c6-hal/embassy-executor-thread" besp32 = "build --features esp32 --target xtensa-esp32-none-elf --features esp32-hal/default,esp32-hal/embassy-time-timg0,esp32-hal/embassy-executor-thread" besp32s2 = "build --features esp32s2 --target xtensa-esp32s2-none-elf --features esp32s2-hal/default,esp32s2-hal/embassy-time-timg0,esp32s2-hal/embassy-executor-thread" besp32s3 = "build --features esp32s3 --target xtensa-esp32s3-none-elf --features esp32s3-hal/default,esp32s3-hal/embassy-time-timg0,esp32s3-hal/embassy-executor-thread" -besp32c2 = "build --features esp32c2 --target riscv32imc-unknown-none-elf --features esp32c2-hal/default,esp32c2-hal/embassy-time-timg0" -besp32c3 = "build --features esp32c3 --target riscv32imc-unknown-none-elf --features esp32c3-hal/default,esp32c3-hal/embassy-time-timg0" -besp32c6 = "build --features esp32c6 --target riscv32imac-unknown-none-elf --features esp32c6-hal/default,esp32c6-hal/embassy-time-timg0" +besp32c2 = "build --features esp32c2 --target riscv32imc-unknown-none-elf --features esp32c2-hal/default,esp32c2-hal/embassy-time-timg0,esp32c2-hal/embassy-executor-thread" +besp32c3 = "build --features esp32c3 --target riscv32imc-unknown-none-elf --features esp32c3-hal/default,esp32c3-hal/embassy-time-timg0,esp32c3-hal/embassy-executor-thread" +besp32c6 = "build --features esp32c6 --target riscv32imac-unknown-none-elf --features esp32c6-hal/default,esp32c6-hal/embassy-time-timg0,esp32c6-hal/embassy-executor-thread" [target.riscv32imc-unknown-none-elf] runner = "espflash flash --monitor" rustflags = [ "-C", "link-arg=-Tlinkall.x", "-C", "link-arg=-Trom_functions.x", - "-C", "force-frame-pointers", - - # Enable the atomic codegen option for RISCV - "-C", "target-feature=+a", - - # tell the core library have atomics even though it's not specified in the target definition - "--cfg", "target_has_atomic_load_store", - "--cfg", 'target_has_atomic_load_store="8"', - "--cfg", 'target_has_atomic_load_store="16"', - "--cfg", 'target_has_atomic_load_store="32"', - "--cfg", 'target_has_atomic_load_store="ptr"', - # enable cas - "--cfg", "target_has_atomic", - "--cfg", 'target_has_atomic="8"', - "--cfg", 'target_has_atomic="16"', - "--cfg", 'target_has_atomic="32"', - "--cfg", 'target_has_atomic="ptr"', ] [target.riscv32imac-unknown-none-elf] @@ -70,23 +53,7 @@ runner = "espflash flash --monitor" rustflags = [ "-C", "link-arg=-Tlinkall.x", "-C", "link-arg=-Trom_functions.x", - - # Enable the atomic codegen option for Xtensa - "-C", "target-feature=+s32c1i", - - # tell the core library have atomics even though it's not specified in the target definition - "--cfg", "target_has_atomic_load_store", - "--cfg", 'target_has_atomic_load_store="8"', - "--cfg", 'target_has_atomic_load_store="16"', - "--cfg", 'target_has_atomic_load_store="32"', - "--cfg", 'target_has_atomic_load_store="ptr"', - # Tell the `core` library that we have atomics, even though it's not - # specified in the target definition - "--cfg", 'target_has_atomic', - "--cfg", 'target_has_atomic="8"', - "--cfg", 'target_has_atomic="16"', - "--cfg", 'target_has_atomic="32"', - "--cfg", 'target_has_atomic="ptr"', + "-C", "force-frame-pointers", ] [unstable] diff --git a/esp-wifi/Cargo.toml b/esp-wifi/Cargo.toml index 0a70a6f7..58125a19 100644 --- a/esp-wifi/Cargo.toml +++ b/esp-wifi/Cargo.toml @@ -39,7 +39,7 @@ embedded-io.workspace = true embedded-io-async = { workspace = true, optional = true } fugit.workspace = true heapless = { workspace = true, default-features = false } -num-derive = { workspace = true, features = ["full-syntax"] } +num-derive = { workspace = true } num-traits = { workspace = true, default-features = false } esp-wifi-sys = { version = "0.1.0", path = "../esp-wifi-sys" } embassy-sync = { workspace = true, optional = true } @@ -48,8 +48,12 @@ embassy-net = { workspace = true, optional = true } toml-cfg.workspace = true libm.workspace = true cfg-if.workspace = true -atomic-polyfill.workspace = true -atomic_enum.workspace = true +portable-atomic.workspace = true +portable_atomic_enum.workspace = true + +# We don't use these directly but we need to enable portable-atomic on them +futures-util.workspace = true +atomic-waker.workspace = true [build-dependencies] toml-cfg.workspace = true @@ -59,7 +63,6 @@ esp-println = { workspace = true, features = ["log"] } esp-backtrace.workspace = true embassy-executor.workspace = true embassy-time.workspace = true -futures-util.workspace = true bleps = { workspace = true, features = ["async"] } embedded-hal-async.workspace = true log.workspace = true @@ -69,9 +72,9 @@ static_cell.workspace = true default = [ "log", "ipv4", "tcp", "udp", "icmp", "igmp", "dns", "dhcpv4" ] # chip features -esp32c2 = [ "esp32c2-hal", "esp-wifi-sys/esp32c2", "esp-println/esp32c2", "esp-backtrace/esp32c2", "embassy-executor/arch-riscv32" ] -esp32c3 = [ "esp32c3-hal", "esp-wifi-sys/esp32c3", "esp-println/esp32c3", "esp-backtrace/esp32c3", "embassy-executor/arch-riscv32" ] -esp32c6 = [ "esp32c6-hal", "esp-wifi-sys/esp32c6", "esp-println/esp32c6", "esp-backtrace/esp32c6", "embassy-executor/arch-riscv32" ] +esp32c2 = [ "esp32c2-hal", "esp-wifi-sys/esp32c2", "esp-println/esp32c2", "esp-backtrace/esp32c2" ] +esp32c3 = [ "esp32c3-hal", "esp-wifi-sys/esp32c3", "esp-println/esp32c3", "esp-backtrace/esp32c3" ] +esp32c6 = [ "esp32c6-hal", "esp-wifi-sys/esp32c6", "esp-println/esp32c6", "esp-backtrace/esp32c6" ] esp32 = [ "esp32-hal", "esp-wifi-sys/esp32", "esp-println/esp32", "esp-backtrace/esp32" ] esp32s2 = [ "esp32s2-hal", "esp-wifi-sys/esp32s2", "esp-println/esp32s2", "esp-backtrace/esp32s2" ] esp32s3 = [ "esp32s3-hal", "esp-wifi-sys/esp32s3", "esp-println/esp32s3", "esp-backtrace/esp32s3" ] diff --git a/esp-wifi/automated-tests/open_access_point.rs b/esp-wifi/automated-tests/open_access_point.rs index 5a53d609..64079ea9 100644 --- a/esp-wifi/automated-tests/open_access_point.rs +++ b/esp-wifi/automated-tests/open_access_point.rs @@ -52,7 +52,7 @@ fn main() -> ! { let mut wifi_stack = WifiStack::new(iface, device, sockets, current_millis); let client_config = Configuration::AccessPoint(AccessPointConfiguration { - ssid: "esp-wifi".into(), + ssid: "esp-wifi".try_into().unwrap(), ..Default::default() }); let res = controller.set_configuration(&client_config); diff --git a/esp-wifi/automated-tests/test_connect.rs b/esp-wifi/automated-tests/test_connect.rs index 6fbb65b2..11e4c0b7 100644 --- a/esp-wifi/automated-tests/test_connect.rs +++ b/esp-wifi/automated-tests/test_connect.rs @@ -65,7 +65,7 @@ fn main() -> ! { let mut wifi_stack = WifiStack::new(iface, device, sockets, current_millis); let client_config = Configuration::Client(ClientConfiguration { - ssid: SSID.into(), + ssid: SSID.try_into().unwrap(), auth_method: AuthMethod::None, ..Default::default() }); diff --git a/esp-wifi/examples/access_point.rs b/esp-wifi/examples/access_point.rs index 0a25b2d4..de16c8ce 100644 --- a/esp-wifi/examples/access_point.rs +++ b/esp-wifi/examples/access_point.rs @@ -52,7 +52,7 @@ fn main() -> ! { let mut wifi_stack = WifiStack::new(iface, device, sockets, current_millis); let client_config = Configuration::AccessPoint(AccessPointConfiguration { - ssid: "esp-wifi".into(), + ssid: "esp-wifi".try_into().unwrap(), ..Default::default() }); let res = controller.set_configuration(&client_config); diff --git a/esp-wifi/examples/access_point_with_sta.rs b/esp-wifi/examples/access_point_with_sta.rs index e42c55be..e2d69a4a 100644 --- a/esp-wifi/examples/access_point_with_sta.rs +++ b/esp-wifi/examples/access_point_with_sta.rs @@ -75,12 +75,12 @@ fn main() -> ! { let client_config = Configuration::Mixed( ClientConfiguration { - ssid: SSID.into(), - password: PASSWORD.into(), + ssid: SSID.try_into().unwrap(), + password: PASSWORD.try_into().unwrap(), ..Default::default() }, AccessPointConfiguration { - ssid: "esp-wifi".into(), + ssid: "esp-wifi".try_into().unwrap(), ..Default::default() }, ); diff --git a/esp-wifi/examples/bench.rs b/esp-wifi/examples/bench.rs index b100bc38..993a45d9 100644 --- a/esp-wifi/examples/bench.rs +++ b/esp-wifi/examples/bench.rs @@ -66,8 +66,8 @@ fn main() -> ! { let wifi_stack = WifiStack::new(iface, device, sockets, current_millis); let client_config = Configuration::Client(ClientConfiguration { - ssid: SSID.into(), - password: PASSWORD.into(), + ssid: SSID.try_into().unwrap(), + password: PASSWORD.try_into().unwrap(), ..Default::default() }); let res = controller.set_configuration(&client_config); diff --git a/esp-wifi/examples/coex.rs b/esp-wifi/examples/coex.rs index 6ddee39b..453a13e3 100644 --- a/esp-wifi/examples/coex.rs +++ b/esp-wifi/examples/coex.rs @@ -65,8 +65,8 @@ fn main() -> ! { let wifi_stack = WifiStack::new(iface, device, sockets, current_millis); let client_config = Configuration::Client(ClientConfiguration { - ssid: SSID.into(), - password: PASSWORD.into(), + ssid: SSID.try_into().unwrap(), + password: PASSWORD.try_into().unwrap(), ..Default::default() }); let res = controller.set_configuration(&client_config); diff --git a/esp-wifi/examples/dhcp.rs b/esp-wifi/examples/dhcp.rs index cd67c266..223c4a8e 100644 --- a/esp-wifi/examples/dhcp.rs +++ b/esp-wifi/examples/dhcp.rs @@ -55,8 +55,8 @@ fn main() -> ! { let wifi_stack = WifiStack::new(iface, device, sockets, current_millis); let client_config = Configuration::Client(ClientConfiguration { - ssid: SSID.into(), - password: PASSWORD.into(), + ssid: SSID.try_into().unwrap(), + password: PASSWORD.try_into().unwrap(), ..Default::default() }); let res = controller.set_configuration(&client_config); diff --git a/esp-wifi/examples/embassy_access_point.rs b/esp-wifi/examples/embassy_access_point.rs index 03552b72..61df36b5 100644 --- a/esp-wifi/examples/embassy_access_point.rs +++ b/esp-wifi/examples/embassy_access_point.rs @@ -172,7 +172,7 @@ async fn connection(mut controller: WifiController<'static>) { } if !matches!(controller.is_started(), Ok(true)) { let client_config = Configuration::AccessPoint(AccessPointConfiguration { - ssid: "esp-wifi".into(), + ssid: "esp-wifi".try_into().unwrap(), ..Default::default() }); controller.set_configuration(&client_config).unwrap(); diff --git a/esp-wifi/examples/embassy_access_point_with_sta.rs b/esp-wifi/examples/embassy_access_point_with_sta.rs index 1e465f9c..82fd8a15 100644 --- a/esp-wifi/examples/embassy_access_point_with_sta.rs +++ b/esp-wifi/examples/embassy_access_point_with_sta.rs @@ -82,12 +82,12 @@ async fn main(spawner: Spawner) -> ! { let client_config = Configuration::Mixed( ClientConfiguration { - ssid: SSID.into(), - password: PASSWORD.into(), + ssid: SSID.try_into().unwrap(), + password: PASSWORD.try_into().unwrap(), ..Default::default() }, AccessPointConfiguration { - ssid: "esp-wifi".into(), + ssid: "esp-wifi".try_into().unwrap(), ..Default::default() }, ); diff --git a/esp-wifi/examples/embassy_bench.rs b/esp-wifi/examples/embassy_bench.rs index 771bf0dd..622a9f64 100644 --- a/esp-wifi/examples/embassy_bench.rs +++ b/esp-wifi/examples/embassy_bench.rs @@ -124,8 +124,8 @@ async fn connection(mut controller: WifiController<'static>) { } if !matches!(controller.is_started(), Ok(true)) { let client_config = Configuration::Client(ClientConfiguration { - ssid: SSID.into(), - password: PASSWORD.into(), + ssid: SSID.try_into().unwrap(), + password: PASSWORD.try_into().unwrap(), ..Default::default() }); controller.set_configuration(&client_config).unwrap(); diff --git a/esp-wifi/examples/embassy_dhcp.rs b/esp-wifi/examples/embassy_dhcp.rs index d652efb3..80a137d0 100644 --- a/esp-wifi/examples/embassy_dhcp.rs +++ b/esp-wifi/examples/embassy_dhcp.rs @@ -144,8 +144,8 @@ async fn connection(mut controller: WifiController<'static>) { } if !matches!(controller.is_started(), Ok(true)) { let client_config = Configuration::Client(ClientConfiguration { - ssid: SSID.into(), - password: PASSWORD.into(), + ssid: SSID.try_into().unwrap(), + password: PASSWORD.try_into().unwrap(), ..Default::default() }); controller.set_configuration(&client_config).unwrap(); diff --git a/esp-wifi/examples/static_ip.rs b/esp-wifi/examples/static_ip.rs index 7b313502..86e5a100 100644 --- a/esp-wifi/examples/static_ip.rs +++ b/esp-wifi/examples/static_ip.rs @@ -57,8 +57,8 @@ fn main() -> ! { let mut wifi_stack = WifiStack::new(iface, device, sockets, current_millis); let client_config = Configuration::Client(ClientConfiguration { - ssid: SSID.into(), - password: PASSWORD.into(), + ssid: SSID.try_into().unwrap(), + password: PASSWORD.try_into().unwrap(), ..Default::default() }); let res = controller.set_configuration(&client_config); diff --git a/esp-wifi/src/common_adapter/common_adapter_esp32.rs b/esp-wifi/src/common_adapter/common_adapter_esp32.rs index 933b42f0..00b4d998 100644 --- a/esp-wifi/src/common_adapter/common_adapter_esp32.rs +++ b/esp-wifi/src/common_adapter/common_adapter_esp32.rs @@ -5,8 +5,7 @@ use crate::hal::prelude::ram; use crate::hal::system::RadioClockController; use crate::hal::system::RadioPeripherals; -use atomic_polyfill::AtomicU32; -use core::sync::atomic::Ordering; +use portable_atomic::{AtomicU32, Ordering}; const SOC_PHY_DIG_REGS_MEM_SIZE: usize = 21 * 4; @@ -22,11 +21,11 @@ pub(crate) fn enable_wifi_power_domain() { let rtc_cntl = &*crate::hal::peripherals::RTC_CNTL::ptr(); rtc_cntl - .dig_pwc + .dig_pwc() .modify(|_, w| w.wifi_force_pd().clear_bit()); rtc_cntl - .dig_iso + .dig_iso() .modify(|_, w| w.wifi_force_iso().clear_bit()); } } @@ -205,8 +204,9 @@ unsafe extern "C" fn phy_exit_critical(level: u32) { #[ram] #[no_mangle] unsafe extern "C" fn rtc_get_xtal() -> u32 { - trace!("rtc_get_xtal - just hardcoded value 40 for now"); - 40 + use crate::hal::clock::Clock; + let xtal = crate::hal::rtc_cntl::RtcClock::get_xtal_freq(); + xtal.mhz() } #[no_mangle] diff --git a/esp-wifi/src/common_adapter/common_adapter_esp32c2.rs b/esp-wifi/src/common_adapter/common_adapter_esp32c2.rs index efca435b..e714fc51 100644 --- a/esp-wifi/src/common_adapter/common_adapter_esp32c2.rs +++ b/esp-wifi/src/common_adapter/common_adapter_esp32c2.rs @@ -5,8 +5,7 @@ use crate::compat::common::str_from_c; use crate::hal::system::RadioClockController; use crate::hal::system::RadioPeripherals; -use atomic_polyfill::AtomicU32; -use core::sync::atomic::Ordering; +use portable_atomic::{AtomicU32, Ordering}; const SOC_PHY_DIG_REGS_MEM_SIZE: usize = 21 * 4; @@ -139,6 +138,7 @@ pub(crate) unsafe fn phy_disable_clock() { #[no_mangle] pub extern "C" fn rtc_clk_xtal_freq_get() -> i32 { - // JUST SUPPORT 40MHz XTAL for now - 40 + use crate::hal::clock::Clock; + let xtal = crate::hal::rtc_cntl::RtcClock::get_xtal_freq(); + xtal.mhz() as i32 } diff --git a/esp-wifi/src/common_adapter/common_adapter_esp32c3.rs b/esp-wifi/src/common_adapter/common_adapter_esp32c3.rs index 1693524b..b9d8ba15 100644 --- a/esp-wifi/src/common_adapter/common_adapter_esp32c3.rs +++ b/esp-wifi/src/common_adapter/common_adapter_esp32c3.rs @@ -5,8 +5,7 @@ use crate::compat::common::str_from_c; use crate::hal::system::RadioClockController; use crate::hal::system::RadioPeripherals; -use atomic_polyfill::AtomicU32; -use core::sync::atomic::Ordering; +use portable_atomic::{AtomicU32, Ordering}; const SOC_PHY_DIG_REGS_MEM_SIZE: usize = 21 * 4; @@ -40,18 +39,18 @@ pub(crate) fn enable_wifi_power_domain() { let syscon = &*crate::hal::peripherals::APB_CTRL::ptr(); rtc_cntl - .dig_pwc + .dig_pwc() .modify(|_, w| w.wifi_force_pd().clear_bit()); syscon - .wifi_rst_en + .wifi_rst_en() .modify(|r, w| w.bits(r.bits() | MODEM_RESET_FIELD_WHEN_PU)); syscon - .wifi_rst_en + .wifi_rst_en() .modify(|r, w| w.bits(r.bits() & !MODEM_RESET_FIELD_WHEN_PU)); rtc_cntl - .dig_iso + .dig_iso() .modify(|_, w| w.wifi_force_iso().clear_bit()); } } diff --git a/esp-wifi/src/common_adapter/common_adapter_esp32c6.rs b/esp-wifi/src/common_adapter/common_adapter_esp32c6.rs index b0c05f91..b9fbc276 100644 --- a/esp-wifi/src/common_adapter/common_adapter_esp32c6.rs +++ b/esp-wifi/src/common_adapter/common_adapter_esp32c6.rs @@ -5,8 +5,7 @@ use crate::compat::common::str_from_c; use crate::hal::system::RadioClockController; use crate::hal::system::RadioPeripherals; -use atomic_polyfill::AtomicU32; -use core::sync::atomic::Ordering; +use portable_atomic::{AtomicU32, Ordering}; const SOC_PHY_DIG_REGS_MEM_SIZE: usize = 21 * 4; diff --git a/esp-wifi/src/common_adapter/common_adapter_esp32s2.rs b/esp-wifi/src/common_adapter/common_adapter_esp32s2.rs index 18529e68..f73c5a41 100644 --- a/esp-wifi/src/common_adapter/common_adapter_esp32s2.rs +++ b/esp-wifi/src/common_adapter/common_adapter_esp32s2.rs @@ -5,8 +5,7 @@ use crate::hal::prelude::ram; use crate::hal::system::RadioClockController; use crate::hal::system::RadioPeripherals; -use atomic_polyfill::AtomicU32; -use core::sync::atomic::Ordering; +use portable_atomic::{AtomicU32, Ordering}; const SOC_PHY_DIG_REGS_MEM_SIZE: usize = 21 * 4; @@ -38,18 +37,18 @@ pub(crate) fn enable_wifi_power_domain() { let syscon = &*crate::hal::peripherals::SYSCON::ptr(); rtc_cntl - .dig_pwc + .dig_pwc() .modify(|_, w| w.wifi_force_pd().clear_bit()); syscon - .wifi_rst_en + .wifi_rst_en() .modify(|r, w| w.bits(r.bits() | MODEM_RESET_FIELD_WHEN_PU)); syscon - .wifi_rst_en + .wifi_rst_en() .modify(|r, w| w.bits(r.bits() & !MODEM_RESET_FIELD_WHEN_PU)); rtc_cntl - .dig_iso + .dig_iso() .modify(|_, w| w.wifi_force_iso().clear_bit()); } } diff --git a/esp-wifi/src/common_adapter/common_adapter_esp32s3.rs b/esp-wifi/src/common_adapter/common_adapter_esp32s3.rs index fa6e9d11..cc4c63a4 100644 --- a/esp-wifi/src/common_adapter/common_adapter_esp32s3.rs +++ b/esp-wifi/src/common_adapter/common_adapter_esp32s3.rs @@ -4,8 +4,7 @@ use crate::common_adapter::RADIO_CLOCKS; use crate::hal::system::RadioClockController; use crate::hal::system::RadioPeripherals; -use atomic_polyfill::AtomicU32; -use core::sync::atomic::Ordering; +use portable_atomic::{AtomicU32, Ordering}; const SOC_PHY_DIG_REGS_MEM_SIZE: usize = 21 * 4; @@ -45,18 +44,18 @@ pub(crate) fn enable_wifi_power_domain() { let syscon = &*crate::hal::peripherals::APB_CTRL::ptr(); rtc_cntl - .dig_pwc + .dig_pwc() .modify(|_, w| w.wifi_force_pd().clear_bit()); syscon - .wifi_rst_en + .wifi_rst_en() .modify(|r, w| w.bits(r.bits() | MODEM_RESET_FIELD_WHEN_PU)); syscon - .wifi_rst_en + .wifi_rst_en() .modify(|r, w| w.bits(r.bits() & !MODEM_RESET_FIELD_WHEN_PU)); rtc_cntl - .dig_iso + .dig_iso() .modify(|_, w| w.wifi_force_iso().clear_bit()); } } diff --git a/esp-wifi/src/esp_now/mod.rs b/esp-wifi/src/esp_now/mod.rs index 75609681..828991d9 100644 --- a/esp-wifi/src/esp_now/mod.rs +++ b/esp-wifi/src/esp_now/mod.rs @@ -7,10 +7,9 @@ //! For more information see https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/network/esp_now.html use core::marker::PhantomData; -use core::sync::atomic::Ordering; use core::{cell::RefCell, fmt::Debug}; -use atomic_polyfill::{AtomicBool, AtomicU8}; +use portable_atomic::{AtomicBool, AtomicU8, Ordering}; use critical_section::Mutex; diff --git a/esp-wifi/src/timer/riscv.rs b/esp-wifi/src/timer/riscv.rs index 227898fa..53cf17c8 100644 --- a/esp-wifi/src/timer/riscv.rs +++ b/esp-wifi/src/timer/riscv.rs @@ -72,7 +72,7 @@ fn FROM_CPU_INTR3(trap_frame: &mut TrapFrame) { unsafe { // clear FROM_CPU_INTR3 (&*SystemPeripheral::PTR) - .cpu_intr_from_cpu_3 + .cpu_intr_from_cpu_3() .modify(|_, w| w.cpu_intr_from_cpu_3().clear_bit()); } @@ -90,7 +90,7 @@ fn FROM_CPU_INTR3(trap_frame: &mut TrapFrame) { pub fn yield_task() { unsafe { (&*SystemPeripheral::PTR) - .cpu_intr_from_cpu_3 + .cpu_intr_from_cpu_3() .modify(|_, w| w.cpu_intr_from_cpu_3().set_bit()); } } diff --git a/esp-wifi/src/timer/timer_esp32c6.rs b/esp-wifi/src/timer/timer_esp32c6.rs index 3f0a1d32..c45a8d55 100644 --- a/esp-wifi/src/timer/timer_esp32c6.rs +++ b/esp-wifi/src/timer/timer_esp32c6.rs @@ -23,10 +23,10 @@ pub fn setup_radio_isr() { // for some reason for this interrupt, mapping it to 0 doesn't deactivate it let interrupt_core0 = unsafe { &*peripherals::INTERRUPT_CORE0::PTR }; interrupt_core0 - .wifi_bb_intr_map + .wifi_bb_intr_map() .write(|w| w.wifi_bb_intr_map().variant(31)); interrupt_core0 - .modem_peri_timeout_intr_map + .modem_peri_timeout_intr_map() .write(|w| w.modem_peri_timeout_intr_map().variant(31)); #[cfg(feature = "ble")] diff --git a/esp-wifi/src/timer/xtensa.rs b/esp-wifi/src/timer/xtensa.rs index 51ab5505..265be821 100644 --- a/esp-wifi/src/timer/xtensa.rs +++ b/esp-wifi/src/timer/xtensa.rs @@ -1,6 +1,6 @@ -use atomic_polyfill::AtomicU32; use core::cell::RefCell; -use core::sync::atomic::Ordering; + +use portable_atomic::{AtomicU32, Ordering}; use critical_section::Mutex; diff --git a/esp-wifi/src/wifi/mod.rs b/esp-wifi/src/wifi/mod.rs index b65aa9d9..1922880b 100644 --- a/esp-wifi/src/wifi/mod.rs +++ b/esp-wifi/src/wifi/mod.rs @@ -3,15 +3,15 @@ pub(crate) mod os_adapter; pub(crate) mod state; -use atomic_polyfill::AtomicUsize; use core::ptr::addr_of; -use core::sync::atomic::Ordering; use core::time::Duration; use core::{ cell::{RefCell, RefMut}, mem::MaybeUninit, }; +use portable_atomic::{AtomicUsize, Ordering}; + use crate::common_adapter::*; use crate::esp_wifi_result; use crate::hal::macros::ram; diff --git a/esp-wifi/src/wifi/os_adapter_esp32c2.rs b/esp-wifi/src/wifi/os_adapter_esp32c2.rs index 646e658f..57da8e68 100644 --- a/esp-wifi/src/wifi/os_adapter_esp32c2.rs +++ b/esp-wifi/src/wifi/os_adapter_esp32c2.rs @@ -3,7 +3,7 @@ use crate::hal::{peripherals, riscv}; pub(crate) fn chip_ints_on(mask: u32) { unsafe { (*peripherals::INTERRUPT_CORE0::PTR) - .cpu_int_enable + .cpu_int_enable() .modify(|r, w| w.bits(r.bits() | mask)); } } @@ -11,7 +11,7 @@ pub(crate) fn chip_ints_on(mask: u32) { pub(crate) fn chip_ints_off(mask: u32) { unsafe { (*peripherals::INTERRUPT_CORE0::PTR) - .cpu_int_enable + .cpu_int_enable() .modify(|r, w| w.bits(r.bits() & !mask)); } } diff --git a/esp-wifi/src/wifi/os_adapter_esp32c3.rs b/esp-wifi/src/wifi/os_adapter_esp32c3.rs index 646e658f..57da8e68 100644 --- a/esp-wifi/src/wifi/os_adapter_esp32c3.rs +++ b/esp-wifi/src/wifi/os_adapter_esp32c3.rs @@ -3,7 +3,7 @@ use crate::hal::{peripherals, riscv}; pub(crate) fn chip_ints_on(mask: u32) { unsafe { (*peripherals::INTERRUPT_CORE0::PTR) - .cpu_int_enable + .cpu_int_enable() .modify(|r, w| w.bits(r.bits() | mask)); } } @@ -11,7 +11,7 @@ pub(crate) fn chip_ints_on(mask: u32) { pub(crate) fn chip_ints_off(mask: u32) { unsafe { (*peripherals::INTERRUPT_CORE0::PTR) - .cpu_int_enable + .cpu_int_enable() .modify(|r, w| w.bits(r.bits() & !mask)); } } diff --git a/esp-wifi/src/wifi/os_adapter_esp32c6.rs b/esp-wifi/src/wifi/os_adapter_esp32c6.rs index 06ae1d58..a4af07d2 100644 --- a/esp-wifi/src/wifi/os_adapter_esp32c6.rs +++ b/esp-wifi/src/wifi/os_adapter_esp32c6.rs @@ -3,7 +3,7 @@ use crate::hal::{peripherals, riscv}; pub(crate) fn chip_ints_on(mask: u32) { unsafe { (*peripherals::INTPRI::PTR) - .cpu_int_enable + .cpu_int_enable() .modify(|r, w| w.bits(r.bits() | mask)); } } @@ -11,7 +11,7 @@ pub(crate) fn chip_ints_on(mask: u32) { pub(crate) fn chip_ints_off(mask: u32) { unsafe { (*peripherals::INTPRI::PTR) - .cpu_int_enable + .cpu_int_enable() .modify(|r, w| w.bits(r.bits() & !mask)); } } diff --git a/esp-wifi/src/wifi/state.rs b/esp-wifi/src/wifi/state.rs index 17c2f8b5..5ef60794 100644 --- a/esp-wifi/src/wifi/state.rs +++ b/esp-wifi/src/wifi/state.rs @@ -1,11 +1,11 @@ use super::WifiEvent; -use atomic_enum::atomic_enum; use core::sync::atomic::Ordering; +use portable_atomic_enum::atomic_enum; /// Wifi interface state #[atomic_enum] -#[derive(PartialEq)] +#[derive(PartialEq, Debug)] #[cfg_attr(feature = "defmt", derive(defmt::Format))] pub enum WifiState { StaStarted, diff --git a/esp-wifi/src/wifi_interface.rs b/esp-wifi/src/wifi_interface.rs index 101c60c1..438eb51a 100644 --- a/esp-wifi/src/wifi_interface.rs +++ b/esp-wifi/src/wifi_interface.rs @@ -72,7 +72,7 @@ impl<'a, MODE: WifiDeviceMode> WifiStack<'a, MODE> { network_config: RefCell::new(ipv4::Configuration::Client( ipv4::ClientConfiguration::DHCP(ipv4::DHCPClientSettings { //FIXME: smoltcp currently doesn't have a way of giving a hostname through DHCP - hostname: Some("Espressif".into()), + hostname: Some(unwrap!("Espressif".try_into().ok())), }), )), ip_info: RefCell::new(None),