Reduce use of the full futures crate.

This commit is contained in:
Dario Nieuwenhuis 2024-04-26 23:18:28 +02:00
parent 597315873d
commit 5732ee7ca9
54 changed files with 39 additions and 63 deletions

View File

@ -81,7 +81,6 @@ heapless = { version = "0.8", default-features = false }
as-slice = "0.2.1" as-slice = "0.2.1"
generic-array = { version = "0.14.4", default-features = false } generic-array = { version = "0.14.4", default-features = false }
stable_deref_trait = { version = "1.2.0", default-features = false } stable_deref_trait = { version = "1.2.0", default-features = false }
futures = { version = "0.3.17", default-features = false, features = [ "async-await" ] }
atomic-pool = "1.0" atomic-pool = "1.0"
embedded-nal-async = { version = "0.7.1" } embedded-nal-async = { version = "0.7.1" }
document-features = "0.2.7" document-features = "0.2.7"

View File

@ -25,13 +25,13 @@ pub mod udp;
use core::cell::RefCell; use core::cell::RefCell;
use core::future::{poll_fn, Future}; use core::future::{poll_fn, Future};
use core::pin::pin;
use core::task::{Context, Poll}; use core::task::{Context, Poll};
pub use embassy_net_driver as driver; pub use embassy_net_driver as driver;
use embassy_net_driver::{Driver, LinkState}; use embassy_net_driver::{Driver, LinkState};
use embassy_sync::waitqueue::WakerRegistration; use embassy_sync::waitqueue::WakerRegistration;
use embassy_time::{Instant, Timer}; use embassy_time::{Instant, Timer};
use futures::pin_mut;
#[allow(unused_imports)] #[allow(unused_imports)]
use heapless::Vec; use heapless::Vec;
#[cfg(feature = "igmp")] #[cfg(feature = "igmp")]
@ -905,8 +905,7 @@ impl<D: Driver> Inner<D> {
} }
if let Some(poll_at) = s.iface.poll_at(timestamp, &mut s.sockets) { if let Some(poll_at) = s.iface.poll_at(timestamp, &mut s.sockets) {
let t = Timer::at(instant_from_smoltcp(poll_at)); let t = pin!(Timer::at(instant_from_smoltcp(poll_at)));
pin_mut!(t);
if t.poll(cx).is_ready() { if t.poll(cx).is_ready() {
cx.waker().wake_by_ref(); cx.waker().wake_by_ref();
} }

View File

@ -96,7 +96,6 @@ cfg-if = "1.0.0"
cortex-m-rt = ">=0.6.15,<0.8" cortex-m-rt = ">=0.6.15,<0.8"
cortex-m = "0.7.6" cortex-m = "0.7.6"
critical-section = "1.1" critical-section = "1.1"
futures = { version = "0.3.17", default-features = false, features = ["async-await"] }
chrono = { version = "0.4", default-features = false, optional = true } chrono = { version = "0.4", default-features = false, optional = true }
embedded-io = { version = "0.6.1" } embedded-io = { version = "0.6.1" }
embedded-io-async = { version = "0.6.1" } embedded-io-async = { version = "0.6.1" }

View File

@ -35,7 +35,7 @@ aligned = "0.4.1"
bit_field = "0.10.2" bit_field = "0.10.2"
stm32-device-signature = { version = "0.3.3", features = ["stm32wb5x"] } stm32-device-signature = { version = "0.3.3", features = ["stm32wb5x"] }
stm32wb-hci = { version = "0.17.0", optional = true } stm32wb-hci = { version = "0.17.0", optional = true }
futures = { version = "0.3.17", default-features = false, features = ["async-await"] } futures-util = { version = "0.3.30", default-features = false }
bitflags = { version = "2.3.3", optional = true } bitflags = { version = "2.3.3", optional = true }
[features] [features]

View File

@ -5,7 +5,7 @@ use core::task::Poll;
use embassy_sync::blocking_mutex::raw::CriticalSectionRawMutex; use embassy_sync::blocking_mutex::raw::CriticalSectionRawMutex;
use embassy_sync::mutex::MutexGuard; use embassy_sync::mutex::MutexGuard;
use embassy_sync::signal::Signal; use embassy_sync::signal::Signal;
use futures::FutureExt; use futures_util::FutureExt;
use super::commands::MacCommand; use super::commands::MacCommand;
use super::event::MacEvent; use super::event::MacEvent;

View File

@ -67,7 +67,7 @@ defmt = { version = "0.3", optional = true }
log = { version = "0.4.14", optional = true } log = { version = "0.4.14", optional = true }
cortex-m-rt = ">=0.6.15,<0.8" cortex-m-rt = ">=0.6.15,<0.8"
cortex-m = "0.7.6" cortex-m = "0.7.6"
futures = { version = "0.3.17", default-features = false, features = ["async-await"] } futures-util = { version = "0.3.30", default-features = false }
rand_core = "0.6.3" rand_core = "0.6.3"
sdio-host = "0.5.0" sdio-host = "0.5.0"
critical-section = "1.1" critical-section = "1.1"

View File

@ -1,10 +1,11 @@
//! Generic SMI Ethernet PHY //! Generic SMI Ethernet PHY
use core::task::Context;
#[cfg(feature = "time")] #[cfg(feature = "time")]
use embassy_time::{Duration, Timer}; use embassy_time::{Duration, Timer};
use futures::task::Context;
#[cfg(feature = "time")] #[cfg(feature = "time")]
use futures::FutureExt; use futures_util::FutureExt;
use super::{StationManagement, PHY}; use super::{StationManagement, PHY};

View File

@ -338,10 +338,9 @@ pub(crate) fn clear_all_err() {
} }
pub(crate) async fn wait_ready() -> Result<(), Error> { pub(crate) async fn wait_ready() -> Result<(), Error> {
use core::future::poll_fn;
use core::task::Poll; use core::task::Poll;
use futures::future::poll_fn;
poll_fn(|cx| { poll_fn(|cx| {
WAKER.register(cx.waker()); WAKER.register(cx.waker());

View File

@ -191,7 +191,7 @@ impl Timeout {
fn with<R>(self, fut: impl Future<Output = Result<R, Error>>) -> impl Future<Output = Result<R, Error>> { fn with<R>(self, fut: impl Future<Output = Result<R, Error>>) -> impl Future<Output = Result<R, Error>> {
#[cfg(feature = "time")] #[cfg(feature = "time")]
{ {
use futures::FutureExt; use futures_util::FutureExt;
embassy_futures::select::select(embassy_time::Timer::at(self.deadline), fut).map(|r| match r { embassy_futures::select::select(embassy_time::Timer::at(self.deadline), fut).map(|r| match r {
embassy_futures::select::Either::First(_) => Err(Error::Timeout), embassy_futures::select::Either::First(_) => Err(Error::Timeout),

View File

@ -11,7 +11,7 @@ use embassy_embedded_hal::SetConfig;
use embassy_hal_internal::drop::OnDrop; use embassy_hal_internal::drop::OnDrop;
use embassy_hal_internal::PeripheralRef; use embassy_hal_internal::PeripheralRef;
use embassy_sync::waitqueue::AtomicWaker; use embassy_sync::waitqueue::AtomicWaker;
use futures::future::{select, Either}; use futures_util::future::{select, Either};
use crate::dma::ChannelAndRequest; use crate::dma::ChannelAndRequest;
use crate::gpio::{AFType, AnyPin, SealedPin}; use crate::gpio::{AFType, AnyPin, SealedPin};

View File

@ -5,7 +5,7 @@ use core::sync::atomic::{compiler_fence, Ordering};
use core::task::Poll; use core::task::Poll;
use embassy_embedded_hal::SetConfig; use embassy_embedded_hal::SetConfig;
use futures::future::{select, Either}; use futures_util::future::{select, Either};
use super::{clear_interrupt_flags, rdr, reconfigure, sr, BasicInstance, Config, ConfigError, Error, UartRx}; use super::{clear_interrupt_flags, rdr, reconfigure, sr, BasicInstance, Config, ConfigError, Error, UartRx};
use crate::dma::ReadableRingBuffer; use crate::dma::ReadableRingBuffer;

View File

@ -1,10 +1,10 @@
use core::future::{poll_fn, Future}; use core::future::{poll_fn, Future};
use core::pin::Pin; use core::pin::{pin, Pin};
use core::task::{Context, Poll}; use core::task::{Context, Poll};
use futures_util::future::{select, Either}; use futures_util::future::{select, Either};
use futures_util::stream::FusedStream; use futures_util::stream::FusedStream;
use futures_util::{pin_mut, Stream}; use futures_util::Stream;
use crate::{Duration, Instant}; use crate::{Duration, Instant};
@ -19,8 +19,7 @@ pub struct TimeoutError;
/// work on the future is stopped (`poll` is no longer called), the future is dropped and `Err(TimeoutError)` is returned. /// work on the future is stopped (`poll` is no longer called), the future is dropped and `Err(TimeoutError)` is returned.
pub async fn with_timeout<F: Future>(timeout: Duration, fut: F) -> Result<F::Output, TimeoutError> { pub async fn with_timeout<F: Future>(timeout: Duration, fut: F) -> Result<F::Output, TimeoutError> {
let timeout_fut = Timer::after(timeout); let timeout_fut = Timer::after(timeout);
pin_mut!(fut); match select(pin!(fut), timeout_fut).await {
match select(fut, timeout_fut).await {
Either::Left((r, _)) => Ok(r), Either::Left((r, _)) => Ok(r),
Either::Right(_) => Err(TimeoutError), Either::Right(_) => Err(TimeoutError),
} }
@ -32,8 +31,7 @@ pub async fn with_timeout<F: Future>(timeout: Duration, fut: F) -> Result<F::Out
/// work on the future is stopped (`poll` is no longer called), the future is dropped and `Err(TimeoutError)` is returned. /// work on the future is stopped (`poll` is no longer called), the future is dropped and `Err(TimeoutError)` is returned.
pub async fn with_deadline<F: Future>(at: Instant, fut: F) -> Result<F::Output, TimeoutError> { pub async fn with_deadline<F: Future>(at: Instant, fut: F) -> Result<F::Output, TimeoutError> {
let timeout_fut = Timer::at(at); let timeout_fut = Timer::at(at);
pin_mut!(fut); match select(pin!(fut), timeout_fut).await {
match select(fut, timeout_fut).await {
Either::Left((r, _)) => Ok(r), Either::Left((r, _)) => Ok(r),
Either::Right(_) => Err(TimeoutError), Either::Right(_) => Err(TimeoutError),
} }

View File

@ -16,7 +16,6 @@ target = "thumbv7em-none-eabi"
[dependencies] [dependencies]
critical-section = "1.1" critical-section = "1.1"
futures = { version = "0.3.17", default-features = false }
embassy-sync = { version = "0.5.0", path = "../embassy-sync" } embassy-sync = { version = "0.5.0", path = "../embassy-sync" }
embassy-usb-driver = {version = "0.1.0", path = "../embassy-usb-driver" } embassy-usb-driver = {version = "0.1.0", path = "../embassy-usb-driver" }

View File

@ -7,6 +7,7 @@
mod fmt; mod fmt;
use core::cell::UnsafeCell; use core::cell::UnsafeCell;
use core::future::poll_fn;
use core::marker::PhantomData; use core::marker::PhantomData;
use core::sync::atomic::{AtomicBool, AtomicU16, Ordering}; use core::sync::atomic::{AtomicBool, AtomicU16, Ordering};
use core::task::Poll; use core::task::Poll;
@ -16,7 +17,6 @@ use embassy_usb_driver::{
Bus as _, Direction, EndpointAddress, EndpointAllocError, EndpointError, EndpointIn, EndpointInfo, EndpointOut, Bus as _, Direction, EndpointAddress, EndpointAllocError, EndpointError, EndpointIn, EndpointInfo, EndpointOut,
EndpointType, Event, Unsupported, EndpointType, Event, Unsupported,
}; };
use futures::future::poll_fn;
pub mod otg_v1; pub mod otg_v1;

View File

@ -23,7 +23,6 @@ embassy-nrf = { version = "0.1.0", path = "../../embassy-nrf", features = ["nrf5
cortex-m = { version = "0.7.6", features = ["inline-asm", "critical-section-single-core"] } cortex-m = { version = "0.7.6", features = ["inline-asm", "critical-section-single-core"] }
cortex-m-rt = "0.7.0" cortex-m-rt = "0.7.0"
panic-probe = { version = "0.3" } panic-probe = { version = "0.3" }
futures = { version = "0.3.17", default-features = false, features = ["async-await"] }
rand = { version = "0.8.4", default-features = false } rand = { version = "0.8.4", default-features = false }
serde = { version = "1.0.136", default-features = false } serde = { version = "1.0.136", default-features = false }
rtos-trace = "0.1.3" rtos-trace = "0.1.3"

View File

@ -18,7 +18,6 @@ defmt-rtt = "0.4"
cortex-m = { version = "0.7.6", features = ["inline-asm", "critical-section-single-core"] } cortex-m = { version = "0.7.6", features = ["inline-asm", "critical-section-single-core"] }
cortex-m-rt = "0.7.0" cortex-m-rt = "0.7.0"
panic-probe = { version = "0.3", features = ["print-defmt"] } panic-probe = { version = "0.3", features = ["print-defmt"] }
futures = { version = "0.3.17", default-features = false, features = ["async-await"] }
[profile.release] [profile.release]
debug = 2 debug = 2

View File

@ -25,7 +25,6 @@ static_cell = { version = "2" }
cortex-m = { version = "0.7.6", features = ["inline-asm", "critical-section-single-core"] } cortex-m = { version = "0.7.6", features = ["inline-asm", "critical-section-single-core"] }
cortex-m-rt = "0.7.0" cortex-m-rt = "0.7.0"
panic-probe = { version = "0.3", features = ["print-defmt"] } panic-probe = { version = "0.3", features = ["print-defmt"] }
futures = { version = "0.3.17", default-features = false, features = ["async-await"] }
rand = { version = "0.8.4", default-features = false } rand = { version = "0.8.4", default-features = false }
embedded-storage = "0.3.1" embedded-storage = "0.3.1"
usbd-hid = "0.7.0" usbd-hid = "0.7.0"

View File

@ -61,5 +61,5 @@ async fn main(_spawner: Spawner) {
} }
}; };
futures::join!(button1, button2, button3, button4); embassy_futures::join::join4(button1, button2, button3, button4).await;
} }

View File

@ -21,7 +21,6 @@ static_cell = "2"
cortex-m = { version = "0.7.6", features = ["inline-asm", "critical-section-single-core"] } cortex-m = { version = "0.7.6", features = ["inline-asm", "critical-section-single-core"] }
cortex-m-rt = "0.7.0" cortex-m-rt = "0.7.0"
panic-probe = { version = "0.3", features = ["print-defmt"] } panic-probe = { version = "0.3", features = ["print-defmt"] }
futures = { version = "0.3.17", default-features = false, features = ["async-await"] }
rand = { version = "0.8.4", default-features = false } rand = { version = "0.8.4", default-features = false }
embedded-storage = "0.3.1" embedded-storage = "0.3.1"
usbd-hid = "0.7.0" usbd-hid = "0.7.0"

View File

@ -61,5 +61,5 @@ async fn main(_spawner: Spawner) {
} }
}; };
futures::join!(button1, button2, button3, button4); embassy_futures::join::join4(button1, button2, button3, button4).await;
} }

View File

@ -28,7 +28,6 @@ fixed-macro = "1.2"
cortex-m = { version = "0.7.6", features = ["inline-asm"] } cortex-m = { version = "0.7.6", features = ["inline-asm"] }
cortex-m-rt = "0.7.0" cortex-m-rt = "0.7.0"
panic-probe = { version = "0.3", features = ["print-defmt"] } panic-probe = { version = "0.3", features = ["print-defmt"] }
futures = { version = "0.3.17", default-features = false, features = ["async-await", "cfg-target-has-atomic", "unstable"] }
display-interface-spi = "0.4.1" display-interface-spi = "0.4.1"
embedded-graphics = "0.7.1" embedded-graphics = "0.7.1"
st7789 = "0.6.1" st7789 = "0.6.1"

View File

@ -18,7 +18,6 @@ cortex-m = { version = "0.7.6", features = ["critical-section-single-core"] }
cortex-m-rt = "0.7.0" cortex-m-rt = "0.7.0"
embedded-hal = "0.2.6" embedded-hal = "0.2.6"
panic-probe = { version = "0.3", features = ["print-defmt"] } panic-probe = { version = "0.3", features = ["print-defmt"] }
futures = { version = "0.3.17", default-features = false, features = ["async-await"] }
heapless = { version = "0.8", default-features = false } heapless = { version = "0.8", default-features = false }
[profile.release] [profile.release]

View File

@ -20,7 +20,6 @@ cortex-m = { version = "0.7.6", features = ["inline-asm", "critical-section-sing
cortex-m-rt = "0.7.0" cortex-m-rt = "0.7.0"
embedded-hal = "0.2.6" embedded-hal = "0.2.6"
panic-probe = { version = "0.3", features = ["print-defmt"] } panic-probe = { version = "0.3", features = ["print-defmt"] }
futures = { version = "0.3.17", default-features = false, features = ["async-await"] }
heapless = { version = "0.8", default-features = false } heapless = { version = "0.8", default-features = false }
nb = "1.0.0" nb = "1.0.0"
static_cell = "2.0.0" static_cell = "2.0.0"

View File

@ -18,7 +18,6 @@ cortex-m = { version = "0.7.6", features = ["inline-asm", "critical-section-sing
cortex-m-rt = "0.7.0" cortex-m-rt = "0.7.0"
embedded-hal = "0.2.6" embedded-hal = "0.2.6"
panic-probe = { version = "0.3", features = ["print-defmt"] } panic-probe = { version = "0.3", features = ["print-defmt"] }
futures = { version = "0.3.17", default-features = false, features = ["async-await"] }
heapless = { version = "0.8", default-features = false } heapless = { version = "0.8", default-features = false }
nb = "1.0.0" nb = "1.0.0"

View File

@ -20,7 +20,6 @@ cortex-m = { version = "0.7.6", features = ["inline-asm", "critical-section-sing
cortex-m-rt = "0.7.0" cortex-m-rt = "0.7.0"
embedded-hal = "0.2.6" embedded-hal = "0.2.6"
panic-probe = { version = "0.3", features = ["print-defmt"] } panic-probe = { version = "0.3", features = ["print-defmt"] }
futures = { version = "0.3.17", default-features = false, features = ["async-await"] }
heapless = { version = "0.8", default-features = false } heapless = { version = "0.8", default-features = false }
nb = "1.0.0" nb = "1.0.0"
embedded-storage = "0.3.1" embedded-storage = "0.3.1"

View File

@ -19,7 +19,6 @@ cortex-m = { version = "0.7.6", features = ["inline-asm", "critical-section-sing
cortex-m-rt = "0.7.0" cortex-m-rt = "0.7.0"
embedded-hal = "0.2.6" embedded-hal = "0.2.6"
panic-probe = { version = "0.3", features = ["print-defmt"] } panic-probe = { version = "0.3", features = ["print-defmt"] }
futures = { version = "0.3.17", default-features = false, features = ["async-await"] }
heapless = { version = "0.8", default-features = false } heapless = { version = "0.8", default-features = false }
nb = "1.0.0" nb = "1.0.0"
embedded-storage = "0.3.1" embedded-storage = "0.3.1"

View File

@ -12,6 +12,7 @@ embassy-executor = { version = "0.5.0", path = "../../embassy-executor", feature
embassy-time = { version = "0.3.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] } embassy-time = { version = "0.3.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] }
embassy-usb = { version = "0.2.0", path = "../../embassy-usb", features = ["defmt" ] } embassy-usb = { version = "0.2.0", path = "../../embassy-usb", features = ["defmt" ] }
embassy-net = { version = "0.4.0", path = "../../embassy-net", features = ["defmt", "tcp", "dhcpv4", "medium-ethernet", ] } embassy-net = { version = "0.4.0", path = "../../embassy-net", features = ["defmt", "tcp", "dhcpv4", "medium-ethernet", ] }
embassy-futures = { version = "0.1.0", path = "../../embassy-futures" }
defmt = "0.3" defmt = "0.3"
defmt-rtt = "0.4" defmt-rtt = "0.4"
@ -22,7 +23,7 @@ embedded-hal = "0.2.6"
embedded-io = { version = "0.6.0" } embedded-io = { version = "0.6.0" }
embedded-io-async = { version = "0.6.1" } embedded-io-async = { version = "0.6.1" }
panic-probe = { version = "0.3", features = ["print-defmt"] } panic-probe = { version = "0.3", features = ["print-defmt"] }
futures = { version = "0.3.17", default-features = false, features = ["async-await"] } futures-util = { version = "0.3.30", default-features = false }
heapless = { version = "0.8", default-features = false } heapless = { version = "0.8", default-features = false }
nb = "1.0.0" nb = "1.0.0"
embedded-storage = "0.3.1" embedded-storage = "0.3.1"

View File

@ -13,7 +13,7 @@ use embassy_stm32::i2c::I2c;
use embassy_stm32::time::Hertz; use embassy_stm32::time::Hertz;
use embassy_stm32::{bind_interrupts, i2c, peripherals}; use embassy_stm32::{bind_interrupts, i2c, peripherals};
use embassy_time::Instant; use embassy_time::Instant;
use futures::future::try_join3; use futures_util::future::try_join3;
use {defmt_rtt as _, panic_probe as _}; use {defmt_rtt as _, panic_probe as _};
const ADDRESS: u8 = 96; const ADDRESS: u8 = 96;

View File

@ -5,6 +5,7 @@ use core::sync::atomic::{AtomicBool, Ordering};
use defmt::*; use defmt::*;
use embassy_executor::Spawner; use embassy_executor::Spawner;
use embassy_futures::join::join;
use embassy_stm32::exti::ExtiInput; use embassy_stm32::exti::ExtiInput;
use embassy_stm32::gpio::Pull; use embassy_stm32::gpio::Pull;
use embassy_stm32::time::Hertz; use embassy_stm32::time::Hertz;
@ -13,7 +14,6 @@ use embassy_stm32::{bind_interrupts, peripherals, usb, Config};
use embassy_usb::class::hid::{HidReaderWriter, ReportId, RequestHandler, State}; use embassy_usb::class::hid::{HidReaderWriter, ReportId, RequestHandler, State};
use embassy_usb::control::OutResponse; use embassy_usb::control::OutResponse;
use embassy_usb::{Builder, Handler}; use embassy_usb::{Builder, Handler};
use futures::future::join;
use usbd_hid::descriptor::{KeyboardReport, SerializedDescriptor}; use usbd_hid::descriptor::{KeyboardReport, SerializedDescriptor};
use {defmt_rtt as _, panic_probe as _}; use {defmt_rtt as _, panic_probe as _};

View File

@ -3,6 +3,7 @@
use defmt::*; use defmt::*;
use embassy_executor::Spawner; use embassy_executor::Spawner;
use embassy_futures::join::join;
use embassy_stm32::time::Hertz; use embassy_stm32::time::Hertz;
use embassy_stm32::usb::Driver; use embassy_stm32::usb::Driver;
use embassy_stm32::{bind_interrupts, peripherals, usb, Config}; use embassy_stm32::{bind_interrupts, peripherals, usb, Config};
@ -10,7 +11,6 @@ use embassy_time::Timer;
use embassy_usb::class::hid::{HidWriter, ReportId, RequestHandler, State}; use embassy_usb::class::hid::{HidWriter, ReportId, RequestHandler, State};
use embassy_usb::control::OutResponse; use embassy_usb::control::OutResponse;
use embassy_usb::Builder; use embassy_usb::Builder;
use futures::future::join;
use usbd_hid::descriptor::{MouseReport, SerializedDescriptor}; use usbd_hid::descriptor::{MouseReport, SerializedDescriptor};
use {defmt_rtt as _, panic_probe as _}; use {defmt_rtt as _, panic_probe as _};

View File

@ -3,13 +3,13 @@
use defmt::{panic, *}; use defmt::{panic, *};
use embassy_executor::Spawner; use embassy_executor::Spawner;
use embassy_futures::join::join;
use embassy_stm32::time::Hertz; use embassy_stm32::time::Hertz;
use embassy_stm32::usb::{Driver, Instance}; use embassy_stm32::usb::{Driver, Instance};
use embassy_stm32::{bind_interrupts, peripherals, usb, Config}; use embassy_stm32::{bind_interrupts, peripherals, usb, Config};
use embassy_usb::class::cdc_acm::{CdcAcmClass, State}; use embassy_usb::class::cdc_acm::{CdcAcmClass, State};
use embassy_usb::driver::EndpointError; use embassy_usb::driver::EndpointError;
use embassy_usb::Builder; use embassy_usb::Builder;
use futures::future::join;
use {defmt_rtt as _, panic_probe as _}; use {defmt_rtt as _, panic_probe as _};
bind_interrupts!(struct Irqs { bind_interrupts!(struct Irqs {

View File

@ -13,6 +13,7 @@ embassy-time = { version = "0.3.0", path = "../../embassy-time", features = ["de
embassy-net = { version = "0.4.0", path = "../../embassy-net", features = ["defmt", "tcp", "dhcpv4", "medium-ethernet"] } embassy-net = { version = "0.4.0", path = "../../embassy-net", features = ["defmt", "tcp", "dhcpv4", "medium-ethernet"] }
embedded-io-async = { version = "0.6.1" } embedded-io-async = { version = "0.6.1" }
embassy-usb = { version = "0.2.0", path = "../../embassy-usb", features = ["defmt"] } embassy-usb = { version = "0.2.0", path = "../../embassy-usb", features = ["defmt"] }
embassy-futures = { version = "0.1.0", path = "../../embassy-futures" }
defmt = "0.3" defmt = "0.3"
defmt-rtt = "0.4" defmt-rtt = "0.4"
@ -21,7 +22,6 @@ cortex-m = { version = "0.7.6", features = ["inline-asm", "critical-section-sing
cortex-m-rt = "0.7.0" cortex-m-rt = "0.7.0"
embedded-hal = "0.2.6" embedded-hal = "0.2.6"
panic-probe = { version = "0.3", features = ["print-defmt"] } panic-probe = { version = "0.3", features = ["print-defmt"] }
futures = { version = "0.3.17", default-features = false, features = ["async-await"] }
heapless = { version = "0.8", default-features = false } heapless = { version = "0.8", default-features = false }
nb = "1.0.0" nb = "1.0.0"
rand_core = "0.6.3" rand_core = "0.6.3"

View File

@ -3,13 +3,13 @@
use defmt::{panic, *}; use defmt::{panic, *};
use embassy_executor::Spawner; use embassy_executor::Spawner;
use embassy_futures::join::join;
use embassy_stm32::time::Hertz; use embassy_stm32::time::Hertz;
use embassy_stm32::usb::{Driver, Instance}; use embassy_stm32::usb::{Driver, Instance};
use embassy_stm32::{bind_interrupts, peripherals, usb, Config}; use embassy_stm32::{bind_interrupts, peripherals, usb, Config};
use embassy_usb::class::cdc_acm::{CdcAcmClass, State}; use embassy_usb::class::cdc_acm::{CdcAcmClass, State};
use embassy_usb::driver::EndpointError; use embassy_usb::driver::EndpointError;
use embassy_usb::Builder; use embassy_usb::Builder;
use futures::future::join;
use {defmt_rtt as _, panic_probe as _}; use {defmt_rtt as _, panic_probe as _};
bind_interrupts!(struct Irqs { bind_interrupts!(struct Irqs {

View File

@ -20,7 +20,6 @@ cortex-m = { version = "0.7.6", features = ["inline-asm", "critical-section-sing
cortex-m-rt = "0.7.0" cortex-m-rt = "0.7.0"
embedded-hal = "0.2.6" embedded-hal = "0.2.6"
panic-probe = { version = "0.3", features = ["print-defmt"] } panic-probe = { version = "0.3", features = ["print-defmt"] }
futures = { version = "0.3.17", default-features = false, features = ["async-await"] }
heapless = { version = "0.8", default-features = false } heapless = { version = "0.8", default-features = false }
portable-atomic = { version = "1.5", features = ["unsafe-assume-single-core"] } portable-atomic = { version = "1.5", features = ["unsafe-assume-single-core"] }

View File

@ -22,7 +22,6 @@ cortex-m-rt = "0.7.0"
embedded-hal = "0.2.6" embedded-hal = "0.2.6"
embedded-can = { version = "0.4" } embedded-can = { version = "0.4" }
panic-probe = { version = "0.3", features = ["print-defmt"] } panic-probe = { version = "0.3", features = ["print-defmt"] }
futures = { version = "0.3.17", default-features = false, features = ["async-await"] }
heapless = { version = "0.8", default-features = false } heapless = { version = "0.8", default-features = false }
static_cell = "2.0.0" static_cell = "2.0.0"

View File

@ -3,13 +3,13 @@
use defmt::{panic, *}; use defmt::{panic, *};
use embassy_executor::Spawner; use embassy_executor::Spawner;
use embassy_futures::join::join;
use embassy_stm32::time::Hertz; use embassy_stm32::time::Hertz;
use embassy_stm32::usb::{self, Driver, Instance}; use embassy_stm32::usb::{self, Driver, Instance};
use embassy_stm32::{bind_interrupts, peripherals, Config}; use embassy_stm32::{bind_interrupts, peripherals, Config};
use embassy_usb::class::cdc_acm::{CdcAcmClass, State}; use embassy_usb::class::cdc_acm::{CdcAcmClass, State};
use embassy_usb::driver::EndpointError; use embassy_usb::driver::EndpointError;
use embassy_usb::Builder; use embassy_usb::Builder;
use futures::future::join;
use {defmt_rtt as _, panic_probe as _}; use {defmt_rtt as _, panic_probe as _};
bind_interrupts!(struct Irqs { bind_interrupts!(struct Irqs {

View File

@ -12,6 +12,7 @@ embassy-executor = { version = "0.5.0", path = "../../embassy-executor", feature
embassy-time = { version = "0.3.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] } embassy-time = { version = "0.3.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] }
embassy-net = { version = "0.4.0", path = "../../embassy-net", features = ["defmt", "tcp", "dhcpv4", "medium-ethernet", "proto-ipv6"] } embassy-net = { version = "0.4.0", path = "../../embassy-net", features = ["defmt", "tcp", "dhcpv4", "medium-ethernet", "proto-ipv6"] }
embassy-usb = { version = "0.2.0", path = "../../embassy-usb", features = ["defmt"] } embassy-usb = { version = "0.2.0", path = "../../embassy-usb", features = ["defmt"] }
embassy-futures = { version = "0.1.0", path = "../../embassy-futures" }
defmt = "0.3" defmt = "0.3"
defmt-rtt = "0.4" defmt-rtt = "0.4"
@ -24,7 +25,6 @@ embedded-hal-async = { version = "1.0" }
embedded-io-async = { version = "0.6.1" } embedded-io-async = { version = "0.6.1" }
embedded-nal-async = { version = "0.7.1" } embedded-nal-async = { version = "0.7.1" }
panic-probe = { version = "0.3", features = ["print-defmt"] } panic-probe = { version = "0.3", features = ["print-defmt"] }
futures = { version = "0.3.17", default-features = false, features = ["async-await"] }
heapless = { version = "0.8", default-features = false } heapless = { version = "0.8", default-features = false }
rand_core = "0.6.3" rand_core = "0.6.3"
critical-section = "1.1" critical-section = "1.1"

View File

@ -3,13 +3,13 @@
use defmt::{panic, *}; use defmt::{panic, *};
use embassy_executor::Spawner; use embassy_executor::Spawner;
use embassy_futures::join::join;
use embassy_stm32::time::Hertz; use embassy_stm32::time::Hertz;
use embassy_stm32::usb::{Driver, Instance}; use embassy_stm32::usb::{Driver, Instance};
use embassy_stm32::{bind_interrupts, peripherals, usb, Config}; use embassy_stm32::{bind_interrupts, peripherals, usb, Config};
use embassy_usb::class::cdc_acm::{CdcAcmClass, State}; use embassy_usb::class::cdc_acm::{CdcAcmClass, State};
use embassy_usb::driver::EndpointError; use embassy_usb::driver::EndpointError;
use embassy_usb::Builder; use embassy_usb::Builder;
use futures::future::join;
use {defmt_rtt as _, panic_probe as _}; use {defmt_rtt as _, panic_probe as _};
bind_interrupts!(struct Irqs { bind_interrupts!(struct Irqs {

View File

@ -12,6 +12,7 @@ embassy-executor = { version = "0.5.0", path = "../../embassy-executor", feature
embassy-time = { version = "0.3.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] } embassy-time = { version = "0.3.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] }
embassy-net = { version = "0.4.0", path = "../../embassy-net", features = ["defmt", "tcp", "dhcpv4", "medium-ethernet", "proto-ipv6", "dns"] } embassy-net = { version = "0.4.0", path = "../../embassy-net", features = ["defmt", "tcp", "dhcpv4", "medium-ethernet", "proto-ipv6", "dns"] }
embassy-usb = { version = "0.2.0", path = "../../embassy-usb", features = ["defmt"] } embassy-usb = { version = "0.2.0", path = "../../embassy-usb", features = ["defmt"] }
embassy-futures = { version = "0.1.0", path = "../../embassy-futures" }
defmt = "0.3" defmt = "0.3"
defmt-rtt = "0.4" defmt-rtt = "0.4"
@ -24,7 +25,6 @@ embedded-hal-async = { version = "1.0" }
embedded-nal-async = { version = "0.7.1" } embedded-nal-async = { version = "0.7.1" }
embedded-io-async = { version = "0.6.1" } embedded-io-async = { version = "0.6.1" }
panic-probe = { version = "0.3", features = ["print-defmt"] } panic-probe = { version = "0.3", features = ["print-defmt"] }
futures = { version = "0.3.17", default-features = false, features = ["async-await"] }
heapless = { version = "0.8", default-features = false } heapless = { version = "0.8", default-features = false }
rand_core = "0.6.3" rand_core = "0.6.3"
critical-section = "1.1" critical-section = "1.1"

View File

@ -3,12 +3,12 @@
use defmt::{panic, *}; use defmt::{panic, *};
use embassy_executor::Spawner; use embassy_executor::Spawner;
use embassy_futures::join::join;
use embassy_stm32::usb::{Driver, Instance}; use embassy_stm32::usb::{Driver, Instance};
use embassy_stm32::{bind_interrupts, peripherals, usb, Config}; use embassy_stm32::{bind_interrupts, peripherals, usb, Config};
use embassy_usb::class::cdc_acm::{CdcAcmClass, State}; use embassy_usb::class::cdc_acm::{CdcAcmClass, State};
use embassy_usb::driver::EndpointError; use embassy_usb::driver::EndpointError;
use embassy_usb::Builder; use embassy_usb::Builder;
use futures::future::join;
use {defmt_rtt as _, panic_probe as _}; use {defmt_rtt as _, panic_probe as _};
bind_interrupts!(struct Irqs { bind_interrupts!(struct Irqs {

View File

@ -21,7 +21,6 @@ embedded-io-async = { version = "0.6.1" }
cortex-m = { version = "0.7.6", features = ["inline-asm", "critical-section-single-core"] } cortex-m = { version = "0.7.6", features = ["inline-asm", "critical-section-single-core"] }
cortex-m-rt = "0.7.0" cortex-m-rt = "0.7.0"
panic-probe = { version = "0.3", features = ["print-defmt"] } panic-probe = { version = "0.3", features = ["print-defmt"] }
futures = { version = "0.3.17", default-features = false, features = ["async-await"] }
heapless = { version = "0.8", default-features = false } heapless = { version = "0.8", default-features = false }
embedded-hal = "0.2.6" embedded-hal = "0.2.6"
static_cell = { version = "2" } static_cell = { version = "2" }

View File

@ -10,6 +10,7 @@ embassy-executor = { version = "0.5.0", path = "../../embassy-executor", feature
embassy-time = { version = "0.3.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] } embassy-time = { version = "0.3.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] }
embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = [ "defmt", "stm32l151cb-a", "time-driver-any", "memory-x"] } embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = [ "defmt", "stm32l151cb-a", "time-driver-any", "memory-x"] }
embassy-usb = { version = "0.2.0", path = "../../embassy-usb", features = ["defmt"] } embassy-usb = { version = "0.2.0", path = "../../embassy-usb", features = ["defmt"] }
embassy-futures = { version = "0.1.0", path = "../../embassy-futures" }
defmt = "0.3" defmt = "0.3"
defmt-rtt = "0.4" defmt-rtt = "0.4"
@ -18,7 +19,6 @@ cortex-m = { version = "0.7.6", features = ["inline-asm", "critical-section-sing
cortex-m-rt = "0.7.0" cortex-m-rt = "0.7.0"
embedded-hal = "0.2.6" embedded-hal = "0.2.6"
panic-probe = { version = "0.3", features = ["print-defmt"] } panic-probe = { version = "0.3", features = ["print-defmt"] }
futures = { version = "0.3.17", default-features = false, features = ["async-await"] }
heapless = { version = "0.8", default-features = false } heapless = { version = "0.8", default-features = false }
embedded-storage = "0.3.1" embedded-storage = "0.3.1"

View File

@ -3,12 +3,12 @@
use defmt::{panic, *}; use defmt::{panic, *};
use embassy_executor::Spawner; use embassy_executor::Spawner;
use embassy_futures::join::join;
use embassy_stm32::usb::{self, Driver, Instance}; use embassy_stm32::usb::{self, Driver, Instance};
use embassy_stm32::{bind_interrupts, peripherals}; use embassy_stm32::{bind_interrupts, peripherals};
use embassy_usb::class::cdc_acm::{CdcAcmClass, State}; use embassy_usb::class::cdc_acm::{CdcAcmClass, State};
use embassy_usb::driver::EndpointError; use embassy_usb::driver::EndpointError;
use embassy_usb::Builder; use embassy_usb::Builder;
use futures::future::join;
use {defmt_rtt as _, panic_probe as _}; use {defmt_rtt as _, panic_probe as _};
bind_interrupts!(struct Irqs { bind_interrupts!(struct Irqs {

View File

@ -28,7 +28,6 @@ embedded-hal-1 = { package = "embedded-hal", version = "1.0" }
embedded-hal-async = { version = "1.0" } embedded-hal-async = { version = "1.0" }
embedded-hal-bus = { version = "0.1", features = ["async"] } embedded-hal-bus = { version = "0.1", features = ["async"] }
panic-probe = { version = "0.3", features = ["print-defmt"] } panic-probe = { version = "0.3", features = ["print-defmt"] }
futures = { version = "0.3.17", default-features = false, features = ["async-await"] }
heapless = { version = "0.8", default-features = false } heapless = { version = "0.8", default-features = false }
chrono = { version = "^0.4", default-features = false } chrono = { version = "^0.4", default-features = false }
rand = { version = "0.8.5", default-features = false } rand = { version = "0.8.5", default-features = false }

View File

@ -4,12 +4,12 @@
use defmt::{panic, *}; use defmt::{panic, *};
use defmt_rtt as _; // global logger use defmt_rtt as _; // global logger
use embassy_executor::Spawner; use embassy_executor::Spawner;
use embassy_futures::join::join;
use embassy_stm32::usb::{Driver, Instance}; use embassy_stm32::usb::{Driver, Instance};
use embassy_stm32::{bind_interrupts, peripherals, usb, Config}; use embassy_stm32::{bind_interrupts, peripherals, usb, Config};
use embassy_usb::class::cdc_acm::{CdcAcmClass, State}; use embassy_usb::class::cdc_acm::{CdcAcmClass, State};
use embassy_usb::driver::EndpointError; use embassy_usb::driver::EndpointError;
use embassy_usb::Builder; use embassy_usb::Builder;
use futures::future::join;
use panic_probe as _; use panic_probe as _;
bind_interrupts!(struct Irqs { bind_interrupts!(struct Irqs {

View File

@ -22,7 +22,6 @@ panic-probe = { version = "0.3", features = ["print-defmt"] }
cortex-m = { version = "0.7.6", features = ["inline-asm", "critical-section-single-core"] } cortex-m = { version = "0.7.6", features = ["inline-asm", "critical-section-single-core"] }
cortex-m-rt = "0.7.0" cortex-m-rt = "0.7.0"
embedded-hal = "0.2.6" embedded-hal = "0.2.6"
futures = { version = "0.3.17", default-features = false, features = ["async-await"] }
heapless = { version = "0.8", default-features = false } heapless = { version = "0.8", default-features = false }
rand_core = { version = "0.6.3", default-features = false } rand_core = { version = "0.6.3", default-features = false }
embedded-io-async = { version = "0.6.1" } embedded-io-async = { version = "0.6.1" }

View File

@ -11,6 +11,7 @@ embassy-sync = { version = "0.5.0", path = "../../embassy-sync", features = ["de
embassy-executor = { version = "0.5.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt", "integrated-timers"] } embassy-executor = { version = "0.5.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt", "integrated-timers"] }
embassy-time = { version = "0.3.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] } embassy-time = { version = "0.3.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] }
embassy-usb = { version = "0.2.0", path = "../../embassy-usb", default-features = false, features = ["defmt"] } embassy-usb = { version = "0.2.0", path = "../../embassy-usb", default-features = false, features = ["defmt"] }
embassy-futures = { version = "0.1.0", path = "../../embassy-futures" }
defmt = "0.3" defmt = "0.3"
defmt-rtt = "0.4" defmt-rtt = "0.4"
@ -19,7 +20,6 @@ cortex-m = { version = "0.7.6", features = ["critical-section-single-core"] }
cortex-m-rt = "0.7.0" cortex-m-rt = "0.7.0"
embedded-hal = "0.2.6" embedded-hal = "0.2.6"
panic-probe = { version = "0.3", features = ["print-defmt"] } panic-probe = { version = "0.3", features = ["print-defmt"] }
futures = { version = "0.3.17", default-features = false, features = ["async-await"] }
heapless = { version = "0.8", default-features = false } heapless = { version = "0.8", default-features = false }
micromath = "2.0.0" micromath = "2.0.0"

View File

@ -4,12 +4,12 @@
use defmt::{panic, *}; use defmt::{panic, *};
use defmt_rtt as _; // global logger use defmt_rtt as _; // global logger
use embassy_executor::Spawner; use embassy_executor::Spawner;
use embassy_futures::join::join;
use embassy_stm32::usb::{Driver, Instance}; use embassy_stm32::usb::{Driver, Instance};
use embassy_stm32::{bind_interrupts, peripherals, usb, Config}; use embassy_stm32::{bind_interrupts, peripherals, usb, Config};
use embassy_usb::class::cdc_acm::{CdcAcmClass, State}; use embassy_usb::class::cdc_acm::{CdcAcmClass, State};
use embassy_usb::driver::EndpointError; use embassy_usb::driver::EndpointError;
use embassy_usb::Builder; use embassy_usb::Builder;
use futures::future::join;
use panic_probe as _; use panic_probe as _;
bind_interrupts!(struct Irqs { bind_interrupts!(struct Irqs {

View File

@ -11,6 +11,7 @@ embassy-sync = { version = "0.5.0", path = "../../embassy-sync", features = ["de
embassy-executor = { version = "0.5.0", path = "../../embassy-executor", features = ["task-arena-size-32768", "arch-cortex-m", "executor-thread", "defmt", "integrated-timers"] } embassy-executor = { version = "0.5.0", path = "../../embassy-executor", features = ["task-arena-size-32768", "arch-cortex-m", "executor-thread", "defmt", "integrated-timers"] }
embassy-time = { version = "0.3.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] } embassy-time = { version = "0.3.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] }
embassy-usb = { version = "0.2.0", path = "../../embassy-usb", features = ["defmt"] } embassy-usb = { version = "0.2.0", path = "../../embassy-usb", features = ["defmt"] }
embassy-futures = { version = "0.1.0", path = "../../embassy-futures" }
defmt = "0.3" defmt = "0.3"
defmt-rtt = "0.4" defmt-rtt = "0.4"
@ -19,7 +20,6 @@ cortex-m = { version = "0.7.6", features = ["inline-asm", "critical-section-sing
cortex-m-rt = "0.7.0" cortex-m-rt = "0.7.0"
embedded-hal = "0.2.6" embedded-hal = "0.2.6"
panic-probe = { version = "0.3", features = ["print-defmt"] } panic-probe = { version = "0.3", features = ["print-defmt"] }
futures = { version = "0.3.17", default-features = false, features = ["async-await"] }
heapless = { version = "0.8", default-features = false } heapless = { version = "0.8", default-features = false }
micromath = "2.0.0" micromath = "2.0.0"

View File

@ -4,12 +4,12 @@
use defmt::{panic, *}; use defmt::{panic, *};
use defmt_rtt as _; // global logger use defmt_rtt as _; // global logger
use embassy_executor::Spawner; use embassy_executor::Spawner;
use embassy_futures::join::join;
use embassy_stm32::usb::{Driver, Instance}; use embassy_stm32::usb::{Driver, Instance};
use embassy_stm32::{bind_interrupts, peripherals, usb, Config}; use embassy_stm32::{bind_interrupts, peripherals, usb, Config};
use embassy_usb::class::cdc_acm::{CdcAcmClass, State}; use embassy_usb::class::cdc_acm::{CdcAcmClass, State};
use embassy_usb::driver::EndpointError; use embassy_usb::driver::EndpointError;
use embassy_usb::Builder; use embassy_usb::Builder;
use futures::future::join;
use panic_probe as _; use panic_probe as _;
bind_interrupts!(struct Irqs { bind_interrupts!(struct Irqs {

View File

@ -20,7 +20,6 @@ cortex-m = { version = "0.7.6", features = ["inline-asm", "critical-section-sing
cortex-m-rt = "0.7.0" cortex-m-rt = "0.7.0"
embedded-hal = "0.2.6" embedded-hal = "0.2.6"
panic-probe = { version = "0.3", features = ["print-defmt"] } panic-probe = { version = "0.3", features = ["print-defmt"] }
futures = { version = "0.3.17", default-features = false, features = ["async-await"] }
heapless = { version = "0.8", default-features = false } heapless = { version = "0.8", default-features = false }
static_cell = "2" static_cell = "2"

View File

@ -18,7 +18,6 @@ cortex-m = { version = "0.7.6", features = ["inline-asm", "critical-section-sing
cortex-m-rt = "0.7.0" cortex-m-rt = "0.7.0"
embedded-hal = "0.2.6" embedded-hal = "0.2.6"
panic-probe = { version = "0.3", features = ["print-defmt"] } panic-probe = { version = "0.3", features = ["print-defmt"] }
futures = { version = "0.3.17", default-features = false, features = ["async-await"] }
heapless = { version = "0.8", default-features = false } heapless = { version = "0.8", default-features = false }
static_cell = "2" static_cell = "2"

View File

@ -20,7 +20,6 @@ cortex-m-rt = "0.7.0"
embedded-hal = "0.2.6" embedded-hal = "0.2.6"
embedded-storage = "0.3.1" embedded-storage = "0.3.1"
panic-probe = { version = "0.3", features = ["print-defmt"] } panic-probe = { version = "0.3", features = ["print-defmt"] }
futures = { version = "0.3.17", default-features = false, features = ["async-await"] }
heapless = { version = "0.8", default-features = false } heapless = { version = "0.8", default-features = false }
chrono = { version = "^0.4", default-features = false } chrono = { version = "^0.4", default-features = false }

View File

@ -29,7 +29,6 @@ embedded-hal-1 = { package = "embedded-hal", version = "1.0" }
embedded-hal-async = { version = "1.0" } embedded-hal-async = { version = "1.0" }
embedded-hal-bus = { version = "0.1", features = ["async"] } embedded-hal-bus = { version = "0.1", features = ["async"] }
panic-probe = { version = "0.3.0", features = ["print-defmt"] } panic-probe = { version = "0.3.0", features = ["print-defmt"] }
futures = { version = "0.3.17", default-features = false, features = ["async-await"] }
embedded-io-async = { version = "0.6.1" } embedded-io-async = { version = "0.6.1" }
embedded-storage = { version = "0.3" } embedded-storage = { version = "0.3" }
static_cell = "2" static_cell = "2"