aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGerzain Mata <[email protected]>2025-07-16 17:14:12 -0700
committerGerzain Mata <[email protected]>2025-07-16 17:14:12 -0700
commit6d0927b1746b7f972e9fbf2278aa854a64f4f776 (patch)
tree057875552f7273e8e36094a05f0ee2c8e5f8495b
parented64d99a510dab0d2a8c9a1b6bf362a95e5ffd35 (diff)
parent3b718b1e4d3aed9953717b460920a7736298a2a8 (diff)
Merge branch 'main' into feat/adc4-stm32wba
-rwxr-xr-xci.sh4
-rw-r--r--cyw43-pio/CHANGELOG.md9
-rw-r--r--cyw43-pio/Cargo.toml6
-rw-r--r--cyw43-pio/release.toml5
-rw-r--r--cyw43/CHANGELOG.md9
-rw-r--r--cyw43/Cargo.toml4
-rw-r--r--cyw43/release.toml5
-rw-r--r--docs/examples/basic/Cargo.toml2
-rw-r--r--embassy-boot-nrf/Cargo.toml2
-rw-r--r--embassy-boot-rp/Cargo.toml2
-rw-r--r--embassy-boot/Cargo.toml2
-rw-r--r--embassy-embedded-hal/CHANGELOG.md2
-rw-r--r--embassy-embedded-hal/Cargo.toml2
-rw-r--r--embassy-imxrt/Cargo.toml2
-rw-r--r--embassy-mspm0/Cargo.toml2
-rw-r--r--embassy-net-adin1110/Cargo.toml2
-rw-r--r--embassy-net-driver-channel/CHANGELOG.md2
-rw-r--r--embassy-net-driver-channel/Cargo.toml2
-rw-r--r--embassy-net-esp-hosted/Cargo.toml2
-rw-r--r--embassy-net-nrf91/Cargo.toml2
-rw-r--r--embassy-net-ppp/Cargo.toml2
-rw-r--r--embassy-net-wiznet/Cargo.toml2
-rw-r--r--embassy-nrf/CHANGELOG.md4
-rw-r--r--embassy-nrf/Cargo.toml6
-rw-r--r--embassy-nrf/src/lib.rs31
-rw-r--r--embassy-nrf/src/usb/mod.rs51
-rw-r--r--embassy-rp/CHANGELOG.md6
-rw-r--r--embassy-rp/Cargo.toml6
-rw-r--r--embassy-rp/src/i2c.rs1
-rw-r--r--embassy-rp/src/usb.rs30
-rw-r--r--embassy-stm32-wpan/Cargo.toml2
-rw-r--r--embassy-stm32/Cargo.toml8
-rw-r--r--embassy-stm32/src/rcc/mco.rs2
-rw-r--r--embassy-stm32/src/usart/buffered.rs2
-rw-r--r--embassy-stm32/src/usart/mod.rs2
-rw-r--r--embassy-stm32/src/usb/otg.rs10
-rw-r--r--embassy-stm32/src/usb/usb.rs68
-rw-r--r--embassy-usb-dfu/Cargo.toml2
-rw-r--r--embassy-usb-driver/CHANGELOG.md6
-rw-r--r--embassy-usb-driver/Cargo.toml2
-rw-r--r--embassy-usb-driver/src/lib.rs2
-rw-r--r--embassy-usb-logger/Cargo.toml2
-rw-r--r--embassy-usb-synopsys-otg/Cargo.toml2
-rw-r--r--embassy-usb-synopsys-otg/src/lib.rs62
-rw-r--r--embassy-usb/CHANGELOG.md3
-rw-r--r--embassy-usb/Cargo.toml6
-rw-r--r--embassy-usb/src/builder.rs47
-rw-r--r--embassy-usb/src/class/cdc_acm.rs8
-rw-r--r--embassy-usb/src/class/cdc_ncm/mod.rs6
-rw-r--r--embassy-usb/src/class/cmsis_dap_v2.rs6
-rw-r--r--embassy-usb/src/class/hid.rs4
-rw-r--r--embassy-usb/src/class/midi.rs4
-rw-r--r--embassy-usb/src/class/uac1/speaker.rs3
-rw-r--r--examples/boot/application/nrf/Cargo.toml4
-rw-r--r--examples/boot/application/rp/Cargo.toml4
-rw-r--r--examples/boot/application/stm32f3/Cargo.toml2
-rw-r--r--examples/boot/application/stm32f7/Cargo.toml2
-rw-r--r--examples/boot/application/stm32h7/Cargo.toml2
-rw-r--r--examples/boot/application/stm32l0/Cargo.toml2
-rw-r--r--examples/boot/application/stm32l1/Cargo.toml2
-rw-r--r--examples/boot/application/stm32l4/Cargo.toml2
-rw-r--r--examples/boot/application/stm32wb-dfu/Cargo.toml4
-rw-r--r--examples/boot/application/stm32wl/Cargo.toml2
-rw-r--r--examples/boot/bootloader/stm32wb-dfu/Cargo.toml2
-rw-r--r--examples/nrf-rtos-trace/Cargo.toml2
-rw-r--r--examples/nrf51/Cargo.toml2
-rw-r--r--examples/nrf52810/Cargo.toml2
-rw-r--r--examples/nrf52840-rtic/Cargo.toml2
-rw-r--r--examples/nrf52840/Cargo.toml4
-rw-r--r--examples/nrf5340/Cargo.toml4
-rw-r--r--examples/nrf54l15/Cargo.toml2
-rw-r--r--examples/nrf9151/ns/Cargo.toml2
-rw-r--r--examples/nrf9151/s/Cargo.toml2
-rw-r--r--examples/nrf9160/Cargo.toml2
-rw-r--r--examples/rp/Cargo.toml10
-rw-r--r--examples/rp/src/bin/usb_raw_bulk.rs4
-rw-r--r--examples/rp/src/bin/usb_webusb.rs4
-rw-r--r--examples/rp235x/Cargo.toml10
-rw-r--r--examples/rp235x/memory.x4
-rw-r--r--examples/rp235x/src/bin/usb_webusb.rs4
-rw-r--r--examples/stm32f1/Cargo.toml2
-rw-r--r--examples/stm32f3/Cargo.toml2
-rw-r--r--examples/stm32f334/Cargo.toml2
-rw-r--r--examples/stm32f4/Cargo.toml2
-rw-r--r--examples/stm32f7/Cargo.toml2
-rw-r--r--examples/stm32g0/Cargo.toml2
-rw-r--r--examples/stm32g4/Cargo.toml2
-rw-r--r--examples/stm32h5/Cargo.toml2
-rw-r--r--examples/stm32h7/Cargo.toml4
-rw-r--r--examples/stm32h735/Cargo.toml2
-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.toml2
-rw-r--r--examples/stm32l1/Cargo.toml2
-rw-r--r--examples/stm32l4/Cargo.toml4
-rw-r--r--examples/stm32l5/Cargo.toml2
-rw-r--r--examples/stm32u0/Cargo.toml2
-rw-r--r--examples/stm32u5/Cargo.toml2
-rw-r--r--examples/stm32wl/Cargo.toml2
-rw-r--r--tests/mspm0/Cargo.toml2
-rw-r--r--tests/nrf/Cargo.toml2
-rw-r--r--tests/rp/Cargo.toml4
104 files changed, 413 insertions, 201 deletions
diff --git a/ci.sh b/ci.sh
index 32c9f9321..05720e4f2 100755
--- a/ci.sh
+++ b/ci.sh
@@ -155,6 +155,7 @@ cargo batch \
155 --- build --release --manifest-path embassy-stm32/Cargo.toml --target thumbv7em-none-eabi --features stm32f303c8,defmt,exti,time-driver-any,time \ 155 --- build --release --manifest-path embassy-stm32/Cargo.toml --target thumbv7em-none-eabi --features stm32f303c8,defmt,exti,time-driver-any,time \
156 --- build --release --manifest-path embassy-stm32/Cargo.toml --target thumbv7em-none-eabi --features stm32f398ve,defmt,exti,time-driver-any,time \ 156 --- build --release --manifest-path embassy-stm32/Cargo.toml --target thumbv7em-none-eabi --features stm32f398ve,defmt,exti,time-driver-any,time \
157 --- build --release --manifest-path embassy-stm32/Cargo.toml --target thumbv7em-none-eabi --features stm32f378cc,defmt,exti,time-driver-any,time \ 157 --- build --release --manifest-path embassy-stm32/Cargo.toml --target thumbv7em-none-eabi --features stm32f378cc,defmt,exti,time-driver-any,time \
158 --- build --release --manifest-path embassy-stm32/Cargo.toml --target thumbv6m-none-eabi --features stm32g0b0ce,defmt,exti,time-driver-any,time \
158 --- build --release --manifest-path embassy-stm32/Cargo.toml --target thumbv6m-none-eabi --features stm32g0c1ve,defmt,exti,time-driver-any,time \ 159 --- build --release --manifest-path embassy-stm32/Cargo.toml --target thumbv6m-none-eabi --features stm32g0c1ve,defmt,exti,time-driver-any,time \
159 --- build --release --manifest-path embassy-stm32/Cargo.toml --target thumbv7m-none-eabi --features stm32f217zg,defmt,exti,time-driver-any,time \ 160 --- build --release --manifest-path embassy-stm32/Cargo.toml --target thumbv7m-none-eabi --features stm32f217zg,defmt,exti,time-driver-any,time \
160 --- build --release --manifest-path embassy-stm32/Cargo.toml --target thumbv8m.main-none-eabihf --features stm32l552ze,dual-bank,defmt,exti,time-driver-any,low-power,time \ 161 --- build --release --manifest-path embassy-stm32/Cargo.toml --target thumbv8m.main-none-eabihf --features stm32l552ze,dual-bank,defmt,exti,time-driver-any,low-power,time \
@@ -372,6 +373,9 @@ rm out/tests/pimoroni-pico-plus-2/adc
372# temporarily disabled 373# temporarily disabled
373rm out/tests/pimoroni-pico-plus-2/pwm 374rm out/tests/pimoroni-pico-plus-2/pwm
374 375
376# flaky
377rm out/tests/rpi-pico/pwm
378
375if [[ -z "${TELEPROBE_TOKEN-}" ]]; then 379if [[ -z "${TELEPROBE_TOKEN-}" ]]; then
376 echo No teleprobe token found, skipping running HIL tests 380 echo No teleprobe token found, skipping running HIL tests
377 exit 381 exit
diff --git a/cyw43-pio/CHANGELOG.md b/cyw43-pio/CHANGELOG.md
index 4d56973df..218271e15 100644
--- a/cyw43-pio/CHANGELOG.md
+++ b/cyw43-pio/CHANGELOG.md
@@ -5,9 +5,14 @@ All notable changes to this project will be documented in this file.
5The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), 5The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). 6and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7 7
8## Unreleased 8<!-- next-header -->
9## Unreleased - ReleaseDate
9 10
10- Update embassy-rp to 0.4.0 11## 0.5.1 - 2025-07-16
12
13## 0.5.0 - 2025-07-15
14
15- Update embassy-rp to 0.5.0
11 16
12## 0.3.0 - 2025-01-05 17## 0.3.0 - 2025-01-05
13 18
diff --git a/cyw43-pio/Cargo.toml b/cyw43-pio/Cargo.toml
index 93a2e7089..d60793bdc 100644
--- a/cyw43-pio/Cargo.toml
+++ b/cyw43-pio/Cargo.toml
@@ -1,6 +1,6 @@
1[package] 1[package]
2name = "cyw43-pio" 2name = "cyw43-pio"
3version = "0.4.0" 3version = "0.5.1"
4edition = "2021" 4edition = "2021"
5description = "RP2040 PIO SPI implementation for cyw43" 5description = "RP2040 PIO SPI implementation for cyw43"
6keywords = ["embedded", "cyw43", "embassy-net", "embedded-hal-async", "wifi"] 6keywords = ["embedded", "cyw43", "embassy-net", "embedded-hal-async", "wifi"]
@@ -10,8 +10,8 @@ repository = "https://github.com/embassy-rs/embassy"
10documentation = "https://docs.embassy.dev/cyw43-pio" 10documentation = "https://docs.embassy.dev/cyw43-pio"
11 11
12[dependencies] 12[dependencies]
13cyw43 = { version = "0.3.0", path = "../cyw43" } 13cyw43 = { version = "0.4.0", path = "../cyw43" }
14embassy-rp = { version = "0.4.0", path = "../embassy-rp" } 14embassy-rp = { version = "0.6.0", path = "../embassy-rp" }
15fixed = "1.23.1" 15fixed = "1.23.1"
16defmt = { version = "1.0.1", optional = true } 16defmt = { version = "1.0.1", optional = true }
17 17
diff --git a/cyw43-pio/release.toml b/cyw43-pio/release.toml
new file mode 100644
index 000000000..fb6feaf21
--- /dev/null
+++ b/cyw43-pio/release.toml
@@ -0,0 +1,5 @@
1pre-release-replacements = [
2 {file="CHANGELOG.md", search="Unreleased", replace="{{version}}", min=1},
3 {file="CHANGELOG.md", search="ReleaseDate", replace="{{date}}", min=1},
4 {file="CHANGELOG.md", search="<!-- next-header -->", replace="<!-- next-header -->\n## Unreleased - ReleaseDate\n", exactly=1},
5]
diff --git a/cyw43/CHANGELOG.md b/cyw43/CHANGELOG.md
index 40a638388..c800e785b 100644
--- a/cyw43/CHANGELOG.md
+++ b/cyw43/CHANGELOG.md
@@ -5,7 +5,14 @@ All notable changes to this project will be documented in this file.
5The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), 5The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). 6and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7 7
8## Unreleased 8<!-- next-header -->
9## Unreleased - ReleaseDate
10
11## 0.4.0 - 2025-07-15
12
13- bump embassy-sync to 0.7.0
14- bump bt-hci to 0.3.0
15- make State::new const fn
9 16
10## 0.3.0 - 2025-01-05 17## 0.3.0 - 2025-01-05
11 18
diff --git a/cyw43/Cargo.toml b/cyw43/Cargo.toml
index c52a653bd..8aef8963c 100644
--- a/cyw43/Cargo.toml
+++ b/cyw43/Cargo.toml
@@ -1,6 +1,6 @@
1[package] 1[package]
2name = "cyw43" 2name = "cyw43"
3version = "0.3.0" 3version = "0.4.0"
4edition = "2021" 4edition = "2021"
5description = "Rust driver for the CYW43439 WiFi chip, used in the Raspberry Pi Pico W." 5description = "Rust driver for the CYW43439 WiFi chip, used in the Raspberry Pi Pico W."
6keywords = ["embedded", "cyw43", "embassy-net", "embedded-hal-async", "wifi"] 6keywords = ["embedded", "cyw43", "embassy-net", "embedded-hal-async", "wifi"]
@@ -21,7 +21,7 @@ firmware-logs = []
21embassy-time = { version = "0.4.0", path = "../embassy-time"} 21embassy-time = { version = "0.4.0", path = "../embassy-time"}
22embassy-sync = { version = "0.7.0", path = "../embassy-sync"} 22embassy-sync = { version = "0.7.0", path = "../embassy-sync"}
23embassy-futures = { version = "0.1.0", path = "../embassy-futures"} 23embassy-futures = { version = "0.1.0", path = "../embassy-futures"}
24embassy-net-driver-channel = { version = "0.3.0", path = "../embassy-net-driver-channel"} 24embassy-net-driver-channel = { version = "0.3.1", path = "../embassy-net-driver-channel"}
25 25
26defmt = { version = "1.0.1", optional = true } 26defmt = { version = "1.0.1", optional = true }
27log = { version = "0.4.17", optional = true } 27log = { version = "0.4.17", optional = true }
diff --git a/cyw43/release.toml b/cyw43/release.toml
new file mode 100644
index 000000000..fb6feaf21
--- /dev/null
+++ b/cyw43/release.toml
@@ -0,0 +1,5 @@
1pre-release-replacements = [
2 {file="CHANGELOG.md", search="Unreleased", replace="{{version}}", min=1},
3 {file="CHANGELOG.md", search="ReleaseDate", replace="{{date}}", min=1},
4 {file="CHANGELOG.md", search="<!-- next-header -->", replace="<!-- next-header -->\n## Unreleased - ReleaseDate\n", exactly=1},
5]
diff --git a/docs/examples/basic/Cargo.toml b/docs/examples/basic/Cargo.toml
index 09fc517e7..c4b72d81a 100644
--- a/docs/examples/basic/Cargo.toml
+++ b/docs/examples/basic/Cargo.toml
@@ -8,7 +8,7 @@ license = "MIT OR Apache-2.0"
8[dependencies] 8[dependencies]
9embassy-executor = { version = "0.7.0", path = "../../../embassy-executor", features = ["defmt", "arch-cortex-m", "executor-thread"] } 9embassy-executor = { version = "0.7.0", path = "../../../embassy-executor", features = ["defmt", "arch-cortex-m", "executor-thread"] }
10embassy-time = { version = "0.4.0", path = "../../../embassy-time", features = ["defmt"] } 10embassy-time = { version = "0.4.0", path = "../../../embassy-time", features = ["defmt"] }
11embassy-nrf = { version = "0.4.0", path = "../../../embassy-nrf", features = ["defmt", "nrf52840", "time-driver-rtc1", "gpiote"] } 11embassy-nrf = { version = "0.5.0", path = "../../../embassy-nrf", features = ["defmt", "nrf52840", "time-driver-rtc1", "gpiote"] }
12 12
13defmt = "1.0.1" 13defmt = "1.0.1"
14defmt-rtt = "1.0.0" 14defmt-rtt = "1.0.0"
diff --git a/embassy-boot-nrf/Cargo.toml b/embassy-boot-nrf/Cargo.toml
index f5edc0716..1230cbd3b 100644
--- a/embassy-boot-nrf/Cargo.toml
+++ b/embassy-boot-nrf/Cargo.toml
@@ -25,7 +25,7 @@ defmt = { version = "1.0.1", optional = true }
25log = { version = "0.4.17", optional = true } 25log = { version = "0.4.17", optional = true }
26 26
27embassy-sync = { version = "0.7.0", path = "../embassy-sync" } 27embassy-sync = { version = "0.7.0", path = "../embassy-sync" }
28embassy-nrf = { version = "0.4.0", path = "../embassy-nrf", default-features = false } 28embassy-nrf = { version = "0.5.0", path = "../embassy-nrf", default-features = false }
29embassy-boot = { version = "0.4.0", path = "../embassy-boot" } 29embassy-boot = { version = "0.4.0", path = "../embassy-boot" }
30cortex-m = { version = "0.7.6" } 30cortex-m = { version = "0.7.6" }
31cortex-m-rt = { version = "0.7" } 31cortex-m-rt = { version = "0.7" }
diff --git a/embassy-boot-rp/Cargo.toml b/embassy-boot-rp/Cargo.toml
index afe5d6691..23d6c7853 100644
--- a/embassy-boot-rp/Cargo.toml
+++ b/embassy-boot-rp/Cargo.toml
@@ -25,7 +25,7 @@ defmt = { version = "1.0.1", optional = true }
25log = { version = "0.4", optional = true } 25log = { version = "0.4", optional = true }
26 26
27embassy-sync = { version = "0.7.0", path = "../embassy-sync" } 27embassy-sync = { version = "0.7.0", path = "../embassy-sync" }
28embassy-rp = { version = "0.4.0", path = "../embassy-rp", default-features = false } 28embassy-rp = { version = "0.6.0", path = "../embassy-rp", default-features = false }
29embassy-boot = { version = "0.4.0", path = "../embassy-boot" } 29embassy-boot = { version = "0.4.0", path = "../embassy-boot" }
30embassy-time = { version = "0.4.0", path = "../embassy-time" } 30embassy-time = { version = "0.4.0", path = "../embassy-time" }
31 31
diff --git a/embassy-boot/Cargo.toml b/embassy-boot/Cargo.toml
index f12e8e304..281278abb 100644
--- a/embassy-boot/Cargo.toml
+++ b/embassy-boot/Cargo.toml
@@ -28,7 +28,7 @@ defmt = { version = "1.0.1", optional = true }
28digest = "0.10" 28digest = "0.10"
29log = { version = "0.4", optional = true } 29log = { version = "0.4", optional = true }
30ed25519-dalek = { version = "2", default-features = false, features = ["digest"], optional = true } 30ed25519-dalek = { version = "2", default-features = false, features = ["digest"], optional = true }
31embassy-embedded-hal = { version = "0.3.0", path = "../embassy-embedded-hal" } 31embassy-embedded-hal = { version = "0.3.1", path = "../embassy-embedded-hal" }
32embassy-sync = { version = "0.7.0", path = "../embassy-sync" } 32embassy-sync = { version = "0.7.0", path = "../embassy-sync" }
33embedded-storage = "0.3.1" 33embedded-storage = "0.3.1"
34embedded-storage-async = { version = "0.4.1" } 34embedded-storage-async = { version = "0.4.1" }
diff --git a/embassy-embedded-hal/CHANGELOG.md b/embassy-embedded-hal/CHANGELOG.md
index 6f0655adf..04d95415c 100644
--- a/embassy-embedded-hal/CHANGELOG.md
+++ b/embassy-embedded-hal/CHANGELOG.md
@@ -8,6 +8,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
8<!-- next-header --> 8<!-- next-header -->
9## Unreleased - ReleaseDate 9## Unreleased - ReleaseDate
10 10
11## 0.3.1 - 2025-07-16
12
11- `SpiDevice` cancel safety: always set CS pin to high on drop 13- `SpiDevice` cancel safety: always set CS pin to high on drop
12- Update `embassy-sync` to v0.7.0 14- Update `embassy-sync` to v0.7.0
13 15
diff --git a/embassy-embedded-hal/Cargo.toml b/embassy-embedded-hal/Cargo.toml
index 2bc817758..aab6e0f1e 100644
--- a/embassy-embedded-hal/Cargo.toml
+++ b/embassy-embedded-hal/Cargo.toml
@@ -1,6 +1,6 @@
1[package] 1[package]
2name = "embassy-embedded-hal" 2name = "embassy-embedded-hal"
3version = "0.3.0" 3version = "0.3.1"
4edition = "2021" 4edition = "2021"
5license = "MIT OR Apache-2.0" 5license = "MIT OR Apache-2.0"
6description = "Collection of utilities to use `embedded-hal` and `embedded-storage` traits with Embassy." 6description = "Collection of utilities to use `embedded-hal` and `embedded-storage` traits with Embassy."
diff --git a/embassy-imxrt/Cargo.toml b/embassy-imxrt/Cargo.toml
index a7caa307e..df4687043 100644
--- a/embassy-imxrt/Cargo.toml
+++ b/embassy-imxrt/Cargo.toml
@@ -68,7 +68,7 @@ embassy-time-driver = { version = "0.2", path = "../embassy-time-driver", option
68embassy-time-queue-utils = { version = "0.1", path = "../embassy-time-queue-utils", optional = true } 68embassy-time-queue-utils = { version = "0.1", path = "../embassy-time-queue-utils", optional = true }
69embassy-time = { version = "0.4", path = "../embassy-time", optional = true } 69embassy-time = { version = "0.4", path = "../embassy-time", optional = true }
70embassy-hal-internal = { version = "0.3.0", path = "../embassy-hal-internal", features = ["cortex-m", "prio-bits-3"] } 70embassy-hal-internal = { version = "0.3.0", path = "../embassy-hal-internal", features = ["cortex-m", "prio-bits-3"] }
71embassy-embedded-hal = { version = "0.3.0", path = "../embassy-embedded-hal", default-features = false } 71embassy-embedded-hal = { version = "0.3.1", path = "../embassy-embedded-hal", default-features = false }
72embassy-futures = { version = "0.1.1", path = "../embassy-futures" } 72embassy-futures = { version = "0.1.1", path = "../embassy-futures" }
73 73
74defmt = { version = "1.0.1", optional = true } 74defmt = { version = "1.0.1", optional = true }
diff --git a/embassy-mspm0/Cargo.toml b/embassy-mspm0/Cargo.toml
index a2ecbc7db..d2adc63d7 100644
--- a/embassy-mspm0/Cargo.toml
+++ b/embassy-mspm0/Cargo.toml
@@ -32,7 +32,7 @@ embassy-time-driver = { version = "0.2", path = "../embassy-time-driver", option
32embassy-time-queue-utils = { version = "0.1", path = "../embassy-time-queue-utils", optional = true } 32embassy-time-queue-utils = { version = "0.1", path = "../embassy-time-queue-utils", optional = true }
33embassy-futures = { version = "0.1.0", path = "../embassy-futures" } 33embassy-futures = { version = "0.1.0", path = "../embassy-futures" }
34embassy-hal-internal = { version = "0.3.0", path = "../embassy-hal-internal", features = ["cortex-m", "prio-bits-2"] } 34embassy-hal-internal = { version = "0.3.0", path = "../embassy-hal-internal", features = ["cortex-m", "prio-bits-2"] }
35embassy-embedded-hal = { version = "0.3.0", path = "../embassy-embedded-hal", default-features = false } 35embassy-embedded-hal = { version = "0.3.1", path = "../embassy-embedded-hal", default-features = false }
36embassy-executor = { version = "0.7.0", path = "../embassy-executor", optional = true } 36embassy-executor = { version = "0.7.0", path = "../embassy-executor", optional = true }
37 37
38embedded-hal = { version = "1.0" } 38embedded-hal = { version = "1.0" }
diff --git a/embassy-net-adin1110/Cargo.toml b/embassy-net-adin1110/Cargo.toml
index a620928cb..9cda4dc5b 100644
--- a/embassy-net-adin1110/Cargo.toml
+++ b/embassy-net-adin1110/Cargo.toml
@@ -16,7 +16,7 @@ log = { version = "0.4", default-features = false, optional = true }
16embedded-hal-1 = { package = "embedded-hal", version = "1.0" } 16embedded-hal-1 = { package = "embedded-hal", version = "1.0" }
17embedded-hal-async = { version = "1.0" } 17embedded-hal-async = { version = "1.0" }
18embedded-hal-bus = { version = "0.1", features = ["async"] } 18embedded-hal-bus = { version = "0.1", features = ["async"] }
19embassy-net-driver-channel = { version = "0.3.0", path = "../embassy-net-driver-channel" } 19embassy-net-driver-channel = { version = "0.3.1", path = "../embassy-net-driver-channel" }
20embassy-time = { version = "0.4.0", path = "../embassy-time" } 20embassy-time = { version = "0.4.0", path = "../embassy-time" }
21embassy-futures = { version = "0.1.0", path = "../embassy-futures" } 21embassy-futures = { version = "0.1.0", path = "../embassy-futures" }
22bitfield = "0.14.0" 22bitfield = "0.14.0"
diff --git a/embassy-net-driver-channel/CHANGELOG.md b/embassy-net-driver-channel/CHANGELOG.md
index a5c81cf4d..1189e50c3 100644
--- a/embassy-net-driver-channel/CHANGELOG.md
+++ b/embassy-net-driver-channel/CHANGELOG.md
@@ -8,6 +8,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
8<!-- next-header --> 8<!-- next-header -->
9## Unreleased - ReleaseDate 9## Unreleased - ReleaseDate
10 10
11## 0.3.1 - 2025-07-16
12
11- Update `embassy-sync` to v0.7.0 13- Update `embassy-sync` to v0.7.0
12 14
13## 0.3.0 - 2024-08-05 15## 0.3.0 - 2024-08-05
diff --git a/embassy-net-driver-channel/Cargo.toml b/embassy-net-driver-channel/Cargo.toml
index c16c4be74..386d492c6 100644
--- a/embassy-net-driver-channel/Cargo.toml
+++ b/embassy-net-driver-channel/Cargo.toml
@@ -1,6 +1,6 @@
1[package] 1[package]
2name = "embassy-net-driver-channel" 2name = "embassy-net-driver-channel"
3version = "0.3.0" 3version = "0.3.1"
4edition = "2021" 4edition = "2021"
5license = "MIT OR Apache-2.0" 5license = "MIT OR Apache-2.0"
6description = "High-level channel-based driver for the `embassy-net` async TCP/IP network stack." 6description = "High-level channel-based driver for the `embassy-net` async TCP/IP network stack."
diff --git a/embassy-net-esp-hosted/Cargo.toml b/embassy-net-esp-hosted/Cargo.toml
index dea74ed65..7ccef84e8 100644
--- a/embassy-net-esp-hosted/Cargo.toml
+++ b/embassy-net-esp-hosted/Cargo.toml
@@ -20,7 +20,7 @@ log = { version = "0.4.14", optional = true }
20embassy-time = { version = "0.4.0", path = "../embassy-time" } 20embassy-time = { version = "0.4.0", path = "../embassy-time" }
21embassy-sync = { version = "0.7.0", path = "../embassy-sync"} 21embassy-sync = { version = "0.7.0", path = "../embassy-sync"}
22embassy-futures = { version = "0.1.0", path = "../embassy-futures"} 22embassy-futures = { version = "0.1.0", path = "../embassy-futures"}
23embassy-net-driver-channel = { version = "0.3.0", path = "../embassy-net-driver-channel"} 23embassy-net-driver-channel = { version = "0.3.1", path = "../embassy-net-driver-channel"}
24 24
25embedded-hal = { version = "1.0" } 25embedded-hal = { version = "1.0" }
26embedded-hal-async = { version = "1.0" } 26embedded-hal-async = { version = "1.0" }
diff --git a/embassy-net-nrf91/Cargo.toml b/embassy-net-nrf91/Cargo.toml
index 1c27cabb4..f3c0a0078 100644
--- a/embassy-net-nrf91/Cargo.toml
+++ b/embassy-net-nrf91/Cargo.toml
@@ -23,7 +23,7 @@ cortex-m = "0.7.7"
23embassy-time = { version = "0.4.0", path = "../embassy-time" } 23embassy-time = { version = "0.4.0", path = "../embassy-time" }
24embassy-sync = { version = "0.7.0", path = "../embassy-sync" } 24embassy-sync = { version = "0.7.0", path = "../embassy-sync" }
25embassy-futures = { version = "0.1.0", path = "../embassy-futures" } 25embassy-futures = { version = "0.1.0", path = "../embassy-futures" }
26embassy-net-driver-channel = { version = "0.3.0", path = "../embassy-net-driver-channel" } 26embassy-net-driver-channel = { version = "0.3.1", path = "../embassy-net-driver-channel" }
27 27
28heapless = "0.8" 28heapless = "0.8"
29embedded-io = "0.6.1" 29embedded-io = "0.6.1"
diff --git a/embassy-net-ppp/Cargo.toml b/embassy-net-ppp/Cargo.toml
index 0936626eb..b724401c9 100644
--- a/embassy-net-ppp/Cargo.toml
+++ b/embassy-net-ppp/Cargo.toml
@@ -18,7 +18,7 @@ defmt = { 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.6.1" }
21embassy-net-driver-channel = { version = "0.3.0", path = "../embassy-net-driver-channel" } 21embassy-net-driver-channel = { version = "0.3.1", path = "../embassy-net-driver-channel" }
22embassy-futures = { version = "0.1.0", path = "../embassy-futures" } 22embassy-futures = { version = "0.1.0", path = "../embassy-futures" }
23ppproto = { version = "0.2.1"} 23ppproto = { version = "0.2.1"}
24embassy-sync = { version = "0.7.0", path = "../embassy-sync" } 24embassy-sync = { version = "0.7.0", path = "../embassy-sync" }
diff --git a/embassy-net-wiznet/Cargo.toml b/embassy-net-wiznet/Cargo.toml
index a06a09302..3ff01f72b 100644
--- a/embassy-net-wiznet/Cargo.toml
+++ b/embassy-net-wiznet/Cargo.toml
@@ -12,7 +12,7 @@ documentation = "https://docs.embassy.dev/embassy-net-wiznet"
12[dependencies] 12[dependencies]
13embedded-hal = { version = "1.0" } 13embedded-hal = { version = "1.0" }
14embedded-hal-async = { version = "1.0" } 14embedded-hal-async = { version = "1.0" }
15embassy-net-driver-channel = { version = "0.3.0", path = "../embassy-net-driver-channel" } 15embassy-net-driver-channel = { version = "0.3.1", path = "../embassy-net-driver-channel" }
16embassy-time = { version = "0.4.0", path = "../embassy-time" } 16embassy-time = { version = "0.4.0", path = "../embassy-time" }
17embassy-futures = { version = "0.1.0", path = "../embassy-futures" } 17embassy-futures = { version = "0.1.0", path = "../embassy-futures" }
18defmt = { version = "1.0.1", optional = true } 18defmt = { version = "1.0.1", optional = true }
diff --git a/embassy-nrf/CHANGELOG.md b/embassy-nrf/CHANGELOG.md
index 30f29d669..a4cb8ceaf 100644
--- a/embassy-nrf/CHANGELOG.md
+++ b/embassy-nrf/CHANGELOG.md
@@ -8,6 +8,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
8<!-- next-header --> 8<!-- next-header -->
9## Unreleased - ReleaseDate 9## Unreleased - ReleaseDate
10 10
11## 0.5.0 - 2025-07-16
12
13- changed: update to latest embassy-usb-driver
14
11## 0.4.1 - 2025-07-14 15## 0.4.1 - 2025-07-14
12 16
13- changed: nrf52833: configure internal LDO 17- changed: nrf52833: configure internal LDO
diff --git a/embassy-nrf/Cargo.toml b/embassy-nrf/Cargo.toml
index 3e43d3c93..8fa20580d 100644
--- a/embassy-nrf/Cargo.toml
+++ b/embassy-nrf/Cargo.toml
@@ -1,6 +1,6 @@
1[package] 1[package]
2name = "embassy-nrf" 2name = "embassy-nrf"
3version = "0.4.1" 3version = "0.5.0"
4edition = "2021" 4edition = "2021"
5license = "MIT OR Apache-2.0" 5license = "MIT OR Apache-2.0"
6description = "Embassy Hardware Abstraction Layer (HAL) for nRF series microcontrollers" 6description = "Embassy Hardware Abstraction Layer (HAL) for nRF series microcontrollers"
@@ -145,8 +145,8 @@ embassy-time-queue-utils = { version = "0.1", path = "../embassy-time-queue-util
145embassy-time = { version = "0.4.0", path = "../embassy-time", optional = true } 145embassy-time = { version = "0.4.0", path = "../embassy-time", optional = true }
146embassy-sync = { version = "0.7.0", path = "../embassy-sync" } 146embassy-sync = { version = "0.7.0", path = "../embassy-sync" }
147embassy-hal-internal = { version = "0.3.0", path = "../embassy-hal-internal", features = ["cortex-m", "prio-bits-3"] } 147embassy-hal-internal = { version = "0.3.0", path = "../embassy-hal-internal", features = ["cortex-m", "prio-bits-3"] }
148embassy-embedded-hal = { version = "0.3.0", path = "../embassy-embedded-hal", default-features = false } 148embassy-embedded-hal = { version = "0.3.1", path = "../embassy-embedded-hal", default-features = false }
149embassy-usb-driver = { version = "0.1.0", path = "../embassy-usb-driver" } 149embassy-usb-driver = { version = "0.2.0", path = "../embassy-usb-driver" }
150 150
151embedded-hal-02 = { package = "embedded-hal", version = "0.2.6", features = ["unproven"] } 151embedded-hal-02 = { package = "embedded-hal", version = "0.2.6", features = ["unproven"] }
152embedded-hal-1 = { package = "embedded-hal", version = "1.0" } 152embedded-hal-1 = { package = "embedded-hal", version = "1.0" }
diff --git a/embassy-nrf/src/lib.rs b/embassy-nrf/src/lib.rs
index 9d44ae7e6..44990ed85 100644
--- a/embassy-nrf/src/lib.rs
+++ b/embassy-nrf/src/lib.rs
@@ -586,6 +586,8 @@ mod consts {
586 pub const UICR_APPROTECT: *mut u32 = 0x00FF8000 as *mut u32; 586 pub const UICR_APPROTECT: *mut u32 = 0x00FF8000 as *mut u32;
587 pub const UICR_SECUREAPPROTECT: *mut u32 = 0x00FF802C as *mut u32; 587 pub const UICR_SECUREAPPROTECT: *mut u32 = 0x00FF802C as *mut u32;
588 pub const APPROTECT_ENABLED: u32 = 0x0000_0000; 588 pub const APPROTECT_ENABLED: u32 = 0x0000_0000;
589 #[cfg(feature = "_nrf9120")]
590 pub const APPROTECT_DISABLED: u32 = 0x50FA50FA;
589} 591}
590 592
591#[cfg(feature = "_nrf5340-app")] 593#[cfg(feature = "_nrf5340-app")]
@@ -768,6 +770,28 @@ pub fn init(config: config::Config) -> Peripherals {
768 } 770 }
769 771
770 // nothing to do on the nrf9160, debug is allowed by default. 772 // nothing to do on the nrf9160, debug is allowed by default.
773
774 // nrf9151, nrf9161 use the new-style approtect that requires writing a register.
775 #[cfg(feature = "nrf9120-s")]
776 unsafe {
777 let p = pac::APPROTECT_S;
778
779 let res = uicr_write(consts::UICR_APPROTECT, consts::APPROTECT_DISABLED);
780 needs_reset |= res == WriteResult::Written;
781 p.approtect()
782 .disable()
783 .write(|w| w.set_disable(pac::approtect::vals::ApprotectDisableDisable::SW_UNPROTECTED));
784
785 let res = uicr_write(consts::UICR_SECUREAPPROTECT, consts::APPROTECT_DISABLED);
786 needs_reset |= res == WriteResult::Written;
787 p.secureapprotect()
788 .disable()
789 .write(|w| w.set_disable(pac::approtect::vals::SecureapprotectDisableDisable::SW_UNPROTECTED));
790
791 // TODO: maybe add workaround for this errata
792 // It uses extra power, not sure how to let the user choose.
793 // https://docs.nordicsemi.com/bundle/errata_nRF9151_Rev1/page/ERR/nRF9151/Rev1/latest/anomaly_151_36.html#anomaly_151_36
794 }
771 } 795 }
772 config::Debug::Disallowed => { 796 config::Debug::Disallowed => {
773 // TODO: Handle nRF54L 797 // TODO: Handle nRF54L
@@ -783,6 +807,13 @@ pub fn init(config: config::Config) -> Peripherals {
783 let res = uicr_write(consts::UICR_SECUREAPPROTECT, consts::APPROTECT_ENABLED); 807 let res = uicr_write(consts::UICR_SECUREAPPROTECT, consts::APPROTECT_ENABLED);
784 needs_reset |= res == WriteResult::Written; 808 needs_reset |= res == WriteResult::Written;
785 } 809 }
810
811 #[cfg(feature = "nrf9120-s")]
812 {
813 let p = pac::APPROTECT_S;
814 p.approtect().forceprotect().write(|w| w.set_forceprotect(true));
815 p.secureapprotect().forceprotect().write(|w| w.set_forceprotect(true));
816 }
786 } 817 }
787 } 818 }
788 config::Debug::NotConfigured => {} 819 config::Debug::NotConfigured => {}
diff --git a/embassy-nrf/src/usb/mod.rs b/embassy-nrf/src/usb/mod.rs
index 6cc1b0111..c6970fc0f 100644
--- a/embassy-nrf/src/usb/mod.rs
+++ b/embassy-nrf/src/usb/mod.rs
@@ -121,10 +121,11 @@ impl<'d, T: Instance, V: VbusDetect + 'd> driver::Driver<'d> for Driver<'d, T, V
121 fn alloc_endpoint_in( 121 fn alloc_endpoint_in(
122 &mut self, 122 &mut self,
123 ep_type: EndpointType, 123 ep_type: EndpointType,
124 ep_addr: Option<EndpointAddress>,
124 packet_size: u16, 125 packet_size: u16,
125 interval_ms: u8, 126 interval_ms: u8,
126 ) -> Result<Self::EndpointIn, driver::EndpointAllocError> { 127 ) -> Result<Self::EndpointIn, driver::EndpointAllocError> {
127 let index = self.alloc_in.allocate(ep_type)?; 128 let index = self.alloc_in.allocate(ep_type, ep_addr)?;
128 let ep_addr = EndpointAddress::from_parts(index, Direction::In); 129 let ep_addr = EndpointAddress::from_parts(index, Direction::In);
129 Ok(Endpoint::new(EndpointInfo { 130 Ok(Endpoint::new(EndpointInfo {
130 addr: ep_addr, 131 addr: ep_addr,
@@ -137,10 +138,11 @@ impl<'d, T: Instance, V: VbusDetect + 'd> driver::Driver<'d> for Driver<'d, T, V
137 fn alloc_endpoint_out( 138 fn alloc_endpoint_out(
138 &mut self, 139 &mut self,
139 ep_type: EndpointType, 140 ep_type: EndpointType,
141 ep_addr: Option<EndpointAddress>,
140 packet_size: u16, 142 packet_size: u16,
141 interval_ms: u8, 143 interval_ms: u8,
142 ) -> Result<Self::EndpointOut, driver::EndpointAllocError> { 144 ) -> Result<Self::EndpointOut, driver::EndpointAllocError> {
143 let index = self.alloc_out.allocate(ep_type)?; 145 let index = self.alloc_out.allocate(ep_type, ep_addr)?;
144 let ep_addr = EndpointAddress::from_parts(index, Direction::Out); 146 let ep_addr = EndpointAddress::from_parts(index, Direction::Out);
145 Ok(Endpoint::new(EndpointInfo { 147 Ok(Endpoint::new(EndpointInfo {
146 addr: ep_addr, 148 addr: ep_addr,
@@ -734,7 +736,11 @@ impl Allocator {
734 Self { used: 0 } 736 Self { used: 0 }
735 } 737 }
736 738
737 fn allocate(&mut self, ep_type: EndpointType) -> Result<usize, driver::EndpointAllocError> { 739 fn allocate(
740 &mut self,
741 ep_type: EndpointType,
742 ep_addr: Option<EndpointAddress>,
743 ) -> Result<usize, driver::EndpointAllocError> {
738 // Endpoint addresses are fixed in hardware: 744 // Endpoint addresses are fixed in hardware:
739 // - 0x80 / 0x00 - Control EP0 745 // - 0x80 / 0x00 - Control EP0
740 // - 0x81 / 0x01 - Bulk/Interrupt EP1 746 // - 0x81 / 0x01 - Bulk/Interrupt EP1
@@ -748,16 +754,37 @@ impl Allocator {
748 754
749 // Endpoint directions are allocated individually. 755 // Endpoint directions are allocated individually.
750 756
751 let alloc_index = match ep_type { 757 let alloc_index = if let Some(addr) = ep_addr {
752 EndpointType::Isochronous => 8, 758 // Use the specified endpoint address
753 EndpointType::Control => return Err(driver::EndpointAllocError), 759 let requested_index = addr.index();
754 EndpointType::Interrupt | EndpointType::Bulk => { 760 // Validate the requested index based on endpoint type
755 // Find rightmost zero bit in 1..=7 761 match ep_type {
756 let ones = (self.used >> 1).trailing_ones() as usize; 762 EndpointType::Isochronous => {
757 if ones >= 7 { 763 if requested_index != 8 {
758 return Err(driver::EndpointAllocError); 764 return Err(driver::EndpointAllocError);
765 }
766 }
767 EndpointType::Control => return Err(driver::EndpointAllocError),
768 EndpointType::Interrupt | EndpointType::Bulk => {
769 if requested_index < 1 || requested_index > 7 {
770 return Err(driver::EndpointAllocError);
771 }
772 }
773 }
774 requested_index
775 } else {
776 // Allocate any available endpoint
777 match ep_type {
778 EndpointType::Isochronous => 8,
779 EndpointType::Control => return Err(driver::EndpointAllocError),
780 EndpointType::Interrupt | EndpointType::Bulk => {
781 // Find rightmost zero bit in 1..=7
782 let ones = (self.used >> 1).trailing_ones() as usize;
783 if ones >= 7 {
784 return Err(driver::EndpointAllocError);
785 }
786 ones + 1
759 } 787 }
760 ones + 1
761 } 788 }
762 }; 789 };
763 790
diff --git a/embassy-rp/CHANGELOG.md b/embassy-rp/CHANGELOG.md
index 52bf0038e..36e1ea9b4 100644
--- a/embassy-rp/CHANGELOG.md
+++ b/embassy-rp/CHANGELOG.md
@@ -8,6 +8,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
8<!-- next-header --> 8<!-- next-header -->
9## Unreleased - ReleaseDate 9## Unreleased - ReleaseDate
10 10
11## 0.6.0 - 2025-07-16
12
13- update to latest embassy-usb-driver
14
15## 0.5.0 - 2025-07-15
16
11- Fix wrong `funcsel` on RP2350 gpout/gpin ([#3975](https://github.com/embassy-rs/embassy/pull/3975)) 17- Fix wrong `funcsel` on RP2350 gpout/gpin ([#3975](https://github.com/embassy-rs/embassy/pull/3975))
12- Fix potential race condition in `ADC::wait_for_ready` ([#4012](https://github.com/embassy-rs/embassy/pull/4012)) 18- Fix potential race condition in `ADC::wait_for_ready` ([#4012](https://github.com/embassy-rs/embassy/pull/4012))
13- `flash`: rename `BOOTROM_BASE` to `BOOTRAM_BASE` ([#4014](https://github.com/embassy-rs/embassy/pull/4014)) 19- `flash`: rename `BOOTROM_BASE` to `BOOTRAM_BASE` ([#4014](https://github.com/embassy-rs/embassy/pull/4014))
diff --git a/embassy-rp/Cargo.toml b/embassy-rp/Cargo.toml
index f09b32a7a..dcf4e7178 100644
--- a/embassy-rp/Cargo.toml
+++ b/embassy-rp/Cargo.toml
@@ -1,6 +1,6 @@
1[package] 1[package]
2name = "embassy-rp" 2name = "embassy-rp"
3version = "0.4.0" 3version = "0.6.0"
4edition = "2021" 4edition = "2021"
5license = "MIT OR Apache-2.0" 5license = "MIT OR Apache-2.0"
6description = "Embassy Hardware Abstraction Layer (HAL) for the Raspberry Pi RP2040 or RP235x microcontroller" 6description = "Embassy Hardware Abstraction Layer (HAL) for the Raspberry Pi RP2040 or RP235x microcontroller"
@@ -142,8 +142,8 @@ embassy-time-queue-utils = { version = "0.1", path = "../embassy-time-queue-util
142embassy-time = { version = "0.4.0", path = "../embassy-time" } 142embassy-time = { version = "0.4.0", path = "../embassy-time" }
143embassy-futures = { version = "0.1.0", path = "../embassy-futures" } 143embassy-futures = { version = "0.1.0", path = "../embassy-futures" }
144embassy-hal-internal = { version = "0.3.0", path = "../embassy-hal-internal", features = ["cortex-m", "prio-bits-2"] } 144embassy-hal-internal = { version = "0.3.0", path = "../embassy-hal-internal", features = ["cortex-m", "prio-bits-2"] }
145embassy-embedded-hal = { version = "0.3.0", path = "../embassy-embedded-hal" } 145embassy-embedded-hal = { version = "0.3.1", path = "../embassy-embedded-hal" }
146embassy-usb-driver = { version = "0.1.0", path = "../embassy-usb-driver" } 146embassy-usb-driver = { version = "0.2.0", path = "../embassy-usb-driver" }
147atomic-polyfill = "1.0.1" 147atomic-polyfill = "1.0.1"
148defmt = { version = "1.0.1", optional = true } 148defmt = { version = "1.0.1", optional = true }
149log = { version = "0.4.14", optional = true } 149log = { version = "0.4.14", optional = true }
diff --git a/embassy-rp/src/i2c.rs b/embassy-rp/src/i2c.rs
index a983b7bc3..172193a07 100644
--- a/embassy-rp/src/i2c.rs
+++ b/embassy-rp/src/i2c.rs
@@ -76,6 +76,7 @@ impl Default for Config {
76pub const FIFO_SIZE: u8 = 16; 76pub const FIFO_SIZE: u8 = 16;
77 77
78/// I2C driver. 78/// I2C driver.
79#[derive(Debug)]
79pub struct I2c<'d, T: Instance, M: Mode> { 80pub struct I2c<'d, T: Instance, M: Mode> {
80 phantom: PhantomData<(&'d mut T, M)>, 81 phantom: PhantomData<(&'d mut T, M)>,
81} 82}
diff --git a/embassy-rp/src/usb.rs b/embassy-rp/src/usb.rs
index 96541ade6..671ecbd32 100644
--- a/embassy-rp/src/usb.rs
+++ b/embassy-rp/src/usb.rs
@@ -153,6 +153,7 @@ impl<'d, T: Instance> Driver<'d, T> {
153 fn alloc_endpoint<D: Dir>( 153 fn alloc_endpoint<D: Dir>(
154 &mut self, 154 &mut self,
155 ep_type: EndpointType, 155 ep_type: EndpointType,
156 ep_addr: Option<EndpointAddress>,
156 max_packet_size: u16, 157 max_packet_size: u16,
157 interval_ms: u8, 158 interval_ms: u8,
158 ) -> Result<Endpoint<'d, T, D>, driver::EndpointAllocError> { 159 ) -> Result<Endpoint<'d, T, D>, driver::EndpointAllocError> {
@@ -169,12 +170,25 @@ impl<'d, T: Instance> Driver<'d, T> {
169 Direction::In => &mut self.ep_in, 170 Direction::In => &mut self.ep_in,
170 }; 171 };
171 172
172 let index = alloc.iter_mut().enumerate().find(|(i, ep)| { 173 let index = if let Some(addr) = ep_addr {
173 if *i == 0 { 174 // Use the specified endpoint address
174 return false; // reserved for control pipe 175 let requested_index = addr.index();
176 if requested_index == 0 || requested_index >= EP_COUNT {
177 return Err(EndpointAllocError);
175 } 178 }
176 !ep.used 179 if alloc[requested_index].used {
177 }); 180 return Err(EndpointAllocError);
181 }
182 Some((requested_index, &mut alloc[requested_index]))
183 } else {
184 // Find any available endpoint
185 alloc.iter_mut().enumerate().find(|(i, ep)| {
186 if *i == 0 {
187 return false; // reserved for control pipe
188 }
189 !ep.used
190 })
191 };
178 192
179 let (index, ep) = index.ok_or(EndpointAllocError)?; 193 let (index, ep) = index.ok_or(EndpointAllocError)?;
180 assert!(!ep.used); 194 assert!(!ep.used);
@@ -299,19 +313,21 @@ impl<'d, T: Instance> driver::Driver<'d> for Driver<'d, T> {
299 fn alloc_endpoint_in( 313 fn alloc_endpoint_in(
300 &mut self, 314 &mut self,
301 ep_type: EndpointType, 315 ep_type: EndpointType,
316 ep_addr: Option<EndpointAddress>,
302 max_packet_size: u16, 317 max_packet_size: u16,
303 interval_ms: u8, 318 interval_ms: u8,
304 ) -> Result<Self::EndpointIn, driver::EndpointAllocError> { 319 ) -> Result<Self::EndpointIn, driver::EndpointAllocError> {
305 self.alloc_endpoint(ep_type, max_packet_size, interval_ms) 320 self.alloc_endpoint(ep_type, ep_addr, max_packet_size, interval_ms)
306 } 321 }
307 322
308 fn alloc_endpoint_out( 323 fn alloc_endpoint_out(
309 &mut self, 324 &mut self,
310 ep_type: EndpointType, 325 ep_type: EndpointType,
326 ep_addr: Option<EndpointAddress>,
311 max_packet_size: u16, 327 max_packet_size: u16,
312 interval_ms: u8, 328 interval_ms: u8,
313 ) -> Result<Self::EndpointOut, driver::EndpointAllocError> { 329 ) -> Result<Self::EndpointOut, driver::EndpointAllocError> {
314 self.alloc_endpoint(ep_type, max_packet_size, interval_ms) 330 self.alloc_endpoint(ep_type, ep_addr, max_packet_size, interval_ms)
315 } 331 }
316 332
317 fn start(self, control_max_packet_size: u16) -> (Self::Bus, Self::ControlPipe) { 333 fn start(self, control_max_packet_size: u16) -> (Self::Bus, Self::ControlPipe) {
diff --git a/embassy-stm32-wpan/Cargo.toml b/embassy-stm32-wpan/Cargo.toml
index 795c09cb9..a16aa4b54 100644
--- a/embassy-stm32-wpan/Cargo.toml
+++ b/embassy-stm32-wpan/Cargo.toml
@@ -24,7 +24,7 @@ embassy-sync = { version = "0.7.0", path = "../embassy-sync" }
24embassy-time = { version = "0.4.0", path = "../embassy-time", optional = true } 24embassy-time = { version = "0.4.0", path = "../embassy-time", optional = true }
25embassy-futures = { version = "0.1.0", path = "../embassy-futures" } 25embassy-futures = { version = "0.1.0", path = "../embassy-futures" }
26embassy-hal-internal = { version = "0.3.0", path = "../embassy-hal-internal" } 26embassy-hal-internal = { version = "0.3.0", path = "../embassy-hal-internal" }
27embassy-embedded-hal = { version = "0.3.0", path = "../embassy-embedded-hal" } 27embassy-embedded-hal = { version = "0.3.1", path = "../embassy-embedded-hal" }
28embassy-net-driver = { version = "0.2.0", path = "../embassy-net-driver", optional=true } 28embassy-net-driver = { version = "0.2.0", path = "../embassy-net-driver", optional=true }
29 29
30defmt = { version = "1.0.1", optional = true } 30defmt = { version = "1.0.1", optional = true }
diff --git a/embassy-stm32/Cargo.toml b/embassy-stm32/Cargo.toml
index c28636dc8..eaf8bafbf 100644
--- a/embassy-stm32/Cargo.toml
+++ b/embassy-stm32/Cargo.toml
@@ -54,9 +54,9 @@ embassy-time-driver = { version = "0.2", path = "../embassy-time-driver", option
54embassy-time-queue-utils = { version = "0.1", path = "../embassy-time-queue-utils", optional = true } 54embassy-time-queue-utils = { version = "0.1", path = "../embassy-time-queue-utils", optional = true }
55embassy-futures = { version = "0.1.0", path = "../embassy-futures" } 55embassy-futures = { version = "0.1.0", path = "../embassy-futures" }
56embassy-hal-internal = { version = "0.3.0", path = "../embassy-hal-internal", features = ["cortex-m", "prio-bits-4"] } 56embassy-hal-internal = { version = "0.3.0", path = "../embassy-hal-internal", features = ["cortex-m", "prio-bits-4"] }
57embassy-embedded-hal = { version = "0.3.0", path = "../embassy-embedded-hal", default-features = false } 57embassy-embedded-hal = { version = "0.3.1", path = "../embassy-embedded-hal", default-features = false }
58embassy-net-driver = { version = "0.2.0", path = "../embassy-net-driver" } 58embassy-net-driver = { version = "0.2.0", path = "../embassy-net-driver" }
59embassy-usb-driver = { version = "0.1.0", path = "../embassy-usb-driver" } 59embassy-usb-driver = { version = "0.2.0", path = "../embassy-usb-driver" }
60embassy-usb-synopsys-otg = { version = "0.2.0", path = "../embassy-usb-synopsys-otg" } 60embassy-usb-synopsys-otg = { version = "0.2.0", path = "../embassy-usb-synopsys-otg" }
61embassy-executor = { version = "0.7.0", path = "../embassy-executor", optional = true } 61embassy-executor = { version = "0.7.0", path = "../embassy-executor", optional = true }
62 62
@@ -81,7 +81,7 @@ futures-util = { version = "0.3.30", default-features = false }
81sdio-host = "0.9.0" 81sdio-host = "0.9.0"
82critical-section = "1.1" 82critical-section = "1.1"
83#stm32-metapac = { version = "16" } 83#stm32-metapac = { version = "16" }
84stm32-metapac = { git = "https://github.com/embassy-rs/stm32-data-generated", tag = "stm32-data-60582dd866b34e690f156cd72b91300a9a8057c0" } 84stm32-metapac = { git = "https://github.com/embassy-rs/stm32-data-generated", tag = "stm32-data-85e2c0f43f3460b3305a2f97962bd39deed09d13" }
85 85
86vcell = "0.1.3" 86vcell = "0.1.3"
87nb = "1.0.0" 87nb = "1.0.0"
@@ -110,7 +110,7 @@ proc-macro2 = "1.0.36"
110quote = "1.0.15" 110quote = "1.0.15"
111 111
112#stm32-metapac = { version = "16", default-features = false, features = ["metadata"]} 112#stm32-metapac = { version = "16", default-features = false, features = ["metadata"]}
113stm32-metapac = { git = "https://github.com/embassy-rs/stm32-data-generated", tag = "stm32-data-60582dd866b34e690f156cd72b91300a9a8057c0", default-features = false, features = ["metadata"] } 113stm32-metapac = { git = "https://github.com/embassy-rs/stm32-data-generated", tag = "stm32-data-85e2c0f43f3460b3305a2f97962bd39deed09d13", default-features = false, features = ["metadata"] }
114 114
115[features] 115[features]
116default = ["rt"] 116default = ["rt"]
diff --git a/embassy-stm32/src/rcc/mco.rs b/embassy-stm32/src/rcc/mco.rs
index c50e071fb..0371b9141 100644
--- a/embassy-stm32/src/rcc/mco.rs
+++ b/embassy-stm32/src/rcc/mco.rs
@@ -74,7 +74,7 @@ macro_rules! impl_peri {
74 }; 74 };
75} 75}
76 76
77#[cfg(any(rcc_c0, rcc_g0, rcc_u0))] 77#[cfg(any(rcc_c0, rcc_g0x0, rcc_g0x1, rcc_u0))]
78#[allow(unused_imports)] 78#[allow(unused_imports)]
79use self::{McoSource as Mco1Source, McoSource as Mco2Source}; 79use self::{McoSource as Mco1Source, McoSource as Mco2Source};
80 80
diff --git a/embassy-stm32/src/usart/buffered.rs b/embassy-stm32/src/usart/buffered.rs
index 73ab46404..729440c46 100644
--- a/embassy-stm32/src/usart/buffered.rs
+++ b/embassy-stm32/src/usart/buffered.rs
@@ -87,6 +87,8 @@ unsafe fn on_interrupt(r: Regs, state: &'static State) {
87 87
88 r.cr1().modify(|w| { 88 r.cr1().modify(|w| {
89 w.set_tcie(false); 89 w.set_tcie(false);
90 // Reenable receiver for half-duplex if it was disabled
91 w.set_re(true);
90 }); 92 });
91 93
92 state.tx_done.store(true, Ordering::Release); 94 state.tx_done.store(true, Ordering::Release);
diff --git a/embassy-stm32/src/usart/mod.rs b/embassy-stm32/src/usart/mod.rs
index 8c9028f08..5bece6d66 100644
--- a/embassy-stm32/src/usart/mod.rs
+++ b/embassy-stm32/src/usart/mod.rs
@@ -651,7 +651,7 @@ pub fn send_break(regs: &Regs) {
651/// In case of readback, keep Receiver enabled 651/// In case of readback, keep Receiver enabled
652fn half_duplex_set_rx_tx_before_write(r: &Regs, enable_readback: bool) { 652fn half_duplex_set_rx_tx_before_write(r: &Regs, enable_readback: bool) {
653 let mut cr1 = r.cr1().read(); 653 let mut cr1 = r.cr1().read();
654 if r.cr3().read().hdsel() && !cr1.te() { 654 if r.cr3().read().hdsel() {
655 cr1.set_te(true); 655 cr1.set_te(true);
656 cr1.set_re(enable_readback); 656 cr1.set_re(enable_readback);
657 r.cr1().write_value(cr1); 657 r.cr1().write_value(cr1);
diff --git a/embassy-stm32/src/usb/otg.rs b/embassy-stm32/src/usb/otg.rs
index d664709d3..a8b625e8c 100644
--- a/embassy-stm32/src/usb/otg.rs
+++ b/embassy-stm32/src/usb/otg.rs
@@ -231,19 +231,23 @@ impl<'d, T: Instance> embassy_usb_driver::Driver<'d> for Driver<'d, T> {
231 fn alloc_endpoint_in( 231 fn alloc_endpoint_in(
232 &mut self, 232 &mut self,
233 ep_type: EndpointType, 233 ep_type: EndpointType,
234 ep_addr: Option<EndpointAddress>,
234 max_packet_size: u16, 235 max_packet_size: u16,
235 interval_ms: u8, 236 interval_ms: u8,
236 ) -> Result<Self::EndpointIn, EndpointAllocError> { 237 ) -> Result<Self::EndpointIn, EndpointAllocError> {
237 self.inner.alloc_endpoint_in(ep_type, max_packet_size, interval_ms) 238 self.inner
239 .alloc_endpoint_in(ep_type, ep_addr, max_packet_size, interval_ms)
238 } 240 }
239 241
240 fn alloc_endpoint_out( 242 fn alloc_endpoint_out(
241 &mut self, 243 &mut self,
242 ep_type: EndpointType, 244 ep_type: EndpointType,
245 ep_addr: Option<EndpointAddress>,
243 max_packet_size: u16, 246 max_packet_size: u16,
244 interval_ms: u8, 247 interval_ms: u8,
245 ) -> Result<Self::EndpointOut, EndpointAllocError> { 248 ) -> Result<Self::EndpointOut, EndpointAllocError> {
246 self.inner.alloc_endpoint_out(ep_type, max_packet_size, interval_ms) 249 self.inner
250 .alloc_endpoint_out(ep_type, ep_addr, max_packet_size, interval_ms)
247 } 251 }
248 252
249 fn start(self, control_max_packet_size: u16) -> (Self::Bus, Self::ControlPipe) { 253 fn start(self, control_max_packet_size: u16) -> (Self::Bus, Self::ControlPipe) {
@@ -538,7 +542,7 @@ foreach_interrupt!(
538 ))] { 542 ))] {
539 const FIFO_DEPTH_WORDS: u16 = 1024; 543 const FIFO_DEPTH_WORDS: u16 = 1024;
540 const ENDPOINT_COUNT: usize = 9; 544 const ENDPOINT_COUNT: usize = 9;
541 } else if #[cfg(any(stm32wba, stm32u5))] { 545 } else if #[cfg(any(stm32u5, stm32wba))] {
542 const FIFO_DEPTH_WORDS: u16 = 1024; 546 const FIFO_DEPTH_WORDS: u16 = 1024;
543 const ENDPOINT_COUNT: usize = 9; 547 const ENDPOINT_COUNT: usize = 9;
544 } else { 548 } else {
diff --git a/embassy-stm32/src/usb/usb.rs b/embassy-stm32/src/usb/usb.rs
index 3e8e74a1f..92c1601cc 100644
--- a/embassy-stm32/src/usb/usb.rs
+++ b/embassy-stm32/src/usb/usb.rs
@@ -359,9 +359,38 @@ impl<'d, T: Instance> Driver<'d, T> {
359 addr 359 addr
360 } 360 }
361 361
362 fn is_endpoint_available<D: Dir>(&self, index: usize, ep_type: EndpointType) -> bool {
363 if index == 0 && ep_type != EndpointType::Control {
364 return false; // EP0 is reserved for control
365 }
366
367 let ep = match self.alloc.get(index) {
368 Some(ep) => ep,
369 None => return false,
370 };
371
372 let used = ep.used_out || ep.used_in;
373
374 if used && ep.ep_type == EndpointType::Isochronous {
375 // Isochronous endpoints are always double-buffered.
376 // Their corresponding endpoint/channel registers are forced to be unidirectional.
377 // Do not reuse this index.
378 // FIXME: Bulk endpoints can be double buffered, but are not in the current implementation.
379 return false;
380 }
381
382 let used_dir = match D::dir() {
383 Direction::Out => ep.used_out,
384 Direction::In => ep.used_in,
385 };
386
387 !used || (ep.ep_type == ep_type && !used_dir)
388 }
389
362 fn alloc_endpoint<D: Dir>( 390 fn alloc_endpoint<D: Dir>(
363 &mut self, 391 &mut self,
364 ep_type: EndpointType, 392 ep_type: EndpointType,
393 ep_addr: Option<EndpointAddress>,
365 max_packet_size: u16, 394 max_packet_size: u16,
366 interval_ms: u8, 395 interval_ms: u8,
367 ) -> Result<Endpoint<'d, T, D>, driver::EndpointAllocError> { 396 ) -> Result<Endpoint<'d, T, D>, driver::EndpointAllocError> {
@@ -373,28 +402,17 @@ impl<'d, T: Instance> Driver<'d, T> {
373 D::dir() 402 D::dir()
374 ); 403 );
375 404
376 let index = self.alloc.iter_mut().enumerate().find(|(i, ep)| { 405 let index = if let Some(addr) = ep_addr {
377 if *i == 0 && ep_type != EndpointType::Control { 406 // Use the specified endpoint address
378 return false; // reserved for control pipe 407 self.is_endpoint_available::<D>(addr.index(), ep_type)
379 } 408 .then_some(addr.index())
380 let used = ep.used_out || ep.used_in; 409 } else {
381 if used && (ep.ep_type == EndpointType::Isochronous) { 410 // Find any available endpoint
382 // Isochronous endpoints are always double-buffered. 411 (0..self.alloc.len()).find(|&i| self.is_endpoint_available::<D>(i, ep_type))
383 // Their corresponding endpoint/channel registers are forced to be unidirectional. 412 };
384 // Do not reuse this index.
385 // FIXME: Bulk endpoints can be double buffered, but are not in the current implementation.
386 return false;
387 }
388
389 let used_dir = match D::dir() {
390 Direction::Out => ep.used_out,
391 Direction::In => ep.used_in,
392 };
393 !used || (ep.ep_type == ep_type && !used_dir)
394 });
395 413
396 let (index, ep) = match index { 414 let (index, ep) = match index {
397 Some(x) => x, 415 Some(i) => (i, &mut self.alloc[i]),
398 None => return Err(EndpointAllocError), 416 None => return Err(EndpointAllocError),
399 }; 417 };
400 418
@@ -479,27 +497,29 @@ impl<'d, T: Instance> driver::Driver<'d> for Driver<'d, T> {
479 fn alloc_endpoint_in( 497 fn alloc_endpoint_in(
480 &mut self, 498 &mut self,
481 ep_type: EndpointType, 499 ep_type: EndpointType,
500 ep_addr: Option<EndpointAddress>,
482 max_packet_size: u16, 501 max_packet_size: u16,
483 interval_ms: u8, 502 interval_ms: u8,
484 ) -> Result<Self::EndpointIn, driver::EndpointAllocError> { 503 ) -> Result<Self::EndpointIn, driver::EndpointAllocError> {
485 self.alloc_endpoint(ep_type, max_packet_size, interval_ms) 504 self.alloc_endpoint(ep_type, ep_addr, max_packet_size, interval_ms)
486 } 505 }
487 506
488 fn alloc_endpoint_out( 507 fn alloc_endpoint_out(
489 &mut self, 508 &mut self,
490 ep_type: EndpointType, 509 ep_type: EndpointType,
510 ep_addr: Option<EndpointAddress>,
491 max_packet_size: u16, 511 max_packet_size: u16,
492 interval_ms: u8, 512 interval_ms: u8,
493 ) -> Result<Self::EndpointOut, driver::EndpointAllocError> { 513 ) -> Result<Self::EndpointOut, driver::EndpointAllocError> {
494 self.alloc_endpoint(ep_type, max_packet_size, interval_ms) 514 self.alloc_endpoint(ep_type, ep_addr, max_packet_size, interval_ms)
495 } 515 }
496 516
497 fn start(mut self, control_max_packet_size: u16) -> (Self::Bus, Self::ControlPipe) { 517 fn start(mut self, control_max_packet_size: u16) -> (Self::Bus, Self::ControlPipe) {
498 let ep_out = self 518 let ep_out = self
499 .alloc_endpoint(EndpointType::Control, control_max_packet_size, 0) 519 .alloc_endpoint(EndpointType::Control, None, control_max_packet_size, 0)
500 .unwrap(); 520 .unwrap();
501 let ep_in = self 521 let ep_in = self
502 .alloc_endpoint(EndpointType::Control, control_max_packet_size, 0) 522 .alloc_endpoint(EndpointType::Control, None, control_max_packet_size, 0)
503 .unwrap(); 523 .unwrap();
504 assert_eq!(ep_out.info.addr.index(), 0); 524 assert_eq!(ep_out.info.addr.index(), 0);
505 assert_eq!(ep_in.info.addr.index(), 0); 525 assert_eq!(ep_in.info.addr.index(), 0);
diff --git a/embassy-usb-dfu/Cargo.toml b/embassy-usb-dfu/Cargo.toml
index 8b2467bca..cdad3ce00 100644
--- a/embassy-usb-dfu/Cargo.toml
+++ b/embassy-usb-dfu/Cargo.toml
@@ -35,7 +35,7 @@ embassy-boot = { version = "0.4.0", path = "../embassy-boot" }
35embassy-futures = { version = "0.1.1", path = "../embassy-futures" } 35embassy-futures = { version = "0.1.1", path = "../embassy-futures" }
36embassy-sync = { version = "0.7.0", path = "../embassy-sync" } 36embassy-sync = { version = "0.7.0", path = "../embassy-sync" }
37embassy-time = { version = "0.4.0", path = "../embassy-time" } 37embassy-time = { version = "0.4.0", path = "../embassy-time" }
38embassy-usb = { version = "0.4.0", path = "../embassy-usb", default-features = false } 38embassy-usb = { version = "0.5.0", path = "../embassy-usb", default-features = false }
39embedded-storage = { version = "0.3.1" } 39embedded-storage = { version = "0.3.1" }
40esp32c3-hal = { version = "0.13.0", optional = true, default-features = false } 40esp32c3-hal = { version = "0.13.0", optional = true, default-features = false }
41 41
diff --git a/embassy-usb-driver/CHANGELOG.md b/embassy-usb-driver/CHANGELOG.md
index c02daefdf..15875e087 100644
--- a/embassy-usb-driver/CHANGELOG.md
+++ b/embassy-usb-driver/CHANGELOG.md
@@ -8,4 +8,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
8<!-- next-header --> 8<!-- next-header -->
9## Unreleased - ReleaseDate 9## Unreleased - ReleaseDate
10 10
11## 0.2.0 - 2025-07-16
12
13- Make USB endpoint allocator methods accept an optional `EndpointAddress`.
14
15## 0.1.1 - 2025-07-15
16
11- Add `embedded_io_async::Error` implementation for `EndpointError` ([#4176](https://github.com/embassy-rs/embassy/pull/4176)) 17- Add `embedded_io_async::Error` implementation for `EndpointError` ([#4176](https://github.com/embassy-rs/embassy/pull/4176))
diff --git a/embassy-usb-driver/Cargo.toml b/embassy-usb-driver/Cargo.toml
index e40421649..de69bf694 100644
--- a/embassy-usb-driver/Cargo.toml
+++ b/embassy-usb-driver/Cargo.toml
@@ -1,6 +1,6 @@
1[package] 1[package]
2name = "embassy-usb-driver" 2name = "embassy-usb-driver"
3version = "0.1.0" 3version = "0.2.0"
4edition = "2021" 4edition = "2021"
5license = "MIT OR Apache-2.0" 5license = "MIT OR Apache-2.0"
6description = "Driver trait for `embassy-usb`, an async USB device stack for embedded devices." 6description = "Driver trait for `embassy-usb`, an async USB device stack for embedded devices."
diff --git a/embassy-usb-driver/src/lib.rs b/embassy-usb-driver/src/lib.rs
index d204e4d85..99616f1ec 100644
--- a/embassy-usb-driver/src/lib.rs
+++ b/embassy-usb-driver/src/lib.rs
@@ -136,6 +136,7 @@ pub trait Driver<'a> {
136 fn alloc_endpoint_out( 136 fn alloc_endpoint_out(
137 &mut self, 137 &mut self,
138 ep_type: EndpointType, 138 ep_type: EndpointType,
139 ep_addr: Option<EndpointAddress>,
139 max_packet_size: u16, 140 max_packet_size: u16,
140 interval_ms: u8, 141 interval_ms: u8,
141 ) -> Result<Self::EndpointOut, EndpointAllocError>; 142 ) -> Result<Self::EndpointOut, EndpointAllocError>;
@@ -153,6 +154,7 @@ pub trait Driver<'a> {
153 fn alloc_endpoint_in( 154 fn alloc_endpoint_in(
154 &mut self, 155 &mut self,
155 ep_type: EndpointType, 156 ep_type: EndpointType,
157 ep_addr: Option<EndpointAddress>,
156 max_packet_size: u16, 158 max_packet_size: u16,
157 interval_ms: u8, 159 interval_ms: u8,
158 ) -> Result<Self::EndpointIn, EndpointAllocError>; 160 ) -> Result<Self::EndpointIn, EndpointAllocError>;
diff --git a/embassy-usb-logger/Cargo.toml b/embassy-usb-logger/Cargo.toml
index 6b8e9af47..6dd2637f2 100644
--- a/embassy-usb-logger/Cargo.toml
+++ b/embassy-usb-logger/Cargo.toml
@@ -15,7 +15,7 @@ src_base_git = "https://github.com/embassy-rs/embassy/blob/$COMMIT/embassy-usb-l
15target = "thumbv7em-none-eabi" 15target = "thumbv7em-none-eabi"
16 16
17[dependencies] 17[dependencies]
18embassy-usb = { version = "0.4.0", path = "../embassy-usb" } 18embassy-usb = { version = "0.5.0", path = "../embassy-usb" }
19embassy-sync = { version = "0.7.0", path = "../embassy-sync" } 19embassy-sync = { version = "0.7.0", path = "../embassy-sync" }
20embassy-futures = { version = "0.1.0", path = "../embassy-futures" } 20embassy-futures = { version = "0.1.0", path = "../embassy-futures" }
21log = "0.4" 21log = "0.4"
diff --git a/embassy-usb-synopsys-otg/Cargo.toml b/embassy-usb-synopsys-otg/Cargo.toml
index 6252feaef..511cddacf 100644
--- a/embassy-usb-synopsys-otg/Cargo.toml
+++ b/embassy-usb-synopsys-otg/Cargo.toml
@@ -19,7 +19,7 @@ target = "thumbv7em-none-eabi"
19critical-section = "1.1" 19critical-section = "1.1"
20 20
21embassy-sync = { version = "0.7.0", path = "../embassy-sync" } 21embassy-sync = { version = "0.7.0", path = "../embassy-sync" }
22embassy-usb-driver = { version = "0.1.0", path = "../embassy-usb-driver" } 22embassy-usb-driver = { version = "0.2.0", path = "../embassy-usb-driver" }
23 23
24defmt = { version = "1.0.1", optional = true } 24defmt = { version = "1.0.1", optional = true }
25log = { version = "0.4.14", optional = true } 25log = { version = "0.4.14", optional = true }
diff --git a/embassy-usb-synopsys-otg/src/lib.rs b/embassy-usb-synopsys-otg/src/lib.rs
index fc4428b54..9d74c046d 100644
--- a/embassy-usb-synopsys-otg/src/lib.rs
+++ b/embassy-usb-synopsys-otg/src/lib.rs
@@ -345,6 +345,7 @@ impl<'d, const MAX_EP_COUNT: usize> Driver<'d, MAX_EP_COUNT> {
345 fn alloc_endpoint<D: Dir>( 345 fn alloc_endpoint<D: Dir>(
346 &mut self, 346 &mut self,
347 ep_type: EndpointType, 347 ep_type: EndpointType,
348 ep_addr: Option<EndpointAddress>,
348 max_packet_size: u16, 349 max_packet_size: u16,
349 interval_ms: u8, 350 interval_ms: u8,
350 ) -> Result<Endpoint<'d, D>, EndpointAllocError> { 351 ) -> Result<Endpoint<'d, D>, EndpointAllocError> {
@@ -379,15 +380,31 @@ impl<'d, const MAX_EP_COUNT: usize> Driver<'d, MAX_EP_COUNT> {
379 Direction::In => &mut self.ep_in[..self.instance.endpoint_count], 380 Direction::In => &mut self.ep_in[..self.instance.endpoint_count],
380 }; 381 };
381 382
382 // Find free endpoint slot 383 // Find endpoint slot
383 let slot = eps.iter_mut().enumerate().find(|(i, ep)| { 384 let slot = if let Some(addr) = ep_addr {
384 if *i == 0 && ep_type != EndpointType::Control { 385 // Use the specified endpoint address
385 // reserved for control pipe 386 let requested_index = addr.index();
386 false 387 if requested_index >= self.instance.endpoint_count {
387 } else { 388 return Err(EndpointAllocError);
388 ep.is_none()
389 } 389 }
390 }); 390 if requested_index == 0 && ep_type != EndpointType::Control {
391 return Err(EndpointAllocError); // EP0 is reserved for control
392 }
393 if eps[requested_index].is_some() {
394 return Err(EndpointAllocError); // Already allocated
395 }
396 Some((requested_index, &mut eps[requested_index]))
397 } else {
398 // Find any free endpoint slot
399 eps.iter_mut().enumerate().find(|(i, ep)| {
400 if *i == 0 && ep_type != EndpointType::Control {
401 // reserved for control pipe
402 false
403 } else {
404 ep.is_none()
405 }
406 })
407 };
391 408
392 let index = match slot { 409 let index = match slot {
393 Some((index, ep)) => { 410 Some((index, ep)) => {
@@ -438,27 +455,29 @@ impl<'d, const MAX_EP_COUNT: usize> embassy_usb_driver::Driver<'d> for Driver<'d
438 fn alloc_endpoint_in( 455 fn alloc_endpoint_in(
439 &mut self, 456 &mut self,
440 ep_type: EndpointType, 457 ep_type: EndpointType,
458 ep_addr: Option<EndpointAddress>,
441 max_packet_size: u16, 459 max_packet_size: u16,
442 interval_ms: u8, 460 interval_ms: u8,
443 ) -> Result<Self::EndpointIn, EndpointAllocError> { 461 ) -> Result<Self::EndpointIn, EndpointAllocError> {
444 self.alloc_endpoint(ep_type, max_packet_size, interval_ms) 462 self.alloc_endpoint(ep_type, ep_addr, max_packet_size, interval_ms)
445 } 463 }
446 464
447 fn alloc_endpoint_out( 465 fn alloc_endpoint_out(
448 &mut self, 466 &mut self,
449 ep_type: EndpointType, 467 ep_type: EndpointType,
468 ep_addr: Option<EndpointAddress>,
450 max_packet_size: u16, 469 max_packet_size: u16,
451 interval_ms: u8, 470 interval_ms: u8,
452 ) -> Result<Self::EndpointOut, EndpointAllocError> { 471 ) -> Result<Self::EndpointOut, EndpointAllocError> {
453 self.alloc_endpoint(ep_type, max_packet_size, interval_ms) 472 self.alloc_endpoint(ep_type, ep_addr, max_packet_size, interval_ms)
454 } 473 }
455 474
456 fn start(mut self, control_max_packet_size: u16) -> (Self::Bus, Self::ControlPipe) { 475 fn start(mut self, control_max_packet_size: u16) -> (Self::Bus, Self::ControlPipe) {
457 let ep_out = self 476 let ep_out = self
458 .alloc_endpoint(EndpointType::Control, control_max_packet_size, 0) 477 .alloc_endpoint(EndpointType::Control, None, control_max_packet_size, 0)
459 .unwrap(); 478 .unwrap();
460 let ep_in = self 479 let ep_in = self
461 .alloc_endpoint(EndpointType::Control, control_max_packet_size, 0) 480 .alloc_endpoint(EndpointType::Control, None, control_max_packet_size, 0)
462 .unwrap(); 481 .unwrap();
463 assert_eq!(ep_out.info.addr.index(), 0); 482 assert_eq!(ep_out.info.addr.index(), 0);
464 assert_eq!(ep_in.info.addr.index(), 0); 483 assert_eq!(ep_in.info.addr.index(), 0);
@@ -1210,10 +1229,23 @@ impl<'d> embassy_usb_driver::EndpointIn for Endpoint<'d, In> {
1210 }); 1229 });
1211 1230
1212 // Write data to FIFO 1231 // Write data to FIFO
1213 for chunk in buf.chunks(4) { 1232 let chunks = buf.chunks_exact(4);
1233 // Stash the last partial chunk
1234 let rem = chunks.remainder();
1235 let last_chunk = (!rem.is_empty()).then(|| {
1214 let mut tmp = [0u8; 4]; 1236 let mut tmp = [0u8; 4];
1215 tmp[0..chunk.len()].copy_from_slice(chunk); 1237 tmp[0..rem.len()].copy_from_slice(rem);
1216 self.regs.fifo(index).write_value(regs::Fifo(u32::from_ne_bytes(tmp))); 1238 u32::from_ne_bytes(tmp)
1239 });
1240
1241 let fifo = self.regs.fifo(index);
1242 for chunk in chunks {
1243 let val = u32::from_ne_bytes(chunk.try_into().unwrap());
1244 fifo.write_value(regs::Fifo(val));
1245 }
1246 // Write any last chunk
1247 if let Some(val) = last_chunk {
1248 fifo.write_value(regs::Fifo(val));
1217 } 1249 }
1218 }); 1250 });
1219 1251
diff --git a/embassy-usb/CHANGELOG.md b/embassy-usb/CHANGELOG.md
index 51db5f03e..3ee75e226 100644
--- a/embassy-usb/CHANGELOG.md
+++ b/embassy-usb/CHANGELOG.md
@@ -8,12 +8,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
8<!-- next-header --> 8<!-- next-header -->
9## Unreleased - ReleaseDate 9## Unreleased - ReleaseDate
10 10
11## 0.5.0 - 2025-07-16
12
11- `UAC1`: unmute by default ([#3992](https://github.com/embassy-rs/embassy/pull/3992)) 13- `UAC1`: unmute by default ([#3992](https://github.com/embassy-rs/embassy/pull/3992))
12- `cdc_acm`: `State::new` is now `const` ([#4000](https://github.com/embassy-rs/embassy/pull/4000)) 14- `cdc_acm`: `State::new` is now `const` ([#4000](https://github.com/embassy-rs/embassy/pull/4000))
13- Add support for CMSIS-DAP v2 USB class ([#4107](https://github.com/embassy-rs/embassy/pull/4107)) 15- Add support for CMSIS-DAP v2 USB class ([#4107](https://github.com/embassy-rs/embassy/pull/4107))
14- Reduce `UsbDevice` builder logs to `trace` ([#4130](https://github.com/embassy-rs/embassy/pull/4130)) 16- Reduce `UsbDevice` builder logs to `trace` ([#4130](https://github.com/embassy-rs/embassy/pull/4130))
15- Implement `embedded-io-async` traits for USB CDC ACM ([#4176](https://github.com/embassy-rs/embassy/pull/4176)) 17- Implement `embedded-io-async` traits for USB CDC ACM ([#4176](https://github.com/embassy-rs/embassy/pull/4176))
16- Update `embassy-sync` to v0.7.0 18- Update `embassy-sync` to v0.7.0
19- Fix CDC ACM BufferedReceiver buffer calculation
17 20
18## 0.4.0 - 2025-01-15 21## 0.4.0 - 2025-01-15
19 22
diff --git a/embassy-usb/Cargo.toml b/embassy-usb/Cargo.toml
index 31fd1c1e0..4743fde65 100644
--- a/embassy-usb/Cargo.toml
+++ b/embassy-usb/Cargo.toml
@@ -1,6 +1,6 @@
1[package] 1[package]
2name = "embassy-usb" 2name = "embassy-usb"
3version = "0.4.0" 3version = "0.5.0"
4edition = "2021" 4edition = "2021"
5license = "MIT OR Apache-2.0" 5license = "MIT OR Apache-2.0"
6description = "Async USB device stack for embedded devices in Rust." 6description = "Async USB device stack for embedded devices in Rust."
@@ -47,9 +47,9 @@ max-handler-count-8 = []
47 47
48[dependencies] 48[dependencies]
49embassy-futures = { version = "0.1.0", path = "../embassy-futures" } 49embassy-futures = { version = "0.1.0", path = "../embassy-futures" }
50embassy-usb-driver = { version = "0.1.0", path = "../embassy-usb-driver" } 50embassy-usb-driver = { version = "0.2.0", path = "../embassy-usb-driver" }
51embassy-sync = { version = "0.7.0", path = "../embassy-sync" } 51embassy-sync = { version = "0.7.0", path = "../embassy-sync" }
52embassy-net-driver-channel = { version = "0.3.0", path = "../embassy-net-driver-channel" } 52embassy-net-driver-channel = { version = "0.3.1", path = "../embassy-net-driver-channel" }
53 53
54defmt = { version = "1", optional = true } 54defmt = { version = "1", optional = true }
55log = { version = "0.4.14", optional = true } 55log = { version = "0.4.14", optional = true }
diff --git a/embassy-usb/src/builder.rs b/embassy-usb/src/builder.rs
index 6c4b3f9a4..8d7abe46c 100644
--- a/embassy-usb/src/builder.rs
+++ b/embassy-usb/src/builder.rs
@@ -2,7 +2,7 @@ use heapless::Vec;
2 2
3use crate::config::MAX_HANDLER_COUNT; 3use crate::config::MAX_HANDLER_COUNT;
4use crate::descriptor::{BosWriter, DescriptorWriter, SynchronizationType, UsageType}; 4use crate::descriptor::{BosWriter, DescriptorWriter, SynchronizationType, UsageType};
5use crate::driver::{Driver, Endpoint, EndpointInfo, EndpointType}; 5use crate::driver::{Driver, Endpoint, EndpointAddress, EndpointInfo, EndpointType};
6use crate::msos::{DeviceLevelDescriptor, FunctionLevelDescriptor, MsOsDescriptorWriter}; 6use crate::msos::{DeviceLevelDescriptor, FunctionLevelDescriptor, MsOsDescriptorWriter};
7use crate::types::{InterfaceNumber, StringIndex}; 7use crate::types::{InterfaceNumber, StringIndex};
8use crate::{Handler, Interface, UsbDevice, MAX_INTERFACE_COUNT, STRING_INDEX_CUSTOM_START}; 8use crate::{Handler, Interface, UsbDevice, MAX_INTERFACE_COUNT, STRING_INDEX_CUSTOM_START};
@@ -465,11 +465,17 @@ impl<'a, 'd, D: Driver<'d>> InterfaceAltBuilder<'a, 'd, D> {
465 /// Allocate an IN endpoint, without writing its descriptor. 465 /// Allocate an IN endpoint, without writing its descriptor.
466 /// 466 ///
467 /// Used for granular control over the order of endpoint and descriptor creation. 467 /// Used for granular control over the order of endpoint and descriptor creation.
468 pub fn alloc_endpoint_in(&mut self, ep_type: EndpointType, max_packet_size: u16, interval_ms: u8) -> D::EndpointIn { 468 pub fn alloc_endpoint_in(
469 &mut self,
470 ep_type: EndpointType,
471 ep_addr: Option<EndpointAddress>,
472 max_packet_size: u16,
473 interval_ms: u8,
474 ) -> D::EndpointIn {
469 let ep = self 475 let ep = self
470 .builder 476 .builder
471 .driver 477 .driver
472 .alloc_endpoint_in(ep_type, max_packet_size, interval_ms) 478 .alloc_endpoint_in(ep_type, ep_addr, max_packet_size, interval_ms)
473 .expect("alloc_endpoint_in failed"); 479 .expect("alloc_endpoint_in failed");
474 480
475 ep 481 ep
@@ -478,13 +484,14 @@ impl<'a, 'd, D: Driver<'d>> InterfaceAltBuilder<'a, 'd, D> {
478 fn endpoint_in( 484 fn endpoint_in(
479 &mut self, 485 &mut self,
480 ep_type: EndpointType, 486 ep_type: EndpointType,
487 ep_addr: Option<EndpointAddress>,
481 max_packet_size: u16, 488 max_packet_size: u16,
482 interval_ms: u8, 489 interval_ms: u8,
483 synchronization_type: SynchronizationType, 490 synchronization_type: SynchronizationType,
484 usage_type: UsageType, 491 usage_type: UsageType,
485 extra_fields: &[u8], 492 extra_fields: &[u8],
486 ) -> D::EndpointIn { 493 ) -> D::EndpointIn {
487 let ep = self.alloc_endpoint_in(ep_type, max_packet_size, interval_ms); 494 let ep = self.alloc_endpoint_in(ep_type, ep_addr, max_packet_size, interval_ms);
488 self.endpoint_descriptor(ep.info(), synchronization_type, usage_type, extra_fields); 495 self.endpoint_descriptor(ep.info(), synchronization_type, usage_type, extra_fields);
489 496
490 ep 497 ep
@@ -496,13 +503,14 @@ impl<'a, 'd, D: Driver<'d>> InterfaceAltBuilder<'a, 'd, D> {
496 pub fn alloc_endpoint_out( 503 pub fn alloc_endpoint_out(
497 &mut self, 504 &mut self,
498 ep_type: EndpointType, 505 ep_type: EndpointType,
506 ep_addr: Option<EndpointAddress>,
499 max_packet_size: u16, 507 max_packet_size: u16,
500 interval_ms: u8, 508 interval_ms: u8,
501 ) -> D::EndpointOut { 509 ) -> D::EndpointOut {
502 let ep = self 510 let ep = self
503 .builder 511 .builder
504 .driver 512 .driver
505 .alloc_endpoint_out(ep_type, max_packet_size, interval_ms) 513 .alloc_endpoint_out(ep_type, ep_addr, max_packet_size, interval_ms)
506 .expect("alloc_endpoint_out failed"); 514 .expect("alloc_endpoint_out failed");
507 515
508 ep 516 ep
@@ -511,13 +519,14 @@ impl<'a, 'd, D: Driver<'d>> InterfaceAltBuilder<'a, 'd, D> {
511 fn endpoint_out( 519 fn endpoint_out(
512 &mut self, 520 &mut self,
513 ep_type: EndpointType, 521 ep_type: EndpointType,
522 ep_addr: Option<EndpointAddress>,
514 max_packet_size: u16, 523 max_packet_size: u16,
515 interval_ms: u8, 524 interval_ms: u8,
516 synchronization_type: SynchronizationType, 525 synchronization_type: SynchronizationType,
517 usage_type: UsageType, 526 usage_type: UsageType,
518 extra_fields: &[u8], 527 extra_fields: &[u8],
519 ) -> D::EndpointOut { 528 ) -> D::EndpointOut {
520 let ep = self.alloc_endpoint_out(ep_type, max_packet_size, interval_ms); 529 let ep = self.alloc_endpoint_out(ep_type, ep_addr, max_packet_size, interval_ms);
521 self.endpoint_descriptor(ep.info(), synchronization_type, usage_type, extra_fields); 530 self.endpoint_descriptor(ep.info(), synchronization_type, usage_type, extra_fields);
522 531
523 ep 532 ep
@@ -527,9 +536,10 @@ impl<'a, 'd, D: Driver<'d>> InterfaceAltBuilder<'a, 'd, D> {
527 /// 536 ///
528 /// Descriptors are written in the order builder functions are called. Note that some 537 /// Descriptors are written in the order builder functions are called. Note that some
529 /// classes care about the order. 538 /// classes care about the order.
530 pub fn endpoint_bulk_in(&mut self, max_packet_size: u16) -> D::EndpointIn { 539 pub fn endpoint_bulk_in(&mut self, ep_addr: Option<EndpointAddress>, max_packet_size: u16) -> D::EndpointIn {
531 self.endpoint_in( 540 self.endpoint_in(
532 EndpointType::Bulk, 541 EndpointType::Bulk,
542 ep_addr,
533 max_packet_size, 543 max_packet_size,
534 0, 544 0,
535 SynchronizationType::NoSynchronization, 545 SynchronizationType::NoSynchronization,
@@ -542,9 +552,10 @@ impl<'a, 'd, D: Driver<'d>> InterfaceAltBuilder<'a, 'd, D> {
542 /// 552 ///
543 /// Descriptors are written in the order builder functions are called. Note that some 553 /// Descriptors are written in the order builder functions are called. Note that some
544 /// classes care about the order. 554 /// classes care about the order.
545 pub fn endpoint_bulk_out(&mut self, max_packet_size: u16) -> D::EndpointOut { 555 pub fn endpoint_bulk_out(&mut self, ep_addr: Option<EndpointAddress>, max_packet_size: u16) -> D::EndpointOut {
546 self.endpoint_out( 556 self.endpoint_out(
547 EndpointType::Bulk, 557 EndpointType::Bulk,
558 ep_addr,
548 max_packet_size, 559 max_packet_size,
549 0, 560 0,
550 SynchronizationType::NoSynchronization, 561 SynchronizationType::NoSynchronization,
@@ -557,9 +568,15 @@ impl<'a, 'd, D: Driver<'d>> InterfaceAltBuilder<'a, 'd, D> {
557 /// 568 ///
558 /// Descriptors are written in the order builder functions are called. Note that some 569 /// Descriptors are written in the order builder functions are called. Note that some
559 /// classes care about the order. 570 /// classes care about the order.
560 pub fn endpoint_interrupt_in(&mut self, max_packet_size: u16, interval_ms: u8) -> D::EndpointIn { 571 pub fn endpoint_interrupt_in(
572 &mut self,
573 ep_addr: Option<EndpointAddress>,
574 max_packet_size: u16,
575 interval_ms: u8,
576 ) -> D::EndpointIn {
561 self.endpoint_in( 577 self.endpoint_in(
562 EndpointType::Interrupt, 578 EndpointType::Interrupt,
579 ep_addr,
563 max_packet_size, 580 max_packet_size,
564 interval_ms, 581 interval_ms,
565 SynchronizationType::NoSynchronization, 582 SynchronizationType::NoSynchronization,
@@ -569,9 +586,15 @@ impl<'a, 'd, D: Driver<'d>> InterfaceAltBuilder<'a, 'd, D> {
569 } 586 }
570 587
571 /// Allocate a INTERRUPT OUT endpoint and write its descriptor. 588 /// Allocate a INTERRUPT OUT endpoint and write its descriptor.
572 pub fn endpoint_interrupt_out(&mut self, max_packet_size: u16, interval_ms: u8) -> D::EndpointOut { 589 pub fn endpoint_interrupt_out(
590 &mut self,
591 ep_addr: Option<EndpointAddress>,
592 max_packet_size: u16,
593 interval_ms: u8,
594 ) -> D::EndpointOut {
573 self.endpoint_out( 595 self.endpoint_out(
574 EndpointType::Interrupt, 596 EndpointType::Interrupt,
597 ep_addr,
575 max_packet_size, 598 max_packet_size,
576 interval_ms, 599 interval_ms,
577 SynchronizationType::NoSynchronization, 600 SynchronizationType::NoSynchronization,
@@ -586,6 +609,7 @@ impl<'a, 'd, D: Driver<'d>> InterfaceAltBuilder<'a, 'd, D> {
586 /// classes care about the order. 609 /// classes care about the order.
587 pub fn endpoint_isochronous_in( 610 pub fn endpoint_isochronous_in(
588 &mut self, 611 &mut self,
612 ep_addr: Option<EndpointAddress>,
589 max_packet_size: u16, 613 max_packet_size: u16,
590 interval_ms: u8, 614 interval_ms: u8,
591 synchronization_type: SynchronizationType, 615 synchronization_type: SynchronizationType,
@@ -594,6 +618,7 @@ impl<'a, 'd, D: Driver<'d>> InterfaceAltBuilder<'a, 'd, D> {
594 ) -> D::EndpointIn { 618 ) -> D::EndpointIn {
595 self.endpoint_in( 619 self.endpoint_in(
596 EndpointType::Isochronous, 620 EndpointType::Isochronous,
621 ep_addr,
597 max_packet_size, 622 max_packet_size,
598 interval_ms, 623 interval_ms,
599 synchronization_type, 624 synchronization_type,
@@ -605,6 +630,7 @@ impl<'a, 'd, D: Driver<'d>> InterfaceAltBuilder<'a, 'd, D> {
605 /// Allocate a ISOCHRONOUS OUT endpoint and write its descriptor. 630 /// Allocate a ISOCHRONOUS OUT endpoint and write its descriptor.
606 pub fn endpoint_isochronous_out( 631 pub fn endpoint_isochronous_out(
607 &mut self, 632 &mut self,
633 ep_addr: Option<EndpointAddress>,
608 max_packet_size: u16, 634 max_packet_size: u16,
609 interval_ms: u8, 635 interval_ms: u8,
610 synchronization_type: SynchronizationType, 636 synchronization_type: SynchronizationType,
@@ -613,6 +639,7 @@ impl<'a, 'd, D: Driver<'d>> InterfaceAltBuilder<'a, 'd, D> {
613 ) -> D::EndpointOut { 639 ) -> D::EndpointOut {
614 self.endpoint_out( 640 self.endpoint_out(
615 EndpointType::Isochronous, 641 EndpointType::Isochronous,
642 ep_addr,
616 max_packet_size, 643 max_packet_size,
617 interval_ms, 644 interval_ms,
618 synchronization_type, 645 synchronization_type,
diff --git a/embassy-usb/src/class/cdc_acm.rs b/embassy-usb/src/class/cdc_acm.rs
index 732a433f8..0a1a5e64f 100644
--- a/embassy-usb/src/class/cdc_acm.rs
+++ b/embassy-usb/src/class/cdc_acm.rs
@@ -254,14 +254,14 @@ impl<'d, D: Driver<'d>> CdcAcmClass<'d, D> {
254 ], 254 ],
255 ); 255 );
256 256
257 let comm_ep = alt.endpoint_interrupt_in(8, 255); 257 let comm_ep = alt.endpoint_interrupt_in(None, 8, 255);
258 258
259 // Data interface 259 // Data interface
260 let mut iface = func.interface(); 260 let mut iface = func.interface();
261 let data_if = iface.interface_number(); 261 let data_if = iface.interface_number();
262 let mut alt = iface.alt_setting(USB_CLASS_CDC_DATA, 0x00, CDC_PROTOCOL_NONE, None); 262 let mut alt = iface.alt_setting(USB_CLASS_CDC_DATA, 0x00, CDC_PROTOCOL_NONE, None);
263 let read_ep = alt.endpoint_bulk_out(max_packet_size); 263 let read_ep = alt.endpoint_bulk_out(None, max_packet_size);
264 let write_ep = alt.endpoint_bulk_in(max_packet_size); 264 let write_ep = alt.endpoint_bulk_in(None, max_packet_size);
265 265
266 drop(func); 266 drop(func);
267 267
@@ -501,7 +501,7 @@ impl<'d, D: Driver<'d>> BufferedReceiver<'d, D> {
501 fn read_from_buffer(&mut self, buf: &mut [u8]) -> usize { 501 fn read_from_buffer(&mut self, buf: &mut [u8]) -> usize {
502 let available = &self.buffer[self.start..self.end]; 502 let available = &self.buffer[self.start..self.end];
503 let len = core::cmp::min(available.len(), buf.len()); 503 let len = core::cmp::min(available.len(), buf.len());
504 buf[..len].copy_from_slice(&self.buffer[..len]); 504 buf[..len].copy_from_slice(&available[..len]);
505 self.start += len; 505 self.start += len;
506 len 506 len
507 } 507 }
diff --git a/embassy-usb/src/class/cdc_ncm/mod.rs b/embassy-usb/src/class/cdc_ncm/mod.rs
index 09d923d2a..3af853091 100644
--- a/embassy-usb/src/class/cdc_ncm/mod.rs
+++ b/embassy-usb/src/class/cdc_ncm/mod.rs
@@ -313,15 +313,15 @@ impl<'d, D: Driver<'d>> CdcNcmClass<'d, D> {
313 ], 313 ],
314 ); 314 );
315 315
316 let comm_ep = alt.endpoint_interrupt_in(8, 255); 316 let comm_ep = alt.endpoint_interrupt_in(None, 8, 255);
317 317
318 // Data interface 318 // Data interface
319 let mut iface = func.interface(); 319 let mut iface = func.interface();
320 let data_if = iface.interface_number(); 320 let data_if = iface.interface_number();
321 let _alt = iface.alt_setting(USB_CLASS_CDC_DATA, 0x00, CDC_PROTOCOL_NTB, None); 321 let _alt = iface.alt_setting(USB_CLASS_CDC_DATA, 0x00, CDC_PROTOCOL_NTB, None);
322 let mut alt = iface.alt_setting(USB_CLASS_CDC_DATA, 0x00, CDC_PROTOCOL_NTB, None); 322 let mut alt = iface.alt_setting(USB_CLASS_CDC_DATA, 0x00, CDC_PROTOCOL_NTB, None);
323 let read_ep = alt.endpoint_bulk_out(max_packet_size); 323 let read_ep = alt.endpoint_bulk_out(None, max_packet_size);
324 let write_ep = alt.endpoint_bulk_in(max_packet_size); 324 let write_ep = alt.endpoint_bulk_in(None, max_packet_size);
325 325
326 drop(func); 326 drop(func);
327 327
diff --git a/embassy-usb/src/class/cmsis_dap_v2.rs b/embassy-usb/src/class/cmsis_dap_v2.rs
index a94e3ddb7..a9fd9cdf0 100644
--- a/embassy-usb/src/class/cmsis_dap_v2.rs
+++ b/embassy-usb/src/class/cmsis_dap_v2.rs
@@ -61,10 +61,10 @@ impl<'d, D: Driver<'d>> CmsisDapV2Class<'d, D> {
61 )); 61 ));
62 let mut interface = function.interface(); 62 let mut interface = function.interface();
63 let mut alt = interface.alt_setting(0xFF, 0, 0, Some(iface_string)); 63 let mut alt = interface.alt_setting(0xFF, 0, 0, Some(iface_string));
64 let read_ep = alt.endpoint_bulk_out(max_packet_size); 64 let read_ep = alt.endpoint_bulk_out(None, max_packet_size);
65 let write_ep = alt.endpoint_bulk_in(max_packet_size); 65 let write_ep = alt.endpoint_bulk_in(None, max_packet_size);
66 let trace_ep = if trace { 66 let trace_ep = if trace {
67 Some(alt.endpoint_bulk_in(max_packet_size)) 67 Some(alt.endpoint_bulk_in(None, max_packet_size))
68 } else { 68 } else {
69 None 69 None
70 }; 70 };
diff --git a/embassy-usb/src/class/hid.rs b/embassy-usb/src/class/hid.rs
index 6d9e0aced..182e1f83f 100644
--- a/embassy-usb/src/class/hid.rs
+++ b/embassy-usb/src/class/hid.rs
@@ -133,9 +133,9 @@ fn build<'d, D: Driver<'d>>(
133 ], 133 ],
134 ); 134 );
135 135
136 let ep_in = alt.endpoint_interrupt_in(config.max_packet_size, config.poll_ms); 136 let ep_in = alt.endpoint_interrupt_in(None, config.max_packet_size, config.poll_ms);
137 let ep_out = if with_out_endpoint { 137 let ep_out = if with_out_endpoint {
138 Some(alt.endpoint_interrupt_out(config.max_packet_size, config.poll_ms)) 138 Some(alt.endpoint_interrupt_out(None, config.max_packet_size, config.poll_ms))
139 } else { 139 } else {
140 None 140 None
141 }; 141 };
diff --git a/embassy-usb/src/class/midi.rs b/embassy-usb/src/class/midi.rs
index 52a96f278..1d152ca44 100644
--- a/embassy-usb/src/class/midi.rs
+++ b/embassy-usb/src/class/midi.rs
@@ -129,14 +129,14 @@ impl<'d, D: Driver<'d>> MidiClass<'d, D> {
129 for i in 0..n_out_jacks { 129 for i in 0..n_out_jacks {
130 endpoint_data[2 + i as usize] = in_jack_id_emb(i); 130 endpoint_data[2 + i as usize] = in_jack_id_emb(i);
131 } 131 }
132 let read_ep = alt.endpoint_bulk_out(max_packet_size); 132 let read_ep = alt.endpoint_bulk_out(None, max_packet_size);
133 alt.descriptor(CS_ENDPOINT, &endpoint_data[0..2 + n_out_jacks as usize]); 133 alt.descriptor(CS_ENDPOINT, &endpoint_data[0..2 + n_out_jacks as usize]);
134 134
135 endpoint_data[1] = n_in_jacks; 135 endpoint_data[1] = n_in_jacks;
136 for i in 0..n_in_jacks { 136 for i in 0..n_in_jacks {
137 endpoint_data[2 + i as usize] = out_jack_id_emb(i); 137 endpoint_data[2 + i as usize] = out_jack_id_emb(i);
138 } 138 }
139 let write_ep = alt.endpoint_bulk_in(max_packet_size); 139 let write_ep = alt.endpoint_bulk_in(None, max_packet_size);
140 alt.descriptor(CS_ENDPOINT, &endpoint_data[0..2 + n_in_jacks as usize]); 140 alt.descriptor(CS_ENDPOINT, &endpoint_data[0..2 + n_in_jacks as usize]);
141 141
142 MidiClass { read_ep, write_ep } 142 MidiClass { read_ep, write_ep }
diff --git a/embassy-usb/src/class/uac1/speaker.rs b/embassy-usb/src/class/uac1/speaker.rs
index 1ff29088c..9565e2a25 100644
--- a/embassy-usb/src/class/uac1/speaker.rs
+++ b/embassy-usb/src/class/uac1/speaker.rs
@@ -268,9 +268,10 @@ impl<'d, D: Driver<'d>> Speaker<'d, D> {
268 268
269 alt.descriptor(CS_INTERFACE, &format_descriptor); 269 alt.descriptor(CS_INTERFACE, &format_descriptor);
270 270
271 let streaming_endpoint = alt.alloc_endpoint_out(EndpointType::Isochronous, max_packet_size, 1); 271 let streaming_endpoint = alt.alloc_endpoint_out(EndpointType::Isochronous, None, max_packet_size, 1);
272 let feedback_endpoint = alt.alloc_endpoint_in( 272 let feedback_endpoint = alt.alloc_endpoint_in(
273 EndpointType::Isochronous, 273 EndpointType::Isochronous,
274 None,
274 4, // Feedback packets are 24 bit (10.14 format). 275 4, // Feedback packets are 24 bit (10.14 format).
275 1, 276 1,
276 ); 277 );
diff --git a/examples/boot/application/nrf/Cargo.toml b/examples/boot/application/nrf/Cargo.toml
index e9616aa54..9c7fdf148 100644
--- a/examples/boot/application/nrf/Cargo.toml
+++ b/examples/boot/application/nrf/Cargo.toml
@@ -8,10 +8,10 @@ license = "MIT OR Apache-2.0"
8embassy-sync = { version = "0.7.0", path = "../../../../embassy-sync" } 8embassy-sync = { version = "0.7.0", path = "../../../../embassy-sync" }
9embassy-executor = { version = "0.7.0", path = "../../../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "arch-cortex-m", "executor-thread"] } 9embassy-executor = { version = "0.7.0", path = "../../../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "arch-cortex-m", "executor-thread"] }
10embassy-time = { version = "0.4.0", path = "../../../../embassy-time", features = [] } 10embassy-time = { version = "0.4.0", path = "../../../../embassy-time", features = [] }
11embassy-nrf = { version = "0.4.0", path = "../../../../embassy-nrf", features = ["time-driver-rtc1", "gpiote", ] } 11embassy-nrf = { version = "0.5.0", path = "../../../../embassy-nrf", features = ["time-driver-rtc1", "gpiote", ] }
12embassy-boot = { version = "0.4.0", path = "../../../../embassy-boot", features = [] } 12embassy-boot = { version = "0.4.0", path = "../../../../embassy-boot", features = [] }
13embassy-boot-nrf = { version = "0.5.0", path = "../../../../embassy-boot-nrf", features = [] } 13embassy-boot-nrf = { version = "0.5.0", path = "../../../../embassy-boot-nrf", features = [] }
14embassy-embedded-hal = { version = "0.3.0", path = "../../../../embassy-embedded-hal" } 14embassy-embedded-hal = { version = "0.3.1", path = "../../../../embassy-embedded-hal" }
15 15
16defmt = { version = "1.0.1", optional = true } 16defmt = { version = "1.0.1", optional = true }
17defmt-rtt = { version = "1.0.0", optional = true } 17defmt-rtt = { version = "1.0.0", optional = true }
diff --git a/examples/boot/application/rp/Cargo.toml b/examples/boot/application/rp/Cargo.toml
index be283fb27..afb0871e6 100644
--- a/examples/boot/application/rp/Cargo.toml
+++ b/examples/boot/application/rp/Cargo.toml
@@ -8,9 +8,9 @@ license = "MIT OR Apache-2.0"
8embassy-sync = { version = "0.7.0", path = "../../../../embassy-sync" } 8embassy-sync = { version = "0.7.0", path = "../../../../embassy-sync" }
9embassy-executor = { version = "0.7.0", path = "../../../../embassy-executor", features = ["arch-cortex-m", "executor-thread"] } 9embassy-executor = { version = "0.7.0", path = "../../../../embassy-executor", features = ["arch-cortex-m", "executor-thread"] }
10embassy-time = { version = "0.4.0", path = "../../../../embassy-time", features = [] } 10embassy-time = { version = "0.4.0", path = "../../../../embassy-time", features = [] }
11embassy-rp = { version = "0.4.0", path = "../../../../embassy-rp", features = ["time-driver", "rp2040"] } 11embassy-rp = { version = "0.6.0", path = "../../../../embassy-rp", features = ["time-driver", "rp2040"] }
12embassy-boot-rp = { version = "0.5.0", path = "../../../../embassy-boot-rp", features = [] } 12embassy-boot-rp = { version = "0.5.0", path = "../../../../embassy-boot-rp", features = [] }
13embassy-embedded-hal = { version = "0.3.0", path = "../../../../embassy-embedded-hal" } 13embassy-embedded-hal = { version = "0.3.1", path = "../../../../embassy-embedded-hal" }
14 14
15defmt = "1.0.1" 15defmt = "1.0.1"
16defmt-rtt = "1.0.0" 16defmt-rtt = "1.0.0"
diff --git a/examples/boot/application/stm32f3/Cargo.toml b/examples/boot/application/stm32f3/Cargo.toml
index b3466e288..4cd2d1338 100644
--- a/examples/boot/application/stm32f3/Cargo.toml
+++ b/examples/boot/application/stm32f3/Cargo.toml
@@ -10,7 +10,7 @@ embassy-executor = { version = "0.7.0", path = "../../../../embassy-executor", f
10embassy-time = { version = "0.4.0", path = "../../../../embassy-time", features = [ "tick-hz-32_768"] } 10embassy-time = { version = "0.4.0", path = "../../../../embassy-time", features = [ "tick-hz-32_768"] }
11embassy-stm32 = { version = "0.2.0", path = "../../../../embassy-stm32", features = ["stm32f303re", "time-driver-any", "exti"] } 11embassy-stm32 = { version = "0.2.0", path = "../../../../embassy-stm32", features = ["stm32f303re", "time-driver-any", "exti"] }
12embassy-boot-stm32 = { version = "0.3.0", path = "../../../../embassy-boot-stm32" } 12embassy-boot-stm32 = { version = "0.3.0", path = "../../../../embassy-boot-stm32" }
13embassy-embedded-hal = { version = "0.3.0", path = "../../../../embassy-embedded-hal" } 13embassy-embedded-hal = { version = "0.3.1", path = "../../../../embassy-embedded-hal" }
14 14
15defmt = { version = "1.0.1", optional = true } 15defmt = { version = "1.0.1", optional = true }
16defmt-rtt = { version = "1.0.0", optional = true } 16defmt-rtt = { version = "1.0.0", optional = true }
diff --git a/examples/boot/application/stm32f7/Cargo.toml b/examples/boot/application/stm32f7/Cargo.toml
index 72dbded5f..f3d74f53a 100644
--- a/examples/boot/application/stm32f7/Cargo.toml
+++ b/examples/boot/application/stm32f7/Cargo.toml
@@ -10,7 +10,7 @@ embassy-executor = { version = "0.7.0", path = "../../../../embassy-executor", f
10embassy-time = { version = "0.4.0", path = "../../../../embassy-time", features = [ "tick-hz-32_768"] } 10embassy-time = { version = "0.4.0", path = "../../../../embassy-time", features = [ "tick-hz-32_768"] }
11embassy-stm32 = { version = "0.2.0", path = "../../../../embassy-stm32", features = ["stm32f767zi", "time-driver-any", "exti", "single-bank"] } 11embassy-stm32 = { version = "0.2.0", path = "../../../../embassy-stm32", features = ["stm32f767zi", "time-driver-any", "exti", "single-bank"] }
12embassy-boot-stm32 = { version = "0.3.0", path = "../../../../embassy-boot-stm32", features = [] } 12embassy-boot-stm32 = { version = "0.3.0", path = "../../../../embassy-boot-stm32", features = [] }
13embassy-embedded-hal = { version = "0.3.0", path = "../../../../embassy-embedded-hal" } 13embassy-embedded-hal = { version = "0.3.1", path = "../../../../embassy-embedded-hal" }
14 14
15defmt = { version = "1.0.1", optional = true } 15defmt = { version = "1.0.1", optional = true }
16defmt-rtt = { version = "1.0.0", optional = true } 16defmt-rtt = { version = "1.0.0", optional = true }
diff --git a/examples/boot/application/stm32h7/Cargo.toml b/examples/boot/application/stm32h7/Cargo.toml
index 57fb8312c..427b15bcb 100644
--- a/examples/boot/application/stm32h7/Cargo.toml
+++ b/examples/boot/application/stm32h7/Cargo.toml
@@ -10,7 +10,7 @@ embassy-executor = { version = "0.7.0", path = "../../../../embassy-executor", f
10embassy-time = { version = "0.4.0", path = "../../../../embassy-time", features = [ "tick-hz-32_768"] } 10embassy-time = { version = "0.4.0", path = "../../../../embassy-time", features = [ "tick-hz-32_768"] }
11embassy-stm32 = { version = "0.2.0", path = "../../../../embassy-stm32", features = ["stm32h743zi", "time-driver-any", "exti"] } 11embassy-stm32 = { version = "0.2.0", path = "../../../../embassy-stm32", features = ["stm32h743zi", "time-driver-any", "exti"] }
12embassy-boot-stm32 = { version = "0.3.0", path = "../../../../embassy-boot-stm32", features = [] } 12embassy-boot-stm32 = { version = "0.3.0", path = "../../../../embassy-boot-stm32", features = [] }
13embassy-embedded-hal = { version = "0.3.0", path = "../../../../embassy-embedded-hal" } 13embassy-embedded-hal = { version = "0.3.1", path = "../../../../embassy-embedded-hal" }
14 14
15defmt = { version = "1.0.1", optional = true } 15defmt = { version = "1.0.1", optional = true }
16defmt-rtt = { version = "1.0.0", optional = true } 16defmt-rtt = { version = "1.0.0", optional = true }
diff --git a/examples/boot/application/stm32l0/Cargo.toml b/examples/boot/application/stm32l0/Cargo.toml
index 7dbbba138..46e79f7ed 100644
--- a/examples/boot/application/stm32l0/Cargo.toml
+++ b/examples/boot/application/stm32l0/Cargo.toml
@@ -10,7 +10,7 @@ embassy-executor = { version = "0.7.0", path = "../../../../embassy-executor", f
10embassy-time = { version = "0.4.0", path = "../../../../embassy-time", features = [ "tick-hz-32_768"] } 10embassy-time = { version = "0.4.0", path = "../../../../embassy-time", features = [ "tick-hz-32_768"] }
11embassy-stm32 = { version = "0.2.0", path = "../../../../embassy-stm32", features = ["stm32l072cz", "time-driver-any", "exti", "memory-x"] } 11embassy-stm32 = { version = "0.2.0", path = "../../../../embassy-stm32", features = ["stm32l072cz", "time-driver-any", "exti", "memory-x"] }
12embassy-boot-stm32 = { version = "0.3.0", path = "../../../../embassy-boot-stm32", features = [] } 12embassy-boot-stm32 = { version = "0.3.0", path = "../../../../embassy-boot-stm32", features = [] }
13embassy-embedded-hal = { version = "0.3.0", path = "../../../../embassy-embedded-hal" } 13embassy-embedded-hal = { version = "0.3.1", path = "../../../../embassy-embedded-hal" }
14 14
15defmt = { version = "1.0.1", optional = true } 15defmt = { version = "1.0.1", optional = true }
16defmt-rtt = { version = "1.0.0", optional = true } 16defmt-rtt = { version = "1.0.0", optional = true }
diff --git a/examples/boot/application/stm32l1/Cargo.toml b/examples/boot/application/stm32l1/Cargo.toml
index 9549b2048..ae3cd3600 100644
--- a/examples/boot/application/stm32l1/Cargo.toml
+++ b/examples/boot/application/stm32l1/Cargo.toml
@@ -10,7 +10,7 @@ embassy-executor = { version = "0.7.0", path = "../../../../embassy-executor", f
10embassy-time = { version = "0.4.0", path = "../../../../embassy-time", features = [ "tick-hz-32_768"] } 10embassy-time = { version = "0.4.0", path = "../../../../embassy-time", features = [ "tick-hz-32_768"] }
11embassy-stm32 = { version = "0.2.0", path = "../../../../embassy-stm32", features = ["stm32l151cb-a", "time-driver-any", "exti"] } 11embassy-stm32 = { version = "0.2.0", path = "../../../../embassy-stm32", features = ["stm32l151cb-a", "time-driver-any", "exti"] }
12embassy-boot-stm32 = { version = "0.3.0", path = "../../../../embassy-boot-stm32", features = [] } 12embassy-boot-stm32 = { version = "0.3.0", path = "../../../../embassy-boot-stm32", features = [] }
13embassy-embedded-hal = { version = "0.3.0", path = "../../../../embassy-embedded-hal" } 13embassy-embedded-hal = { version = "0.3.1", path = "../../../../embassy-embedded-hal" }
14 14
15defmt = { version = "1.0.1", optional = true } 15defmt = { version = "1.0.1", optional = true }
16defmt-rtt = { version = "1.0.0", optional = true } 16defmt-rtt = { version = "1.0.0", optional = true }
diff --git a/examples/boot/application/stm32l4/Cargo.toml b/examples/boot/application/stm32l4/Cargo.toml
index 03daeb0bc..a41b25562 100644
--- a/examples/boot/application/stm32l4/Cargo.toml
+++ b/examples/boot/application/stm32l4/Cargo.toml
@@ -10,7 +10,7 @@ embassy-executor = { version = "0.7.0", path = "../../../../embassy-executor", f
10embassy-time = { version = "0.4.0", path = "../../../../embassy-time", features = [ "tick-hz-32_768"] } 10embassy-time = { version = "0.4.0", path = "../../../../embassy-time", features = [ "tick-hz-32_768"] }
11embassy-stm32 = { version = "0.2.0", path = "../../../../embassy-stm32", features = ["stm32l475vg", "time-driver-any", "exti"] } 11embassy-stm32 = { version = "0.2.0", path = "../../../../embassy-stm32", features = ["stm32l475vg", "time-driver-any", "exti"] }
12embassy-boot-stm32 = { version = "0.3.0", path = "../../../../embassy-boot-stm32", features = [] } 12embassy-boot-stm32 = { version = "0.3.0", path = "../../../../embassy-boot-stm32", features = [] }
13embassy-embedded-hal = { version = "0.3.0", path = "../../../../embassy-embedded-hal" } 13embassy-embedded-hal = { version = "0.3.1", path = "../../../../embassy-embedded-hal" }
14 14
15defmt = { version = "1.0.1", optional = true } 15defmt = { version = "1.0.1", optional = true }
16defmt-rtt = { version = "1.0.0", optional = true } 16defmt-rtt = { version = "1.0.0", optional = true }
diff --git a/examples/boot/application/stm32wb-dfu/Cargo.toml b/examples/boot/application/stm32wb-dfu/Cargo.toml
index e582628aa..287fcf806 100644
--- a/examples/boot/application/stm32wb-dfu/Cargo.toml
+++ b/examples/boot/application/stm32wb-dfu/Cargo.toml
@@ -10,8 +10,8 @@ embassy-executor = { version = "0.7.0", path = "../../../../embassy-executor", f
10embassy-time = { version = "0.4.0", path = "../../../../embassy-time", features = [ "tick-hz-32_768"] } 10embassy-time = { version = "0.4.0", path = "../../../../embassy-time", features = [ "tick-hz-32_768"] }
11embassy-stm32 = { version = "0.2.0", path = "../../../../embassy-stm32", features = ["stm32wb55rg", "time-driver-any", "exti"] } 11embassy-stm32 = { version = "0.2.0", path = "../../../../embassy-stm32", features = ["stm32wb55rg", "time-driver-any", "exti"] }
12embassy-boot-stm32 = { version = "0.3.0", path = "../../../../embassy-boot-stm32", features = [] } 12embassy-boot-stm32 = { version = "0.3.0", path = "../../../../embassy-boot-stm32", features = [] }
13embassy-embedded-hal = { version = "0.3.0", path = "../../../../embassy-embedded-hal" } 13embassy-embedded-hal = { version = "0.3.1", path = "../../../../embassy-embedded-hal" }
14embassy-usb = { version = "0.4.0", path = "../../../../embassy-usb" } 14embassy-usb = { version = "0.5.0", path = "../../../../embassy-usb" }
15embassy-usb-dfu = { version = "0.1.0", path = "../../../../embassy-usb-dfu", features = ["application", "cortex-m"] } 15embassy-usb-dfu = { version = "0.1.0", path = "../../../../embassy-usb-dfu", features = ["application", "cortex-m"] }
16 16
17defmt = { version = "1.0.1", optional = true } 17defmt = { version = "1.0.1", optional = true }
diff --git a/examples/boot/application/stm32wl/Cargo.toml b/examples/boot/application/stm32wl/Cargo.toml
index 3ed04b472..af49db260 100644
--- a/examples/boot/application/stm32wl/Cargo.toml
+++ b/examples/boot/application/stm32wl/Cargo.toml
@@ -10,7 +10,7 @@ embassy-executor = { version = "0.7.0", path = "../../../../embassy-executor", f
10embassy-time = { version = "0.4.0", path = "../../../../embassy-time", features = [ "tick-hz-32_768"] } 10embassy-time = { version = "0.4.0", path = "../../../../embassy-time", features = [ "tick-hz-32_768"] }
11embassy-stm32 = { version = "0.2.0", path = "../../../../embassy-stm32", features = ["stm32wl55jc-cm4", "time-driver-any", "exti"] } 11embassy-stm32 = { version = "0.2.0", path = "../../../../embassy-stm32", features = ["stm32wl55jc-cm4", "time-driver-any", "exti"] }
12embassy-boot-stm32 = { version = "0.3.0", path = "../../../../embassy-boot-stm32", features = [] } 12embassy-boot-stm32 = { version = "0.3.0", path = "../../../../embassy-boot-stm32", features = [] }
13embassy-embedded-hal = { version = "0.3.0", path = "../../../../embassy-embedded-hal" } 13embassy-embedded-hal = { version = "0.3.1", path = "../../../../embassy-embedded-hal" }
14 14
15defmt = { version = "1.0.1", optional = true } 15defmt = { version = "1.0.1", optional = true }
16defmt-rtt = { version = "1.0.0", optional = true } 16defmt-rtt = { version = "1.0.0", optional = true }
diff --git a/examples/boot/bootloader/stm32wb-dfu/Cargo.toml b/examples/boot/bootloader/stm32wb-dfu/Cargo.toml
index 0bb93b12e..d101e6ace 100644
--- a/examples/boot/bootloader/stm32wb-dfu/Cargo.toml
+++ b/examples/boot/bootloader/stm32wb-dfu/Cargo.toml
@@ -18,7 +18,7 @@ embedded-storage = "0.3.1"
18embedded-storage-async = "0.4.0" 18embedded-storage-async = "0.4.0"
19cfg-if = "1.0.0" 19cfg-if = "1.0.0"
20embassy-usb-dfu = { version = "0.1.0", path = "../../../../embassy-usb-dfu", features = ["dfu", "cortex-m"] } 20embassy-usb-dfu = { version = "0.1.0", path = "../../../../embassy-usb-dfu", features = ["dfu", "cortex-m"] }
21embassy-usb = { version = "0.4.0", path = "../../../../embassy-usb", default-features = false } 21embassy-usb = { version = "0.5.0", path = "../../../../embassy-usb", default-features = false }
22embassy-futures = { version = "0.1.1", path = "../../../../embassy-futures" } 22embassy-futures = { version = "0.1.1", path = "../../../../embassy-futures" }
23 23
24[features] 24[features]
diff --git a/examples/nrf-rtos-trace/Cargo.toml b/examples/nrf-rtos-trace/Cargo.toml
index 7bf38cb3f..f1c40192d 100644
--- a/examples/nrf-rtos-trace/Cargo.toml
+++ b/examples/nrf-rtos-trace/Cargo.toml
@@ -18,7 +18,7 @@ log = [
18embassy-sync = { version = "0.7.0", path = "../../embassy-sync" } 18embassy-sync = { version = "0.7.0", path = "../../embassy-sync" }
19embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "rtos-trace"] } 19embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "rtos-trace"] }
20embassy-time = { version = "0.4.0", path = "../../embassy-time" } 20embassy-time = { version = "0.4.0", path = "../../embassy-time" }
21embassy-nrf = { version = "0.4.0", path = "../../embassy-nrf", features = ["nrf52840", "time-driver-rtc1", "gpiote", "unstable-pac"] } 21embassy-nrf = { version = "0.5.0", path = "../../embassy-nrf", features = ["nrf52840", "time-driver-rtc1", "gpiote", "unstable-pac"] }
22 22
23cortex-m = { version = "0.7.6", features = ["inline-asm", "critical-section-single-core"] } 23cortex-m = { version = "0.7.6", features = ["inline-asm", "critical-section-single-core"] }
24cortex-m-rt = "0.7.0" 24cortex-m-rt = "0.7.0"
diff --git a/examples/nrf51/Cargo.toml b/examples/nrf51/Cargo.toml
index 89f78efa0..a21d7f6ce 100644
--- a/examples/nrf51/Cargo.toml
+++ b/examples/nrf51/Cargo.toml
@@ -7,7 +7,7 @@ license = "MIT OR Apache-2.0"
7[dependencies] 7[dependencies]
8embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "executor-interrupt", "defmt"] } 8embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "executor-interrupt", "defmt"] }
9embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime"] } 9embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime"] }
10embassy-nrf = { version = "0.4.0", path = "../../embassy-nrf", features = ["defmt", "nrf51", "gpiote", "time-driver-rtc1", "unstable-pac", "time", "rt"] } 10embassy-nrf = { version = "0.5.0", path = "../../embassy-nrf", features = ["defmt", "nrf51", "gpiote", "time-driver-rtc1", "unstable-pac", "time", "rt"] }
11 11
12defmt = "1.0.1" 12defmt = "1.0.1"
13defmt-rtt = "1.0.0" 13defmt-rtt = "1.0.0"
diff --git a/examples/nrf52810/Cargo.toml b/examples/nrf52810/Cargo.toml
index 548a16c8d..baa873f22 100644
--- a/examples/nrf52810/Cargo.toml
+++ b/examples/nrf52810/Cargo.toml
@@ -9,7 +9,7 @@ embassy-futures = { version = "0.1.0", path = "../../embassy-futures" }
9embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["defmt"] } 9embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["defmt"] }
10embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "executor-interrupt", "defmt"] } 10embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "executor-interrupt", "defmt"] }
11embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime"] } 11embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime"] }
12embassy-nrf = { version = "0.4.0", path = "../../embassy-nrf", features = ["defmt", "nrf52810", "time-driver-rtc1", "gpiote", "unstable-pac", "time"] } 12embassy-nrf = { version = "0.5.0", path = "../../embassy-nrf", features = ["defmt", "nrf52810", "time-driver-rtc1", "gpiote", "unstable-pac", "time"] }
13 13
14defmt = "1.0.1" 14defmt = "1.0.1"
15defmt-rtt = "1.0.0" 15defmt-rtt = "1.0.0"
diff --git a/examples/nrf52840-rtic/Cargo.toml b/examples/nrf52840-rtic/Cargo.toml
index efe57f264..3e499e9bc 100644
--- a/examples/nrf52840-rtic/Cargo.toml
+++ b/examples/nrf52840-rtic/Cargo.toml
@@ -11,7 +11,7 @@ embassy-futures = { version = "0.1.0", path = "../../embassy-futures" }
11embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["defmt"] } 11embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["defmt"] }
12embassy-time = { version = "0.4.0", path = "../../embassy-time", features = [ "defmt", "defmt-timestamp-uptime"] } 12embassy-time = { version = "0.4.0", path = "../../embassy-time", features = [ "defmt", "defmt-timestamp-uptime"] }
13embassy-time-queue-utils = { version = "0.1", path = "../../embassy-time-queue-utils", features = ["generic-queue-8"] } 13embassy-time-queue-utils = { version = "0.1", path = "../../embassy-time-queue-utils", features = ["generic-queue-8"] }
14embassy-nrf = { version = "0.4.0", path = "../../embassy-nrf", features = [ "defmt", "nrf52840", "time-driver-rtc1", "gpiote", "unstable-pac", "time"] } 14embassy-nrf = { version = "0.5.0", path = "../../embassy-nrf", features = [ "defmt", "nrf52840", "time-driver-rtc1", "gpiote", "unstable-pac", "time"] }
15 15
16defmt = "1.0.1" 16defmt = "1.0.1"
17defmt-rtt = "1.0.0" 17defmt-rtt = "1.0.0"
diff --git a/examples/nrf52840/Cargo.toml b/examples/nrf52840/Cargo.toml
index 6c741f344..d2baebf8e 100644
--- a/examples/nrf52840/Cargo.toml
+++ b/examples/nrf52840/Cargo.toml
@@ -9,9 +9,9 @@ embassy-futures = { version = "0.1.0", path = "../../embassy-futures" }
9embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["defmt"] } 9embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["defmt"] }
10embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "executor-interrupt", "defmt"] } 10embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "executor-interrupt", "defmt"] }
11embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime"] } 11embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime"] }
12embassy-nrf = { version = "0.4.0", path = "../../embassy-nrf", features = ["defmt", "nrf52840", "time-driver-rtc1", "gpiote", "unstable-pac", "time"] } 12embassy-nrf = { version = "0.5.0", path = "../../embassy-nrf", features = ["defmt", "nrf52840", "time-driver-rtc1", "gpiote", "unstable-pac", "time"] }
13embassy-net = { version = "0.7.0", path = "../../embassy-net", features = ["defmt", "tcp", "dhcpv4", "medium-ethernet"] } 13embassy-net = { version = "0.7.0", path = "../../embassy-net", features = ["defmt", "tcp", "dhcpv4", "medium-ethernet"] }
14embassy-usb = { version = "0.4.0", path = "../../embassy-usb", features = ["defmt"] } 14embassy-usb = { version = "0.5.0", path = "../../embassy-usb", features = ["defmt"] }
15embedded-io = { version = "0.6.0", features = ["defmt-03"] } 15embedded-io = { version = "0.6.0", features = ["defmt-03"] }
16embedded-io-async = { version = "0.6.1", features = ["defmt-03"] } 16embedded-io-async = { version = "0.6.1", features = ["defmt-03"] }
17embassy-net-esp-hosted = { version = "0.2.0", path = "../../embassy-net-esp-hosted", features = ["defmt"] } 17embassy-net-esp-hosted = { version = "0.2.0", path = "../../embassy-net-esp-hosted", features = ["defmt"] }
diff --git a/examples/nrf5340/Cargo.toml b/examples/nrf5340/Cargo.toml
index 0351cfe27..bdebd5386 100644
--- a/examples/nrf5340/Cargo.toml
+++ b/examples/nrf5340/Cargo.toml
@@ -9,9 +9,9 @@ embassy-futures = { version = "0.1.0", path = "../../embassy-futures" }
9embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["defmt"] } 9embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["defmt"] }
10embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt"] } 10embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt"] }
11embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime"] } 11embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime"] }
12embassy-nrf = { version = "0.4.0", path = "../../embassy-nrf", features = ["defmt", "nrf5340-app-s", "time-driver-rtc1", "gpiote", "unstable-pac"] } 12embassy-nrf = { version = "0.5.0", path = "../../embassy-nrf", features = ["defmt", "nrf5340-app-s", "time-driver-rtc1", "gpiote", "unstable-pac"] }
13embassy-net = { version = "0.7.0", path = "../../embassy-net", features = ["defmt", "tcp", "dhcpv4", "medium-ethernet"] } 13embassy-net = { version = "0.7.0", path = "../../embassy-net", features = ["defmt", "tcp", "dhcpv4", "medium-ethernet"] }
14embassy-usb = { version = "0.4.0", path = "../../embassy-usb", features = ["defmt"] } 14embassy-usb = { version = "0.5.0", path = "../../embassy-usb", features = ["defmt"] }
15embedded-io-async = { version = "0.6.1" } 15embedded-io-async = { version = "0.6.1" }
16 16
17defmt = "1.0.1" 17defmt = "1.0.1"
diff --git a/examples/nrf54l15/Cargo.toml b/examples/nrf54l15/Cargo.toml
index b1189e887..27d5babee 100644
--- a/examples/nrf54l15/Cargo.toml
+++ b/examples/nrf54l15/Cargo.toml
@@ -7,7 +7,7 @@ license = "MIT OR Apache-2.0"
7[dependencies] 7[dependencies]
8embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "executor-interrupt", "defmt"] } 8embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "executor-interrupt", "defmt"] }
9embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime"] } 9embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime"] }
10embassy-nrf = { version = "0.4.0", path = "../../embassy-nrf", features = ["defmt", "nrf54l15-app-s", "time-driver-rtc1", "gpiote", "unstable-pac", "time"] } 10embassy-nrf = { version = "0.5.0", path = "../../embassy-nrf", features = ["defmt", "nrf54l15-app-s", "time-driver-rtc1", "gpiote", "unstable-pac", "time"] }
11 11
12defmt = "1.0.1" 12defmt = "1.0.1"
13defmt-rtt = "1.0.0" 13defmt-rtt = "1.0.0"
diff --git a/examples/nrf9151/ns/Cargo.toml b/examples/nrf9151/ns/Cargo.toml
index 32501e88d..2a492b595 100644
--- a/examples/nrf9151/ns/Cargo.toml
+++ b/examples/nrf9151/ns/Cargo.toml
@@ -7,7 +7,7 @@ license = "MIT OR Apache-2.0"
7[dependencies] 7[dependencies]
8embassy-executor = { version = "0.7.0", path = "../../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "executor-interrupt", "defmt"] } 8embassy-executor = { version = "0.7.0", path = "../../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "executor-interrupt", "defmt"] }
9embassy-time = { version = "0.4.0", path = "../../../embassy-time", features = ["defmt", "defmt-timestamp-uptime"] } 9embassy-time = { version = "0.4.0", path = "../../../embassy-time", features = ["defmt", "defmt-timestamp-uptime"] }
10embassy-nrf = { version = "0.4.0", path = "../../../embassy-nrf", features = ["defmt", "nrf9120-ns", "time-driver-rtc1", "gpiote", "unstable-pac", "time"] } 10embassy-nrf = { version = "0.5.0", path = "../../../embassy-nrf", features = ["defmt", "nrf9120-ns", "time-driver-rtc1", "gpiote", "unstable-pac", "time"] }
11 11
12defmt = "1.0.1" 12defmt = "1.0.1"
13defmt-rtt = "1.0.0" 13defmt-rtt = "1.0.0"
diff --git a/examples/nrf9151/s/Cargo.toml b/examples/nrf9151/s/Cargo.toml
index 23238412c..62ef3e4ce 100644
--- a/examples/nrf9151/s/Cargo.toml
+++ b/examples/nrf9151/s/Cargo.toml
@@ -7,7 +7,7 @@ license = "MIT OR Apache-2.0"
7[dependencies] 7[dependencies]
8embassy-executor = { version = "0.7.0", path = "../../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "executor-interrupt", "defmt"] } 8embassy-executor = { version = "0.7.0", path = "../../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "executor-interrupt", "defmt"] }
9embassy-time = { version = "0.4.0", path = "../../../embassy-time", features = ["defmt", "defmt-timestamp-uptime"] } 9embassy-time = { version = "0.4.0", path = "../../../embassy-time", features = ["defmt", "defmt-timestamp-uptime"] }
10embassy-nrf = { version = "0.4.0", path = "../../../embassy-nrf", features = ["defmt", "nrf9120-s", "time-driver-rtc1", "gpiote", "unstable-pac", "time"] } 10embassy-nrf = { version = "0.5.0", path = "../../../embassy-nrf", features = ["defmt", "nrf9120-s", "time-driver-rtc1", "gpiote", "unstable-pac", "time"] }
11 11
12defmt = "1.0.1" 12defmt = "1.0.1"
13defmt-rtt = "1.0.0" 13defmt-rtt = "1.0.0"
diff --git a/examples/nrf9160/Cargo.toml b/examples/nrf9160/Cargo.toml
index f34c3a053..c896afdbe 100644
--- a/examples/nrf9160/Cargo.toml
+++ b/examples/nrf9160/Cargo.toml
@@ -7,7 +7,7 @@ license = "MIT OR Apache-2.0"
7[dependencies] 7[dependencies]
8embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "executor-interrupt", "defmt"] } 8embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "executor-interrupt", "defmt"] }
9embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime"] } 9embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime"] }
10embassy-nrf = { version = "0.4.0", path = "../../embassy-nrf", features = ["defmt", "nrf9160-s", "time-driver-rtc1", "gpiote", "unstable-pac", "time"] } 10embassy-nrf = { version = "0.5.0", path = "../../embassy-nrf", features = ["defmt", "nrf9160-s", "time-driver-rtc1", "gpiote", "unstable-pac", "time"] }
11embassy-net-nrf91 = { version = "0.1.0", path = "../../embassy-net-nrf91", features = ["defmt"] } 11embassy-net-nrf91 = { version = "0.1.0", path = "../../embassy-net-nrf91", features = ["defmt"] }
12embassy-net = { version = "0.7.0", path = "../../embassy-net", features = ["defmt", "tcp", "proto-ipv4", "medium-ip"] } 12embassy-net = { version = "0.7.0", path = "../../embassy-net", features = ["defmt", "tcp", "proto-ipv4", "medium-ip"] }
13 13
diff --git a/examples/rp/Cargo.toml b/examples/rp/Cargo.toml
index 8d05d5a8c..971f99fff 100644
--- a/examples/rp/Cargo.toml
+++ b/examples/rp/Cargo.toml
@@ -6,18 +6,18 @@ license = "MIT OR Apache-2.0"
6 6
7 7
8[dependencies] 8[dependencies]
9embassy-embedded-hal = { version = "0.3.0", path = "../../embassy-embedded-hal", features = ["defmt"] } 9embassy-embedded-hal = { version = "0.3.1", path = "../../embassy-embedded-hal", features = ["defmt"] }
10embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["defmt"] } 10embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["defmt"] }
11embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "executor-interrupt", "defmt"] } 11embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "executor-interrupt", "defmt"] }
12embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime"] } 12embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime"] }
13embassy-rp = { version = "0.4.0", path = "../../embassy-rp", features = ["defmt", "unstable-pac", "time-driver", "critical-section-impl", "rp2040"] } 13embassy-rp = { version = "0.6.0", path = "../../embassy-rp", features = ["defmt", "unstable-pac", "time-driver", "critical-section-impl", "rp2040"] }
14embassy-usb = { version = "0.4.0", path = "../../embassy-usb", features = ["defmt"] } 14embassy-usb = { version = "0.5.0", path = "../../embassy-usb", features = ["defmt"] }
15embassy-net = { version = "0.7.0", path = "../../embassy-net", features = ["defmt", "icmp", "tcp", "udp", "raw", "dhcpv4", "medium-ethernet", "dns", "proto-ipv4", "proto-ipv6", "multicast"] } 15embassy-net = { version = "0.7.0", path = "../../embassy-net", features = ["defmt", "icmp", "tcp", "udp", "raw", "dhcpv4", "medium-ethernet", "dns", "proto-ipv4", "proto-ipv6", "multicast"] }
16embassy-net-wiznet = { version = "0.2.0", path = "../../embassy-net-wiznet", features = ["defmt"] } 16embassy-net-wiznet = { version = "0.2.0", path = "../../embassy-net-wiznet", features = ["defmt"] }
17embassy-futures = { version = "0.1.0", path = "../../embassy-futures" } 17embassy-futures = { version = "0.1.0", path = "../../embassy-futures" }
18embassy-usb-logger = { version = "0.4.0", path = "../../embassy-usb-logger" } 18embassy-usb-logger = { version = "0.4.0", path = "../../embassy-usb-logger" }
19cyw43 = { version = "0.3.0", path = "../../cyw43", features = ["defmt", "firmware-logs"] } 19cyw43 = { version = "0.4.0", path = "../../cyw43", features = ["defmt", "firmware-logs"] }
20cyw43-pio = { version = "0.4.0", path = "../../cyw43-pio", features = ["defmt"] } 20cyw43-pio = { version = "0.5.1", path = "../../cyw43-pio", 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/rp/src/bin/usb_raw_bulk.rs b/examples/rp/src/bin/usb_raw_bulk.rs
index 103269791..0747901d1 100644
--- a/examples/rp/src/bin/usb_raw_bulk.rs
+++ b/examples/rp/src/bin/usb_raw_bulk.rs
@@ -96,8 +96,8 @@ async fn main(_spawner: Spawner) {
96 let mut function = builder.function(0xFF, 0, 0); 96 let mut function = builder.function(0xFF, 0, 0);
97 let mut interface = function.interface(); 97 let mut interface = function.interface();
98 let mut alt = interface.alt_setting(0xFF, 0, 0, None); 98 let mut alt = interface.alt_setting(0xFF, 0, 0, None);
99 let mut read_ep = alt.endpoint_bulk_out(64); 99 let mut read_ep = alt.endpoint_bulk_out(None, 64);
100 let mut write_ep = alt.endpoint_bulk_in(64); 100 let mut write_ep = alt.endpoint_bulk_in(None, 64);
101 drop(function); 101 drop(function);
102 102
103 // Build the builder. 103 // Build the builder.
diff --git a/examples/rp/src/bin/usb_webusb.rs b/examples/rp/src/bin/usb_webusb.rs
index a5dc94d5b..5cecb92f0 100644
--- a/examples/rp/src/bin/usb_webusb.rs
+++ b/examples/rp/src/bin/usb_webusb.rs
@@ -125,8 +125,8 @@ impl<'d, D: Driver<'d>> WebEndpoints<'d, D> {
125 let mut iface = func.interface(); 125 let mut iface = func.interface();
126 let mut alt = iface.alt_setting(0xff, 0x00, 0x00, None); 126 let mut alt = iface.alt_setting(0xff, 0x00, 0x00, None);
127 127
128 let write_ep = alt.endpoint_bulk_in(config.max_packet_size); 128 let write_ep = alt.endpoint_bulk_in(None, config.max_packet_size);
129 let read_ep = alt.endpoint_bulk_out(config.max_packet_size); 129 let read_ep = alt.endpoint_bulk_out(None, config.max_packet_size);
130 130
131 WebEndpoints { write_ep, read_ep } 131 WebEndpoints { write_ep, read_ep }
132 } 132 }
diff --git a/examples/rp235x/Cargo.toml b/examples/rp235x/Cargo.toml
index c6afe37db..d909aca1b 100644
--- a/examples/rp235x/Cargo.toml
+++ b/examples/rp235x/Cargo.toml
@@ -6,18 +6,18 @@ license = "MIT OR Apache-2.0"
6 6
7 7
8[dependencies] 8[dependencies]
9embassy-embedded-hal = { version = "0.3.0", path = "../../embassy-embedded-hal", features = ["defmt"] } 9embassy-embedded-hal = { version = "0.3.1", path = "../../embassy-embedded-hal", features = ["defmt"] }
10embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["defmt"] } 10embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["defmt"] }
11embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "executor-interrupt", "defmt"] } 11embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "executor-interrupt", "defmt"] }
12embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime"] } 12embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime"] }
13embassy-rp = { version = "0.4.0", path = "../../embassy-rp", features = ["defmt", "unstable-pac", "time-driver", "critical-section-impl", "rp235xa", "binary-info"] } 13embassy-rp = { version = "0.6.0", path = "../../embassy-rp", features = ["defmt", "unstable-pac", "time-driver", "critical-section-impl", "rp235xa", "binary-info"] }
14embassy-usb = { version = "0.4.0", path = "../../embassy-usb", features = ["defmt"] } 14embassy-usb = { version = "0.5.0", path = "../../embassy-usb", features = ["defmt"] }
15embassy-net = { version = "0.7.0", path = "../../embassy-net", features = ["defmt", "tcp", "udp", "raw", "dhcpv4", "medium-ethernet", "dns"] } 15embassy-net = { version = "0.7.0", path = "../../embassy-net", features = ["defmt", "tcp", "udp", "raw", "dhcpv4", "medium-ethernet", "dns"] }
16embassy-net-wiznet = { version = "0.2.0", path = "../../embassy-net-wiznet", features = ["defmt"] } 16embassy-net-wiznet = { version = "0.2.0", path = "../../embassy-net-wiznet", features = ["defmt"] }
17embassy-futures = { version = "0.1.0", path = "../../embassy-futures" } 17embassy-futures = { version = "0.1.0", path = "../../embassy-futures" }
18embassy-usb-logger = { version = "0.4.0", path = "../../embassy-usb-logger" } 18embassy-usb-logger = { version = "0.4.0", path = "../../embassy-usb-logger" }
19cyw43 = { version = "0.3.0", path = "../../cyw43", features = ["defmt", "firmware-logs"] } 19cyw43 = { version = "0.4.0", path = "../../cyw43", features = ["defmt", "firmware-logs"] }
20cyw43-pio = { version = "0.4.0", path = "../../cyw43-pio", features = ["defmt"] } 20cyw43-pio = { version = "0.5.1", path = "../../cyw43-pio", 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/rp235x/memory.x b/examples/rp235x/memory.x
index c803896f6..4382e2065 100644
--- a/examples/rp235x/memory.x
+++ b/examples/rp235x/memory.x
@@ -17,8 +17,8 @@ MEMORY {
17 * of access times. 17 * of access times.
18 * Example: Separate stacks for core0 and core1. 18 * Example: Separate stacks for core0 and core1.
19 */ 19 */
20 SRAM4 : ORIGIN = 0x20080000, LENGTH = 4K 20 SRAM8 : ORIGIN = 0x20080000, LENGTH = 4K
21 SRAM5 : ORIGIN = 0x20081000, LENGTH = 4K 21 SRAM9 : ORIGIN = 0x20081000, LENGTH = 4K
22} 22}
23 23
24SECTIONS { 24SECTIONS {
diff --git a/examples/rp235x/src/bin/usb_webusb.rs b/examples/rp235x/src/bin/usb_webusb.rs
index 75d28c853..a68163b61 100644
--- a/examples/rp235x/src/bin/usb_webusb.rs
+++ b/examples/rp235x/src/bin/usb_webusb.rs
@@ -125,8 +125,8 @@ impl<'d, D: Driver<'d>> WebEndpoints<'d, D> {
125 let mut iface = func.interface(); 125 let mut iface = func.interface();
126 let mut alt = iface.alt_setting(0xff, 0x00, 0x00, None); 126 let mut alt = iface.alt_setting(0xff, 0x00, 0x00, None);
127 127
128 let write_ep = alt.endpoint_bulk_in(config.max_packet_size); 128 let write_ep = alt.endpoint_bulk_in(None, config.max_packet_size);
129 let read_ep = alt.endpoint_bulk_out(config.max_packet_size); 129 let read_ep = alt.endpoint_bulk_out(None, config.max_packet_size);
130 130
131 WebEndpoints { write_ep, read_ep } 131 WebEndpoints { write_ep, read_ep }
132 } 132 }
diff --git a/examples/stm32f1/Cargo.toml b/examples/stm32f1/Cargo.toml
index 261733305..01f4fd84a 100644
--- a/examples/stm32f1/Cargo.toml
+++ b/examples/stm32f1/Cargo.toml
@@ -10,7 +10,7 @@ embassy-stm32 = { version = "0.2.0", path = "../../embassy-stm32", features = [
10embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["defmt"] } 10embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["defmt"] }
11embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt"] } 11embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt"] }
12embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] } 12embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] }
13embassy-usb = { version = "0.4.0", path = "../../embassy-usb", features = ["defmt"] } 13embassy-usb = { version = "0.5.0", path = "../../embassy-usb", features = ["defmt"] }
14embassy-futures = { version = "0.1.0", path = "../../embassy-futures" } 14embassy-futures = { version = "0.1.0", path = "../../embassy-futures" }
15 15
16defmt = "1.0.1" 16defmt = "1.0.1"
diff --git a/examples/stm32f3/Cargo.toml b/examples/stm32f3/Cargo.toml
index f675b0be1..ab7d6b255 100644
--- a/examples/stm32f3/Cargo.toml
+++ b/examples/stm32f3/Cargo.toml
@@ -10,7 +10,7 @@ embassy-stm32 = { version = "0.2.0", path = "../../embassy-stm32", features = [
10embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["defmt"] } 10embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["defmt"] }
11embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "executor-interrupt", "defmt"] } 11embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "executor-interrupt", "defmt"] }
12embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] } 12embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] }
13embassy-usb = { version = "0.4.0", path = "../../embassy-usb", features = ["defmt"] } 13embassy-usb = { version = "0.5.0", path = "../../embassy-usb", features = ["defmt"] }
14embassy-futures = { version = "0.1.0", path = "../../embassy-futures" } 14embassy-futures = { version = "0.1.0", path = "../../embassy-futures" }
15 15
16defmt = "1.0.1" 16defmt = "1.0.1"
diff --git a/examples/stm32f334/Cargo.toml b/examples/stm32f334/Cargo.toml
index b47a81e1b..6595804e1 100644
--- a/examples/stm32f334/Cargo.toml
+++ b/examples/stm32f334/Cargo.toml
@@ -9,7 +9,7 @@ embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["de
9embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "executor-interrupt", "defmt"] } 9embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "executor-interrupt", "defmt"] }
10embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] } 10embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] }
11embassy-stm32 = { version = "0.2.0", path = "../../embassy-stm32", features = [ "defmt", "stm32f334r8", "unstable-pac", "memory-x", "time-driver-any", "exti"] } 11embassy-stm32 = { version = "0.2.0", path = "../../embassy-stm32", features = [ "defmt", "stm32f334r8", "unstable-pac", "memory-x", "time-driver-any", "exti"] }
12embassy-usb = { version = "0.4.0", path = "../../embassy-usb", features = ["defmt"] } 12embassy-usb = { version = "0.5.0", path = "../../embassy-usb", features = ["defmt"] }
13embassy-futures = { version = "0.1.0", path = "../../embassy-futures" } 13embassy-futures = { version = "0.1.0", path = "../../embassy-futures" }
14 14
15defmt = "1.0.1" 15defmt = "1.0.1"
diff --git a/examples/stm32f4/Cargo.toml b/examples/stm32f4/Cargo.toml
index edab9ea00..80c43f2ab 100644
--- a/examples/stm32f4/Cargo.toml
+++ b/examples/stm32f4/Cargo.toml
@@ -10,7 +10,7 @@ embassy-stm32 = { version = "0.2.0", path = "../../embassy-stm32", features = ["
10embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["defmt"] } 10embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["defmt"] }
11embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "executor-interrupt", "defmt"] } 11embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "executor-interrupt", "defmt"] }
12embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] } 12embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] }
13embassy-usb = { version = "0.4.0", path = "../../embassy-usb", features = ["defmt" ] } 13embassy-usb = { version = "0.5.0", path = "../../embassy-usb", features = ["defmt" ] }
14embassy-net = { version = "0.7.0", path = "../../embassy-net", features = ["defmt", "tcp", "dhcpv4", "medium-ethernet", ] } 14embassy-net = { version = "0.7.0", path = "../../embassy-net", features = ["defmt", "tcp", "dhcpv4", "medium-ethernet", ] }
15embassy-net-wiznet = { version = "0.2.0", path = "../../embassy-net-wiznet", features = ["defmt"] } 15embassy-net-wiznet = { version = "0.2.0", path = "../../embassy-net-wiznet", features = ["defmt"] }
16embassy-futures = { version = "0.1.0", path = "../../embassy-futures" } 16embassy-futures = { version = "0.1.0", path = "../../embassy-futures" }
diff --git a/examples/stm32f7/Cargo.toml b/examples/stm32f7/Cargo.toml
index c5801ea90..5995211d2 100644
--- a/examples/stm32f7/Cargo.toml
+++ b/examples/stm32f7/Cargo.toml
@@ -12,7 +12,7 @@ embassy-executor = { version = "0.7.0", path = "../../embassy-executor", feature
12embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] } 12embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] }
13embassy-net = { version = "0.7.0", path = "../../embassy-net", features = ["defmt", "tcp", "dhcpv4", "medium-ethernet"] } 13embassy-net = { version = "0.7.0", path = "../../embassy-net", features = ["defmt", "tcp", "dhcpv4", "medium-ethernet"] }
14embedded-io-async = { version = "0.6.1" } 14embedded-io-async = { version = "0.6.1" }
15embassy-usb = { version = "0.4.0", path = "../../embassy-usb", features = ["defmt"] } 15embassy-usb = { version = "0.5.0", path = "../../embassy-usb", features = ["defmt"] }
16embassy-futures = { version = "0.1.0", path = "../../embassy-futures" } 16embassy-futures = { version = "0.1.0", path = "../../embassy-futures" }
17 17
18defmt = "1.0.1" 18defmt = "1.0.1"
diff --git a/examples/stm32g0/Cargo.toml b/examples/stm32g0/Cargo.toml
index bf1e7250e..1c290fcfa 100644
--- a/examples/stm32g0/Cargo.toml
+++ b/examples/stm32g0/Cargo.toml
@@ -10,7 +10,7 @@ embassy-stm32 = { version = "0.2.0", path = "../../embassy-stm32", features = [
10embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["defmt"] } 10embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["defmt"] }
11embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt"] } 11embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt"] }
12embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] } 12embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] }
13embassy-usb = { version = "0.4.0", path = "../../embassy-usb", default-features = false, features = ["defmt"] } 13embassy-usb = { version = "0.5.0", path = "../../embassy-usb", default-features = false, features = ["defmt"] }
14embassy-futures = { version = "0.1.0", path = "../../embassy-futures" } 14embassy-futures = { version = "0.1.0", path = "../../embassy-futures" }
15 15
16defmt = "1.0.1" 16defmt = "1.0.1"
diff --git a/examples/stm32g4/Cargo.toml b/examples/stm32g4/Cargo.toml
index 3d2c2aa7d..a503420e5 100644
--- a/examples/stm32g4/Cargo.toml
+++ b/examples/stm32g4/Cargo.toml
@@ -10,7 +10,7 @@ embassy-stm32 = { version = "0.2.0", path = "../../embassy-stm32", features = [
10embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["defmt"] } 10embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["defmt"] }
11embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt"] } 11embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt"] }
12embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] } 12embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] }
13embassy-usb = { version = "0.4.0", path = "../../embassy-usb", features = ["defmt"] } 13embassy-usb = { version = "0.5.0", path = "../../embassy-usb", features = ["defmt"] }
14embassy-futures = { version = "0.1.0", path = "../../embassy-futures" } 14embassy-futures = { version = "0.1.0", path = "../../embassy-futures" }
15usbd-hid = "0.8.1" 15usbd-hid = "0.8.1"
16 16
diff --git a/examples/stm32h5/Cargo.toml b/examples/stm32h5/Cargo.toml
index f3fda7ff3..0ac9016d4 100644
--- a/examples/stm32h5/Cargo.toml
+++ b/examples/stm32h5/Cargo.toml
@@ -11,7 +11,7 @@ embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["de
11embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt"] } 11embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt"] }
12embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] } 12embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] }
13embassy-net = { version = "0.7.0", path = "../../embassy-net", features = ["defmt", "tcp", "dhcpv4", "medium-ethernet", "proto-ipv6"] } 13embassy-net = { version = "0.7.0", path = "../../embassy-net", features = ["defmt", "tcp", "dhcpv4", "medium-ethernet", "proto-ipv6"] }
14embassy-usb = { version = "0.4.0", path = "../../embassy-usb", features = ["defmt"] } 14embassy-usb = { version = "0.5.0", path = "../../embassy-usb", features = ["defmt"] }
15embassy-futures = { version = "0.1.0", path = "../../embassy-futures" } 15embassy-futures = { version = "0.1.0", path = "../../embassy-futures" }
16 16
17defmt = "1.0.1" 17defmt = "1.0.1"
diff --git a/examples/stm32h7/Cargo.toml b/examples/stm32h7/Cargo.toml
index 27c59d980..9053289ea 100644
--- a/examples/stm32h7/Cargo.toml
+++ b/examples/stm32h7/Cargo.toml
@@ -8,11 +8,11 @@ license = "MIT OR Apache-2.0"
8# Change stm32h743bi to your chip name, if necessary. 8# Change stm32h743bi to your chip name, if necessary.
9embassy-stm32 = { version = "0.2.0", path = "../../embassy-stm32", features = ["defmt", "stm32h743bi", "time-driver-tim2", "exti", "memory-x", "unstable-pac", "chrono"] } 9embassy-stm32 = { version = "0.2.0", path = "../../embassy-stm32", features = ["defmt", "stm32h743bi", "time-driver-tim2", "exti", "memory-x", "unstable-pac", "chrono"] }
10embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["defmt"] } 10embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["defmt"] }
11embassy-embedded-hal = { version = "0.3.0", path = "../../embassy-embedded-hal" } 11embassy-embedded-hal = { version = "0.3.1", path = "../../embassy-embedded-hal" }
12embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "executor-interrupt", "defmt"] } 12embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "executor-interrupt", "defmt"] }
13embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] } 13embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] }
14embassy-net = { version = "0.7.0", path = "../../embassy-net", features = ["defmt", "tcp", "dhcpv4", "medium-ethernet", "proto-ipv6", "dns"] } 14embassy-net = { version = "0.7.0", path = "../../embassy-net", features = ["defmt", "tcp", "dhcpv4", "medium-ethernet", "proto-ipv6", "dns"] }
15embassy-usb = { version = "0.4.0", path = "../../embassy-usb", features = ["defmt"] } 15embassy-usb = { version = "0.5.0", path = "../../embassy-usb", features = ["defmt"] }
16embassy-futures = { version = "0.1.0", path = "../../embassy-futures" } 16embassy-futures = { version = "0.1.0", path = "../../embassy-futures" }
17 17
18defmt = "1.0.1" 18defmt = "1.0.1"
diff --git a/examples/stm32h735/Cargo.toml b/examples/stm32h735/Cargo.toml
index 8d23c346a..e4938e15b 100644
--- a/examples/stm32h735/Cargo.toml
+++ b/examples/stm32h735/Cargo.toml
@@ -7,7 +7,7 @@ license = "MIT OR Apache-2.0"
7[dependencies] 7[dependencies]
8embassy-stm32 = { version = "0.2.0", path = "../../embassy-stm32", features = ["defmt", "stm32h735ig", "time-driver-tim2", "exti", "memory-x", "unstable-pac", "chrono"] } 8embassy-stm32 = { version = "0.2.0", path = "../../embassy-stm32", features = ["defmt", "stm32h735ig", "time-driver-tim2", "exti", "memory-x", "unstable-pac", "chrono"] }
9embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["defmt"] } 9embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["defmt"] }
10embassy-embedded-hal = { version = "0.3.0", path = "../../embassy-embedded-hal" } 10embassy-embedded-hal = { version = "0.3.1", path = "../../embassy-embedded-hal" }
11embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "executor-interrupt", "defmt"] } 11embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "executor-interrupt", "defmt"] }
12embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] } 12embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] }
13embassy-futures = { version = "0.1.0", path = "../../embassy-futures" } 13embassy-futures = { version = "0.1.0", path = "../../embassy-futures" }
diff --git a/examples/stm32h742/Cargo.toml b/examples/stm32h742/Cargo.toml
index 31eff4379..efa71e144 100644
--- a/examples/stm32h742/Cargo.toml
+++ b/examples/stm32h742/Cargo.toml
@@ -34,7 +34,7 @@ embassy-net = { version = "0.7.0", path = "../../embassy-net", features = [
34 "medium-ethernet", 34 "medium-ethernet",
35] } 35] }
36embedded-io-async = { version = "0.6.1" } 36embedded-io-async = { version = "0.6.1" }
37embassy-usb = { version = "0.4.0", path = "../../embassy-usb", features = [ 37embassy-usb = { version = "0.5.0", path = "../../embassy-usb", features = [
38 "defmt", 38 "defmt",
39] } 39] }
40embassy-futures = { version = "0.1.0", path = "../../embassy-futures" } 40embassy-futures = { version = "0.1.0", path = "../../embassy-futures" }
diff --git a/examples/stm32h755cm4/Cargo.toml b/examples/stm32h755cm4/Cargo.toml
index 71bd50d60..eaaeb1ac0 100644
--- a/examples/stm32h755cm4/Cargo.toml
+++ b/examples/stm32h755cm4/Cargo.toml
@@ -8,11 +8,11 @@ license = "MIT OR Apache-2.0"
8# Change stm32h755zi-cm4 to your chip name, if necessary. 8# Change stm32h755zi-cm4 to your chip name, if necessary.
9embassy-stm32 = { version = "0.2.0", path = "../../embassy-stm32", features = ["defmt", "stm32h755zi-cm4", "time-driver-tim2", "exti", "memory-x", "unstable-pac", "chrono"] } 9embassy-stm32 = { version = "0.2.0", path = "../../embassy-stm32", features = ["defmt", "stm32h755zi-cm4", "time-driver-tim2", "exti", "memory-x", "unstable-pac", "chrono"] }
10embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["defmt"] } 10embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["defmt"] }
11embassy-embedded-hal = { version = "0.3.0", path = "../../embassy-embedded-hal" } 11embassy-embedded-hal = { version = "0.3.1", path = "../../embassy-embedded-hal" }
12embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "executor-interrupt", "defmt"] } 12embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "executor-interrupt", "defmt"] }
13embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] } 13embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] }
14embassy-net = { version = "0.7.0", path = "../../embassy-net", features = ["defmt", "tcp", "dhcpv4", "medium-ethernet", "proto-ipv6", "dns"] } 14embassy-net = { version = "0.7.0", path = "../../embassy-net", features = ["defmt", "tcp", "dhcpv4", "medium-ethernet", "proto-ipv6", "dns"] }
15embassy-usb = { version = "0.4.0", path = "../../embassy-usb", features = ["defmt"] } 15embassy-usb = { version = "0.5.0", path = "../../embassy-usb", features = ["defmt"] }
16embassy-futures = { version = "0.1.0", path = "../../embassy-futures" } 16embassy-futures = { version = "0.1.0", path = "../../embassy-futures" }
17 17
18defmt = "1.0.1" 18defmt = "1.0.1"
diff --git a/examples/stm32h755cm7/Cargo.toml b/examples/stm32h755cm7/Cargo.toml
index 8e960932a..e7fc05948 100644
--- a/examples/stm32h755cm7/Cargo.toml
+++ b/examples/stm32h755cm7/Cargo.toml
@@ -8,11 +8,11 @@ license = "MIT OR Apache-2.0"
8# Change stm32h743bi to your chip name, if necessary. 8# Change stm32h743bi to your chip name, if necessary.
9embassy-stm32 = { version = "0.2.0", path = "../../embassy-stm32", features = ["defmt", "stm32h755zi-cm7", "time-driver-tim3", "exti", "memory-x", "unstable-pac", "chrono"] } 9embassy-stm32 = { version = "0.2.0", path = "../../embassy-stm32", features = ["defmt", "stm32h755zi-cm7", "time-driver-tim3", "exti", "memory-x", "unstable-pac", "chrono"] }
10embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["defmt"] } 10embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["defmt"] }
11embassy-embedded-hal = { version = "0.3.0", path = "../../embassy-embedded-hal" } 11embassy-embedded-hal = { version = "0.3.1", path = "../../embassy-embedded-hal" }
12embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "executor-interrupt", "defmt"] } 12embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "executor-interrupt", "defmt"] }
13embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] } 13embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] }
14embassy-net = { version = "0.7.0", path = "../../embassy-net", features = ["defmt", "tcp", "dhcpv4", "medium-ethernet", "proto-ipv6", "dns"] } 14embassy-net = { version = "0.7.0", path = "../../embassy-net", features = ["defmt", "tcp", "dhcpv4", "medium-ethernet", "proto-ipv6", "dns"] }
15embassy-usb = { version = "0.4.0", path = "../../embassy-usb", features = ["defmt"] } 15embassy-usb = { version = "0.5.0", path = "../../embassy-usb", features = ["defmt"] }
16embassy-futures = { version = "0.1.0", path = "../../embassy-futures" } 16embassy-futures = { version = "0.1.0", path = "../../embassy-futures" }
17 17
18defmt = "1.0.1" 18defmt = "1.0.1"
diff --git a/examples/stm32h7b0/Cargo.toml b/examples/stm32h7b0/Cargo.toml
index 72f86e0cf..bfa7f9202 100644
--- a/examples/stm32h7b0/Cargo.toml
+++ b/examples/stm32h7b0/Cargo.toml
@@ -7,11 +7,11 @@ license = "MIT OR Apache-2.0"
7[dependencies] 7[dependencies]
8embassy-stm32 = { version = "0.2.0", path = "../../embassy-stm32", features = ["defmt", "stm32h7b0vb", "time-driver-tim2", "exti", "memory-x", "unstable-pac", "chrono"] } 8embassy-stm32 = { version = "0.2.0", path = "../../embassy-stm32", features = ["defmt", "stm32h7b0vb", "time-driver-tim2", "exti", "memory-x", "unstable-pac", "chrono"] }
9embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["defmt"] } 9embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["defmt"] }
10embassy-embedded-hal = { version = "0.3.0", path = "../../embassy-embedded-hal" } 10embassy-embedded-hal = { version = "0.3.1", path = "../../embassy-embedded-hal" }
11embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "executor-interrupt", "defmt"] } 11embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "executor-interrupt", "defmt"] }
12embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] } 12embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] }
13embassy-net = { version = "0.7.0", path = "../../embassy-net", features = ["defmt", "tcp", "dhcpv4", "medium-ethernet", "proto-ipv6", "dns"] } 13embassy-net = { version = "0.7.0", path = "../../embassy-net", features = ["defmt", "tcp", "dhcpv4", "medium-ethernet", "proto-ipv6", "dns"] }
14embassy-usb = { version = "0.4.0", path = "../../embassy-usb", features = ["defmt"] } 14embassy-usb = { version = "0.5.0", path = "../../embassy-usb", features = ["defmt"] }
15embassy-futures = { version = "0.1.0", path = "../../embassy-futures" } 15embassy-futures = { version = "0.1.0", path = "../../embassy-futures" }
16 16
17defmt = "1.0.1" 17defmt = "1.0.1"
diff --git a/examples/stm32h7rs/Cargo.toml b/examples/stm32h7rs/Cargo.toml
index 5f1ce8dfc..9794c6dbd 100644
--- a/examples/stm32h7rs/Cargo.toml
+++ b/examples/stm32h7rs/Cargo.toml
@@ -11,7 +11,7 @@ embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["de
11embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "executor-interrupt", "defmt"] } 11embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "executor-interrupt", "defmt"] }
12embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] } 12embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] }
13embassy-net = { version = "0.7.0", path = "../../embassy-net", features = ["defmt", "udp", "medium-ethernet", "medium-ip", "proto-ipv4"] } 13embassy-net = { version = "0.7.0", path = "../../embassy-net", features = ["defmt", "udp", "medium-ethernet", "medium-ip", "proto-ipv4"] }
14embassy-usb = { version = "0.4.0", path = "../../embassy-usb", features = ["defmt"] } 14embassy-usb = { version = "0.5.0", path = "../../embassy-usb", features = ["defmt"] }
15embassy-futures = { version = "0.1.0", path = "../../embassy-futures" } 15embassy-futures = { version = "0.1.0", path = "../../embassy-futures" }
16 16
17defmt = "1.0.1" 17defmt = "1.0.1"
diff --git a/examples/stm32l1/Cargo.toml b/examples/stm32l1/Cargo.toml
index a0a7916a7..5d5d401f6 100644
--- a/examples/stm32l1/Cargo.toml
+++ b/examples/stm32l1/Cargo.toml
@@ -9,7 +9,7 @@ embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["de
9embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt"] } 9embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt"] }
10embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] } 10embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] }
11embassy-stm32 = { version = "0.2.0", path = "../../embassy-stm32", features = [ "defmt", "stm32l151cb-a", "time-driver-any", "memory-x"] } 11embassy-stm32 = { version = "0.2.0", path = "../../embassy-stm32", features = [ "defmt", "stm32l151cb-a", "time-driver-any", "memory-x"] }
12embassy-usb = { version = "0.4.0", path = "../../embassy-usb", features = ["defmt"] } 12embassy-usb = { version = "0.5.0", path = "../../embassy-usb", features = ["defmt"] }
13embassy-futures = { version = "0.1.0", path = "../../embassy-futures" } 13embassy-futures = { version = "0.1.0", path = "../../embassy-futures" }
14 14
15defmt = "1.0.1" 15defmt = "1.0.1"
diff --git a/examples/stm32l4/Cargo.toml b/examples/stm32l4/Cargo.toml
index 7da09e5b0..a6b4efcf8 100644
--- a/examples/stm32l4/Cargo.toml
+++ b/examples/stm32l4/Cargo.toml
@@ -10,8 +10,8 @@ embassy-stm32 = { version = "0.2.0", path = "../../embassy-stm32", features = [
10embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["defmt"] } 10embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["defmt"] }
11embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt"] } 11embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt"] }
12embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768", ] } 12embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768", ] }
13embassy-embedded-hal = { version = "0.3.0", path = "../../embassy-embedded-hal" } 13embassy-embedded-hal = { version = "0.3.1", path = "../../embassy-embedded-hal" }
14embassy-usb = { version = "0.4.0", path = "../../embassy-usb", features = ["defmt"] } 14embassy-usb = { version = "0.5.0", path = "../../embassy-usb", features = ["defmt"] }
15embassy-net-adin1110 = { version = "0.3.0", path = "../../embassy-net-adin1110" } 15embassy-net-adin1110 = { version = "0.3.0", path = "../../embassy-net-adin1110" }
16embassy-net = { version = "0.7.0", path = "../../embassy-net", features = ["defmt", "udp", "tcp", "dhcpv4", "medium-ethernet"] } 16embassy-net = { version = "0.7.0", path = "../../embassy-net", features = ["defmt", "udp", "tcp", "dhcpv4", "medium-ethernet"] }
17embassy-futures = { version = "0.1.0", path = "../../embassy-futures" } 17embassy-futures = { version = "0.1.0", path = "../../embassy-futures" }
diff --git a/examples/stm32l5/Cargo.toml b/examples/stm32l5/Cargo.toml
index 3ea3bcd5c..1379d963c 100644
--- a/examples/stm32l5/Cargo.toml
+++ b/examples/stm32l5/Cargo.toml
@@ -10,7 +10,7 @@ embassy-stm32 = { version = "0.2.0", path = "../../embassy-stm32", features = [
10embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["defmt"] } 10embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["defmt"] }
11embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt"] } 11embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt"] }
12embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] } 12embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] }
13embassy-usb = { version = "0.4.0", path = "../../embassy-usb", features = ["defmt"] } 13embassy-usb = { version = "0.5.0", path = "../../embassy-usb", features = ["defmt"] }
14embassy-net = { version = "0.7.0", path = "../../embassy-net", features = ["defmt", "tcp", "dhcpv4", "medium-ethernet"] } 14embassy-net = { version = "0.7.0", path = "../../embassy-net", features = ["defmt", "tcp", "dhcpv4", "medium-ethernet"] }
15embassy-futures = { version = "0.1.0", path = "../../embassy-futures" } 15embassy-futures = { version = "0.1.0", path = "../../embassy-futures" }
16usbd-hid = "0.8.1" 16usbd-hid = "0.8.1"
diff --git a/examples/stm32u0/Cargo.toml b/examples/stm32u0/Cargo.toml
index 3aa45dc79..612d12ac2 100644
--- a/examples/stm32u0/Cargo.toml
+++ b/examples/stm32u0/Cargo.toml
@@ -10,7 +10,7 @@ embassy-stm32 = { version = "0.2.0", path = "../../embassy-stm32", features = [
10embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["defmt"] } 10embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["defmt"] }
11embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt"] } 11embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt"] }
12embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] } 12embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] }
13embassy-usb = { version = "0.4.0", path = "../../embassy-usb", default-features = false, features = ["defmt"] } 13embassy-usb = { version = "0.5.0", path = "../../embassy-usb", default-features = false, features = ["defmt"] }
14embassy-futures = { version = "0.1.0", path = "../../embassy-futures" } 14embassy-futures = { version = "0.1.0", path = "../../embassy-futures" }
15 15
16defmt = "1.0.1" 16defmt = "1.0.1"
diff --git a/examples/stm32u5/Cargo.toml b/examples/stm32u5/Cargo.toml
index 777d3ed4c..f92e85852 100644
--- a/examples/stm32u5/Cargo.toml
+++ b/examples/stm32u5/Cargo.toml
@@ -10,7 +10,7 @@ embassy-stm32 = { version = "0.2.0", path = "../../embassy-stm32", features = ["
10embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["defmt"] } 10embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["defmt"] }
11embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt"] } 11embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt"] }
12embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] } 12embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] }
13embassy-usb = { version = "0.4.0", path = "../../embassy-usb", features = ["defmt"] } 13embassy-usb = { version = "0.5.0", path = "../../embassy-usb", features = ["defmt"] }
14embassy-futures = { version = "0.1.0", path = "../../embassy-futures" } 14embassy-futures = { version = "0.1.0", path = "../../embassy-futures" }
15 15
16defmt = "1.0.1" 16defmt = "1.0.1"
diff --git a/examples/stm32wl/Cargo.toml b/examples/stm32wl/Cargo.toml
index 5ecd77443..1c5d9c07a 100644
--- a/examples/stm32wl/Cargo.toml
+++ b/examples/stm32wl/Cargo.toml
@@ -10,7 +10,7 @@ embassy-stm32 = { version = "0.2.0", path = "../../embassy-stm32", features = ["
10embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["defmt"] } 10embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["defmt"] }
11embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt"] } 11embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt"] }
12embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] } 12embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] }
13embassy-embedded-hal = { version = "0.3.0", path = "../../embassy-embedded-hal" } 13embassy-embedded-hal = { version = "0.3.1", path = "../../embassy-embedded-hal" }
14 14
15defmt = "1.0.1" 15defmt = "1.0.1"
16defmt-rtt = "1.0.0" 16defmt-rtt = "1.0.0"
diff --git a/tests/mspm0/Cargo.toml b/tests/mspm0/Cargo.toml
index 5d34ece7e..2d5b8cd52 100644
--- a/tests/mspm0/Cargo.toml
+++ b/tests/mspm0/Cargo.toml
@@ -15,7 +15,7 @@ embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = [ "d
15embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = [ "arch-cortex-m", "executor-thread", "defmt" ] } 15embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = [ "arch-cortex-m", "executor-thread", "defmt" ] }
16embassy-time = { version = "0.4.0", path = "../../embassy-time", features = [ "defmt" ] } 16embassy-time = { version = "0.4.0", path = "../../embassy-time", features = [ "defmt" ] }
17embassy-mspm0 = { version = "0.1.0", path = "../../embassy-mspm0", features = [ "rt", "defmt", "unstable-pac", "time-driver-any" ] } 17embassy-mspm0 = { version = "0.1.0", path = "../../embassy-mspm0", features = [ "rt", "defmt", "unstable-pac", "time-driver-any" ] }
18embassy-embedded-hal = { version = "0.3.0", path = "../../embassy-embedded-hal/"} 18embassy-embedded-hal = { version = "0.3.1", path = "../../embassy-embedded-hal/"}
19 19
20defmt = "1.0.1" 20defmt = "1.0.1"
21defmt-rtt = "1.0.0" 21defmt-rtt = "1.0.0"
diff --git a/tests/nrf/Cargo.toml b/tests/nrf/Cargo.toml
index b46498a7a..b167c589e 100644
--- a/tests/nrf/Cargo.toml
+++ b/tests/nrf/Cargo.toml
@@ -11,7 +11,7 @@ embassy-futures = { version = "0.1.0", path = "../../embassy-futures" }
11embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["defmt", ] } 11embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["defmt", ] }
12embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt"] } 12embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt"] }
13embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime"] } 13embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime"] }
14embassy-nrf = { version = "0.4.0", path = "../../embassy-nrf", features = ["defmt", "time-driver-rtc1", "gpiote", "unstable-pac"] } 14embassy-nrf = { version = "0.5.0", path = "../../embassy-nrf", features = ["defmt", "time-driver-rtc1", "gpiote", "unstable-pac"] }
15embedded-io-async = { version = "0.6.1", features = ["defmt-03"] } 15embedded-io-async = { version = "0.6.1", features = ["defmt-03"] }
16embassy-net = { version = "0.7.0", path = "../../embassy-net", features = ["defmt", "tcp", "dhcpv4", "medium-ethernet", ] } 16embassy-net = { version = "0.7.0", path = "../../embassy-net", features = ["defmt", "tcp", "dhcpv4", "medium-ethernet", ] }
17embassy-net-esp-hosted = { version = "0.2.0", path = "../../embassy-net-esp-hosted", features = ["defmt"] } 17embassy-net-esp-hosted = { version = "0.2.0", path = "../../embassy-net-esp-hosted", features = ["defmt"] }
diff --git a/tests/rp/Cargo.toml b/tests/rp/Cargo.toml
index 2be37f525..298955fe3 100644
--- a/tests/rp/Cargo.toml
+++ b/tests/rp/Cargo.toml
@@ -15,11 +15,11 @@ teleprobe-meta = "1.1"
15embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["defmt"] } 15embassy-sync = { version = "0.7.0", path = "../../embassy-sync", features = ["defmt"] }
16embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt"] } 16embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt"] }
17embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", ] } 17embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", ] }
18embassy-rp = { version = "0.4.0", path = "../../embassy-rp", features = [ "defmt", "unstable-pac", "time-driver", "critical-section-impl", "intrinsics", "rom-v2-intrinsics", "run-from-ram"] } 18embassy-rp = { version = "0.6.0", path = "../../embassy-rp", features = [ "defmt", "unstable-pac", "time-driver", "critical-section-impl", "intrinsics", "rom-v2-intrinsics", "run-from-ram"] }
19embassy-futures = { version = "0.1.0", path = "../../embassy-futures" } 19embassy-futures = { version = "0.1.0", path = "../../embassy-futures" }
20embassy-net = { version = "0.7.0", path = "../../embassy-net", features = ["defmt", "tcp", "udp", "dhcpv4", "medium-ethernet"] } 20embassy-net = { version = "0.7.0", path = "../../embassy-net", features = ["defmt", "tcp", "udp", "dhcpv4", "medium-ethernet"] }
21embassy-net-wiznet = { version = "0.2.0", path = "../../embassy-net-wiznet", features = ["defmt"] } 21embassy-net-wiznet = { version = "0.2.0", path = "../../embassy-net-wiznet", features = ["defmt"] }
22embassy-embedded-hal = { version = "0.3.0", path = "../../embassy-embedded-hal/"} 22embassy-embedded-hal = { version = "0.3.1", path = "../../embassy-embedded-hal/"}
23cyw43 = { path = "../../cyw43", features = ["defmt", "firmware-logs"] } 23cyw43 = { path = "../../cyw43", features = ["defmt", "firmware-logs"] }
24cyw43-pio = { path = "../../cyw43-pio", features = ["defmt"] } 24cyw43-pio = { path = "../../cyw43-pio", features = ["defmt"] }
25perf-client = { path = "../perf-client" } 25perf-client = { path = "../perf-client" }