From a62334fae44a7e86da971d549e1f08d65f44e060 Mon Sep 17 00:00:00 2001 From: Ryan Butler Date: Sun, 5 Nov 2023 20:12:55 -0500 Subject: [PATCH 1/4] upgrade rust toolchain --- firmware/rust-toolchain.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/firmware/rust-toolchain.toml b/firmware/rust-toolchain.toml index 7d60a4cd..162e07d6 100644 --- a/firmware/rust-toolchain.toml +++ b/firmware/rust-toolchain.toml @@ -1,5 +1,5 @@ [toolchain] -channel = "nightly-2022-12-18" +channel = "nightly-2023-08-26" # channel = "esp" # for when compiling to xtensa targets targets = [ "riscv32imc-unknown-none-elf", From 0d5bfba7b7a0abd6682446dd4ae0f7218d566780 Mon Sep 17 00:00:00 2001 From: Ryan Butler Date: Sun, 5 Nov 2023 22:50:37 -0500 Subject: [PATCH 2/4] Fix CAS in esp-wifi --- firmware/Cargo.lock | 736 +++++++++++++++++++++++++++++++++----------- firmware/Cargo.toml | 24 +- 2 files changed, 572 insertions(+), 188 deletions(-) diff --git a/firmware/Cargo.lock b/firmware/Cargo.lock index 7cde0829..e08905c0 100644 --- a/firmware/Cargo.lock +++ b/firmware/Cargo.lock @@ -48,9 +48,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.70" +version = "1.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4" +checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" [[package]] name = "approx" @@ -112,6 +112,25 @@ dependencies = [ "stable_deref_trait", ] +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" +dependencies = [ + "portable-atomic", +] + +[[package]] +name = "atomic_enum" +version = "0.2.0" +source = "git+https://github.com/thebutlah/atomic_enum?rev=3c90118#3c901189fa4b7abeb500483468f9640e811fd161" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "autocfg" version = "1.1.0" @@ -134,8 +153,8 @@ dependencies = [ "cc", "cfg-if", "libc", - "miniz_oxide", - "object", + "miniz_oxide 0.6.2", + "object 0.30.3", "rustc-demangle", ] @@ -154,6 +173,15 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8fe8f5a8a398345e52358e18ff07cc17a568fbca5c6f73873d3a62056309603" +[[package]] +name = "basic-toml" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f2139706359229bfa8f19142ac1155b4b80beafb7a60471ac5dd109d4a19778" +dependencies = [ + "serde", +] + [[package]] name = "bbqueue" version = "0.5.1" @@ -175,12 +203,24 @@ version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "46afbd2983a5d5a7bd740ccb198caf5b82f45c40c09c0eed36052d91cb92e719" +[[package]] +name = "bitfield" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d7e60934ceec538daadb9d8432424ed043a904d8e0243f3c6446bce549a46ac" + [[package]] name = "bitflags" version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +[[package]] +name = "bitflags" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" + [[package]] name = "bitvec" version = "1.1.0" @@ -206,7 +246,7 @@ name = "bleps-macros" version = "0.1.0" source = "git+https://github.com/bjoernQ/bleps?rev=33fde67#33fde67257bfbc6c0aebf7649fd302c82ed94c64" dependencies = [ - "litrs", + "litrs 0.2.3", "proc-macro2", "quote", "syn 1.0.109", @@ -287,8 +327,8 @@ dependencies = [ "anyhow", "enum-as-inner", "regex", - "strum", - "strum_macros", + "strum 0.24.1", + "strum_macros 0.24.3", ] [[package]] @@ -298,7 +338,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ec610d8f49840a5b376c69663b6369e71f4b34484b9b2eb29fb918d92516cb9" dependencies = [ "bare-metal 0.2.5", - "bitfield", + "bitfield 0.13.2", "critical-section", "embedded-hal 0.2.7", "volatile-register", @@ -324,11 +364,20 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "crc32fast" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +dependencies = [ + "cfg-if", +] + [[package]] name = "critical-section" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6548a0ad5d2549e111e1f6a11a6c2e2d00ce6a3dafe22948d67c2b443f775e52" +checksum = "7059fff8937831a9ae6f0fe4d658ffabf58f2ca96aa9dec1c889f936f705f216" [[package]] name = "crunchy" @@ -356,6 +405,16 @@ dependencies = [ "darling_macro 0.14.4", ] +[[package]] +name = "darling" +version = "0.20.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e" +dependencies = [ + "darling_core 0.20.3", + "darling_macro 0.20.3", +] + [[package]] name = "darling_core" version = "0.13.4" @@ -384,6 +443,20 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "darling_core" +version = "0.20.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.38", +] + [[package]] name = "darling_macro" version = "0.13.4" @@ -406,6 +479,17 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "darling_macro" +version = "0.20.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" +dependencies = [ + "darling_core 0.20.3", + "quote", + "syn 2.0.38", +] + [[package]] name = "dcmimu" version = "0.2.2" @@ -421,7 +505,7 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d03193cde597714ff8a5005ccd61cd1b7aff5616eaca7c67905982cb6f347ff4" dependencies = [ - "bitflags", + "bitflags 1.3.2", "defmt-macros", ] @@ -514,47 +598,32 @@ version = "0.15.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" -[[package]] -name = "embassy-cortex-m" -version = "0.1.0" -source = "git+https://github.com/embassy-rs/embassy?rev=26474ce6eb759e5add1c137f3417845e0797df3a#26474ce6eb759e5add1c137f3417845e0797df3a" -dependencies = [ - "atomic-polyfill 1.0.2", - "cfg-if", - "cortex-m", - "critical-section", - "embassy-executor", - "embassy-hal-common", - "embassy-macros", - "embassy-sync", -] - [[package]] name = "embassy-embedded-hal" version = "0.1.0" -source = "git+https://github.com/embassy-rs/embassy?rev=26474ce6eb759e5add1c137f3417845e0797df3a#26474ce6eb759e5add1c137f3417845e0797df3a" +source = "git+https://github.com/embassy-rs/embassy?rev=e6462f1e88bc37b69af3b47cc22c492ef41d697c#e6462f1e88bc37b69af3b47cc22c492ef41d697c" dependencies = [ - "embassy-sync", + "embassy-futures 0.1.0 (git+https://github.com/embassy-rs/embassy?rev=e6462f1e88bc37b69af3b47cc22c492ef41d697c)", + "embassy-sync 0.4.0", + "embassy-time", "embedded-hal 0.2.7", - "embedded-hal 1.0.0-alpha.9", + "embedded-hal 1.0.0-rc.1", "embedded-hal-async", "embedded-storage", - "embedded-storage-async", + "embedded-storage-async 0.4.0", "nb 1.1.0", ] [[package]] name = "embassy-executor" -version = "0.1.1" -source = "git+https://github.com/embassy-rs/embassy?rev=26474ce6eb759e5add1c137f3417845e0797df3a#26474ce6eb759e5add1c137f3417845e0797df3a" +version = "0.3.1" +source = "git+https://github.com/embassy-rs/embassy?rev=e6462f1e88bc37b69af3b47cc22c492ef41d697c#e6462f1e88bc37b69af3b47cc22c492ef41d697c" dependencies = [ "atomic-polyfill 1.0.2", - "cfg-if", "critical-section", "embassy-macros", "embassy-time", "futures-util", - "static_cell", ] [[package]] @@ -566,39 +635,40 @@ checksum = "47e5367165d347c039360f784812f493b001583ab6a3dd8622f4ce9c30374ec3" [[package]] name = "embassy-futures" version = "0.1.0" -source = "git+https://github.com/embassy-rs/embassy?rev=26474ce6eb759e5add1c137f3417845e0797df3a#26474ce6eb759e5add1c137f3417845e0797df3a" +source = "git+https://github.com/embassy-rs/embassy?rev=e6462f1e88bc37b69af3b47cc22c492ef41d697c#e6462f1e88bc37b69af3b47cc22c492ef41d697c" [[package]] -name = "embassy-hal-common" +name = "embassy-hal-internal" version = "0.1.0" -source = "git+https://github.com/embassy-rs/embassy?rev=26474ce6eb759e5add1c137f3417845e0797df3a#26474ce6eb759e5add1c137f3417845e0797df3a" +source = "git+https://github.com/embassy-rs/embassy?rev=e6462f1e88bc37b69af3b47cc22c492ef41d697c#e6462f1e88bc37b69af3b47cc22c492ef41d697c" dependencies = [ + "cortex-m", + "critical-section", "num-traits", ] [[package]] name = "embassy-macros" -version = "0.1.0" -source = "git+https://github.com/embassy-rs/embassy?rev=26474ce6eb759e5add1c137f3417845e0797df3a#26474ce6eb759e5add1c137f3417845e0797df3a" +version = "0.2.1" +source = "git+https://github.com/embassy-rs/embassy?rev=e6462f1e88bc37b69af3b47cc22c492ef41d697c#e6462f1e88bc37b69af3b47cc22c492ef41d697c" dependencies = [ - "darling 0.13.4", + "darling 0.20.3", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.38", ] [[package]] name = "embassy-net" -version = "0.1.0" -source = "git+https://github.com/embassy-rs/embassy?rev=26474ce6eb759e5add1c137f3417845e0797df3a#26474ce6eb759e5add1c137f3417845e0797df3a" +version = "0.2.1" +source = "git+https://github.com/embassy-rs/embassy?rev=e6462f1e88bc37b69af3b47cc22c492ef41d697c#e6462f1e88bc37b69af3b47cc22c492ef41d697c" dependencies = [ "as-slice 0.2.1", - "atomic-polyfill 1.0.2", "atomic-pool", "embassy-net-driver", - "embassy-sync", + "embassy-sync 0.4.0", "embassy-time", - "embedded-io 0.4.0", + "embedded-io-async", "embedded-nal-async", "futures", "generic-array 0.14.7", @@ -610,42 +680,41 @@ dependencies = [ [[package]] name = "embassy-net-driver" -version = "0.1.0" -source = "git+https://github.com/embassy-rs/embassy?rev=26474ce6eb759e5add1c137f3417845e0797df3a#26474ce6eb759e5add1c137f3417845e0797df3a" +version = "0.2.0" +source = "git+https://github.com/embassy-rs/embassy?rev=e6462f1e88bc37b69af3b47cc22c492ef41d697c#e6462f1e88bc37b69af3b47cc22c492ef41d697c" [[package]] name = "embassy-net-driver-channel" -version = "0.1.0" -source = "git+https://github.com/embassy-rs/embassy?rev=26474ce6eb759e5add1c137f3417845e0797df3a#26474ce6eb759e5add1c137f3417845e0797df3a" +version = "0.2.0" +source = "git+https://github.com/embassy-rs/embassy?rev=e6462f1e88bc37b69af3b47cc22c492ef41d697c#e6462f1e88bc37b69af3b47cc22c492ef41d697c" dependencies = [ - "embassy-futures 0.1.0 (git+https://github.com/embassy-rs/embassy?rev=26474ce6eb759e5add1c137f3417845e0797df3a)", + "embassy-futures 0.1.0 (git+https://github.com/embassy-rs/embassy?rev=e6462f1e88bc37b69af3b47cc22c492ef41d697c)", "embassy-net-driver", - "embassy-sync", + "embassy-sync 0.4.0", ] [[package]] name = "embassy-nrf" version = "0.1.0" -source = "git+https://github.com/embassy-rs/embassy?rev=26474ce6eb759e5add1c137f3417845e0797df3a#26474ce6eb759e5add1c137f3417845e0797df3a" +source = "git+https://github.com/embassy-rs/embassy?rev=e6462f1e88bc37b69af3b47cc22c492ef41d697c#e6462f1e88bc37b69af3b47cc22c492ef41d697c" dependencies = [ "cfg-if", "cortex-m", "cortex-m-rt", "critical-section", - "embassy-cortex-m", "embassy-embedded-hal", - "embassy-hal-common", - "embassy-sync", + "embassy-hal-internal", + "embassy-sync 0.4.0", "embassy-time", "embassy-usb-driver", "embedded-hal 0.2.7", - "embedded-hal 1.0.0-alpha.9", + "embedded-hal 1.0.0-rc.1", "embedded-hal-async", - "embedded-io 0.4.0", + "embedded-io 0.6.1", + "embedded-io-async", "embedded-storage", - "embedded-storage-async", + "embedded-storage-async 0.4.0", "fixed", - "futures", "nrf52832-pac", "nrf52840-pac", "rand_core", @@ -654,24 +723,47 @@ dependencies = [ [[package]] name = "embassy-sync" version = "0.1.0" -source = "git+https://github.com/embassy-rs/embassy?rev=26474ce6eb759e5add1c137f3417845e0797df3a#26474ce6eb759e5add1c137f3417845e0797df3a" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6ea38e6ea5d0361d087680f786c19a1454becb06174790280534a3be05ed839" +dependencies = [ + "atomic-polyfill 1.0.2", + "cfg-if", + "critical-section", + "embedded-io 0.3.1", + "futures-util", + "heapless", +] + +[[package]] +name = "embassy-sync" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0525b466ca3ace30b57f2db868a35215dfaecd038d8668cb2db03feb7c069a0" +dependencies = [ + "cfg-if", + "critical-section", + "futures-util", + "heapless", +] + +[[package]] +name = "embassy-sync" +version = "0.4.0" +source = "git+https://github.com/embassy-rs/embassy?rev=e6462f1e88bc37b69af3b47cc22c492ef41d697c#e6462f1e88bc37b69af3b47cc22c492ef41d697c" dependencies = [ "cfg-if", "critical-section", - "embedded-io 0.4.0", "futures-util", "heapless", ] [[package]] name = "embassy-time" -version = "0.1.0" -source = "git+https://github.com/embassy-rs/embassy?rev=26474ce6eb759e5add1c137f3417845e0797df3a#26474ce6eb759e5add1c137f3417845e0797df3a" +version = "0.1.5" +source = "git+https://github.com/embassy-rs/embassy?rev=e6462f1e88bc37b69af3b47cc22c492ef41d697c#e6462f1e88bc37b69af3b47cc22c492ef41d697c" dependencies = [ - "atomic-polyfill 1.0.2", "cfg-if", "critical-section", - "embassy-sync", "embedded-hal 0.2.7", "embedded-hal-async", "futures-util", @@ -681,11 +773,11 @@ dependencies = [ [[package]] name = "embassy-usb" version = "0.1.0" -source = "git+https://github.com/embassy-rs/embassy?rev=26474ce6eb759e5add1c137f3417845e0797df3a#26474ce6eb759e5add1c137f3417845e0797df3a" +source = "git+https://github.com/embassy-rs/embassy?rev=e6462f1e88bc37b69af3b47cc22c492ef41d697c#e6462f1e88bc37b69af3b47cc22c492ef41d697c" dependencies = [ - "embassy-futures 0.1.0 (git+https://github.com/embassy-rs/embassy?rev=26474ce6eb759e5add1c137f3417845e0797df3a)", + "embassy-futures 0.1.0 (git+https://github.com/embassy-rs/embassy?rev=e6462f1e88bc37b69af3b47cc22c492ef41d697c)", "embassy-net-driver-channel", - "embassy-sync", + "embassy-sync 0.4.0", "embassy-usb-driver", "heapless", "ssmarshal", @@ -695,7 +787,7 @@ dependencies = [ [[package]] name = "embassy-usb-driver" version = "0.1.0" -source = "git+https://github.com/embassy-rs/embassy?rev=26474ce6eb759e5add1c137f3417845e0797df3a#26474ce6eb759e5add1c137f3417845e0797df3a" +source = "git+https://github.com/embassy-rs/embassy?rev=e6462f1e88bc37b69af3b47cc22c492ef41d697c#e6462f1e88bc37b69af3b47cc22c492ef41d697c" [[package]] name = "embedded-can" @@ -727,26 +819,26 @@ dependencies = [ [[package]] name = "embedded-hal" -version = "1.0.0-alpha.9" +version = "1.0.0-rc.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "129b101ddfee640565f7c07b301a31d95aa21e5acef21a491c307139f5fa4c91" +checksum = "2894bc2f0457b8ca3d6b8ab8aad64d9337583672494013457f86c5a9146c0e22" [[package]] name = "embedded-hal-async" -version = "0.2.0-alpha.0" +version = "1.0.0-rc.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608a322808d65da06715e03109c0cb69f79a5459af756fba393ab83e875d4969" +checksum = "76a8a3517745342155b3b00895a0f78417a453fb800d97a8bf4777d5720acde9" dependencies = [ - "embedded-hal 1.0.0-alpha.9", + "embedded-hal 1.0.0-rc.1", ] [[package]] name = "embedded-hal-nb" -version = "1.0.0-alpha.1" +version = "1.0.0-rc.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e0760ec0a3bf76859d5e33f39542af103f157d5b2ecfb00ace56dd461472e3a" +checksum = "257e3bb0163c69195acb0ebe0083b017b963235861d5ea9741626abdc55f39c9" dependencies = [ - "embedded-hal 1.0.0-alpha.9", + "embedded-hal 1.0.0-rc.1", "nb 1.1.0", ] @@ -763,23 +855,38 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" [[package]] -name = "embedded-nal" +name = "embedded-io" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" + +[[package]] +name = "embedded-io-async" version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db9efecb57ab54fa918730f2874d7d37647169c50fa1357fecb81abee840b113" +checksum = "de03527d6fb488b2d7c7a4dc81dfb6a657efe264256bfc70bb899746821666b1" +dependencies = [ + "embedded-io 0.6.1", +] + +[[package]] +name = "embedded-nal" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "447416d161ba378782c13e82b11b267d6d2104b4913679a7c5640e7e94f96ea7" dependencies = [ "heapless", "nb 1.1.0", - "no-std-net 0.5.0", + "no-std-net 0.6.0", ] [[package]] name = "embedded-nal-async" -version = "0.3.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc8f5d837a6e95e9ecad9b5503fff6ef12e16407706abed1d33fc61eaf90da8" +checksum = "a0f75f0ac83505f354443332324ef1399463902718b95b4ce153ae9b3660f341" dependencies = [ - "embedded-io 0.4.0", + "embedded-io-async", "embedded-nal", "heapless", "no-std-net 0.6.0", @@ -800,6 +907,15 @@ dependencies = [ "embedded-storage", ] +[[package]] +name = "embedded-storage-async" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "052997a894670d0cde873faa7405bc98e2fd29f569d2acd568561bc1c396b35a" +dependencies = [ + "embedded-storage", +] + [[package]] name = "embedded-svc" version = "0.23.2" @@ -813,6 +929,20 @@ dependencies = [ "serde", ] +[[package]] +name = "embedded-svc" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72eadca5c944d68cef49d9fcba75d89bca6a742aa31ee744382684805c9af6f3" +dependencies = [ + "atomic-waker", + "embedded-io 0.6.1", + "enumset", + "heapless", + "no-std-net 0.5.0", + "serde", +] + [[package]] name = "encode_unicode" version = "0.3.6" @@ -852,6 +982,12 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + [[package]] name = "esp-alloc" version = "0.2.0" @@ -875,48 +1011,62 @@ dependencies = [ [[package]] name = "esp-hal-common" -version = "0.7.1" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5df3ec9a2e4df155e5a99f50b76a3a6733e69941d453085d3258846e1bd0a64e" +checksum = "ad320b6bb4fc71179b3997e8ca2d10c513729783070867767d1d84364d200513" dependencies = [ + "basic-toml", + "bitfield 0.14.0", + "bitflags 2.4.1", "cfg-if", "critical-section", "embassy-futures 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "embassy-sync", + "embassy-sync 0.3.0", "embassy-time", "embedded-can", "embedded-dma", "embedded-hal 0.2.7", - "embedded-hal 1.0.0-alpha.9", + "embedded-hal 1.0.0-rc.1", "embedded-hal-async", "embedded-hal-nb", + "embedded-io 0.6.1", + "embedded-io-async", "esp-hal-procmacros", "esp-riscv-rt", + "esp-synopsys-usb-otg", "esp32", + "esp32c2", "esp32c3", + "esp32c6", + "esp32s2", + "esp32s3", "fugit", - "lock_api", + "log", "nb 1.1.0", "paste", "riscv-atomic-emulation-trap", - "strum", + "serde", + "strum 0.25.0", + "usb-device", "void", "xtensa-lx", - "xtensa-lx-rt 0.15.0", + "xtensa-lx-rt 0.16.0", ] [[package]] name = "esp-hal-procmacros" -version = "0.4.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "214510c5399a574ee6a521be48851d06aaa188b40c4b6b8f2a2c3b8d22afd12e" +checksum = "064c5793a4b6eabc95f6452c7320c035265d85066998f2544e8c8cdfe7b7ff44" dependencies = [ - "darling 0.14.4", + "darling 0.20.3", + "litrs 0.4.1", + "object 0.32.1", "proc-macro-crate", "proc-macro-error", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.38", ] [[package]] @@ -930,56 +1080,73 @@ dependencies = [ [[package]] name = "esp-riscv-rt" -version = "0.1.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c363bf30aae3c13e849315b73227de75dca813de53f5233f1fa7064f5adea641" +checksum = "7639ac03e9fe4e6d5f1c0e90b95ce9478d487335f6684c22b3515e6dc3155d8f" dependencies = [ - "r0", "riscv", "riscv-rt-macros", ] +[[package]] +name = "esp-synopsys-usb-otg" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cc6734e87e7b86858f7884649deae6bf634d1e6f5b2d078e457cf4d72c541ec" +dependencies = [ + "critical-section", + "embedded-hal 0.2.7", + "usb-device", + "vcell", +] + [[package]] name = "esp-wifi" version = "0.1.0" -source = "git+https://github.com/esp-rs/esp-wifi.git?rev=76ba312#76ba312b55b841cbbe9090c4f8dfb12ad379bb38" +source = "git+https://github.com/esp-rs/esp-wifi.git?rev=9e44fe3#9e44fe3c098e64badec57b0e9435a1386067026c" dependencies = [ "atomic-polyfill 1.0.2", + "atomic_enum", + "cfg-if", "critical-section", "embassy-futures 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "embassy-net", - "embassy-net-driver", - "embassy-sync", - "embedded-hal 0.2.7", - "embedded-io 0.4.0", - "embedded-svc", + "embassy-sync 0.4.0", + "embedded-io 0.6.1", + "embedded-io-async", + "embedded-svc 0.26.2", "enumset", "esp-wifi-sys", "esp32-hal", - "esp32c3", + "esp32c2-hal", "esp32c3-hal", + "esp32c6-hal", + "esp32s2-hal", + "esp32s3-hal", "fugit", "heapless", + "libm 0.2.8", "linked_list_allocator", "log", "num-derive", "num-traits", "smoltcp", + "toml-cfg", ] [[package]] name = "esp-wifi-sys" version = "0.1.0" -source = "git+https://github.com/esp-rs/esp-wifi.git?rev=76ba312#76ba312b55b841cbbe9090c4f8dfb12ad379bb38" +source = "git+https://github.com/esp-rs/esp-wifi.git?rev=9e44fe3#9e44fe3c098e64badec57b0e9435a1386067026c" dependencies = [ "anyhow", ] [[package]] name = "esp32" -version = "0.21.0" +version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5513ea7e015c87798ed9e07f3b478a8c823e28796b0d9aaa5a80436f22c03ee7" +checksum = "9d09b309c801163288d7291b3f3f927b278efe1c3fe0a6f854c4be6bb50b1cf9" dependencies = [ "critical-section", "vcell", @@ -988,21 +1155,38 @@ dependencies = [ [[package]] name = "esp32-hal" -version = "0.10.0" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fd30aca34bfc360af857200c66e687abc8371ca9eb6cbd0a7fb065e2f6726fd" +checksum = "9bb7f422b73053c301f8042a17aae7d115fa685560cb6ce3709a028874d7614e" dependencies = [ "embassy-time", - "embedded-hal 0.2.7", - "embedded-hal-async", "esp-hal-common", ] [[package]] -name = "esp32c3" +name = "esp32c2" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e195e823b9c3b2b13377fea639e42cb67bc481cd71b49d12dfc5f246cf96d08" +dependencies = [ + "critical-section", + "vcell", +] + +[[package]] +name = "esp32c2-hal" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "471e4ccbeb7b898927ff8e115288353b47cf9c948c75c1d25a0e71c9b97678ae" +checksum = "d6bcd1c93096fd2d583f4c8cd5c084c0e70c2ee677a9dffde0407b142297b1bc" +dependencies = [ + "esp-hal-common", +] + +[[package]] +name = "esp32c3" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89e5cc6c0874ae7d8ea3997eeba05bf06926b92c788b556002e2c3eea52f5882" dependencies = [ "critical-section", "vcell", @@ -1010,16 +1194,73 @@ dependencies = [ [[package]] name = "esp32c3-hal" -version = "0.7.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfd7f5e718f699c26e112ecb09233c2d8b401db2316625cd78a729ab75f775f9" +checksum = "a2b11a787ccbf8dfb1895c1fe1207effc002061e0fc705fa1d633dd88bbf9f5c" dependencies = [ "cfg-if", "embassy-time", - "embedded-hal 0.2.7", - "embedded-hal-async", "esp-hal-common", - "r0", +] + +[[package]] +name = "esp32c6" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e456c778e9169f81789b7f990aeb276680231d48b10c9c7a14f5ac42d00a507" +dependencies = [ + "critical-section", + "vcell", +] + +[[package]] +name = "esp32c6-hal" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a56e03581a43995bb0b79b9490b4b1988866bb68f3fb3894de0fe7d6de414727" +dependencies = [ + "esp-hal-common", +] + +[[package]] +name = "esp32s2" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08b66c2f65dae760a209609661a52235e95c612fd640c22663a90747028508ea" +dependencies = [ + "critical-section", + "vcell", + "xtensa-lx", +] + +[[package]] +name = "esp32s2-hal" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63bab3dab3741cb86b076d784f795ebbdcba71e319964551e0e091116ba8ab72" +dependencies = [ + "esp-hal-common", + "xtensa-atomic-emulation-trap", +] + +[[package]] +name = "esp32s3" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d963e4278c6417d939dd3791f144b89341abd387cc1bf612fbbd4cf585c0f669" +dependencies = [ + "critical-section", + "vcell", + "xtensa-lx", +] + +[[package]] +name = "esp32s3-hal" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567d3c5f0d708028533811bb255b099aff0a7d61e2ddbf0b44d2485eeb612c99" +dependencies = [ + "esp-hal-common", ] [[package]] @@ -1043,6 +1284,7 @@ name = "firmware" version = "0.0.0" dependencies = [ "alloc-cortex-m", + "atomic-waker", "bleps", "bleps-macros", "bmi160", @@ -1060,11 +1302,11 @@ dependencies = [ "embassy-futures 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "embassy-net", "embassy-nrf", - "embassy-sync", + "embassy-sync 0.4.0", "embassy-time", "embassy-usb", "embedded-hal 0.2.7", - "embedded-svc", + "embedded-svc 0.23.2", "esp-alloc", "esp-backtrace", "esp-wifi", @@ -1084,6 +1326,7 @@ dependencies = [ "nrf52840-pac", "panic_defmt", "paste", + "portable-atomic", "riscv", "serde", "smoltcp", @@ -1112,6 +1355,16 @@ dependencies = [ "typenum", ] +[[package]] +name = "flate2" +version = "1.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" +dependencies = [ + "crc32fast", + "miniz_oxide 0.7.1", +] + [[package]] name = "fnv" version = "1.0.7" @@ -1120,9 +1373,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fugit" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ab17bb279def6720d058cb6c052249938e7f99260ab534879281a95367a87e5" +checksum = "17186ad64927d5ac8f02c1e77ccefa08ccd9eaa314d5a4772278aa204a22f7e7" dependencies = [ "gcd", ] @@ -1177,7 +1430,7 @@ checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" dependencies = [ "proc-macro2", "quote", - "syn 2.0.12", + "syn 2.0.38", ] [[package]] @@ -1266,9 +1519,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.12.3" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +checksum = "f93e7192158dbcda357bdec5fb5788eebf8bbac027f3f33e719d29135ae84156" [[package]] name = "heapless" @@ -1303,11 +1556,11 @@ checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" [[package]] name = "indexmap" -version = "1.9.3" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" dependencies = [ - "autocfg", + "equivalent", "hashbrown", ] @@ -1331,9 +1584,9 @@ checksum = "7fc7aa29613bd6a620df431842069224d8bc9011086b1db4c0e0cd47fa03ec9a" [[package]] name = "libm" -version = "0.2.6" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "348108ab3fba42ec82ff6e9564fc4ca0247bdccdc68dd8af9764bbc79c3c8ffb" +checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" [[package]] name = "linked_list_allocator" @@ -1350,6 +1603,15 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "litrs" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ce301924b7887e9d637144fdade93f9dfff9b60981d4ac161db09720d39aa5" +dependencies = [ + "proc-macro2", +] + [[package]] name = "load-dotenv" version = "0.1.2" @@ -1371,12 +1633,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.17" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" -dependencies = [ - "cfg-if", -] +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] name = "managed" @@ -1399,6 +1658,15 @@ dependencies = [ "serde", ] +[[package]] +name = "minijinja" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f98b09920c8be9ff96a5625aca5b5db7a4f4ba025132ff7d7aacb72c0244a45" +dependencies = [ + "serde", +] + [[package]] name = "miniz_oxide" version = "0.6.2" @@ -1408,6 +1676,15 @@ dependencies = [ "adler", ] +[[package]] +name = "miniz_oxide" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +dependencies = [ + "adler", +] + [[package]] name = "mpu6050-dmp" version = "0.3.0" @@ -1415,7 +1692,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78ad9db142f17e7e850abb7089a683396a7c5e89cb3b51d5512ded0b844551e4" dependencies = [ "embedded-hal 0.2.7", - "libm 0.2.6", + "libm 0.2.8", ] [[package]] @@ -1486,9 +1763,9 @@ dependencies = [ "cortex-m-rt", "critical-section", "defmt", - "embassy-sync", + "embassy-sync 0.1.0", "embedded-storage", - "embedded-storage-async", + "embedded-storage-async 0.3.0", "fixed", "futures", "heapless", @@ -1593,7 +1870,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" dependencies = [ "autocfg", - "libm 0.2.6", + "libm 0.2.8", ] [[package]] @@ -1625,6 +1902,17 @@ dependencies = [ "memchr", ] +[[package]] +name = "object" +version = "0.32.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" +dependencies = [ + "flate2", + "memchr", + "ruzstd", +] + [[package]] name = "once_cell" version = "1.17.1" @@ -1647,9 +1935,9 @@ dependencies = [ [[package]] name = "paste" -version = "1.0.12" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f746c4065a8fa3fe23974dd82f15431cc8d40779821001404d10d2e79ca7d79" +checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" [[package]] name = "pin-project-lite" @@ -1663,13 +1951,18 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "portable-atomic" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bccab0e7fd7cc19f820a1c8c91720af652d0c88dc9664dd72aef2614f04af3b" + [[package]] name = "proc-macro-crate" -version = "1.3.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +checksum = "7e8366a6159044a37876a2b9817124296703c586a5c92e2c53751fa06d8d43e8" dependencies = [ - "once_cell", "toml_edit", ] @@ -1699,18 +1992,18 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.54" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e472a104799c74b514a57226160104aa483546de37e839ec50e3c2e41dd87534" +checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.26" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ "proc-macro2", ] @@ -1762,9 +2055,9 @@ dependencies = [ [[package]] name = "riscv-atomic-emulation-trap" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da39f4a5642a62e8e16bb438c37e6f90ea388ca0b7960fe875ea39887155d6ba" +checksum = "7979127070e70f34c0ad6cc5a3a13f09af8dab1e9e154c396eb818f478504143" [[package]] name = "riscv-rt-macros" @@ -1807,6 +2100,17 @@ version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4f3208ce4d8448b3f3e7d168a73f5e0c43a61e32930de3bceeccedb388b6bf06" +[[package]] +name = "ruzstd" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3ffab8f9715a0d455df4bbb9d21e91135aab3cd3ca187af0cd0c3c3f868fdc" +dependencies = [ + "byteorder", + "thiserror-core", + "twox-hash", +] + [[package]] name = "scopeguard" version = "1.1.0" @@ -1836,22 +2140,22 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.159" +version = "1.0.190" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c04e8343c3daeec41f58990b9d77068df31209f2af111e059e9fe9646693065" +checksum = "91d3c334ca1ee894a2c6f6ad698fe8c435b76d504b13d436f0685d648d6d96f7" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.159" +version = "1.0.190" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c614d17805b093df4b147b51339e7e44bf05ef59fba1e45d83500bcfb4d8585" +checksum = "67c5609f394e5c2bd7fc51efda478004ea80ef42fee983d5c67a65e34f32c0e3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.12", + "syn 2.0.38", ] [[package]] @@ -1877,11 +2181,11 @@ dependencies = [ [[package]] name = "smoltcp" -version = "0.9.1" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e9786ac45091b96f946693e05bfa4d8ca93e2d3341237d97a380107a6b38dea" +checksum = "8d2e3a36ac8fea7b94e666dfa3871063d6e0a5c9d5d4fec9a1a6b7b6760f0229" dependencies = [ - "bitflags", + "bitflags 1.3.2", "byteorder", "cfg-if", "heapless", @@ -1913,6 +2217,12 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + [[package]] name = "static_cell" version = "1.0.0" @@ -1933,8 +2243,14 @@ name = "strum" version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" + +[[package]] +name = "strum" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" dependencies = [ - "strum_macros", + "strum_macros 0.25.3", ] [[package]] @@ -1950,6 +2266,19 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "strum_macros" +version = "0.25.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.38", +] + [[package]] name = "syn" version = "1.0.109" @@ -1963,9 +2292,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.12" +version = "2.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79d9531f94112cfc3e4c8f5f02cb2b58f72c97b7efd85f70203cc6d8efda5927" +checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b" dependencies = [ "proc-macro2", "quote", @@ -1987,6 +2316,26 @@ dependencies = [ "thiserror-impl", ] +[[package]] +name = "thiserror-core" +version = "1.0.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d97345f6437bb2004cd58819d8a9ef8e36cdd7661c2abc4bbde0a7c40d9f497" +dependencies = [ + "thiserror-core-impl", +] + +[[package]] +name = "thiserror-core-impl" +version = "1.0.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10ac1c5050e43014d16b2f94d0d2ce79e65ffdd8b38d8048f9c8f6a8a6da62ac" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "thiserror-impl" version = "1.0.40" @@ -1995,7 +2344,7 @@ checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.12", + "syn 2.0.38", ] [[package]] @@ -2017,17 +2366,31 @@ dependencies = [ "serde", ] +[[package]] +name = "toml-cfg" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91dbf509587452b781d208257bfe9923808873290d99505ee0eb0e6599540bdf" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "serde", + "syn 1.0.109", + "toml", +] + [[package]] name = "toml_datetime" -version = "0.6.1" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" [[package]] name = "toml_edit" -version = "0.19.8" +version = "0.20.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13" +checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81" dependencies = [ "indexmap", "toml_datetime", @@ -2076,6 +2439,16 @@ dependencies = [ "tracing-core", ] +[[package]] +name = "twox-hash" +version = "1.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" +dependencies = [ + "cfg-if", + "static_assertions", +] + [[package]] name = "typenum" version = "1.16.0" @@ -2112,7 +2485,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dcbee8c6735e90894fba04770bc41e11fd3c5256018856e15dc4dd1e6c8a3dd1" dependencies = [ - "bitfield", + "bitfield 0.13.2", ] [[package]] @@ -2170,9 +2543,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.4.1" +version = "0.5.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae8970b36c66498d8ff1d66685dc86b91b29db0c7739899012f63a63814b4b28" +checksum = "829846f3e3db426d4cee4510841b71a8e58aa2a76b1132579487ae430ccd9c7b" dependencies = [ "memchr", ] @@ -2186,6 +2559,12 @@ dependencies = [ "tap", ] +[[package]] +name = "xtensa-atomic-emulation-trap" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cd1632531f5d8ba78dabeff8b006a0d675560f436727479138a3dd194f0582b" + [[package]] name = "xtensa-lx" version = "0.8.0" @@ -2205,22 +2584,22 @@ checksum = "c5e7d36626db2a67ba9b874988181d1dac18706914e804fca846add0c5e5eddb" dependencies = [ "bare-metal 1.0.0", "core-isa-parser", - "minijinja", + "minijinja 0.15.0", "r0", "xtensa-lx-rt-proc-macros 0.1.0", ] [[package]] name = "xtensa-lx-rt" -version = "0.15.0" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f68fea36eb8e2d5ff4c99d367527f4a56e484b16c5e84abf4195988bd845a3fc" +checksum = "904102108b780c9a5e3275c5f3c63dc348ec43ae5da5237868515498b447d51a" dependencies = [ "bare-metal 1.0.0", "core-isa-parser", - "minijinja", + "minijinja 1.0.9", "r0", - "xtensa-lx-rt-proc-macros 0.2.0", + "xtensa-lx-rt-proc-macros 0.2.1", ] [[package]] @@ -2236,11 +2615,12 @@ dependencies = [ [[package]] name = "xtensa-lx-rt-proc-macros" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3283815e334d3e5d21868dc3c7140720b2a784238289b1127b67908c89404b79" +checksum = "082cdede098bbec9af15b0e74085e5f3d16f2923597de7aed7b8112003af2da7" dependencies = [ + "darling 0.20.3", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.38", ] diff --git a/firmware/Cargo.toml b/firmware/Cargo.toml index 83e2d931..28dad115 100644 --- a/firmware/Cargo.toml +++ b/firmware/Cargo.toml @@ -113,14 +113,14 @@ _mcu-f-esp32 = [ [dependencies] # mcu-esp32 stuff -esp32-hal = { version = "0.10", optional = true, features = [ +esp32-hal = { version = "0.16", optional = true, features = [ "embassy", "embassy-time-timg0", "async", ] } # mcu-esp32c3 stuff -esp32c3-hal = { version = "0.7", optional = true, features = [ +esp32c3-hal = { version = "0.13", optional = true, features = [ "embassy", "embassy-time-timg0", "async", @@ -163,16 +163,18 @@ esp-alloc = { version = "0.2", optional = true } defmt_esp_println = { path = "crates/defmt_esp_println", optional = true } # Wi-Fi -esp-wifi = { git = "https://github.com/esp-rs/esp-wifi.git", rev = "76ba312", features = [ +esp-wifi = { git = "https://github.com/esp-rs/esp-wifi.git", rev = "9e44fe3", features = [ "embedded-svc", "wifi", "embassy-net", ], optional = true } -smoltcp = { version = "0.9", default-features = false, features = [ +smoltcp = { version = "0.10", default-features = false, features = [ ], optional = true } embassy-net = { version = "*", optional = true, features = [ "nightly", "tcp", "udp", "dhcpv4", "medium-ethernet" ] } +atomic-waker = { version = "1.1", default-features = false, features = ["portable-atomic"] } +portable-atomic = { version = "1.5", default-features = false, features = ["require-cas", "unsafe-assume-single-core"]} # Generic BLE bleps = { git = "https://github.com/bjoernQ/bleps", rev = "33fde67", optional = true } @@ -241,15 +243,17 @@ bitvec = { git = "https://github.com/arctic-alpaca/ferrilab.git", rev = "e13261a # in [dependencies] because this ensures that we don't duplicate any dependencies like # `embassy-time`. This avoids bugs like this one: # https://github.com/embassy-rs/embassy/issues/1115 -embassy-executor = { git = "https://github.com/embassy-rs/embassy", rev = "26474ce6eb759e5add1c137f3417845e0797df3a" } -embassy-time = { git = "https://github.com/embassy-rs/embassy", rev = "26474ce6eb759e5add1c137f3417845e0797df3a" } -embassy-nrf = { git = "https://github.com/embassy-rs/embassy", rev = "26474ce6eb759e5add1c137f3417845e0797df3a" } -embassy-usb = { git = "https://github.com/embassy-rs/embassy", rev = "26474ce6eb759e5add1c137f3417845e0797df3a" } -embassy-sync = { git = "https://github.com/embassy-rs/embassy", rev = "26474ce6eb759e5add1c137f3417845e0797df3a" } -embassy-net = { git = "https://github.com/embassy-rs/embassy", rev = "26474ce6eb759e5add1c137f3417845e0797df3a" } +embassy-executor = { git = "https://github.com/embassy-rs/embassy", rev = "e6462f1e88bc37b69af3b47cc22c492ef41d697c" } +embassy-time = { git = "https://github.com/embassy-rs/embassy", rev = "e6462f1e88bc37b69af3b47cc22c492ef41d697c" } +embassy-nrf = { git = "https://github.com/embassy-rs/embassy", rev = "e6462f1e88bc37b69af3b47cc22c492ef41d697c" } +embassy-usb = { git = "https://github.com/embassy-rs/embassy", rev = "e6462f1e88bc37b69af3b47cc22c492ef41d697c" } +embassy-sync = { git = "https://github.com/embassy-rs/embassy", rev = "e6462f1e88bc37b69af3b47cc22c492ef41d697c" } +embassy-net = { git = "https://github.com/embassy-rs/embassy", rev = "e6462f1e88bc37b69af3b47cc22c492ef41d697c" } nrf-softdevice = { git = "https://github.com/embassy-rs/nrf-softdevice", rev = "8a3dbb7" } +atomic_enum = { git = "https://github.com/thebutlah/atomic_enum", rev = "3c90118" } + [profile.dev] # lto doesnt work for esp-wifi lto = false From 48a04c1a9146e7b7521b0bc8a974a5ca87c2df78 Mon Sep 17 00:00:00 2001 From: Ryan Butler Date: Mon, 6 Nov 2023 23:39:46 -0500 Subject: [PATCH 3/4] finished refactor with some jank crap --- firmware/Cargo.lock | 18 +++------------- firmware/Cargo.toml | 4 +++- firmware/src/aliases.rs | 6 ++---- firmware/src/networking/mod.rs | 2 +- firmware/src/networking/protocol/mod.rs | 2 +- firmware/src/networking/wifi/mod.rs | 8 +++++--- firmware/src/peripherals/esp32/esp32c3.rs | 14 ------------- firmware/src/peripherals/esp32/mod.rs | 25 +++++++++++++++++++++-- 8 files changed, 38 insertions(+), 41 deletions(-) diff --git a/firmware/Cargo.lock b/firmware/Cargo.lock index e08905c0..5c3a3e54 100644 --- a/firmware/Cargo.lock +++ b/firmware/Cargo.lock @@ -620,6 +620,7 @@ version = "0.3.1" source = "git+https://github.com/embassy-rs/embassy?rev=e6462f1e88bc37b69af3b47cc22c492ef41d697c#e6462f1e88bc37b69af3b47cc22c492ef41d697c" dependencies = [ "atomic-polyfill 1.0.2", + "cortex-m", "critical-section", "embassy-macros", "embassy-time", @@ -916,19 +917,6 @@ dependencies = [ "embedded-storage", ] -[[package]] -name = "embedded-svc" -version = "0.23.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25d1ffdfc6c4ca5a8d308a0df8c0e82ca52cdb63c5bd4d8ae6c36889887756b6" -dependencies = [ - "embedded-io 0.3.1", - "enumset", - "heapless", - "no-std-net 0.5.0", - "serde", -] - [[package]] name = "embedded-svc" version = "0.26.2" @@ -1114,7 +1102,7 @@ dependencies = [ "embassy-sync 0.4.0", "embedded-io 0.6.1", "embedded-io-async", - "embedded-svc 0.26.2", + "embedded-svc", "enumset", "esp-wifi-sys", "esp32-hal", @@ -1306,7 +1294,7 @@ dependencies = [ "embassy-time", "embassy-usb", "embedded-hal 0.2.7", - "embedded-svc 0.23.2", + "embedded-svc", "esp-alloc", "esp-backtrace", "esp-wifi", diff --git a/firmware/Cargo.toml b/firmware/Cargo.toml index 28dad115..ad7c1ec7 100644 --- a/firmware/Cargo.toml +++ b/firmware/Cargo.toml @@ -144,6 +144,8 @@ nrf52832-pac = { version = "0.12", optional = true } # Async stuff embassy-futures = "0.1.0" embassy-executor = { version = "*", features = [ + "executor-thread", + "arch-cortex-m", "integrated-timers", "nightly", # Needed for .spawn() ] } @@ -190,7 +192,7 @@ nrf-softdevice = { version = "*", default-features = false, features = [ # Platform independent traits embedded-hal = "0.2" -embedded-svc = { version = "0.23", default-features = false, optional = true, features = [ +embedded-svc = { version = "0.26", default-features = false, optional = true, features = [ # "defmt" # "nightly", ] } diff --git a/firmware/src/aliases.rs b/firmware/src/aliases.rs index 41060129..3164ec0b 100644 --- a/firmware/src/aliases.rs +++ b/firmware/src/aliases.rs @@ -2,7 +2,6 @@ #[cfg(feature = "mcu-esp32")] pub mod ඞ { - pub use esp32_hal::ehal; pub use esp32_hal::Delay as DelayConcrete; pub type I2cConcrete<'a> = esp32_hal::i2c::I2C<'a, esp32_hal::peripherals::I2C0>; @@ -23,7 +22,6 @@ pub mod ඞ { #[cfg(feature = "mcu-esp32c3")] pub mod ඞ { - pub use esp32c3_hal::ehal; pub use esp32c3_hal::Delay as DelayConcrete; pub type I2cConcrete<'a> = @@ -32,11 +30,11 @@ pub mod ඞ { pub type BbqPeripheral<'a> = (); #[cfg(feature = "net-wifi")] - pub type NetStackConcrete = embassy_net::Stack; + pub type NetStackConcrete = embassy_net::Stack>; #[cfg(feature = "net-wifi")] pub struct NetConcrete { - pub controller: esp_wifi::wifi::WifiController, + pub controller: esp_wifi::wifi::WifiController<'static>, pub stack: &'static NetStackConcrete, } #[cfg(not(feature = "net-wifi"))] diff --git a/firmware/src/networking/mod.rs b/firmware/src/networking/mod.rs index 7b4e607b..92155738 100644 --- a/firmware/src/networking/mod.rs +++ b/firmware/src/networking/mod.rs @@ -33,6 +33,6 @@ pub async fn network_task( async fn stubbed_network_task(packets: &Packets, _net: NetConcrete) -> ! { loop { // Dump network messages - let _ = packets.serverbound.recv().await; + let _ = packets.serverbound.receive().await; } } diff --git a/firmware/src/networking/protocol/mod.rs b/firmware/src/networking/protocol/mod.rs index 8b6d3bf0..666d5d1d 100644 --- a/firmware/src/networking/protocol/mod.rs +++ b/firmware/src/networking/protocol/mod.rs @@ -25,7 +25,7 @@ pub async fn control_task( debug!("Control task!"); async { loop { - match select(packets.clientbound.recv(), quat.wait()).await { + match select(packets.clientbound.receive(), quat.wait()).await { Either::First(cb_msg) => { handle_cb_msg(cb_msg, &packets.serverbound).await } diff --git a/firmware/src/networking/wifi/mod.rs b/firmware/src/networking/wifi/mod.rs index f09409a7..b6a2f4c4 100644 --- a/firmware/src/networking/wifi/mod.rs +++ b/firmware/src/networking/wifi/mod.rs @@ -87,7 +87,8 @@ impl State { /// Returns num bytes of outbound buffer fn on_send(&mut self, outbound: SbPacket, out_buf: &mut [u8]) -> Option { // Serialize the packet based on our send sequence number - let Ok(len) = Packet::new(self.tx_seq().0, outbound).serialize_into(out_buf) else { + let Ok(len) = Packet::new(self.tx_seq().0, outbound).serialize_into(out_buf) + else { warn!("Failed to serialize outgoing packet"); return None; }; @@ -123,7 +124,7 @@ pub async fn network_task( let stack = net.stack; let ip = loop { - if let Some(ip) = stack.config().map(|c| c.address) { + if let Some(ip) = stack.config_v4().map(|c| c.address) { break ip; } Timer::after(Duration::from_millis(500)).await; @@ -154,7 +155,7 @@ pub async fn network_task( // Either start sending or receive, if either is available let net = select( recv_bytes(&mut socket, &mut buffer), - packets.serverbound.recv(), + packets.serverbound.receive(), ) .await; @@ -193,6 +194,7 @@ async fn recv_bytes<'s>( loop { match socket.recv_from(buffer).await { Ok(v) => return v, + Err(UdpError::SocketNotBound) => todo!("refactor go brr"), Err(UdpError::NoRoute) => warn!("UdpError::NoRoute"), } } diff --git a/firmware/src/peripherals/esp32/esp32c3.rs b/firmware/src/peripherals/esp32/esp32c3.rs index 604ce596..01a24e44 100644 --- a/firmware/src/peripherals/esp32/esp32c3.rs +++ b/firmware/src/peripherals/esp32/esp32c3.rs @@ -55,25 +55,11 @@ pub fn get_peripherals( map_pin!(io, env!("PIN_SDA")), map_pin!(io, env!("PIN_SCL")), 400u32.kHz(), - &mut system.peripheral_clock_control, &clocks, ); let delay = esp32c3_hal::Delay::new(&clocks); - #[cfg(feature = "net-wifi")] - { - use esp32c3_hal::systimer::SystemTimer; - use esp32c3_hal::Rng; - - esp_wifi::init_heap(); - - let systimer = SystemTimer::new(p.SYSTIMER); - let rng = Rng::new(p.RNG); - esp_wifi::initialize(systimer.alarm0, rng, &clocks) - .expect("failed to initialize esp-wifi"); - } - #[allow(clippy::let_unit_value)] let net = super::init_wifi_stack(); diff --git a/firmware/src/peripherals/esp32/mod.rs b/firmware/src/peripherals/esp32/mod.rs index 0e26e04b..e4562d42 100644 --- a/firmware/src/peripherals/esp32/mod.rs +++ b/firmware/src/peripherals/esp32/mod.rs @@ -6,6 +6,8 @@ mod ඞ; #[path = "esp32.rs"] mod ඞ; +use esp32c3_hal::clock::ClockControl; +use esp_wifi::EspWifiInitFor; pub use ඞ::get_peripherals; use crate::aliases::ඞ::NetConcrete; @@ -25,10 +27,29 @@ fn init_wifi_stack() -> NetConcrete { #[cfg(feature = "net-wifi")] { use embassy_net::{Config, Stack, StackResources}; + use esp32c3_hal::system::SystemExt; use esp_wifi::wifi::{WifiDevice, WifiMode}; + // TODO: don't do this lmao + let p = unsafe { esp32c3_hal::peripherals::Peripherals::steal() }; + let rng = esp32c3_hal::rng::Rng::new(p.RNG); - let (wifi_interface, controller) = esp_wifi::wifi::new(WifiMode::Sta); - let config = Config::Dhcp(Default::default()); + let system = p.SYSTEM.split(); + let clocks = ClockControl::max(system.clock_control).freeze(); + let timer = esp32c3_hal::systimer::SystemTimer::new(p.SYSTIMER).alarm0; + + let initialization = esp_wifi::initialize( + EspWifiInitFor::Wifi, + timer, + rng, + system.radio_clock_control, + &clocks, + ) + .expect("Failed to initialize esp wifi"); + + let (wifi_interface, controller) = + esp_wifi::wifi::new_with_mode(&initialization, p.WIFI, WifiMode::Sta) + .expect("failed to create new wifi"); + let config = Config::dhcpv4(Default::default()); let seed = 1234; // very random, very secure seed From ea134106899e1ef40944e9e89ab0ec1c0ad43046 Mon Sep 17 00:00:00 2001 From: Ryan Butler Date: Mon, 6 Nov 2023 23:41:17 -0500 Subject: [PATCH 4/4] fixed warnings --- firmware/src/imu/drivers/stubbed.rs | 1 - firmware/src/peripherals/esp32/esp32c3.rs | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/firmware/src/imu/drivers/stubbed.rs b/firmware/src/imu/drivers/stubbed.rs index 98dc4ba6..5fc40b8f 100644 --- a/firmware/src/imu/drivers/stubbed.rs +++ b/firmware/src/imu/drivers/stubbed.rs @@ -4,7 +4,6 @@ use defmt::debug; use embassy_time::{Duration, Ticker}; use embedded_hal::blocking::delay::DelayMs; use firmware_protocol::ImuType; -use futures_util::StreamExt; /// Fakes an IMU for easier testing. struct FakeImu(Ticker); diff --git a/firmware/src/peripherals/esp32/esp32c3.rs b/firmware/src/peripherals/esp32/esp32c3.rs index 01a24e44..2c4d1eab 100644 --- a/firmware/src/peripherals/esp32/esp32c3.rs +++ b/firmware/src/peripherals/esp32/esp32c3.rs @@ -25,7 +25,7 @@ pub fn get_peripherals( ) -> Peripherals, DelayConcrete, (), (), NetConcrete> { let p = esp32c3_hal::peripherals::Peripherals::take(); - let mut system = p.SYSTEM.split(); + let system = p.SYSTEM.split(); // The ESP-Wifi module requires 160MHz for cpu clock speeed let clocks = ClockControl::configure(system.clock_control, CpuClock::Clock160MHz).freeze();