From 89606da85ea9d6f5877b5f8593b9b4cd666b7c89 Mon Sep 17 00:00:00 2001 From: ivmarkov Date: Fri, 12 Jan 2024 15:13:53 +0000 Subject: [PATCH] Fix embassy-time dependencies --- Cargo.toml | 8 +++++--- src/lib.rs | 4 ++-- src/nvs.rs | 1 + src/timer.rs | 16 ++++++++-------- src/wifi.rs | 1 + 5 files changed, 17 insertions(+), 13 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 7f5921e38f7..8306a578412 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -27,8 +27,8 @@ std = ["alloc", "log/std", "esp-idf-hal/std", "embedded-svc/std"] alloc = ["esp-idf-hal/alloc", "embedded-svc/alloc", "uncased/alloc"] nightly = ["embedded-svc/nightly", "esp-idf-hal/nightly"] experimental = ["embedded-svc/experimental"] -embassy-time-driver = ["embassy-time"] -embassy-time-isr-queue = ["embassy-sync", "embassy-time", "embassy-sync"] +embassy-time-driver = ["dep:embassy-time-driver"] +embassy-time-queue-driver = ["dep:embassy-time-queue-driver", "embassy-time", "embassy-sync"] # Propagated esp-idf-hal features embassy-sync = ["esp-idf-hal/embassy-sync", "dep:embassy-sync"] @@ -52,7 +52,9 @@ uncased = { version = "0.9.7", default-features = false } embedded-svc = { version = "0.26.4", default-features = false, features = ["asyncify"] } esp-idf-hal = { version = "0.42.5", default-features = false, features = ["esp-idf-sys"] } embassy-sync = { version = "0.5", optional = true } -embassy-time = { version = "0.2", optional = true, features = ["tick-hz-1_000_000"] } +embassy-time-driver = { version = "0.1", optional = true, features = ["tick-hz-1_000_000"] } +embassy-time-queue-driver = { version = "0.1", optional = true } +embassy-time = { version = "0.3", optional = true } embassy-futures = "0.1" [build-dependencies] diff --git a/src/lib.rs b/src/lib.rs index 59612625465..78513b37531 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -9,9 +9,9 @@ //! - `std`: Enable the use of std. Enabled by default. //! - `experimental`: Enable the use of experimental features. //! - `embassy-time-driver` -//! - `embassy-time-isr-queue` +//! - `embassy-time-queue-queue` #![cfg_attr(not(feature = "std"), no_std)] -#![feature(async_fn_in_trait)] +#![allow(async_fn_in_trait)] #![warn(clippy::large_futures)] #[cfg(feature = "alloc")] diff --git a/src/nvs.rs b/src/nvs.rs index 54e744d2157..417d915a410 100644 --- a/src/nvs.rs +++ b/src/nvs.rs @@ -268,6 +268,7 @@ pub type EspDefaultNvs = EspNvs; pub type EspCustomNvs = EspNvs; pub type EspEncryptedNvs = EspNvs; +#[allow(dead_code)] pub struct EspNvs(EspNvsPartition, nvs_handle_t); impl EspNvs { diff --git a/src/timer.rs b/src/timer.rs index ac0f5583d21..755004dbd35 100644 --- a/src/timer.rs +++ b/src/timer.rs @@ -349,13 +349,13 @@ mod asyncify { } pub mod embassy_time { - #[cfg(any(feature = "embassy-time-driver", feature = "embassy-time-isr-queue"))] + #[cfg(any(feature = "embassy-time-driver", feature = "embassy-time-queue-driver"))] pub mod driver { use core::cell::UnsafeCell; use heapless::Vec; - use ::embassy_time::driver::{AlarmHandle, Driver}; + use ::embassy_time_driver::{AlarmHandle, Driver}; use crate::hal::task::CriticalSection; @@ -483,10 +483,10 @@ pub mod embassy_time { unsafe { __INTERNAL_REFERENCE } } - ::embassy_time::time_driver_impl!(static DRIVER: EspDriver = EspDriver::new()); + ::embassy_time_driver::time_driver_impl!(static DRIVER: EspDriver = EspDriver::new()); } - #[cfg(feature = "embassy-time-isr-queue")] + #[cfg(feature = "embassy-time-queue-driver")] pub mod queue { #[cfg(esp_idf_esp_timer_supports_isr_dispatch_method)] use crate::hal::interrupt::embassy_sync::IsrRawMutex as RawMutexImpl; @@ -575,7 +575,7 @@ pub mod embassy_time { (unsafe { __INTERNAL_REFERENCE }, super::driver::link()) } - ::embassy_time::timer_queue_impl!(static QUEUE: Queue = Queue::new()); + ::embassy_time_queue_driver::timer_queue_impl!(static QUEUE: Queue = Queue::new()); mod generic_queue { use core::cell::RefCell; @@ -584,8 +584,8 @@ pub mod embassy_time { use embassy_sync::blocking_mutex::{raw::RawMutex, Mutex}; - use embassy_time::queue::TimerQueue; use embassy_time::Instant; + use embassy_time_queue_driver::TimerQueue; use heapless::sorted_linked_list::{LinkedIndexU8, Min, SortedLinkedList}; @@ -763,8 +763,8 @@ pub mod embassy_time { } impl TimerQueue for Queue { - fn schedule_wake(&'static self, at: Instant, waker: &Waker) { - Queue::schedule_wake(self, at, waker); + fn schedule_wake(&'static self, at: u64, waker: &Waker) { + Queue::schedule_wake(self, Instant::from_ticks(at), waker); } } } diff --git a/src/wifi.rs b/src/wifi.rs index eaf5a43dfd9..be025f31171 100644 --- a/src/wifi.rs +++ b/src/wifi.rs @@ -514,6 +514,7 @@ impl<'d> WifiDriver<'d> { let cfg = wifi_init_config_t { #[cfg(esp_idf_version_major = "4")] event_handler: Some(esp_event_send_internal), + #[allow(static_mut_ref)] osi_funcs: unsafe { &mut g_wifi_osi_funcs }, wpa_crypto_funcs: unsafe { g_wifi_default_wpa_crypto_funcs }, static_rx_buf_num: CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM as _,