aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDario Nieuwenhuis <[email protected]>2025-12-19 12:41:25 +0100
committerGitHub <[email protected]>2025-12-19 12:41:25 +0100
commit14efaf71d76ad0af569522ee0c4082d473fdede7 (patch)
treeee9f4352e70815e97e424bb534c1c096242b9af0
parent3214021ed5ae17b96ac006c0f460e222502e411d (diff)
parent62ed44f99af9e33d689c8308149f8f992176895f (diff)
Merge pull request #4745 from embassy-rs/io07
Update to embedded-io 0.7
-rw-r--r--cyw43/Cargo.toml6
-rw-r--r--cyw43/src/bluetooth.rs8
-rw-r--r--embassy-imxrt/Cargo.toml4
-rw-r--r--embassy-mcxa/Cargo.toml4
-rw-r--r--embassy-mcxa/src/lpuart/mod.rs21
-rw-r--r--embassy-mspm0/Cargo.toml4
-rw-r--r--embassy-mspm0/src/uart/buffered.rs4
-rw-r--r--embassy-net-nrf91/Cargo.toml2
-rw-r--r--embassy-net-ppp/Cargo.toml2
-rw-r--r--embassy-net/Cargo.toml4
-rw-r--r--embassy-net/src/tcp.rs16
-rw-r--r--embassy-nrf/Cargo.toml4
-rw-r--r--embassy-nrf/src/buffered_uarte/v1.rs9
-rw-r--r--embassy-nrf/src/buffered_uarte/v2.rs8
-rw-r--r--embassy-nrf/src/uarte.rs20
-rw-r--r--embassy-nxp/Cargo.toml2
-rw-r--r--embassy-nxp/src/usart/lpc55.rs9
-rw-r--r--embassy-rp/Cargo.toml4
-rw-r--r--embassy-rp/src/pio_programs/uart.rs4
-rw-r--r--embassy-rp/src/uart/mod.rs8
-rw-r--r--embassy-stm32/Cargo.toml6
-rw-r--r--embassy-sync/Cargo.toml2
-rw-r--r--embassy-usb-driver/Cargo.toml1
-rw-r--r--embassy-usb-driver/src/lib.rs1
-rw-r--r--embassy-usb/Cargo.toml2
-rw-r--r--embassy-usb/src/class/cdc_acm.rs51
-rw-r--r--examples/mcxa/Cargo.toml2
-rw-r--r--examples/mspm0g3507/Cargo.toml2
-rw-r--r--examples/nrf52840/Cargo.toml4
-rw-r--r--examples/nrf5340/Cargo.toml2
-rw-r--r--examples/nrf54l15/Cargo.toml4
-rw-r--r--examples/nrf54lm20/Cargo.toml4
-rw-r--r--examples/nrf9160/Cargo.toml4
-rw-r--r--examples/rp/Cargo.toml4
-rw-r--r--examples/rp235x/Cargo.toml2
-rw-r--r--examples/std/Cargo.toml4
-rw-r--r--examples/stm32f4/Cargo.toml4
-rw-r--r--examples/stm32f7/Cargo.toml2
-rw-r--r--examples/stm32g0/Cargo.toml2
-rw-r--r--examples/stm32h5/Cargo.toml4
-rw-r--r--examples/stm32h7/Cargo.toml4
-rw-r--r--examples/stm32h723/Cargo.toml4
-rw-r--r--examples/stm32h742/Cargo.toml2
-rw-r--r--examples/stm32h755cm4/Cargo.toml4
-rw-r--r--examples/stm32h755cm7/Cargo.toml4
-rw-r--r--examples/stm32h7b0/Cargo.toml4
-rw-r--r--examples/stm32h7rs/Cargo.toml4
-rw-r--r--examples/stm32l0/Cargo.toml4
-rw-r--r--examples/stm32l4/Cargo.toml4
-rw-r--r--examples/stm32l5/Cargo.toml2
-rw-r--r--examples/stm32n6/Cargo.toml2
-rw-r--r--examples/stm32wle5/Cargo.toml2
-rw-r--r--tests/mspm0/Cargo.toml4
-rw-r--r--tests/nrf/Cargo.toml2
-rw-r--r--tests/rp/Cargo.toml2
55 files changed, 223 insertions, 75 deletions
diff --git a/cyw43/Cargo.toml b/cyw43/Cargo.toml
index 6d7647697..c4f5c0ebd 100644
--- a/cyw43/Cargo.toml
+++ b/cyw43/Cargo.toml
@@ -10,7 +10,7 @@ repository = "https://github.com/embassy-rs/embassy"
10documentation = "https://docs.embassy.dev/cyw43" 10documentation = "https://docs.embassy.dev/cyw43"
11 11
12[features] 12[features]
13defmt = ["dep:defmt", "heapless/defmt-03", "embassy-time/defmt", "bt-hci?/defmt", "embedded-io-async?/defmt-03"] 13defmt = ["dep:defmt", "heapless/defmt-03", "embassy-time/defmt", "bt-hci?/defmt", "embedded-io-async?/defmt"]
14log = ["dep:log"] 14log = ["dep:log"]
15bluetooth = ["dep:bt-hci", "dep:embedded-io-async"] 15bluetooth = ["dep:bt-hci", "dep:embedded-io-async"]
16 16
@@ -35,8 +35,8 @@ num_enum = { version = "0.5.7", default-features = false }
35heapless = "0.8.0" 35heapless = "0.8.0"
36 36
37# Bluetooth deps 37# Bluetooth deps
38embedded-io-async = { version = "0.6.0", optional = true } 38embedded-io-async = { version = "0.7.0", optional = true }
39bt-hci = { version = "0.6.0", optional = true } 39bt-hci = { git = "https://github.com/embassy-rs/bt-hci", rev = "51791fd4d422449dd0eca5ddead32886101215f7", optional = true }
40 40
41[package.metadata.embassy] 41[package.metadata.embassy]
42build = [ 42build = [
diff --git a/cyw43/src/bluetooth.rs b/cyw43/src/bluetooth.rs
index 332b7048d..256451fae 100644
--- a/cyw43/src/bluetooth.rs
+++ b/cyw43/src/bluetooth.rs
@@ -490,6 +490,14 @@ impl From<FromHciBytesError> for Error {
490 } 490 }
491} 491}
492 492
493impl core::fmt::Display for Error {
494 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
495 core::fmt::Debug::fmt(self, f)
496 }
497}
498
499impl core::error::Error for Error {}
500
493impl<'d> embedded_io_async::ErrorType for BtDriver<'d> { 501impl<'d> embedded_io_async::ErrorType for BtDriver<'d> {
494 type Error = Error; 502 type Error = Error;
495} 503}
diff --git a/embassy-imxrt/Cargo.toml b/embassy-imxrt/Cargo.toml
index 81377579b..5ffa054f1 100644
--- a/embassy-imxrt/Cargo.toml
+++ b/embassy-imxrt/Cargo.toml
@@ -85,8 +85,8 @@ cfg-if = "1.0.0"
85cortex-m-rt = ">=0.7.3,<0.8" 85cortex-m-rt = ">=0.7.3,<0.8"
86cortex-m = "0.7.6" 86cortex-m = "0.7.6"
87critical-section = "1.1" 87critical-section = "1.1"
88embedded-io = { version = "0.6.1" } 88embedded-io = { version = "0.7.1" }
89embedded-io-async = { version = "0.6.1" } 89embedded-io-async = { version = "0.7.0" }
90fixed = "1.23.1" 90fixed = "1.23.1"
91 91
92rand-core-06 = { package = "rand_core", version = "0.6" } 92rand-core-06 = { package = "rand_core", version = "0.6" }
diff --git a/embassy-mcxa/Cargo.toml b/embassy-mcxa/Cargo.toml
index 76ce59f5a..0d9663879 100644
--- a/embassy-mcxa/Cargo.toml
+++ b/embassy-mcxa/Cargo.toml
@@ -36,8 +36,8 @@ embedded-hal-1 = { package = "embedded-hal", version = "1.0" }
36embedded-hal-02 = { package = "embedded-hal", version = "0.2.6", features = ["unproven"] } 36embedded-hal-02 = { package = "embedded-hal", version = "0.2.6", features = ["unproven"] }
37embedded-hal-async = { version = "1.0" } 37embedded-hal-async = { version = "1.0" }
38embedded-hal-nb = { version = "1.0" } 38embedded-hal-nb = { version = "1.0" }
39embedded-io = "0.6" 39embedded-io = "0.7"
40embedded-io-async = { version = "0.6.1" } 40embedded-io-async = { version = "0.7.0" }
41heapless = "0.8" 41heapless = "0.8"
42mcxa-pac = { version = "0.1.0", features = ["rt", "critical-section"] } 42mcxa-pac = { version = "0.1.0", features = ["rt", "critical-section"] }
43nb = "1.1.0" 43nb = "1.1.0"
diff --git a/embassy-mcxa/src/lpuart/mod.rs b/embassy-mcxa/src/lpuart/mod.rs
index bce3986b5..ae511e8d3 100644
--- a/embassy-mcxa/src/lpuart/mod.rs
+++ b/embassy-mcxa/src/lpuart/mod.rs
@@ -568,6 +568,27 @@ pub enum Error {
568 ClockSetup(ClockError), 568 ClockSetup(ClockError),
569} 569}
570 570
571impl core::fmt::Display for Error {
572 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
573 match self {
574 Error::Read => write!(f, "Read error"),
575 Error::Overrun => write!(f, "Buffer overflow"),
576 Error::Noise => write!(f, "Noise error"),
577 Error::Framing => write!(f, "Framing error"),
578 Error::Parity => write!(f, "Parity error"),
579 Error::Fail => write!(f, "Failure"),
580 Error::InvalidArgument => write!(f, "Invalid argument"),
581 Error::UnsupportedBaudrate => write!(f, "Unsupported baud rate"),
582 Error::RxFifoEmpty => write!(f, "RX FIFO empty"),
583 Error::TxFifoFull => write!(f, "TX FIFO full"),
584 Error::TxBusy => write!(f, "TX busy"),
585 Error::ClockSetup(e) => write!(f, "Clock setup error: {:?}", e),
586 }
587 }
588}
589
590impl core::error::Error for Error {}
591
571/// A specialized Result type for LPUART operations 592/// A specialized Result type for LPUART operations
572pub type Result<T> = core::result::Result<T, Error>; 593pub type Result<T> = core::result::Result<T, Error>;
573 594
diff --git a/embassy-mspm0/Cargo.toml b/embassy-mspm0/Cargo.toml
index cf2346328..c7f5de6a1 100644
--- a/embassy-mspm0/Cargo.toml
+++ b/embassy-mspm0/Cargo.toml
@@ -61,8 +61,8 @@ embedded-hal-02 = { package = "embedded-hal", version = "0.2.6", features = ["un
61embedded-hal = { version = "1.0" } 61embedded-hal = { version = "1.0" }
62embedded-hal-nb = { version = "1.0" } 62embedded-hal-nb = { version = "1.0" }
63embedded-hal-async = { version = "1.0" } 63embedded-hal-async = { version = "1.0" }
64embedded-io = "0.6.1" 64embedded-io = { version = "0.7.1" }
65embedded-io-async = "0.6.1" 65embedded-io-async = { version = "0.7.0" }
66 66
67defmt = { version = "1.0.1", optional = true } 67defmt = { version = "1.0.1", optional = true }
68fixed = "1.29" 68fixed = "1.29"
diff --git a/embassy-mspm0/src/uart/buffered.rs b/embassy-mspm0/src/uart/buffered.rs
index 89e6bcc7b..d1b75b177 100644
--- a/embassy-mspm0/src/uart/buffered.rs
+++ b/embassy-mspm0/src/uart/buffered.rs
@@ -436,6 +436,10 @@ impl embedded_io_async::Write for BufferedUart<'_> {
436 async fn write(&mut self, buf: &[u8]) -> Result<usize, Self::Error> { 436 async fn write(&mut self, buf: &[u8]) -> Result<usize, Self::Error> {
437 self.tx.write_inner(buf).await 437 self.tx.write_inner(buf).await
438 } 438 }
439
440 async fn flush(&mut self) -> Result<(), Self::Error> {
441 self.tx.flush_inner().await
442 }
439} 443}
440 444
441impl embedded_io_async::Write for BufferedUartTx<'_> { 445impl embedded_io_async::Write for BufferedUartTx<'_> {
diff --git a/embassy-net-nrf91/Cargo.toml b/embassy-net-nrf91/Cargo.toml
index 349ff2880..c5c582fc3 100644
--- a/embassy-net-nrf91/Cargo.toml
+++ b/embassy-net-nrf91/Cargo.toml
@@ -27,7 +27,7 @@ embassy-futures = { version = "0.1.2", path = "../embassy-futures" }
27embassy-net-driver-channel = { version = "0.3.2", path = "../embassy-net-driver-channel" } 27embassy-net-driver-channel = { version = "0.3.2", path = "../embassy-net-driver-channel" }
28 28
29heapless = "0.8" 29heapless = "0.8"
30embedded-io = "0.6.1" 30embedded-io = { version = "0.7.1" }
31at-commands = "0.5.4" 31at-commands = "0.5.4"
32 32
33[package.metadata.embassy] 33[package.metadata.embassy]
diff --git a/embassy-net-ppp/Cargo.toml b/embassy-net-ppp/Cargo.toml
index 45ee2f6b5..1dda5017f 100644
--- a/embassy-net-ppp/Cargo.toml
+++ b/embassy-net-ppp/Cargo.toml
@@ -17,7 +17,7 @@ log = ["dep:log", "ppproto/log"]
17defmt = { version = "1.0.1", optional = true } 17defmt = { version = "1.0.1", optional = true }
18log = { version = "0.4.14", optional = true } 18log = { version = "0.4.14", optional = true }
19 19
20embedded-io-async = { version = "0.6.1" } 20embedded-io-async = { version = "0.7.0" }
21embassy-net-driver-channel = { version = "0.3.2", path = "../embassy-net-driver-channel" } 21embassy-net-driver-channel = { version = "0.3.2", path = "../embassy-net-driver-channel" }
22embassy-futures = { version = "0.1.2", path = "../embassy-futures" } 22embassy-futures = { version = "0.1.2", path = "../embassy-futures" }
23ppproto = { version = "0.2.1"} 23ppproto = { version = "0.2.1"}
diff --git a/embassy-net/Cargo.toml b/embassy-net/Cargo.toml
index 4c8075c43..d66ba1133 100644
--- a/embassy-net/Cargo.toml
+++ b/embassy-net/Cargo.toml
@@ -109,9 +109,9 @@ smoltcp = { version = "0.12.0", default-features = false, features = [
109embassy-net-driver = { version = "0.2.0", path = "../embassy-net-driver" } 109embassy-net-driver = { version = "0.2.0", path = "../embassy-net-driver" }
110embassy-time = { version = "0.5.0", path = "../embassy-time" } 110embassy-time = { version = "0.5.0", path = "../embassy-time" }
111embassy-sync = { version = "0.7.2", path = "../embassy-sync" } 111embassy-sync = { version = "0.7.2", path = "../embassy-sync" }
112embedded-io-async = { version = "0.6.1" } 112embedded-io-async = { version = "0.7.0" }
113 113
114managed = { version = "0.8.0", default-features = false, features = [ "map" ] } 114managed = { version = "0.8.0", default-features = false, features = [ "map" ] }
115heapless = { version = "0.8", default-features = false } 115heapless = { version = "0.8", default-features = false }
116embedded-nal-async = "0.8.0" 116embedded-nal-async = "0.9.0"
117document-features = "0.2.7" 117document-features = "0.2.7"
diff --git a/embassy-net/src/tcp.rs b/embassy-net/src/tcp.rs
index b4db7b88c..74672df1c 100644
--- a/embassy-net/src/tcp.rs
+++ b/embassy-net/src/tcp.rs
@@ -670,6 +670,13 @@ impl<'d> TcpIo<'d> {
670mod embedded_io_impls { 670mod embedded_io_impls {
671 use super::*; 671 use super::*;
672 672
673 impl core::fmt::Display for ConnectError {
674 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
675 f.write_str("ConnectError")
676 }
677 }
678 impl core::error::Error for ConnectError {}
679
673 impl embedded_io_async::Error for ConnectError { 680 impl embedded_io_async::Error for ConnectError {
674 fn kind(&self) -> embedded_io_async::ErrorKind { 681 fn kind(&self) -> embedded_io_async::ErrorKind {
675 match self { 682 match self {
@@ -681,6 +688,15 @@ mod embedded_io_impls {
681 } 688 }
682 } 689 }
683 690
691 impl core::fmt::Display for Error {
692 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
693 match self {
694 Self::ConnectionReset => f.write_str("ConnectionReset"),
695 }
696 }
697 }
698 impl core::error::Error for Error {}
699
684 impl embedded_io_async::Error for Error { 700 impl embedded_io_async::Error for Error {
685 fn kind(&self) -> embedded_io_async::ErrorKind { 701 fn kind(&self) -> embedded_io_async::ErrorKind {
686 match self { 702 match self {
diff --git a/embassy-nrf/Cargo.toml b/embassy-nrf/Cargo.toml
index f8a6ef864..a8070aa45 100644
--- a/embassy-nrf/Cargo.toml
+++ b/embassy-nrf/Cargo.toml
@@ -217,8 +217,8 @@ embassy-futures = { version = "0.1.2", path = "../embassy-futures", optional = t
217embedded-hal-02 = { package = "embedded-hal", version = "0.2.6", features = ["unproven"] } 217embedded-hal-02 = { package = "embedded-hal", version = "0.2.6", features = ["unproven"] }
218embedded-hal-1 = { package = "embedded-hal", version = "1.0" } 218embedded-hal-1 = { package = "embedded-hal", version = "1.0" }
219embedded-hal-async = { version = "1.0" } 219embedded-hal-async = { version = "1.0" }
220embedded-io = { version = "0.6.0" } 220embedded-io = { version = "0.7.1" }
221embedded-io-async = { version = "0.6.1" } 221embedded-io-async = { version = "0.7.0" }
222 222
223rand-core-06 = { package = "rand_core", version = "0.6" } 223rand-core-06 = { package = "rand_core", version = "0.6" }
224rand-core-09 = { package = "rand_core", version = "0.9" } 224rand-core-09 = { package = "rand_core", version = "0.9" }
diff --git a/embassy-nrf/src/buffered_uarte/v1.rs b/embassy-nrf/src/buffered_uarte/v1.rs
index ec360f7d0..c14cdfadb 100644
--- a/embassy-nrf/src/buffered_uarte/v1.rs
+++ b/embassy-nrf/src/buffered_uarte/v1.rs
@@ -874,6 +874,15 @@ impl<'a> Drop for BufferedUarteRx<'a> {
874 } 874 }
875} 875}
876 876
877impl core::fmt::Display for Error {
878 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
879 match *self {
880 Error::Overrun => write!(f, "Buffer Overrun"),
881 }
882 }
883}
884impl core::error::Error for Error {}
885
877mod _embedded_io { 886mod _embedded_io {
878 use super::*; 887 use super::*;
879 888
diff --git a/embassy-nrf/src/buffered_uarte/v2.rs b/embassy-nrf/src/buffered_uarte/v2.rs
index d0d2d97d1..4a6360b69 100644
--- a/embassy-nrf/src/buffered_uarte/v2.rs
+++ b/embassy-nrf/src/buffered_uarte/v2.rs
@@ -50,6 +50,14 @@ pub enum Error {
50 // No errors for now 50 // No errors for now
51} 51}
52 52
53impl core::fmt::Display for Error {
54 fn fmt(&self, _f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
55 match *self {}
56 }
57}
58
59impl core::error::Error for Error {}
60
53impl State { 61impl State {
54 pub(crate) const fn new() -> Self { 62 pub(crate) const fn new() -> Self {
55 Self { 63 Self {
diff --git a/embassy-nrf/src/uarte.rs b/embassy-nrf/src/uarte.rs
index 049830aed..ef5d6c6d1 100644
--- a/embassy-nrf/src/uarte.rs
+++ b/embassy-nrf/src/uarte.rs
@@ -1092,6 +1092,20 @@ mod eh02 {
1092 } 1092 }
1093} 1093}
1094 1094
1095impl core::fmt::Display for Error {
1096 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1097 match *self {
1098 Self::BufferTooLong => f.write_str("BufferTooLong"),
1099 Self::BufferNotInRAM => f.write_str("BufferNotInRAM"),
1100 Self::Framing => f.write_str("Framing"),
1101 Self::Parity => f.write_str("Parity"),
1102 Self::Overrun => f.write_str("Overrun"),
1103 Self::Break => f.write_str("Break"),
1104 }
1105 }
1106}
1107impl core::error::Error for Error {}
1108
1095mod _embedded_io { 1109mod _embedded_io {
1096 use super::*; 1110 use super::*;
1097 1111
@@ -1121,6 +1135,9 @@ mod _embedded_io {
1121 self.write(buf).await?; 1135 self.write(buf).await?;
1122 Ok(buf.len()) 1136 Ok(buf.len())
1123 } 1137 }
1138 async fn flush(&mut self) -> Result<(), Self::Error> {
1139 Ok(())
1140 }
1124 } 1141 }
1125 1142
1126 impl<'d> embedded_io_async::Write for UarteTx<'d> { 1143 impl<'d> embedded_io_async::Write for UarteTx<'d> {
@@ -1128,5 +1145,8 @@ mod _embedded_io {
1128 self.write(buf).await?; 1145 self.write(buf).await?;
1129 Ok(buf.len()) 1146 Ok(buf.len())
1130 } 1147 }
1148 async fn flush(&mut self) -> Result<(), Self::Error> {
1149 Ok(())
1150 }
1131 } 1151 }
1132} 1152}
diff --git a/embassy-nxp/Cargo.toml b/embassy-nxp/Cargo.toml
index b78c26c77..d5ef38531 100644
--- a/embassy-nxp/Cargo.toml
+++ b/embassy-nxp/Cargo.toml
@@ -35,7 +35,7 @@ log = { version = "0.4.27", optional = true }
35embassy-time = { version = "0.5.0", path = "../embassy-time", optional = true } 35embassy-time = { version = "0.5.0", path = "../embassy-time", optional = true }
36embassy-time-driver = { version = "0.2.1", path = "../embassy-time-driver", optional = true } 36embassy-time-driver = { version = "0.2.1", path = "../embassy-time-driver", optional = true }
37embassy-time-queue-utils = { version = "0.3.0", path = "../embassy-time-queue-utils", optional = true } 37embassy-time-queue-utils = { version = "0.3.0", path = "../embassy-time-queue-utils", optional = true }
38embedded-io = "0.6.1" 38embedded-io = { version = "0.7.1" }
39embedded-hal-02 = { package = "embedded-hal", version = "0.2.6", features = ["unproven"] } 39embedded-hal-02 = { package = "embedded-hal", version = "0.2.6", features = ["unproven"] }
40## Chip dependencies 40## Chip dependencies
41nxp-pac = { version = "0.1.0", optional = true, git = "https://github.com/i509VCB/nxp-pac", rev = "af5122e1cbe1483833c5d2e5af96b26a34ed5d62"} 41nxp-pac = { version = "0.1.0", optional = true, git = "https://github.com/i509VCB/nxp-pac", rev = "af5122e1cbe1483833c5d2e5af96b26a34ed5d62"}
diff --git a/embassy-nxp/src/usart/lpc55.rs b/embassy-nxp/src/usart/lpc55.rs
index d77f08fd8..319e29054 100644
--- a/embassy-nxp/src/usart/lpc55.rs
+++ b/embassy-nxp/src/usart/lpc55.rs
@@ -51,6 +51,15 @@ impl embedded_io::Error for Error {
51 } 51 }
52 } 52 }
53} 53}
54
55impl core::fmt::Display for Error {
56 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
57 core::fmt::Debug::fmt(self, f)
58 }
59}
60
61impl core::error::Error for Error {}
62
54/// Word length. 63/// Word length.
55#[derive(Clone, Copy, PartialEq, Eq, Debug)] 64#[derive(Clone, Copy, PartialEq, Eq, Debug)]
56pub enum DataBits { 65pub enum DataBits {
diff --git a/embassy-rp/Cargo.toml b/embassy-rp/Cargo.toml
index 8e4bb927f..585acc064 100644
--- a/embassy-rp/Cargo.toml
+++ b/embassy-rp/Cargo.toml
@@ -167,8 +167,8 @@ cortex-m-rt = ">=0.6.15,<0.8"
167cortex-m = "0.7.6" 167cortex-m = "0.7.6"
168critical-section = "1.2.0" 168critical-section = "1.2.0"
169chrono = { version = "0.4", default-features = false, optional = true } 169chrono = { version = "0.4", default-features = false, optional = true }
170embedded-io = { version = "0.6.1" } 170embedded-io = { version = "0.7.1" }
171embedded-io-async = { version = "0.6.1" } 171embedded-io-async = { version = "0.7.0" }
172embedded-storage = { version = "0.3" } 172embedded-storage = { version = "0.3" }
173embedded-storage-async = { version = "0.4.1" } 173embedded-storage-async = { version = "0.4.1" }
174fixed = "1.28.0" 174fixed = "1.28.0"
diff --git a/embassy-rp/src/pio_programs/uart.rs b/embassy-rp/src/pio_programs/uart.rs
index d59596dd1..a16d89a75 100644
--- a/embassy-rp/src/pio_programs/uart.rs
+++ b/embassy-rp/src/pio_programs/uart.rs
@@ -90,6 +90,10 @@ impl<PIO: Instance, const SM: usize> Write for PioUartTx<'_, PIO, SM> {
90 } 90 }
91 Ok(buf.len()) 91 Ok(buf.len())
92 } 92 }
93
94 async fn flush(&mut self) -> Result<(), Infallible> {
95 Ok(())
96 }
93} 97}
94 98
95/// This struct represents a Uart Rx program loaded into pio instruction memory. 99/// This struct represents a Uart Rx program loaded into pio instruction memory.
diff --git a/embassy-rp/src/uart/mod.rs b/embassy-rp/src/uart/mod.rs
index b7b569dd5..f53b2f88e 100644
--- a/embassy-rp/src/uart/mod.rs
+++ b/embassy-rp/src/uart/mod.rs
@@ -118,6 +118,14 @@ pub enum Error {
118 Framing, 118 Framing,
119} 119}
120 120
121impl core::fmt::Display for Error {
122 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
123 core::fmt::Debug::fmt(self, f)
124 }
125}
126
127impl core::error::Error for Error {}
128
121/// Read To Break error 129/// Read To Break error
122#[derive(Debug, Eq, PartialEq, Copy, Clone)] 130#[derive(Debug, Eq, PartialEq, Copy, Clone)]
123#[cfg_attr(feature = "defmt", derive(defmt::Format))] 131#[cfg_attr(feature = "defmt", derive(defmt::Format))]
diff --git a/embassy-stm32/Cargo.toml b/embassy-stm32/Cargo.toml
index ce6fabc6b..27f26df28 100644
--- a/embassy-stm32/Cargo.toml
+++ b/embassy-stm32/Cargo.toml
@@ -184,8 +184,8 @@ vcell = "0.1.3"
184nb = "1.0.0" 184nb = "1.0.0"
185stm32-fmc = "0.4.0" 185stm32-fmc = "0.4.0"
186cfg-if = "1.0.0" 186cfg-if = "1.0.0"
187embedded-io = { version = "0.6.0" } 187embedded-io = { version = "0.7.1" }
188embedded-io-async = { version = "0.6.1" } 188embedded-io-async = { version = "0.7.0" }
189chrono = { version = "^0.4", default-features = false, optional = true } 189chrono = { version = "^0.4", default-features = false, optional = true }
190bit_field = "0.10.2" 190bit_field = "0.10.2"
191trait-set = "0.3.0" 191trait-set = "0.3.0"
@@ -228,7 +228,7 @@ defmt = [
228 "embassy-sync/defmt", 228 "embassy-sync/defmt",
229 "embassy-embedded-hal/defmt", 229 "embassy-embedded-hal/defmt",
230 "embassy-hal-internal/defmt", 230 "embassy-hal-internal/defmt",
231 "embedded-io-async/defmt-03", 231 "embedded-io-async/defmt",
232 "embassy-usb-driver/defmt", 232 "embassy-usb-driver/defmt",
233 "embassy-net-driver/defmt", 233 "embassy-net-driver/defmt",
234 "embassy-time?/defmt", 234 "embassy-time?/defmt",
diff --git a/embassy-sync/Cargo.toml b/embassy-sync/Cargo.toml
index 0c28cec7d..86c87b7b1 100644
--- a/embassy-sync/Cargo.toml
+++ b/embassy-sync/Cargo.toml
@@ -41,7 +41,7 @@ futures-core = { version = "0.3.31", default-features = false }
41critical-section = "1.1" 41critical-section = "1.1"
42heapless = "0.8" 42heapless = "0.8"
43cfg-if = "1.0.0" 43cfg-if = "1.0.0"
44embedded-io-async = { version = "0.6.1" } 44embedded-io-async = { version = "0.7.0" }
45 45
46[dev-dependencies] 46[dev-dependencies]
47futures-executor = { version = "0.3.17", features = [ "thread-pool" ] } 47futures-executor = { version = "0.3.17", features = [ "thread-pool" ] }
diff --git a/embassy-usb-driver/Cargo.toml b/embassy-usb-driver/Cargo.toml
index 3f43f60a3..a11658213 100644
--- a/embassy-usb-driver/Cargo.toml
+++ b/embassy-usb-driver/Cargo.toml
@@ -19,6 +19,7 @@ target = "thumbv7em-none-eabi"
19features = ["defmt"] 19features = ["defmt"]
20 20
21[dependencies] 21[dependencies]
22# TODO: remove before releasing embassy-usb-driver v0.3
22embedded-io-async = "0.6.1" 23embedded-io-async = "0.6.1"
23defmt = { version = "1", optional = true } 24defmt = { version = "1", optional = true }
24 25
diff --git a/embassy-usb-driver/src/lib.rs b/embassy-usb-driver/src/lib.rs
index f19e0a401..782f130f6 100644
--- a/embassy-usb-driver/src/lib.rs
+++ b/embassy-usb-driver/src/lib.rs
@@ -429,6 +429,7 @@ pub enum EndpointError {
429 Disabled, 429 Disabled,
430} 430}
431 431
432// TODO: remove before releasing embassy-usb-driver v0.3
432impl embedded_io_async::Error for EndpointError { 433impl embedded_io_async::Error for EndpointError {
433 fn kind(&self) -> embedded_io_async::ErrorKind { 434 fn kind(&self) -> embedded_io_async::ErrorKind {
434 match self { 435 match self {
diff --git a/embassy-usb/Cargo.toml b/embassy-usb/Cargo.toml
index 3d1e005e4..6c3ddc1db 100644
--- a/embassy-usb/Cargo.toml
+++ b/embassy-usb/Cargo.toml
@@ -66,7 +66,7 @@ embassy-net-driver-channel = { version = "0.3.2", path = "../embassy-net-driver-
66defmt = { version = "1", optional = true } 66defmt = { version = "1", optional = true }
67log = { version = "0.4.14", optional = true } 67log = { version = "0.4.14", optional = true }
68heapless = "0.8" 68heapless = "0.8"
69embedded-io-async = "0.6.1" 69embedded-io-async = { version = "0.7.0" }
70 70
71# for HID 71# for HID
72usbd-hid = { version = "0.9.0", optional = true } 72usbd-hid = { version = "0.9.0", optional = true }
diff --git a/embassy-usb/src/class/cdc_acm.rs b/embassy-usb/src/class/cdc_acm.rs
index ab2311f4e..56acdb2a6 100644
--- a/embassy-usb/src/class/cdc_acm.rs
+++ b/embassy-usb/src/class/cdc_acm.rs
@@ -33,6 +33,30 @@ const REQ_SET_LINE_CODING: u8 = 0x20;
33const REQ_GET_LINE_CODING: u8 = 0x21; 33const REQ_GET_LINE_CODING: u8 = 0x21;
34const REQ_SET_CONTROL_LINE_STATE: u8 = 0x22; 34const REQ_SET_CONTROL_LINE_STATE: u8 = 0x22;
35 35
36/// CDC ACM error.
37#[derive(Clone, Debug)]
38pub enum CdcAcmError {
39 /// USB is not connected.
40 NotConnected,
41}
42
43impl core::fmt::Display for CdcAcmError {
44 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
45 match *self {
46 Self::NotConnected => f.write_str("NotConnected"),
47 }
48 }
49}
50
51impl core::error::Error for CdcAcmError {}
52impl embedded_io_async::Error for CdcAcmError {
53 fn kind(&self) -> embedded_io_async::ErrorKind {
54 match *self {
55 Self::NotConnected => embedded_io_async::ErrorKind::NotConnected,
56 }
57 }
58}
59
36/// Internal state for CDC-ACM 60/// Internal state for CDC-ACM
37pub struct State<'a> { 61pub struct State<'a> {
38 control: MaybeUninit<Control<'a>>, 62 control: MaybeUninit<Control<'a>>,
@@ -421,14 +445,21 @@ impl<'d, D: Driver<'d>> Sender<'d, D> {
421} 445}
422 446
423impl<'d, D: Driver<'d>> embedded_io_async::ErrorType for Sender<'d, D> { 447impl<'d, D: Driver<'d>> embedded_io_async::ErrorType for Sender<'d, D> {
424 type Error = EndpointError; 448 type Error = CdcAcmError;
425} 449}
426 450
427impl<'d, D: Driver<'d>> embedded_io_async::Write for Sender<'d, D> { 451impl<'d, D: Driver<'d>> embedded_io_async::Write for Sender<'d, D> {
428 async fn write(&mut self, buf: &[u8]) -> Result<usize, Self::Error> { 452 async fn write(&mut self, buf: &[u8]) -> Result<usize, Self::Error> {
429 let len = core::cmp::min(buf.len(), self.max_packet_size() as usize); 453 let len = core::cmp::min(buf.len(), self.max_packet_size() as usize);
430 self.write_packet(&buf[..len]).await?; 454 match self.write_packet(&buf[..len]).await {
431 Ok(len) 455 Ok(()) => Ok(len),
456 Err(EndpointError::BufferOverflow) => unreachable!(),
457 Err(EndpointError::Disabled) => Err(CdcAcmError::NotConnected),
458 }
459 }
460
461 async fn flush(&mut self) -> Result<(), Self::Error> {
462 Ok(())
432 } 463 }
433} 464}
434 465
@@ -539,7 +570,7 @@ impl<'d, D: Driver<'d>> BufferedReceiver<'d, D> {
539} 570}
540 571
541impl<'d, D: Driver<'d>> embedded_io_async::ErrorType for BufferedReceiver<'d, D> { 572impl<'d, D: Driver<'d>> embedded_io_async::ErrorType for BufferedReceiver<'d, D> {
542 type Error = EndpointError; 573 type Error = CdcAcmError;
543} 574}
544 575
545impl<'d, D: Driver<'d>> embedded_io_async::Read for BufferedReceiver<'d, D> { 576impl<'d, D: Driver<'d>> embedded_io_async::Read for BufferedReceiver<'d, D> {
@@ -552,14 +583,22 @@ impl<'d, D: Driver<'d>> embedded_io_async::Read for BufferedReceiver<'d, D> {
552 // If the caller's buffer is large enough to contain an entire packet, read directly into 583 // If the caller's buffer is large enough to contain an entire packet, read directly into
553 // that instead of buffering the packet internally. 584 // that instead of buffering the packet internally.
554 if buf.len() > self.receiver.max_packet_size() as usize { 585 if buf.len() > self.receiver.max_packet_size() as usize {
555 return self.receiver.read_packet(buf).await; 586 return match self.receiver.read_packet(buf).await {
587 Ok(n) => Ok(n),
588 Err(EndpointError::BufferOverflow) => unreachable!(),
589 Err(EndpointError::Disabled) => Err(CdcAcmError::NotConnected),
590 };
556 } 591 }
557 592
558 // Otherwise read a packet into the internal buffer, and return some of it to the caller. 593 // Otherwise read a packet into the internal buffer, and return some of it to the caller.
559 // 594 //
560 // It's important that `start` and `end` be updated in this order so they're left in a 595 // It's important that `start` and `end` be updated in this order so they're left in a
561 // consistent state if the `read` future is dropped mid-execution, e.g. from a timeout. 596 // consistent state if the `read` future is dropped mid-execution, e.g. from a timeout.
562 self.end = self.receiver.read_packet(&mut self.buffer).await?; 597 match self.receiver.read_packet(&mut self.buffer).await {
598 Ok(n) => self.end = n,
599 Err(EndpointError::BufferOverflow) => unreachable!(),
600 Err(EndpointError::Disabled) => return Err(CdcAcmError::NotConnected),
601 }
563 self.start = 0; 602 self.start = 0;
564 return Ok(self.read_from_buffer(buf)); 603 return Ok(self.read_from_buffer(buf));
565 } 604 }
diff --git a/examples/mcxa/Cargo.toml b/examples/mcxa/Cargo.toml
index 347659f5b..29d319375 100644
--- a/examples/mcxa/Cargo.toml
+++ b/examples/mcxa/Cargo.toml
@@ -18,7 +18,7 @@ embassy-mcxa = { path = "../../embassy-mcxa", features = ["defmt", "unstable-pac
18embassy-sync = "0.7.2" 18embassy-sync = "0.7.2"
19embassy-time = "0.5.0" 19embassy-time = "0.5.0"
20embassy-time-driver = "0.2.1" 20embassy-time-driver = "0.2.1"
21embedded-io-async = "0.6.1" 21embedded-io-async = "0.7.0"
22heapless = "0.9.2" 22heapless = "0.9.2"
23panic-probe = { version = "1.0", features = ["print-defmt"] } 23panic-probe = { version = "1.0", features = ["print-defmt"] }
24rand_core = "0.9" 24rand_core = "0.9"
diff --git a/examples/mspm0g3507/Cargo.toml b/examples/mspm0g3507/Cargo.toml
index 8c230f038..f4fc7e09f 100644
--- a/examples/mspm0g3507/Cargo.toml
+++ b/examples/mspm0g3507/Cargo.toml
@@ -18,7 +18,7 @@ defmt-rtt = "1.0.0"
18panic-probe = { version = "1.0.0", features = ["print-defmt"] } 18panic-probe = { version = "1.0.0", features = ["print-defmt"] }
19panic-semihosting = "0.6.0" 19panic-semihosting = "0.6.0"
20 20
21embedded-io-async = "0.6.1" 21embedded-io-async = { version = "0.7.0" }
22 22
23[profile.release] 23[profile.release]
24debug = 2 24debug = 2
diff --git a/examples/nrf52840/Cargo.toml b/examples/nrf52840/Cargo.toml
index a57bd7b24..15c187328 100644
--- a/examples/nrf52840/Cargo.toml
+++ b/examples/nrf52840/Cargo.toml
@@ -13,8 +13,8 @@ embassy-time = { version = "0.5.0", path = "../../embassy-time", features = ["de
13embassy-nrf = { version = "0.9.0", path = "../../embassy-nrf", features = ["defmt", "nrf52840", "time-driver-rtc1", "gpiote", "unstable-pac", "time", "net-driver"] } 13embassy-nrf = { version = "0.9.0", path = "../../embassy-nrf", features = ["defmt", "nrf52840", "time-driver-rtc1", "gpiote", "unstable-pac", "time", "net-driver"] }
14embassy-net = { version = "0.7.1", path = "../../embassy-net", features = ["defmt", "tcp", "dhcpv4", "medium-ethernet","udp", "medium-ieee802154", "proto-ipv6"] } 14embassy-net = { version = "0.7.1", path = "../../embassy-net", features = ["defmt", "tcp", "dhcpv4", "medium-ethernet","udp", "medium-ieee802154", "proto-ipv6"] }
15embassy-usb = { version = "0.5.1", path = "../../embassy-usb", features = ["defmt"] } 15embassy-usb = { version = "0.5.1", path = "../../embassy-usb", features = ["defmt"] }
16embedded-io = { version = "0.6.0", features = ["defmt-03"] } 16embedded-io = { version = "0.7.1", features = ["defmt"] }
17embedded-io-async = { version = "0.6.1", features = ["defmt-03"] } 17embedded-io-async = { version = "0.7.0", features = ["defmt"] }
18embassy-net-esp-hosted = { version = "0.2.1", path = "../../embassy-net-esp-hosted", features = ["defmt"] } 18embassy-net-esp-hosted = { version = "0.2.1", path = "../../embassy-net-esp-hosted", features = ["defmt"] }
19embassy-net-enc28j60 = { version = "0.2.1", path = "../../embassy-net-enc28j60", features = ["defmt"] } 19embassy-net-enc28j60 = { version = "0.2.1", path = "../../embassy-net-enc28j60", features = ["defmt"] }
20 20
diff --git a/examples/nrf5340/Cargo.toml b/examples/nrf5340/Cargo.toml
index b8d5dbfb1..c54a84d22 100644
--- a/examples/nrf5340/Cargo.toml
+++ b/examples/nrf5340/Cargo.toml
@@ -13,7 +13,7 @@ embassy-time = { version = "0.5.0", path = "../../embassy-time", features = ["de
13embassy-nrf = { version = "0.9.0", path = "../../embassy-nrf", features = ["defmt", "nrf5340-app-s", "time-driver-rtc1", "gpiote", "unstable-pac"] } 13embassy-nrf = { version = "0.9.0", path = "../../embassy-nrf", features = ["defmt", "nrf5340-app-s", "time-driver-rtc1", "gpiote", "unstable-pac"] }
14embassy-net = { version = "0.7.1", path = "../../embassy-net", features = ["defmt", "tcp", "dhcpv4", "medium-ethernet"] } 14embassy-net = { version = "0.7.1", path = "../../embassy-net", features = ["defmt", "tcp", "dhcpv4", "medium-ethernet"] }
15embassy-usb = { version = "0.5.1", path = "../../embassy-usb", features = ["defmt"] } 15embassy-usb = { version = "0.5.1", path = "../../embassy-usb", features = ["defmt"] }
16embedded-io-async = { version = "0.6.1" } 16embedded-io-async = { version = "0.7.0" }
17 17
18defmt = "1.0.1" 18defmt = "1.0.1"
19defmt-rtt = "1.0.0" 19defmt-rtt = "1.0.0"
diff --git a/examples/nrf54l15/Cargo.toml b/examples/nrf54l15/Cargo.toml
index 353d1b46e..9940443ff 100644
--- a/examples/nrf54l15/Cargo.toml
+++ b/examples/nrf54l15/Cargo.toml
@@ -11,8 +11,8 @@ embassy-executor = { version = "0.9.0", path = "../../embassy-executor", feature
11embassy-time = { version = "0.5.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime"] } 11embassy-time = { version = "0.5.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime"] }
12embassy-sync = { version = "0.7.2", path = "../../embassy-sync", features = ["defmt"] } 12embassy-sync = { version = "0.7.2", path = "../../embassy-sync", features = ["defmt"] }
13embassy-nrf = { version = "0.9.0", path = "../../embassy-nrf", features = ["defmt", "nrf54l15-app-s", "time-driver-grtc", "gpiote", "unstable-pac", "time"] } 13embassy-nrf = { version = "0.9.0", path = "../../embassy-nrf", features = ["defmt", "nrf54l15-app-s", "time-driver-grtc", "gpiote", "unstable-pac", "time"] }
14embedded-io = { version = "0.6.0", features = ["defmt-03"] } 14embedded-io = { version = "0.7.0", features = ["defmt"] }
15embedded-io-async = { version = "0.6.1", features = ["defmt-03"] } 15embedded-io-async = { version = "0.7.0", features = ["defmt"] }
16 16
17rand = { version = "0.9.0", default-features = false } 17rand = { version = "0.9.0", default-features = false }
18 18
diff --git a/examples/nrf54lm20/Cargo.toml b/examples/nrf54lm20/Cargo.toml
index e3bf22b25..78ce60596 100644
--- a/examples/nrf54lm20/Cargo.toml
+++ b/examples/nrf54lm20/Cargo.toml
@@ -11,8 +11,8 @@ embassy-executor = { version = "0.9.0", path = "../../embassy-executor", feature
11embassy-time = { version = "0.5.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime"] } 11embassy-time = { version = "0.5.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime"] }
12embassy-sync = { version = "0.7.2", path = "../../embassy-sync", features = ["defmt"] } 12embassy-sync = { version = "0.7.2", path = "../../embassy-sync", features = ["defmt"] }
13embassy-nrf = { version = "0.9.0", path = "../../embassy-nrf", features = ["defmt", "nrf54lm20-app-s", "time-driver-grtc", "gpiote", "unstable-pac", "time"] } 13embassy-nrf = { version = "0.9.0", path = "../../embassy-nrf", features = ["defmt", "nrf54lm20-app-s", "time-driver-grtc", "gpiote", "unstable-pac", "time"] }
14embedded-io = { version = "0.6.0", features = ["defmt-03"] } 14embedded-io = { version = "0.7.0", features = ["defmt"] }
15embedded-io-async = { version = "0.6.1", features = ["defmt-03"] } 15embedded-io-async = { version = "0.7.0", features = ["defmt"] }
16 16
17rand = { version = "0.9.0", default-features = false } 17rand = { version = "0.9.0", default-features = false }
18 18
diff --git a/examples/nrf9160/Cargo.toml b/examples/nrf9160/Cargo.toml
index 907b06e6d..bad7fdc79 100644
--- a/examples/nrf9160/Cargo.toml
+++ b/examples/nrf9160/Cargo.toml
@@ -20,8 +20,8 @@ cortex-m = { version = "0.7.6", features = ["inline-asm", "critical-section-sing
20cortex-m-rt = "0.7.0" 20cortex-m-rt = "0.7.0"
21panic-probe = { version = "1.0.0", features = ["print-defmt"] } 21panic-probe = { version = "1.0.0", features = ["print-defmt"] }
22static_cell = { version = "2" } 22static_cell = { version = "2" }
23embedded-io = "0.6.1" 23embedded-io = { version = "0.7.1" }
24embedded-io-async = { version = "0.6.1", features = ["defmt-03"] } 24embedded-io-async = { version = "0.7.0", features = ["defmt"] }
25 25
26[profile.release] 26[profile.release]
27debug = 2 27debug = 2
diff --git a/examples/rp/Cargo.toml b/examples/rp/Cargo.toml
index e247f6f7a..1a5712dd3 100644
--- a/examples/rp/Cargo.toml
+++ b/examples/rp/Cargo.toml
@@ -26,7 +26,7 @@ fixed = "1.23.1"
26fixed-macro = "1.2" 26fixed-macro = "1.2"
27 27
28# for web request example 28# for web request example
29reqwless = { version = "0.13.0", features = ["defmt"] } 29reqwless = { git = "https://github.com/drogue-iot/reqwless", rev = "68f703dfc16e6f7f964b7238c922c0d433118872", features = ["defmt"] }
30serde = { version = "1.0.203", default-features = false, features = ["derive"] } 30serde = { version = "1.0.203", default-features = false, features = ["derive"] }
31serde-json-core = "0.5.1" 31serde-json-core = "0.5.1"
32 32
@@ -50,7 +50,7 @@ usbd-hid = "0.9.0"
50embedded-hal-1 = { package = "embedded-hal", version = "1.0" } 50embedded-hal-1 = { package = "embedded-hal", version = "1.0" }
51embedded-hal-async = "1.0" 51embedded-hal-async = "1.0"
52embedded-hal-bus = { version = "0.1", features = ["async"] } 52embedded-hal-bus = { version = "0.1", features = ["async"] }
53embedded-io-async = { version = "0.6.1", features = ["defmt-03"] } 53embedded-io-async = { version = "0.7.0", features = ["defmt"] }
54embedded-storage = { version = "0.3" } 54embedded-storage = { version = "0.3" }
55static_cell = "2.1" 55static_cell = "2.1"
56portable-atomic = { version = "1.5", features = ["critical-section"] } 56portable-atomic = { version = "1.5", features = ["critical-section"] }
diff --git a/examples/rp235x/Cargo.toml b/examples/rp235x/Cargo.toml
index 16dfb5b77..bc2bcf5b6 100644
--- a/examples/rp235x/Cargo.toml
+++ b/examples/rp235x/Cargo.toml
@@ -51,7 +51,7 @@ usbd-hid = "0.9.0"
51embedded-hal-1 = { package = "embedded-hal", version = "1.0" } 51embedded-hal-1 = { package = "embedded-hal", version = "1.0" }
52embedded-hal-async = "1.0" 52embedded-hal-async = "1.0"
53embedded-hal-bus = { version = "0.1", features = ["async"] } 53embedded-hal-bus = { version = "0.1", features = ["async"] }
54embedded-io-async = { version = "0.6.1", features = ["defmt-03"] } 54embedded-io-async = { version = "0.7.0", features = ["defmt"] }
55embedded-storage = { version = "0.3" } 55embedded-storage = { version = "0.3" }
56static_cell = "2.1" 56static_cell = "2.1"
57portable-atomic = { version = "1.5", features = ["critical-section"] } 57portable-atomic = { version = "1.5", features = ["critical-section"] }
diff --git a/examples/std/Cargo.toml b/examples/std/Cargo.toml
index 0e3b3c6d5..06f1ba67e 100644
--- a/examples/std/Cargo.toml
+++ b/examples/std/Cargo.toml
@@ -12,8 +12,8 @@ embassy-time = { version = "0.5.0", path = "../../embassy-time", features = ["lo
12embassy-net = { version = "0.7.1", path = "../../embassy-net", features=[ "log", "medium-ethernet", "medium-ip", "tcp", "udp", "dns", "dhcpv4", "proto-ipv6"] } 12embassy-net = { version = "0.7.1", path = "../../embassy-net", features=[ "log", "medium-ethernet", "medium-ip", "tcp", "udp", "dns", "dhcpv4", "proto-ipv6"] }
13embassy-net-tuntap = { version = "0.1.1", path = "../../embassy-net-tuntap" } 13embassy-net-tuntap = { version = "0.1.1", path = "../../embassy-net-tuntap" }
14embassy-net-ppp = { version = "0.2.1", path = "../../embassy-net-ppp", features = ["log"]} 14embassy-net-ppp = { version = "0.2.1", path = "../../embassy-net-ppp", features = ["log"]}
15embedded-io-async = { version = "0.6.1" } 15embedded-io-async = { version = "0.7.0" }
16embedded-io-adapters = { version = "0.6.1", features = ["futures-03"] } 16embedded-io-adapters = { version = "0.7.0", features = ["futures-03"] }
17critical-section = { version = "1.1", features = ["std"] } 17critical-section = { version = "1.1", features = ["std"] }
18 18
19async-io = "1.6.0" 19async-io = "1.6.0"
diff --git a/examples/stm32f4/Cargo.toml b/examples/stm32f4/Cargo.toml
index b4555045a..5bcf66ade 100644
--- a/examples/stm32f4/Cargo.toml
+++ b/examples/stm32f4/Cargo.toml
@@ -23,8 +23,8 @@ cortex-m = { version = "0.7.6", features = ["inline-asm", "critical-section-sing
23cortex-m-rt = "0.7.0" 23cortex-m-rt = "0.7.0"
24embedded-hal = "0.2.6" 24embedded-hal = "0.2.6"
25embedded-hal-bus = { version = "0.2", features = ["async"] } 25embedded-hal-bus = { version = "0.2", features = ["async"] }
26embedded-io = { version = "0.6.0" } 26embedded-io = { version = "0.7.1" }
27embedded-io-async = { version = "0.6.1" } 27embedded-io-async = { version = "0.7.0" }
28panic-probe = { version = "1.0.0", features = ["print-defmt"] } 28panic-probe = { version = "1.0.0", features = ["print-defmt"] }
29futures-util = { version = "0.3.30", default-features = false } 29futures-util = { version = "0.3.30", default-features = false }
30heapless = { version = "0.8", default-features = false } 30heapless = { version = "0.8", default-features = false }
diff --git a/examples/stm32f7/Cargo.toml b/examples/stm32f7/Cargo.toml
index 565277394..a952b770b 100644
--- a/examples/stm32f7/Cargo.toml
+++ b/examples/stm32f7/Cargo.toml
@@ -12,7 +12,7 @@ embassy-sync = { version = "0.7.2", path = "../../embassy-sync", features = ["de
12embassy-executor = { version = "0.9.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt"] } 12embassy-executor = { version = "0.9.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt"] }
13embassy-time = { version = "0.5.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] } 13embassy-time = { version = "0.5.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] }
14embassy-net = { version = "0.7.1", path = "../../embassy-net", features = ["defmt", "tcp", "dhcpv4", "medium-ethernet"] } 14embassy-net = { version = "0.7.1", path = "../../embassy-net", features = ["defmt", "tcp", "dhcpv4", "medium-ethernet"] }
15embedded-io-async = { version = "0.6.1" } 15embedded-io-async = { version = "0.7.0" }
16embassy-usb = { version = "0.5.0", path = "../../embassy-usb", features = ["defmt"] } 16embassy-usb = { version = "0.5.0", path = "../../embassy-usb", features = ["defmt"] }
17embassy-futures = { version = "0.1.0", path = "../../embassy-futures" } 17embassy-futures = { version = "0.1.0", path = "../../embassy-futures" }
18 18
diff --git a/examples/stm32g0/Cargo.toml b/examples/stm32g0/Cargo.toml
index 16f28500d..a25a01e59 100644
--- a/examples/stm32g0/Cargo.toml
+++ b/examples/stm32g0/Cargo.toml
@@ -24,7 +24,7 @@ panic-probe = { version = "1.0.0", features = ["print-defmt"] }
24heapless = { version = "0.8", default-features = false } 24heapless = { version = "0.8", default-features = false }
25portable-atomic = { version = "1.5", features = ["unsafe-assume-single-core"] } 25portable-atomic = { version = "1.5", features = ["unsafe-assume-single-core"] }
26 26
27embedded-io-async = { version = "0.6.1" } 27embedded-io-async = { version = "0.7.0" }
28 28
29[profile.release] 29[profile.release]
30debug = 2 30debug = 2
diff --git a/examples/stm32h5/Cargo.toml b/examples/stm32h5/Cargo.toml
index 512186c3d..f674a2936 100644
--- a/examples/stm32h5/Cargo.toml
+++ b/examples/stm32h5/Cargo.toml
@@ -23,8 +23,8 @@ cortex-m-rt = "0.7.0"
23embedded-hal = "0.2.6" 23embedded-hal = "0.2.6"
24embedded-hal-1 = { package = "embedded-hal", version = "1.0" } 24embedded-hal-1 = { package = "embedded-hal", version = "1.0" }
25embedded-hal-async = { version = "1.0" } 25embedded-hal-async = { version = "1.0" }
26embedded-io-async = { version = "0.6.1" } 26embedded-io-async = { version = "0.7.0" }
27embedded-nal-async = "0.8.0" 27embedded-nal-async = "0.9.0"
28panic-probe = { version = "1.0.0", features = ["print-defmt"] } 28panic-probe = { version = "1.0.0", features = ["print-defmt"] }
29heapless = { version = "0.8", default-features = false } 29heapless = { version = "0.8", default-features = false }
30critical-section = "1.1" 30critical-section = "1.1"
diff --git a/examples/stm32h7/Cargo.toml b/examples/stm32h7/Cargo.toml
index 09b734054..8f4b2bf4f 100644
--- a/examples/stm32h7/Cargo.toml
+++ b/examples/stm32h7/Cargo.toml
@@ -24,8 +24,8 @@ cortex-m-rt = "0.7.0"
24embedded-hal = "0.2.6" 24embedded-hal = "0.2.6"
25embedded-hal-1 = { package = "embedded-hal", version = "1.0" } 25embedded-hal-1 = { package = "embedded-hal", version = "1.0" }
26embedded-hal-async = { version = "1.0" } 26embedded-hal-async = { version = "1.0" }
27embedded-nal-async = "0.8.0" 27embedded-nal-async = "0.9.0"
28embedded-io-async = { version = "0.6.1" } 28embedded-io-async = { version = "0.7.0" }
29panic-probe = { version = "1.0.0", features = ["print-defmt"] } 29panic-probe = { version = "1.0.0", features = ["print-defmt"] }
30heapless = { version = "0.8", default-features = false } 30heapless = { version = "0.8", default-features = false }
31critical-section = "1.1" 31critical-section = "1.1"
diff --git a/examples/stm32h723/Cargo.toml b/examples/stm32h723/Cargo.toml
index 93a5109e2..8b3f8dc55 100644
--- a/examples/stm32h723/Cargo.toml
+++ b/examples/stm32h723/Cargo.toml
@@ -21,8 +21,8 @@ cortex-m-rt = "0.7.0"
21embedded-hal = "0.2.6" 21embedded-hal = "0.2.6"
22embedded-hal-1 = { package = "embedded-hal", version = "1.0" } 22embedded-hal-1 = { package = "embedded-hal", version = "1.0" }
23embedded-hal-async = { version = "1.0" } 23embedded-hal-async = { version = "1.0" }
24embedded-nal-async = "0.8.0" 24embedded-nal-async = "0.9.0"
25embedded-io-async = { version = "0.6.1" } 25embedded-io-async = { version = "0.7.0" }
26panic-probe = { version = "1.0.0", features = ["print-defmt"] } 26panic-probe = { version = "1.0.0", features = ["print-defmt"] }
27heapless = { version = "0.8", default-features = false } 27heapless = { version = "0.8", default-features = false }
28critical-section = "1.1" 28critical-section = "1.1"
diff --git a/examples/stm32h742/Cargo.toml b/examples/stm32h742/Cargo.toml
index 9b5e5d93d..7ff4dfbe4 100644
--- a/examples/stm32h742/Cargo.toml
+++ b/examples/stm32h742/Cargo.toml
@@ -33,7 +33,7 @@ embassy-net = { version = "0.7.1", path = "../../embassy-net", features = [
33 "dhcpv4", 33 "dhcpv4",
34 "medium-ethernet", 34 "medium-ethernet",
35] } 35] }
36embedded-io-async = { version = "0.6.1" } 36embedded-io-async = { version = "0.7.0" }
37embassy-usb = { version = "0.5.1", path = "../../embassy-usb", features = [ 37embassy-usb = { version = "0.5.1", path = "../../embassy-usb", features = [
38 "defmt", 38 "defmt",
39] } 39] }
diff --git a/examples/stm32h755cm4/Cargo.toml b/examples/stm32h755cm4/Cargo.toml
index d69f0228e..e5be0056f 100644
--- a/examples/stm32h755cm4/Cargo.toml
+++ b/examples/stm32h755cm4/Cargo.toml
@@ -24,8 +24,8 @@ cortex-m-rt = "0.7.0"
24embedded-hal = "0.2.6" 24embedded-hal = "0.2.6"
25embedded-hal-1 = { package = "embedded-hal", version = "1.0" } 25embedded-hal-1 = { package = "embedded-hal", version = "1.0" }
26embedded-hal-async = { version = "1.0" } 26embedded-hal-async = { version = "1.0" }
27embedded-nal-async = "0.8.0" 27embedded-nal-async = "0.9.0"
28embedded-io-async = { version = "0.6.1" } 28embedded-io-async = { version = "0.7.0" }
29panic-probe = { version = "1.0.0", features = ["print-defmt"] } 29panic-probe = { version = "1.0.0", features = ["print-defmt"] }
30heapless = { version = "0.8", default-features = false } 30heapless = { version = "0.8", default-features = false }
31critical-section = "1.1" 31critical-section = "1.1"
diff --git a/examples/stm32h755cm7/Cargo.toml b/examples/stm32h755cm7/Cargo.toml
index f4e1e53b7..42c05549b 100644
--- a/examples/stm32h755cm7/Cargo.toml
+++ b/examples/stm32h755cm7/Cargo.toml
@@ -24,8 +24,8 @@ cortex-m-rt = "0.7.0"
24embedded-hal = "0.2.6" 24embedded-hal = "0.2.6"
25embedded-hal-1 = { package = "embedded-hal", version = "1.0" } 25embedded-hal-1 = { package = "embedded-hal", version = "1.0" }
26embedded-hal-async = { version = "1.0" } 26embedded-hal-async = { version = "1.0" }
27embedded-nal-async = "0.8.0" 27embedded-nal-async = "0.9.0"
28embedded-io-async = { version = "0.6.1" } 28embedded-io-async = { version = "0.7.0" }
29panic-probe = { version = "1.0.0", features = ["print-defmt"] } 29panic-probe = { version = "1.0.0", features = ["print-defmt"] }
30heapless = { version = "0.8", default-features = false } 30heapless = { version = "0.8", default-features = false }
31critical-section = "1.1" 31critical-section = "1.1"
diff --git a/examples/stm32h7b0/Cargo.toml b/examples/stm32h7b0/Cargo.toml
index 0509d394d..434bfebce 100644
--- a/examples/stm32h7b0/Cargo.toml
+++ b/examples/stm32h7b0/Cargo.toml
@@ -23,8 +23,8 @@ cortex-m-rt = "0.7.0"
23embedded-hal = "0.2.6" 23embedded-hal = "0.2.6"
24embedded-hal-1 = { package = "embedded-hal", version = "1.0" } 24embedded-hal-1 = { package = "embedded-hal", version = "1.0" }
25embedded-hal-async = { version = "1.0" } 25embedded-hal-async = { version = "1.0" }
26embedded-nal-async = "0.8.0" 26embedded-nal-async = "0.9.0"
27embedded-io-async = { version = "0.6.1" } 27embedded-io-async = { version = "0.7.0" }
28panic-probe = { version = "1.0.0", features = ["print-defmt"] } 28panic-probe = { version = "1.0.0", features = ["print-defmt"] }
29heapless = { version = "0.8", default-features = false } 29heapless = { version = "0.8", default-features = false }
30critical-section = "1.1" 30critical-section = "1.1"
diff --git a/examples/stm32h7rs/Cargo.toml b/examples/stm32h7rs/Cargo.toml
index ab525ad91..74664432f 100644
--- a/examples/stm32h7rs/Cargo.toml
+++ b/examples/stm32h7rs/Cargo.toml
@@ -23,8 +23,8 @@ cortex-m-rt = "0.7.0"
23embedded-hal = "0.2.6" 23embedded-hal = "0.2.6"
24embedded-hal-1 = { package = "embedded-hal", version = "1.0" } 24embedded-hal-1 = { package = "embedded-hal", version = "1.0" }
25embedded-hal-async = { version = "1.0" } 25embedded-hal-async = { version = "1.0" }
26embedded-nal-async = "0.8.0" 26embedded-nal-async = "0.9.0"
27embedded-io-async = { version = "0.6.1" } 27embedded-io-async = { version = "0.7.0" }
28panic-probe = { version = "1.0.0", features = ["print-defmt"] } 28panic-probe = { version = "1.0.0", features = ["print-defmt"] }
29heapless = { version = "0.8", default-features = false } 29heapless = { version = "0.8", default-features = false }
30critical-section = "1.1" 30critical-section = "1.1"
diff --git a/examples/stm32l0/Cargo.toml b/examples/stm32l0/Cargo.toml
index a9c71d655..c06c761c9 100644
--- a/examples/stm32l0/Cargo.toml
+++ b/examples/stm32l0/Cargo.toml
@@ -18,8 +18,8 @@ defmt = "1.0.1"
18defmt-rtt = "1.0.0" 18defmt-rtt = "1.0.0"
19 19
20embedded-storage = "0.3.1" 20embedded-storage = "0.3.1"
21embedded-io = { version = "0.6.0" } 21embedded-io = { version = "0.7.1" }
22embedded-io-async = { version = "0.6.1" } 22embedded-io-async = { version = "0.7.0" }
23 23
24cortex-m = { version = "0.7.6", features = ["inline-asm", "critical-section-single-core"] } 24cortex-m = { version = "0.7.6", features = ["inline-asm", "critical-section-single-core"] }
25cortex-m-rt = "0.7.0" 25cortex-m-rt = "0.7.0"
diff --git a/examples/stm32l4/Cargo.toml b/examples/stm32l4/Cargo.toml
index 936472199..995c8c694 100644
--- a/examples/stm32l4/Cargo.toml
+++ b/examples/stm32l4/Cargo.toml
@@ -16,8 +16,8 @@ embassy-usb = { version = "0.5.0", path = "../../embassy-usb", features = ["defm
16embassy-net-adin1110 = { version = "0.3.1", path = "../../embassy-net-adin1110" } 16embassy-net-adin1110 = { version = "0.3.1", path = "../../embassy-net-adin1110" }
17embassy-net = { version = "0.7.1", path = "../../embassy-net", features = ["defmt", "udp", "tcp", "dhcpv4", "medium-ethernet"] } 17embassy-net = { version = "0.7.1", path = "../../embassy-net", features = ["defmt", "udp", "tcp", "dhcpv4", "medium-ethernet"] }
18embassy-futures = { version = "0.1.2", path = "../../embassy-futures" } 18embassy-futures = { version = "0.1.2", path = "../../embassy-futures" }
19embedded-io-async = { version = "0.6.1", features = ["defmt-03"] } 19embedded-io-async = { version = "0.7.0", features = ["defmt"] }
20embedded-io = { version = "0.6.0", features = ["defmt-03"] } 20embedded-io = { version = "0.7.1", features = ["defmt"] }
21 21
22defmt = "1.0.1" 22defmt = "1.0.1"
23defmt-rtt = "1.0.0" 23defmt-rtt = "1.0.0"
diff --git a/examples/stm32l5/Cargo.toml b/examples/stm32l5/Cargo.toml
index 586b00836..b6d14ce25 100644
--- a/examples/stm32l5/Cargo.toml
+++ b/examples/stm32l5/Cargo.toml
@@ -24,7 +24,7 @@ cortex-m = { version = "0.7.6", features = ["inline-asm", "critical-section-sing
24cortex-m-rt = "0.7.0" 24cortex-m-rt = "0.7.0"
25embedded-hal = "0.2.6" 25embedded-hal = "0.2.6"
26heapless = { version = "0.8", default-features = false } 26heapless = { version = "0.8", default-features = false }
27embedded-io-async = { version = "0.6.1" } 27embedded-io-async = { version = "0.7.0" }
28static_cell = "2" 28static_cell = "2"
29 29
30[profile.release] 30[profile.release]
diff --git a/examples/stm32n6/Cargo.toml b/examples/stm32n6/Cargo.toml
index 5ad5b97ce..fdfaed531 100644
--- a/examples/stm32n6/Cargo.toml
+++ b/examples/stm32n6/Cargo.toml
@@ -23,7 +23,7 @@ cortex-m-rt = "0.7.0"
23embedded-hal = "0.2.6" 23embedded-hal = "0.2.6"
24embedded-hal-1 = { package = "embedded-hal", version = "1.0" } 24embedded-hal-1 = { package = "embedded-hal", version = "1.0" }
25embedded-hal-async = { version = "1.0" } 25embedded-hal-async = { version = "1.0" }
26embedded-io-async = { version = "0.6.1" } 26embedded-io-async = { version = "0.7.0" }
27embedded-nal-async = "0.8.0" 27embedded-nal-async = "0.8.0"
28panic-probe = { version = "1.0.0", features = ["print-defmt"] } 28panic-probe = { version = "1.0.0", features = ["print-defmt"] }
29heapless = { version = "0.8", default-features = false } 29heapless = { version = "0.8", default-features = false }
diff --git a/examples/stm32wle5/Cargo.toml b/examples/stm32wle5/Cargo.toml
index f2fc4dd3d..64c81c761 100644
--- a/examples/stm32wle5/Cargo.toml
+++ b/examples/stm32wle5/Cargo.toml
@@ -15,7 +15,7 @@ embassy-embedded-hal = { version = "0.5.0", path = "../../embassy-embedded-hal"
15 15
16defmt = "1.0.1" 16defmt = "1.0.1"
17defmt-rtt = { version = "1.1.0", optional = true } 17defmt-rtt = { version = "1.1.0", optional = true }
18defmt-serial = { version = "0.10.0", optional = true } 18defmt-serial = { git = "https://github.com/gauteh/defmt-serial", rev = "411ae7fa909b4fd2667885aff687e009b9108190", optional = true }
19 19
20cortex-m = { version = "0.7.6", features = ["inline-asm", "critical-section-single-core"] } 20cortex-m = { version = "0.7.6", features = ["inline-asm", "critical-section-single-core"] }
21cortex-m-rt = "0.7.0" 21cortex-m-rt = "0.7.0"
diff --git a/tests/mspm0/Cargo.toml b/tests/mspm0/Cargo.toml
index df52b538d..56b027feb 100644
--- a/tests/mspm0/Cargo.toml
+++ b/tests/mspm0/Cargo.toml
@@ -26,8 +26,8 @@ cortex-m = { version = "0.7.6", features = [ "inline-asm", "critical-section-sin
26cortex-m-rt = "0.7.0" 26cortex-m-rt = "0.7.0"
27embedded-hal = { package = "embedded-hal", version = "1.0" } 27embedded-hal = { package = "embedded-hal", version = "1.0" }
28embedded-hal-async = { version = "1.0" } 28embedded-hal-async = { version = "1.0" }
29embedded-io = { version = "0.6.1", features = ["defmt-03"] } 29embedded-io = { version = "0.7.1", features = ["defmt"] }
30embedded-io-async = { version = "0.6.1", features = ["defmt-03"] } 30embedded-io-async = { version = "0.7.0", features = ["defmt"] }
31panic-probe = { version = "1.0.0", features = ["print-defmt"] } 31panic-probe = { version = "1.0.0", features = ["print-defmt"] }
32static_cell = "2" 32static_cell = "2"
33portable-atomic = { version = "1.5", features = ["critical-section"] } 33portable-atomic = { version = "1.5", features = ["critical-section"] }
diff --git a/tests/nrf/Cargo.toml b/tests/nrf/Cargo.toml
index 50f059b34..b1e0a68c2 100644
--- a/tests/nrf/Cargo.toml
+++ b/tests/nrf/Cargo.toml
@@ -13,7 +13,7 @@ embassy-sync = { version = "0.7.2", path = "../../embassy-sync", features = ["de
13embassy-executor = { version = "0.9.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt"] } 13embassy-executor = { version = "0.9.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt"] }
14embassy-time = { version = "0.5.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime"] } 14embassy-time = { version = "0.5.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime"] }
15embassy-nrf = { version = "0.9.0", path = "../../embassy-nrf", features = ["defmt", "time-driver-rtc1", "gpiote", "unstable-pac"] } 15embassy-nrf = { version = "0.9.0", path = "../../embassy-nrf", features = ["defmt", "time-driver-rtc1", "gpiote", "unstable-pac"] }
16embedded-io-async = { version = "0.6.1", features = ["defmt-03"] } 16embedded-io-async = { version = "0.7.0", features = ["defmt"] }
17embassy-net = { version = "0.7.1", path = "../../embassy-net", features = ["defmt", "tcp", "dhcpv4", "medium-ethernet", ] } 17embassy-net = { version = "0.7.1", path = "../../embassy-net", features = ["defmt", "tcp", "dhcpv4", "medium-ethernet", ] }
18embassy-net-esp-hosted = { version = "0.2.1", path = "../../embassy-net-esp-hosted", features = ["defmt"] } 18embassy-net-esp-hosted = { version = "0.2.1", path = "../../embassy-net-esp-hosted", features = ["defmt"] }
19embassy-net-enc28j60 = { version = "0.2.1", path = "../../embassy-net-enc28j60", features = ["defmt"] } 19embassy-net-enc28j60 = { version = "0.2.1", path = "../../embassy-net-enc28j60", features = ["defmt"] }
diff --git a/tests/rp/Cargo.toml b/tests/rp/Cargo.toml
index 4dfe6904e..375a613d2 100644
--- a/tests/rp/Cargo.toml
+++ b/tests/rp/Cargo.toml
@@ -35,7 +35,7 @@ embedded-hal-1 = { package = "embedded-hal", version = "1.0" }
35embedded-hal-async = { version = "1.0" } 35embedded-hal-async = { version = "1.0" }
36embedded-hal-bus = { version = "0.1", features = ["async"] } 36embedded-hal-bus = { version = "0.1", features = ["async"] }
37panic-probe = { version = "1.0.0", features = ["print-defmt"] } 37panic-probe = { version = "1.0.0", features = ["print-defmt"] }
38embedded-io-async = { version = "0.6.1" } 38embedded-io-async = { version = "0.7.0" }
39embedded-storage = { version = "0.3" } 39embedded-storage = { version = "0.3" }
40static_cell = "2" 40static_cell = "2"
41portable-atomic = { version = "1.5", features = ["critical-section"] } 41portable-atomic = { version = "1.5", features = ["critical-section"] }