diff --git a/.cargo/config.toml b/.cargo/config.toml index 06cfe1d7..2347a218 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -15,7 +15,7 @@ rustflags = [ # trap unreachable can save a lot of space, but requires nightly compiler. # uncomment the next line if you wish to enable it # "-Z", "trap-unreachable=no", - "-C", "inline-threshold=5", + "-C", "llvm-args=--inline-threshold=5", "-C", "no-vectorize-loops", ] diff --git a/.gitignore b/.gitignore index 579047c8..d8732c74 100644 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,7 @@ _version.py build/ dist/ ledmatrix_control.spec + +# devenv +.devenv/ +.devenv.flake.nix diff --git a/Cargo.lock b/Cargo.lock index afe9fa55..9a7bd7b6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,45 +1,12 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 - -[[package]] -name = "CoreFoundation-sys" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0e9889e6db118d49d88d84728d0e964d973a5680befb5f85f55141beea5c20b" -dependencies = [ - "libc", - "mach", -] - -[[package]] -name = "IOKit-sys" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99696c398cbaf669d2368076bdb3d627fb0ce51a26899d7c61228c5c0af3bf4a" -dependencies = [ - "CoreFoundation-sys", - "libc", - "mach", -] - -[[package]] -name = "adafruit-qt-py-rp2040" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e36e061b89c1354cab7a96173730928d67e9970ad509cd295af724abb30920b6" -dependencies = [ - "cortex-m", - "cortex-m-rt", - "rp2040-boot2 0.2.1", - "rp2040-hal", -] +version = 4 [[package]] name = "addr2line" -version = "0.19.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a76fd60b23679b7d19bd066031410fb7e458ccc5e958eb5c325888ce4baedc97" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" dependencies = [ "gimli", ] @@ -50,6 +17,12 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aho-corasick" version = "0.6.10" @@ -61,23 +34,23 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.0.2" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" dependencies = [ "memchr", ] [[package]] name = "alsa" -version = "0.7.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8512c9117059663fb5606788fbca3619e2a91dac0e3fe516242eab1fa6be5e44" +checksum = "ed7572b7ba83a31e20d1b48970ee402d2e3e0537dcfe0a3ff4d6eb7508617d43" dependencies = [ "alsa-sys", - "bitflags 1.3.2", + "bitflags 2.10.0", + "cfg-if", "libc", - "nix 0.24.3", ] [[package]] @@ -90,12 +63,6 @@ dependencies = [ "pkg-config", ] -[[package]] -name = "android-tzdata" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" - [[package]] name = "android_system_properties" version = "0.1.5" @@ -107,51 +74,52 @@ dependencies = [ [[package]] name = "anstream" -version = "0.3.2" +version = "0.6.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163" +checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" dependencies = [ "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", - "is-terminal", + "is_terminal_polyfill", "utf8parse", ] [[package]] name = "anstyle" -version = "1.0.0" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41ed9a86bf92ae6580e0a31281f65a1b1d867c0cc68d5346e2ae128dddfa6a7d" +checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" [[package]] name = "anstyle-parse" -version = "0.2.0" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e765fd216e48e067936442276d1d57399e37bce53c264d6fefbe298080cb57ee" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.0.0" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" +checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" dependencies = [ - "windows-sys", + "windows-sys 0.61.2", ] [[package]] name = "anstyle-wincon" -version = "1.0.1" +version = "3.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "180abfa45703aebe0093f79badacc01b8fd4ea2e35118747e5811127f926e188" +checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" dependencies = [ "anstyle", - "windows-sys", + "once_cell_polyfill", + "windows-sys 0.61.2", ] [[package]] @@ -162,18 +130,9 @@ checksum = "fca387cdc0a1f9c7a7c26556d584aa2d07fc529843082e4861003cde4ab914ed" [[package]] name = "arrayvec" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8868f09ff8cea88b079da74ae569d9b8c62a23c68c746240b704ee6f7525c89c" - -[[package]] -name = "atomic-polyfill" -version = "0.1.11" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3ff7eb3f316534d83a8a2c3d1674ace8a5a71198eba31e2e2b597833f699b28" -dependencies = [ - "critical-section", -] +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "atty" @@ -192,14 +151,14 @@ version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0dde43e75fd43e8a1bf86103336bc699aa8d17ad1be60c76c0bdfd4828e19b78" dependencies = [ - "autocfg 1.1.0", + "autocfg 1.5.0", ] [[package]] name = "autocfg" -version = "1.1.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "az" @@ -213,34 +172,34 @@ version = "0.2.0" dependencies = [ "cortex-m", "cortex-m-rt", - "defmt", + "defmt 0.3.100", "defmt-rtt", "embedded-graphics", - "embedded-hal", + "embedded-hal 1.0.0", + "embedded-hal-bus", "fl16-inputmodules", "fugit", "heapless", - "rp2040-boot2 0.3.0", + "rp2040-boot2", "rp2040-hal", "rp2040-panic-usb-boot", "st7306", "tinybmp", "usb-device", - "usbd-hid", "usbd-serial", ] [[package]] name = "backtrace" -version = "0.3.67" +version = "0.3.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233d376d6d185f2a3093e58f283f60f880315b6c60075b01f36b3b85154564ca" +checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" dependencies = [ "addr2line", "cc", "cfg-if", "libc", - "miniz_oxide 0.6.2", + "miniz_oxide 0.7.4", "object", "rustc-demangle", ] @@ -251,27 +210,25 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5deb64efa5bd81e31fcd1938615a6d98c82eafcbcd787162b6f63b91d6bac5b3" dependencies = [ - "rustc_version 0.2.3", + "rustc_version", ] [[package]] name = "bindgen" -version = "0.64.0" +version = "0.72.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4243e6031260db77ede97ad86c27e501d646a27ab57b59a574f725d98ab1fb4" +checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.10.0", "cexpr", "clang-sys", - "lazy_static", - "lazycell", - "peeking_take_while", + "itertools 0.13.0", "proc-macro2", "quote", - "regex 1.8.4", + "regex 1.12.2", "rustc-hash", "shlex", - "syn 1.0.109", + "syn 2.0.114", ] [[package]] @@ -280,6 +237,12 @@ 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" @@ -288,33 +251,33 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.0.2" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "487f1e0fcbe47deb8b0574e646def1c903389d95241dd1bbcc6ce4a715dfc0c1" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" [[package]] name = "bumpalo" -version = "3.13.0" +version = "3.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" +checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" [[package]] name = "bytemuck" -version = "1.13.1" +version = "1.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea" +checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" [[package]] name = "byteorder" -version = "1.4.3" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.4.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" +checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" [[package]] name = "c1minimal" @@ -322,18 +285,17 @@ version = "0.2.0" dependencies = [ "cortex-m", "cortex-m-rt", - "defmt", + "defmt 0.3.100", "defmt-rtt", - "embedded-hal", + "embedded-hal 1.0.0", "fl16-inputmodules", "fugit", "heapless", - "rp2040-boot2 0.3.0", + "rp2040-boot2", "rp2040-hal", "rp2040-panic-usb-boot", "smart-leds", "usb-device", - "usbd-hid", "usbd-serial", "ws2812-pio", ] @@ -346,11 +308,14 @@ checksum = "981520c98f422fcc584dc1a95c334e6953900b9106bc47a9839b81790009eb21" [[package]] name = "cc" -version = "1.0.79" +version = "1.2.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" +checksum = "755d2fce177175ffca841e9a06afdb2c4ab0f593d53b4dee48147dfaade85932" dependencies = [ + "find-msvc-tools", "jobserver", + "libc", + "shlex", ] [[package]] @@ -370,30 +335,28 @@ dependencies = [ [[package]] name = "cfg-if" -version = "1.0.0" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "chrono" -version = "0.4.26" +version = "0.4.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5" +checksum = "fac4744fb15ae8337dc853fee7fb3f4e48c0fbaa23d0afe49c447b4fab126118" dependencies = [ - "android-tzdata", "iana-time-zone", "js-sys", "num-traits", - "time", "wasm-bindgen", - "winapi", + "windows-link", ] [[package]] name = "clang-sys" -version = "1.6.1" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c688fc74432808e3eb684cae8830a86be1d66a2bd58e1f248ed0960a590baf6f" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" dependencies = [ "glob", "libc", @@ -402,45 +365,43 @@ dependencies = [ [[package]] name = "clap" -version = "4.3.3" +version = "4.5.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca8f255e4b8027970e78db75e78831229c9815fdbfa67eb1a1b777a62e24b4a0" +checksum = "c6e6ff9dcd79cff5cd969a17a545d79e84ab086e444102a591e288a8aa3ce394" dependencies = [ "clap_builder", "clap_derive", - "once_cell 1.18.0", ] [[package]] name = "clap_builder" -version = "4.3.3" +version = "4.5.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acd4f3c17c83b0ba34ffbc4f8bbd74f079413f747f84a6f89292f138057e36ab" +checksum = "fa42cf4d2b7a41bc8f663a7cab4031ebafa1bf3875705bfaf8466dc60ab52c00" dependencies = [ "anstream", "anstyle", - "bitflags 1.3.2", "clap_lex", "strsim", ] [[package]] name = "clap_derive" -version = "4.3.2" +version = "4.5.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8cd2b2a819ad6eec39e8f1d6b53001af1e5469f8c177579cdaeb313115b825f" +checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.114", ] [[package]] name = "clap_lex" -version = "0.5.0" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b" +checksum = "c3e64b0cc0439b12df2fa678eae89a1c56a529fd067a9115f7827f1fffd22b32" [[package]] name = "cloudabi" @@ -470,48 +431,52 @@ checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" [[package]] name = "colorchoice" -version = "1.0.0" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" +checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" [[package]] name = "combine" -version = "4.6.6" +version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" dependencies = [ "bytes", "memchr", ] [[package]] -name = "core-foundation-sys" -version = "0.6.2" +name = "core-foundation" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7ca8a5221364ef15ce201e8ed2f609fc312682a8f4e0e3d4aa5879764e0fa3b" +checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" +dependencies = [ + "core-foundation-sys", + "libc", +] [[package]] name = "core-foundation-sys" -version = "0.8.4" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "coreaudio-rs" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb17e2d1795b1996419648915df94bc7103c28f7b48062d7acf4652fc371b2ff" +checksum = "321077172d79c662f64f5071a03120748d5bb652f5231570141be24cfcd2bace" dependencies = [ "bitflags 1.3.2", - "core-foundation-sys 0.6.2", + "core-foundation-sys", "coreaudio-sys", ] [[package]] name = "coreaudio-sys" -version = "0.2.12" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f034b2258e6c4ade2f73bf87b21047567fb913ee9550837c2316d139b0262b24" +checksum = "ceec7a6067e62d6f931a2baf6f3a751f4a892595bcec1461a3c94ef9949864b6" dependencies = [ "bindgen", ] @@ -523,94 +488,92 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ec610d8f49840a5b376c69663b6369e71f4b34484b9b2eb29fb918d92516cb9" dependencies = [ "bare-metal", - "bitfield", - "embedded-hal", + "bitfield 0.13.2", + "embedded-hal 0.2.7", "volatile-register", ] [[package]] name = "cortex-m-rt" -version = "0.7.3" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee84e813d593101b1723e13ec38b6ab6abbdbaaa4546553f5395ed274079ddb1" +checksum = "801d4dec46b34c299ccf6b036717ae0fce602faa4f4fe816d9013b9a7c9f5ba6" dependencies = [ "cortex-m-rt-macros", ] [[package]] name = "cortex-m-rt-macros" -version = "0.7.0" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f6f3e36f203cfedbc78b357fb28730aa2c6dc1ab060ee5c2405e843988d3c7" +checksum = "e37549a379a9e0e6e576fd208ee60394ccb8be963889eebba3ffe0980364f472" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.114", ] [[package]] name = "cpal" -version = "0.15.2" +version = "0.15.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d959d90e938c5493000514b446987c07aed46c668faaa7d34d6c7a67b1a578c" +checksum = "873dab07c8f743075e57f524c583985fbaf745602acbe916a01539364369a779" dependencies = [ "alsa", - "core-foundation-sys 0.8.4", + "core-foundation-sys", "coreaudio-rs", "dasp_sample", - "jni 0.19.0", + "jni", "js-sys", "libc", "mach2", "ndk", "ndk-context", "oboe", - "once_cell 1.18.0", - "parking_lot 0.12.1", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "windows 0.46.0", + "windows", ] [[package]] name = "crc" -version = "3.0.1" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86ec7a15cbe22e59248fc7eadb1907dab5ba09372595da4d73dd805ed4417dfe" +checksum = "5eb8a2a1cd12ab0d987a5d5e825195d372001a4094a0376319d5a0ad71c1ba0d" dependencies = [ "crc-catalog", ] [[package]] name = "crc-any" -version = "2.4.3" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "774646b687f63643eb0f4bf13dc263cb581c8c9e57973b6ddf78bda3994d88df" +checksum = "a62ec9ff5f7965e4d7280bd5482acd20aadb50d632cf6c1d74493856b011fa73" dependencies = [ "debug-helper", ] [[package]] name = "crc-catalog" -version = "2.2.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cace84e55f07e7301bae1c519df89cdad8cc3cd868413d3fdbdeca9ff3db484" +checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" [[package]] name = "crc32fast" -version = "1.3.2" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" dependencies = [ "cfg-if", ] [[package]] name = "critical-section" -version = "1.1.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6548a0ad5d2549e111e1f6a11a6c2e2d00ce6a3dafe22948d67c2b443f775e52" +checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" [[package]] name = "dasp_sample" @@ -626,9 +589,18 @@ checksum = "f578e8e2c440e7297e008bb5486a3a8a194775224bbc23729b0dbdfaeebf162e" [[package]] name = "defmt" -version = "0.3.4" +version = "0.3.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0963443817029b2024136fc4dd07a5107eb8f977eaf18fcd1fdeb11306b64ad" +dependencies = [ + "defmt 1.0.1", +] + +[[package]] +name = "defmt" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "956673bd3cb347512bf988d1e8d89ac9a82b64f6eec54d3c01c3529dac019882" +checksum = "548d977b6da32fa1d1fda2876453da1e7df63ad0304c8b3dae4dbe7b96f39b78" dependencies = [ "bitflags 1.3.2", "defmt-macros", @@ -636,41 +608,41 @@ dependencies = [ [[package]] name = "defmt-macros" -version = "0.3.5" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4abc4821bd84d3d8f49945ddb24d029be9385ed9b77c99bf2f6296847a6a9f0" +checksum = "3d4fc12a85bcf441cfe44344c4b72d58493178ce635338a3f3b78943aceb258e" dependencies = [ "defmt-parser", - "proc-macro-error", + "proc-macro-error2", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.114", ] [[package]] name = "defmt-parser" -version = "0.3.3" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "269924c02afd7f94bc4cecbfa5c379f6ffcf9766b3408fe63d22c728654eccd0" +checksum = "10d60334b3b2e7c9d91ef8150abfb6fa4c1c39ebbcf4a81c2e346aad939fee3e" dependencies = [ - "thiserror", + "thiserror 2.0.17", ] [[package]] name = "defmt-rtt" -version = "0.4.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "609923761264dd99ed9c7d209718cda4631c5fe84668e0f0960124cbb844c49f" +checksum = "c6eca0aae8aa2cf8333200ecbd236274697bc0a394765c858b3d9372eb1abcfa" dependencies = [ "critical-section", - "defmt", + "defmt 0.3.100", ] [[package]] name = "either" -version = "1.8.1" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] name = "embedded-dma" @@ -683,9 +655,9 @@ dependencies = [ [[package]] name = "embedded-graphics" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd2a8e0250a7e1212828166b01eed0219e488ebb2599f44624a29c9bd249f397" +checksum = "0649998afacf6d575d126d83e68b78c0ab0e00ca2ac7e9b3db11b4cbe8274ef0" dependencies = [ "az", "byteorder", @@ -715,45 +687,65 @@ dependencies = [ ] [[package]] -name = "encode_unicode" -version = "0.3.6" +name = "embedded-hal" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" +checksum = "361a90feb7004eca4019fb28352a9465666b24f840f5c3cddf0ff13920590b89" [[package]] -name = "env_logger" -version = "0.10.0" +name = "embedded-hal-async" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0" +checksum = "0c4c685bbef7fe13c3c6dd4da26841ed3980ef33e841cddfa15ce8a8fb3f1884" dependencies = [ - "humantime", - "is-terminal", - "log", - "regex 1.8.4", - "termcolor", + "embedded-hal 1.0.0", ] [[package]] -name = "errno" -version = "0.3.1" +name = "embedded-hal-bus" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" +checksum = "513e0b3a8fb7d3013a8ae17a834283f170deaf7d0eeab0a7c1a36ad4dd356d22" dependencies = [ - "errno-dragonfly", - "libc", - "windows-sys", + "critical-section", + "embedded-hal 1.0.0", ] [[package]] -name = "errno-dragonfly" -version = "0.1.2" +name = "embedded-hal-nb" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +checksum = "fba4268c14288c828995299e59b12babdbe170f6c6d73731af1b4648142e8605" dependencies = [ - "cc", - "libc", + "embedded-hal 1.0.0", + "nb 1.1.0", +] + +[[package]] +name = "embedded-io" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" + +[[package]] +name = "env_logger" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580" +dependencies = [ + "humantime", + "is-terminal", + "log", + "regex 1.12.2", + "termcolor", ] +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + [[package]] name = "error-chain" version = "0.11.0" @@ -777,13 +769,19 @@ dependencies = [ [[package]] name = "fdeflate" -version = "0.3.0" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d329bdeac514ee06249dabc27877490f17f5d371ec693360768b838e19f3ae10" +checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" dependencies = [ "simd-adler32", ] +[[package]] +name = "find-msvc-tools" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8591b0bcc8a98a64310a2fae1bb3e9b8564dd10e381e6e28010fde8e8e8568db" + [[package]] name = "fl16-inputmodules" version = "0.2.0" @@ -791,36 +789,35 @@ dependencies = [ "cortex-m", "cortex-m-rt", "crc", - "defmt", + "defmt 0.3.100", "defmt-rtt", "embedded-graphics", - "embedded-hal", + "embedded-hal 1.0.0", "fugit", "heapless", "is31fl3741", "num", "num-derive", "num-traits", - "rp2040-boot2 0.3.0", + "rp2040-boot2", "rp2040-hal", "rp2040-panic-usb-boot", "smart-leds", "st7306", "tinybmp", "usb-device", - "usbd-hid", "usbd-serial", "ws2812-pio", ] [[package]] name = "flate2" -version = "1.0.26" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" +checksum = "b375d6465b98090a5f25b1c7703f3859783755aa9a80433b36e0379a3ec2f369" dependencies = [ "crc32fast", - "miniz_oxide 0.7.1", + "miniz_oxide 0.8.9", ] [[package]] @@ -832,6 +829,45 @@ dependencies = [ "num-traits", ] +[[package]] +name = "frunk" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28aef0f9aa070bce60767c12ba9cb41efeaf1a2bc6427f87b7d83f11239a16d7" +dependencies = [ + "frunk_core", + "frunk_derives", +] + +[[package]] +name = "frunk_core" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "476eeaa382e3462b84da5d6ba3da97b5786823c2d0d3a0d04ef088d073da225c" + +[[package]] +name = "frunk_derives" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0b4095fc99e1d858e5b8c7125d2638372ec85aa0fe6c807105cf10b0265ca6c" +dependencies = [ + "frunk_proc_macro_helpers", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "frunk_proc_macro_helpers" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1952b802269f2db12ab7c0bd328d0ae8feaabf19f352a7b0af7bb0c5693abfce" +dependencies = [ + "frunk_core", + "proc-macro2", + "quote", + "syn 2.0.114", +] + [[package]] name = "fuchsia-cprng" version = "0.1.1" @@ -840,13 +876,38 @@ checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" [[package]] name = "fugit" -version = "0.3.7" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17186ad64927d5ac8f02c1e77ccefa08ccd9eaa314d5a4772278aa204a22f7e7" +checksum = "4e639847d312d9a82d2e75b0edcc1e934efcc64e6cb7aa94f0b1fbec0bc231d6" dependencies = [ "gcd", ] +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-core", + "futures-task", + "pin-project-lite", + "pin-utils", + "slab", +] + [[package]] name = "gcd" version = "2.3.0" @@ -855,20 +916,32 @@ checksum = "1d758ba1b47b00caf47f24925c0074ecb20d6dfcffe7f6d53395c0465674841a" [[package]] name = "getrandom" -version = "0.2.10" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "getrandom" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "r-efi", + "wasip2", ] [[package]] name = "gif" -version = "0.12.0" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80792593675e051cf94a4b111980da2ba60d4a83e43e0048c5693baab3977045" +checksum = "4ae047235e33e2829703574b54fdec96bfbad892062d97fed2f76022287de61b" dependencies = [ "color_quant", "weezl", @@ -876,49 +949,46 @@ dependencies = [ [[package]] name = "gimli" -version = "0.27.2" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0a93d233ebf96623465aad4046a8d3aa4da22d4f4beba5388838c8a434bbb4" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" [[package]] name = "glob" -version = "0.3.1" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "hash32" -version = "0.2.1" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" +checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606" dependencies = [ "byteorder", ] [[package]] name = "hashbrown" -version = "0.12.3" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" [[package]] name = "heapless" -version = "0.7.16" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db04bc24a18b9ea980628ecf00e6c0264f3c1426dac36c00cb49b6fbad8b0743" +checksum = "0bfb9eb618601c89945a70e254898da93b13be0388091d42117462b265bb3fad" dependencies = [ - "atomic-polyfill", "hash32", - "rustc_version 0.4.0", - "spin", "stable_deref_trait", ] [[package]] name = "heck" -version = "0.4.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" @@ -931,28 +1001,29 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.3.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" [[package]] name = "humantime" -version = "2.1.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" +checksum = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424" [[package]] name = "iana-time-zone" -version = "0.1.57" +version = "0.1.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" +checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" dependencies = [ "android_system_properties", - "core-foundation-sys 0.8.4", + "core-foundation-sys", "iana-time-zone-haiku", "js-sys", + "log", "wasm-bindgen", - "windows 0.48.0", + "windows-core 0.62.2", ] [[package]] @@ -966,26 +1037,25 @@ dependencies = [ [[package]] name = "image" -version = "0.24.6" +version = "0.24.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "527909aa81e20ac3a44803521443a765550f09b5130c2c2fa1ea59c2f8f50a3a" +checksum = "5690139d2f55868e080017335e4b94cb7414274c74f1669c84fb5feba2c9f69d" dependencies = [ "bytemuck", "byteorder", "color_quant", "gif", - "num-rational", "num-traits", "png", ] [[package]] name = "indexmap" -version = "1.9.3" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" dependencies = [ - "autocfg 1.1.0", + "equivalent", "hashbrown", ] @@ -1003,14 +1073,13 @@ dependencies = [ ] [[package]] -name = "io-lifetimes" -version = "1.0.11" +name = "io-kit-sys" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" +checksum = "617ee6cf8e3f66f3b4ea67a4058564628cde41901316e19f559e14c7c72c5e7b" dependencies = [ - "hermit-abi 0.3.1", - "libc", - "windows-sys", + "core-foundation-sys", + "mach2", ] [[package]] @@ -1021,14 +1090,13 @@ checksum = "7e5b386aef33a1c677be65237cb9d32c3f3ef56bd035949710c4bb13083eb053" [[package]] name = "is-terminal" -version = "0.4.7" +version = "0.4.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f" +checksum = "3640c1c38b8e4e43584d8df18be5fc6b0aa314ce6ebf51b53313d4306cca8e46" dependencies = [ - "hermit-abi 0.3.1", - "io-lifetimes", - "rustix", - "windows-sys", + "hermit-abi 0.5.2", + "libc", + "windows-sys 0.61.2", ] [[package]] @@ -1038,9 +1106,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc9abf02bbdd939fe7f46924002c004d8ab811f093392d8e354e8f583a40badf" dependencies = [ "embedded-graphics-core", - "embedded-hal", + "embedded-hal 0.2.7", ] +[[package]] +name = "is_terminal_polyfill" +version = "1.70.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" + [[package]] name = "itertools" version = "0.10.5" @@ -1051,31 +1125,28 @@ dependencies = [ ] [[package]] -name = "jni" -version = "0.19.0" +name = "itertools" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6df18c2e3db7e453d3c6ac5b3e9d5182664d28788126d39b91f2d1e22b017ec" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" dependencies = [ - "cesu8", - "combine", - "jni-sys", - "log", - "thiserror", - "walkdir", + "either", ] [[package]] name = "jni" -version = "0.20.0" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "039022cdf4d7b1cf548d31f60ae783138e5fd42013f6271049d7df7afadef96c" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" dependencies = [ "cesu8", + "cfg-if", "combine", "jni-sys", "log", - "thiserror", + "thiserror 1.0.69", "walkdir", + "windows-sys 0.45.0", ] [[package]] @@ -1086,33 +1157,29 @@ checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" [[package]] name = "jobserver" -version = "0.1.26" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" dependencies = [ + "getrandom 0.3.4", "libc", ] [[package]] name = "js-sys" -version = "0.3.64" +version = "0.3.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +checksum = "8c942ebf8e95485ca0d52d97da7c5a2c387d0e7f0ba4c35e93bfcaee045955b3" dependencies = [ + "once_cell 1.21.3", "wasm-bindgen", ] [[package]] name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" - -[[package]] -name = "lazycell" -version = "1.3.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "ledmatrix" @@ -1120,35 +1187,34 @@ version = "0.2.0" dependencies = [ "cortex-m", "cortex-m-rt", - "defmt", + "defmt 0.3.100", "defmt-rtt", - "embedded-hal", + "embedded-hal 1.0.0", "fl16-inputmodules", "fugit", "heapless", "is31fl3741", - "rp2040-boot2 0.3.0", + "rp2040-boot2", "rp2040-hal", "rp2040-panic-usb-boot", "usb-device", - "usbd-hid", "usbd-serial", ] [[package]] name = "libc" -version = "0.2.146" +version = "0.2.180" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b" +checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc" [[package]] name = "libloading" -version = "0.7.4" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" dependencies = [ "cfg-if", - "winapi", + "windows-link", ] [[package]] @@ -1171,12 +1237,6 @@ dependencies = [ "pkg-config", ] -[[package]] -name = "linux-raw-sys" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" - [[package]] name = "lock_api" version = "0.1.5" @@ -1188,34 +1248,24 @@ dependencies = [ [[package]] name = "lock_api" -version = "0.4.10" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" dependencies = [ - "autocfg 1.1.0", - "scopeguard 1.1.0", + "scopeguard 1.2.0", ] [[package]] name = "log" -version = "0.4.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" - -[[package]] -name = "mach" -version = "0.1.2" +version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fd13ee2dd61cc82833ba05ade5a30bb3d63f7ced605ef827063c63078302de9" -dependencies = [ - "libc", -] +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" [[package]] name = "mach2" -version = "0.4.1" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d0d1830bcd151a6fc4aea1369af235b36c1528fe976b8ff678683c9995eade8" +checksum = "d640282b302c0bb0a2a8e0233ead9035e3bed871f0b7e81fe4a1ec829765db44" dependencies = [ "libc", ] @@ -1228,15 +1278,15 @@ checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" [[package]] name = "memchr" -version = "2.5.0" +version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" [[package]] name = "micromath" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39617bc909d64b068dcffd0e3e31679195b5576d0c83fadc52690268cc2b2b55" +checksum = "c3c8dda44ff03a2f238717214da50f65d5a53b45cd213a7370424ffdb6fae815" [[package]] name = "minimal-lexical" @@ -1246,20 +1296,20 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.6.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa" +checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" dependencies = [ "adler", ] [[package]] name = "miniz_oxide" -version = "0.7.1" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ - "adler", + "adler2", "simd-adler32", ] @@ -1280,16 +1330,16 @@ checksum = "8d5439c4ad607c3c23abf66de8c8bf57ba8adcd1f129e699851a6e43935d339d" [[package]] name = "ndk" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "451422b7e4718271c8b5b3aadf5adedba43dc76312454b387e98fae0fc951aa0" +checksum = "2076a31b7010b17a38c01907c45b945e8f11495ee4dd588309718901b1f7a5b7" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.10.0", "jni-sys", + "log", "ndk-sys", - "num_enum", - "raw-window-handle", - "thiserror", + "num_enum 0.7.5", + "thiserror 1.0.69", ] [[package]] @@ -1300,34 +1350,22 @@ checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" [[package]] name = "ndk-sys" -version = "0.4.1+23.1.7779620" +version = "0.5.0+25.2.9519653" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cf2aae958bd232cac5069850591667ad422d263686d75b52a065f9badeee5a3" +checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691" dependencies = [ "jni-sys", ] [[package]] name = "nix" -version = "0.24.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa52e972a9a719cecb6864fb88568781eb706bac2cd1d4f04a648542dbf78069" -dependencies = [ - "bitflags 1.3.2", - "cfg-if", - "libc", -] - -[[package]] -name = "nix" -version = "0.26.2" +version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfdda3d196821d6af13126e40375cdf7da646a96114af134d5f417a9a1dc8e1a" +checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" dependencies = [ "bitflags 1.3.2", "cfg-if", "libc", - "static_assertions", ] [[package]] @@ -1342,9 +1380,9 @@ dependencies = [ [[package]] name = "num" -version = "0.4.0" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43db66d1170d347f9a065114077f7dccb00c1b9478c89384490a3425279a4606" +checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" dependencies = [ "num-complex", "num-integer", @@ -1355,63 +1393,61 @@ dependencies = [ [[package]] name = "num-complex" -version = "0.4.3" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02e0d21255c828d6f128a1e41534206671e8c3ea0c62f32291e808dc82cff17d" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" dependencies = [ "num-traits", ] [[package]] name = "num-derive" -version = "0.3.3" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.114", ] [[package]] name = "num-integer" -version = "0.1.45" +version = "0.1.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" dependencies = [ - "autocfg 1.1.0", "num-traits", ] [[package]] name = "num-iter" -version = "0.1.43" +version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" dependencies = [ - "autocfg 1.1.0", + "autocfg 1.5.0", "num-integer", "num-traits", ] [[package]] name = "num-rational" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" dependencies = [ - "autocfg 1.1.0", "num-integer", "num-traits", ] [[package]] name = "num-traits" -version = "0.2.15" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ - "autocfg 1.1.0", + "autocfg 1.5.0", ] [[package]] @@ -1420,7 +1456,17 @@ version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" dependencies = [ - "num_enum_derive", + "num_enum_derive 0.5.11", +] + +[[package]] +name = "num_enum" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" +dependencies = [ + "num_enum_derive 0.7.5", + "rustversion", ] [[package]] @@ -1429,28 +1475,39 @@ version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" dependencies = [ - "proc-macro-crate", "proc-macro2", "quote", "syn 1.0.109", ] +[[package]] +name = "num_enum_derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.114", +] + [[package]] name = "object" -version = "0.30.4" +version = "0.32.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03b4680b86d9cfafba8fc491dc9b6df26b68cf40e9e6cd73909194759a63c385" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" dependencies = [ "memchr", ] [[package]] name = "oboe" -version = "0.5.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8868cc237ee02e2d9618539a23a8d228b9bb3fc2e7a5b11eed3831de77c395d0" +checksum = "e8b61bebd49e5d43f5f8cc7ee2891c16e0f41ec7954d36bcb6c14c5e0de867fb" dependencies = [ - "jni 0.20.0", + "jni", "ndk", "ndk-context", "num-derive", @@ -1460,9 +1517,9 @@ dependencies = [ [[package]] name = "oboe-sys" -version = "0.5.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f44155e7fb718d3cfddcf70690b2b51ac4412f347cd9e4fbe511abe9cd7b5f2" +checksum = "6c8bb09a4a2b1d668170cfe0a7d5bc103f8999fb316c98099b6a9939c9f2e79d" dependencies = [ "cc", ] @@ -1478,9 +1535,15 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.18.0" +version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "once_cell_polyfill" +version = "1.70.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" [[package]] name = "parking_lot" @@ -1494,12 +1557,12 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.12.1" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" dependencies = [ - "lock_api 0.4.10", - "parking_lot_core 0.9.8", + "lock_api 0.4.14", + "parking_lot_core 0.9.12", ] [[package]] @@ -1510,35 +1573,41 @@ checksum = "94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9" dependencies = [ "libc", "rand 0.6.5", - "rustc_version 0.2.3", + "rustc_version", "smallvec 0.6.14", "winapi", ] [[package]] name = "parking_lot_core" -version = "0.9.8" +version = "0.9.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" dependencies = [ "cfg-if", "libc", "redox_syscall", - "smallvec 1.10.0", - "windows-targets 0.48.0", + "smallvec 1.15.1", + "windows-link", ] [[package]] name = "paste" -version = "1.0.12" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f746c4065a8fa3fe23974dd82f15431cc8d40779821001404d10d2e79ca7d79" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] -name = "peeking_take_while" -version = "0.1.2" +name = "pin-project-lite" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pio" @@ -1547,83 +1616,89 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76e09694b50f89f302ed531c1f2a7569f0be5867aee4ab4f8f729bbeec0078e3" dependencies = [ "arrayvec", - "num_enum", + "num_enum 0.5.11", "paste", ] [[package]] name = "pkg-config" -version = "0.3.27" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "png" -version = "0.17.9" +version = "0.17.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59871cc5b6cce7eaccca5a802b4173377a1c2ba90654246789a8fa2334426d11" +checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" dependencies = [ "bitflags 1.3.2", "crc32fast", "fdeflate", "flate2", - "miniz_oxide 0.7.1", + "miniz_oxide 0.8.9", ] +[[package]] +name = "portable-atomic" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f89776e4d69bb58bc6993e99ffa1d11f228b839984854c7daeb5d37f87cbe950" + [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] [[package]] name = "primal-check" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9df7f93fd637f083201473dab4fee2db4c429d32e55e3299980ab3957ab916a0" +checksum = "dc0d895b311e3af9902528fbb8f928688abbd95872819320517cc24ca6b2bd08" dependencies = [ "num-integer", ] [[package]] name = "proc-macro-crate" -version = "1.3.1" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" dependencies = [ - "once_cell 1.18.0", "toml_edit", ] [[package]] -name = "proc-macro-error" -version = "1.0.4" +name = "proc-macro-error-attr2" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" dependencies = [ - "proc-macro-error-attr", "proc-macro2", "quote", - "syn 1.0.109", - "version_check", ] [[package]] -name = "proc-macro-error-attr" -version = "1.0.4" +name = "proc-macro-error2" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" dependencies = [ + "proc-macro-error-attr2", "proc-macro2", "quote", - "version_check", + "syn 2.0.114", ] [[package]] name = "proc-macro2" -version = "1.0.60" +version = "1.0.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dec2b086b7a862cf4de201096214fa870344cf922b2b30c167badb3af3195406" +checksum = "535d180e0ecab6268a3e718bb9fd44db66bbbc256257165fc699dadf70d16fe7" dependencies = [ "unicode-ident", ] @@ -1632,34 +1707,38 @@ dependencies = [ name = "qtpy" version = "0.2.0" dependencies = [ - "adafruit-qt-py-rp2040", "cortex-m", "cortex-m-rt", - "defmt", + "defmt 0.3.100", "defmt-rtt", - "embedded-hal", + "embedded-hal 1.0.0", "fl16-inputmodules", "fugit", "heapless", - "rp2040-boot2 0.3.0", + "rp2040-boot2", "rp2040-hal", "rp2040-panic-usb-boot", "smart-leds", "usb-device", - "usbd-hid", "usbd-serial", "ws2812-pio", ] [[package]] name = "quote" -version = "1.0.28" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9ab9c7eadfd8df19006f1cf1a4aed13540ed5cbc047010ece5826e10825488" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + [[package]] name = "rand" version = "0.6.5" @@ -1731,7 +1810,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom", + "getrandom 0.2.17", ] [[package]] @@ -1796,12 +1875,6 @@ dependencies = [ "rand_core 0.3.1", ] -[[package]] -name = "raw-window-handle" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" - [[package]] name = "rdrand" version = "0.4.0" @@ -1813,11 +1886,11 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.3.5" +version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.10.0", ] [[package]] @@ -1835,13 +1908,25 @@ dependencies = [ [[package]] name = "regex" -version = "1.8.4" +version = "1.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0ab3ca65655bb1e41f2a8c8cd662eb4fb035e67c3f78da1d61dffe89d07300f" +checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" dependencies = [ - "aho-corasick 1.0.2", + "aho-corasick 1.1.4", "memchr", - "regex-syntax 0.7.2", + "regex-automata", + "regex-syntax 0.8.8", +] + +[[package]] +name = "regex-automata" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" +dependencies = [ + "aho-corasick 1.1.4", + "memchr", + "regex-syntax 0.8.8", ] [[package]] @@ -1855,26 +1940,32 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.7.2" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "436b050e76ed2903236f032a59761c1eb99e1b0aead2c257922771dab1fc8c78" +checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" [[package]] name = "rgb" -version = "0.8.36" +version = "0.8.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20ec2d3e3fc7a92ced357df9cebd5a10b6fb2aa1ee797bf7e9ce2f17dffc8f59" +checksum = "0c6a884d2998352bb4daf0183589aec883f16a6da1f4dde84d8e2e9a5409a1ce" dependencies = [ "bytemuck", ] [[package]] -name = "rp2040-boot2" -version = "0.2.1" +name = "rp-binary-info" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f582261945fa215d40e2988b4df595d11c0908c0fff97a0fe23df766d117b790" + +[[package]] +name = "rp-hal-common" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c773ec49b836077aa144b58dc7654a243e1eecdb6cf0d25361ae7c7600fabd8" +checksum = "8288358786b1458fb2caac8c4b40fb529ef4200d6c46467e2695b7a8ba573ae8" dependencies = [ - "crc-any", + "fugit", ] [[package]] @@ -1888,20 +1979,28 @@ dependencies = [ [[package]] name = "rp2040-hal" -version = "0.8.2" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1369bb84862d7f69391a96606b2f29a00bfce7f29a749e23d5f01fc3f607ada0" +checksum = "9fb79a4590775204387f334672e6f79c0d734d0a159da23d60677b3c10fa1245" dependencies = [ + "bitfield 0.14.0", "cortex-m", "critical-section", "embedded-dma", - "embedded-hal", + "embedded-hal 0.2.7", + "embedded-hal 1.0.0", + "embedded-hal-async", + "embedded-hal-nb", + "embedded-io", + "frunk", "fugit", - "itertools", + "itertools 0.10.5", "nb 1.1.0", "paste", "pio", "rand_core 0.6.4", + "rp-binary-info", + "rp-hal-common", "rp2040-hal-macros", "rp2040-pac", "usb-device", @@ -1923,36 +2022,36 @@ dependencies = [ [[package]] name = "rp2040-pac" -version = "0.4.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9192cafbb40d717c9e0ddf767aaf9c69fee1b4e48d22ed853b57b11f6d9f3d7e" +checksum = "83cbcd3f7a0ca7bbe61dc4eb7e202842bee4e27b769a7bf3a4a72fa399d6e404" dependencies = [ "cortex-m", "cortex-m-rt", + "critical-section", "vcell", ] [[package]] name = "rp2040-panic-usb-boot" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b311d2a72e5a63d5511345b61fe7dd02ce0990bd093ba3dc94b3e80b0a0e373" +checksum = "01ea03783e5d4bfa7ae0504dea4e5aa7d03d18e1694241de3e102adf8966c355" dependencies = [ "cortex-m", - "rp2040-hal", ] [[package]] name = "rustc-demangle" -version = "0.1.23" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +checksum = "b50b8869d9fc858ce7266cce0194bd74df58b9d0e3f6df3a9fc8eb470d95c09d" [[package]] name = "rustc-hash" -version = "1.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" [[package]] name = "rustc_version" @@ -1960,23 +2059,14 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" dependencies = [ - "semver 0.9.0", -] - -[[package]] -name = "rustc_version" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" -dependencies = [ - "semver 1.0.17", + "semver", ] [[package]] name = "rustfft" -version = "6.1.0" +version = "6.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e17d4f6cbdb180c9f4b2a26bbf01c4e647f1e1dea22fe8eb9db54198b32f9434" +checksum = "21db5f9893e91f41798c88680037dba611ca6674703c1a18601b01a72c8adb89" dependencies = [ "num-complex", "num-integer", @@ -1984,22 +2074,13 @@ dependencies = [ "primal-check", "strength_reduce", "transpose", - "version_check", ] [[package]] -name = "rustix" -version = "0.37.20" +name = "rustversion" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b96e891d04aa506a6d1f318d2771bcb1c7dfda84e126660ace067c9b474bb2c0" -dependencies = [ - "bitflags 1.3.2", - "errno", - "io-lifetimes", - "libc", - "linux-raw-sys", - "windows-sys", -] +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "same-file" @@ -2018,9 +2099,9 @@ checksum = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" [[package]] name = "scopeguard" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "semver" @@ -2031,12 +2112,6 @@ dependencies = [ "semver-parser", ] -[[package]] -name = "semver" -version = "1.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" - [[package]] name = "semver-parser" version = "0.7.0" @@ -2045,39 +2120,70 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.164" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e8c8cf938e98f769bc164923b06dce91cea1751522f46f8466461af04c9027d" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] [[package]] name = "serialport" -version = "4.2.1" +version = "4.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "353dc2cbfc67c9a14a89a1292a9d8e819bd51066b083e08c1974ba08e3f48c62" +checksum = "21f60a586160667241d7702c420fc223939fb3c0bb8d3fac84f78768e8970dee" dependencies = [ - "CoreFoundation-sys", - "IOKit-sys", - "bitflags 2.0.2", + "bitflags 2.10.0", "cfg-if", + "core-foundation", + "core-foundation-sys", + "io-kit-sys", "libudev", "mach2", - "nix 0.26.2", - "regex 1.8.4", - "scopeguard 1.1.0", - "winapi", + "nix", + "quote", + "scopeguard 1.2.0", + "unescaper", + "windows-sys 0.52.0", ] [[package]] name = "shlex" -version = "1.1.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "simd-adler32" -version = "0.3.5" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "238abfbb77c1915110ad968465608b68e869e0772622c9656714e73e5a1a522f" +checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" + +[[package]] +name = "slab" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" [[package]] name = "smallvec" @@ -2090,9 +2196,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.10.0" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" [[package]] name = "smart-leds" @@ -2100,7 +2206,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38dd45fa275f70b4110eac5f5182611ad384f88bb22b68b9a9c3cafd7015290b" dependencies = [ - "smart-leds-trait", + "smart-leds-trait 0.2.1", ] [[package]] @@ -2113,45 +2219,29 @@ dependencies = [ ] [[package]] -name = "spin" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" -dependencies = [ - "lock_api 0.4.10", -] - -[[package]] -name = "ssmarshal" -version = "1.0.0" +name = "smart-leds-trait" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3e6ad23b128192ed337dfa4f1b8099ced0c2bf30d61e551b65fda5916dbb850" +checksum = "a7f4441a131924d58da6b83a7ad765c460e64630cce504376c3a87a2558c487f" dependencies = [ - "encode_unicode", - "serde", + "rgb", ] [[package]] name = "st7306" -version = "0.8.2" -source = "git+https://github.com/FrameworkComputer/st7306-rs?branch=update-deps#8283fcdb91a559fe3a12cb01bc6523d737c28be8" +version = "0.10.0" +source = "git+https://github.com/FrameworkComputer/st7306-rs?tag=v0.10.0#cd0269043178fb9a3ebc3fde1c7fe2cf386c5ef7" dependencies = [ "embedded-graphics", - "embedded-hal", + "embedded-hal 1.0.0", "nb 1.1.0", ] [[package]] name = "stable_deref_trait" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" - -[[package]] -name = "static_assertions" -version = "1.1.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" [[package]] name = "static_vcruntime" @@ -2167,9 +2257,9 @@ checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" [[package]] name = "strsim" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "syn" @@ -2184,9 +2274,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.18" +version = "2.0.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32d41677bcbe24c20c52e7c70b0d8db04134c5d1066bf98662e2871ad200ea3e" +checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a" dependencies = [ "proc-macro2", "quote", @@ -2195,51 +2285,60 @@ dependencies = [ [[package]] name = "termcolor" -version = "1.2.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" dependencies = [ "winapi-util", ] [[package]] name = "thiserror" -version = "1.0.40" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" +checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" dependencies = [ - "thiserror-impl", + "thiserror-impl 2.0.17", ] [[package]] name = "thiserror-impl" -version = "1.0.40" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.114", ] [[package]] -name = "thread_local" -version = "0.3.6" +name = "thiserror-impl" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" +checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ - "lazy_static", + "proc-macro2", + "quote", + "syn 2.0.114", ] [[package]] -name = "time" -version = "0.1.45" +name = "thread_local" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" +checksum = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" dependencies = [ - "libc", - "wasi 0.10.0+wasi-snapshot-preview1", - "winapi", + "lazy_static", ] [[package]] @@ -2275,26 +2374,39 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.2" +version = "0.7.5+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a76a9312f5ba4c2dec6b9161fdf25d87ad8a09256ccea5a556fef03c706a10f" +checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" +dependencies = [ + "serde_core", +] [[package]] name = "toml_edit" -version = "0.19.10" +version = "0.23.10+spec-1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2380d56e8670370eee6566b0bfd4265f65b3f432e8c6d85623f728d4fa31f739" +checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269" dependencies = [ "indexmap", "toml_datetime", + "toml_parser", + "winnow", +] + +[[package]] +name = "toml_parser" +version = "1.0.6+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3198b4b0a8e11f09dd03e133c0280504d0801269e9afa46362ffde1cbeebf44" +dependencies = [ "winnow", ] [[package]] name = "transpose" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6522d49d03727ffb138ae4cbc1283d3774f0d10aa7f9bf52e6784c45daf9b23" +checksum = "1ad61aed86bc3faea4300c7aee358b4c6d0c8d6ccc36524c96e4c92ccf26e77e" dependencies = [ "num-integer", "strength_reduce", @@ -2316,60 +2428,39 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "abd2fc5d32b590614af8b0a20d837f32eca055edd0bbead59a9cfe80858be003" [[package]] -name = "unicode-ident" -version = "1.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15811caf2415fb889178633e7724bad2509101cde276048e013b9def5e51fa0" - -[[package]] -name = "usb-device" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f6cc3adc849b5292b4075fc0d5fdcf2f24866e88e336dd27a8943090a520508" - -[[package]] -name = "usbd-hid" -version = "0.6.1" +name = "unescaper" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "975bd411f4a939986751ea09992a24fa47c4d25c6ed108d04b4c2999a4fd0132" +checksum = "4064ed685c487dbc25bd3f0e9548f2e34bab9d18cefc700f9ec2dba74ba1138e" dependencies = [ - "serde", - "ssmarshal", - "usb-device", - "usbd-hid-macros", + "thiserror 2.0.17", ] [[package]] -name = "usbd-hid-descriptors" -version = "0.1.2" +name = "unicode-ident" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcbee8c6735e90894fba04770bc41e11fd3c5256018856e15dc4dd1e6c8a3dd1" -dependencies = [ - "bitfield", -] +checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" [[package]] -name = "usbd-hid-macros" -version = "0.6.0" +name = "usb-device" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "261079a9ada015fa1acac7cc73c98559f3a92585e15f508034beccf6a2ab75a2" +checksum = "98816b1accafbb09085168b90f27e93d790b4bfa19d883466b5e53315b5f06a6" dependencies = [ - "byteorder", - "proc-macro2", - "quote", - "serde", - "syn 1.0.109", - "usbd-hid-descriptors", + "heapless", + "portable-atomic", ] [[package]] name = "usbd-serial" -version = "0.1.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db75519b86287f12dcf0d171c7cf4ecc839149fe9f3b720ac4cfce52959e1dfe" +checksum = "065e4eaf93db81d5adac82d9cef8f8da314cb640fa7f89534b972383f1cf80fc" dependencies = [ - "embedded-hal", - "nb 0.1.3", + "embedded-hal 0.2.7", + "embedded-io", + "nb 1.1.0", "usb-device", ] @@ -2381,9 +2472,9 @@ checksum = "7fcfc827f90e53a02eaef5e535ee14266c1d569214c6aa70133a624d8a3164ba" [[package]] name = "utf8parse" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "vcell" @@ -2391,12 +2482,6 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77439c1b53d2303b20d9459b1ade71a83c716e3f9c34f3228c00e6f185d6c002" -[[package]] -name = "version_check" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" - [[package]] name = "vis-core" version = "0.1.0" @@ -2408,7 +2493,7 @@ dependencies = [ "env_logger", "ezconf", "log", - "parking_lot 0.12.1", + "parking_lot 0.12.5", "rustfft", "triple_buffer", ] @@ -2421,18 +2506,18 @@ checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" [[package]] name = "volatile-register" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ee8f19f9d74293faf70901bc20ad067dc1ad390d2cbf1e3f75f721ffee908b6" +checksum = "de437e2a6208b014ab52972a27e59b33fa2920d3e00fe05026167a1c509d19cc" dependencies = [ "vcell", ] [[package]] name = "walkdir" -version = "2.3.3" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" dependencies = [ "same-file", "winapi-util", @@ -2440,58 +2525,51 @@ dependencies = [ [[package]] name = "wasi" -version = "0.10.0+wasi-snapshot-preview1" +version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] -name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" +name = "wasip2" +version = "1.0.2+wasi-0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" +dependencies = [ + "wit-bindgen", +] [[package]] name = "wasm-bindgen" -version = "0.2.87" +version = "0.2.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +checksum = "64024a30ec1e37399cf85a7ffefebdb72205ca1c972291c51512360d90bd8566" dependencies = [ "cfg-if", + "once_cell 1.21.3", + "rustversion", "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.87" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" -dependencies = [ - "bumpalo", - "log", - "once_cell 1.18.0", - "proc-macro2", - "quote", - "syn 2.0.18", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.37" +version = "0.4.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" +checksum = "70a6e77fd0ae8029c9ea0063f87c46fde723e7d887703d74ad2616d792e51e6f" dependencies = [ "cfg-if", + "futures-util", "js-sys", + "once_cell 1.21.3", "wasm-bindgen", "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.87" +version = "0.2.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +checksum = "008b239d9c740232e71bd39e8ef6429d27097518b6b30bdf9086833bd5b6d608" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2499,28 +2577,31 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.87" +version = "0.2.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +checksum = "5256bae2d58f54820e6490f9839c49780dff84c65aeab9e772f15d5f0e913a55" dependencies = [ + "bumpalo", "proc-macro2", "quote", - "syn 2.0.18", - "wasm-bindgen-backend", + "syn 2.0.114", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.87" +version = "0.2.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" +checksum = "1f01b580c9ac74c8d8f0c0e4afb04eeef2acf145458e52c03845ee9cd23e3d12" +dependencies = [ + "unicode-ident", +] [[package]] name = "web-sys" -version = "0.3.64" +version = "0.3.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" +checksum = "312e32e551d92129218ea9a2452120f4aabc03529ef03e4d0d82fb2780608598" dependencies = [ "js-sys", "wasm-bindgen", @@ -2528,9 +2609,9 @@ dependencies = [ [[package]] name = "weezl" -version = "0.1.7" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb" +checksum = "a28ac98ddc8b9274cb41bb4d9d4d5c425b6020c50c46f25559911905610b4a88" [[package]] name = "winapi" @@ -2550,11 +2631,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.5" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "winapi", + "windows-sys 0.61.2", ] [[package]] @@ -2565,29 +2646,117 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows" -version = "0.46.0" +version = "0.54.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdacb41e6a96a052c6cb63a144f24900236121c6f63f4f8219fef5977ecb0c25" +checksum = "9252e5725dbed82865af151df558e754e4a3c2c30818359eb17465f1346a1b49" +dependencies = [ + "windows-core 0.54.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.54.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12661b9c89351d684a50a8a643ce5f608e20243b9fb84687800163429f161d65" +dependencies = [ + "windows-result 0.1.2", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link", + "windows-result 0.4.1", + "windows-strings", +] + +[[package]] +name = "windows-implement" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "windows-interface" +version = "0.59.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-result" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-result" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" dependencies = [ "windows-targets 0.42.2", ] [[package]] -name = "windows" -version = "0.48.0" +name = "windows-sys" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.48.0", + "windows-targets 0.52.6", ] [[package]] name = "windows-sys" -version = "0.48.0" +version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" dependencies = [ - "windows-targets 0.48.0", + "windows-link", ] [[package]] @@ -2607,17 +2776,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.48.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.48.0", - "windows_aarch64_msvc 0.48.0", - "windows_i686_gnu 0.48.0", - "windows_i686_msvc 0.48.0", - "windows_x86_64_gnu 0.48.0", - "windows_x86_64_gnullvm 0.48.0", - "windows_x86_64_msvc 0.48.0", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] [[package]] @@ -2628,9 +2798,9 @@ checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.48.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" @@ -2640,9 +2810,9 @@ checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" [[package]] name = "windows_aarch64_msvc" -version = "0.48.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" @@ -2652,9 +2822,15 @@ checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" [[package]] name = "windows_i686_gnu" -version = "0.48.0" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" @@ -2664,9 +2840,9 @@ checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" [[package]] name = "windows_i686_msvc" -version = "0.48.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" @@ -2676,9 +2852,9 @@ checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" [[package]] name = "windows_x86_64_gnu" -version = "0.48.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" @@ -2688,9 +2864,9 @@ checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" [[package]] name = "windows_x86_64_gnullvm" -version = "0.48.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" @@ -2700,30 +2876,57 @@ checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" [[package]] name = "windows_x86_64_msvc" -version = "0.48.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.4.6" +version = "0.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61de7bac303dc551fe038e2b3cef0f571087a47571ea6e79a87692ac99b99699" +checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" dependencies = [ "memchr", ] +[[package]] +name = "wit-bindgen" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" + [[package]] name = "ws2812-pio" -version = "0.6.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d219e3b43c1e14305b36363060c0348d560314e235d999cf492bbbab1f38e8d" +checksum = "ef27fde9c7b196ae28a24ee85cd50d73d3e39a3306f971090f871e8c6e7c4d24" dependencies = [ "cortex-m", - "embedded-hal", + "embedded-hal 0.2.7", "fugit", "nb 1.1.0", "pio", "rp2040-hal", - "smart-leds-trait", + "smart-leds-trait 0.2.1", + "smart-leds-trait 0.3.2", +] + +[[package]] +name = "zerocopy" +version = "0.8.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "668f5168d10b9ee831de31933dc111a459c97ec93225beb307aed970d1372dfd" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c7962b26b0a8685668b671ee4b54d007a67d4eaf05fda79ac0ecf41e32270f1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", ] diff --git a/Cargo.toml b/Cargo.toml index cf32392a..5182cad9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,27 +23,27 @@ default-members = ["fl16-inputmodules"] [workspace.dependencies] cortex-m = "0.7" cortex-m-rt = "0.7.3" -embedded-hal = { version = "0.2.7", features = ["unproven"] } +embedded-hal = "1.0" +embedded-hal-bus = "0.3" panic-probe = { version = "0.3", features = ["print-defmt"] } -rp2040-panic-usb-boot = "0.5.0" -rp2040-hal = { version = "0.8", features = ["rt", "critical-section-impl"] } +rp2040-panic-usb-boot = "0.6.0" +rp2040-hal = { version = "0.11", features = ["rt", "critical-section-impl"] } rp2040-boot2 = "0.3" defmt = "0.3" defmt-rtt = "0.4" # USB Serial -usb-device = "0.2.9" -heapless = "0.7.16" -usbd-serial = "0.1.1" -usbd-hid = "0.6.1" +usb-device = "0.3.2" +heapless = "0.8" +usbd-serial = "0.2.2" fugit = "0.3.7" is31fl3741 = { version = "0.4.0", features = ["framework_ledmatrix"] } # B1 Display -st7306 = { git = "https://github.com/FrameworkComputer/st7306-rs", branch = "update-deps" } +st7306 = { git = "https://github.com/FrameworkComputer/st7306-rs", tag = "v0.10.0" } embedded-graphics = "0.8" tinybmp = "0.5.0" # C1 Minimal smart-leds = "0.3.0" -ws2812-pio = "0.6.0" +ws2812-pio = "0.9.0" [profile.dev.package.ledmatrix] codegen-units = 1 diff --git a/b1display/Cargo.toml b/b1display/Cargo.toml index 49d878fc..8ab98270 100644 --- a/b1display/Cargo.toml +++ b/b1display/Cargo.toml @@ -7,6 +7,7 @@ version = "0.2.0" cortex-m.workspace = true cortex-m-rt.workspace = true embedded-hal.workspace = true +embedded-hal-bus.workspace = true defmt.workspace = true defmt-rtt.workspace = true @@ -22,7 +23,6 @@ rp2040-boot2.workspace = true usb-device.workspace = true heapless.workspace = true usbd-serial.workspace = true -usbd-hid.workspace = true fugit.workspace = true st7306.workspace = true diff --git a/b1display/src/main.rs b/b1display/src/main.rs index 81ac88a2..796c2463 100644 --- a/b1display/src/main.rs +++ b/b1display/src/main.rs @@ -1,15 +1,17 @@ -//! LED Matrix Module +//! B1 Display Module #![no_std] #![no_main] #![allow(clippy::needless_range_loop)] use bsp::entry; -use cortex_m::delay::Delay; //use defmt::*; use defmt_rtt as _; -use embedded_hal::digital::v2::{InputPin, OutputPin}; +use embedded_hal::delay::DelayNs; +use embedded_hal::digital::{InputPin, OutputPin}; +use embedded_hal::spi::SpiDevice; +use embedded_hal_bus::spi::{ExclusiveDevice, NoDelay}; -use rp2040_hal::gpio::{Output, Pin, PushPull}; +use rp2040_hal::gpio::{FunctionSioOutput, FunctionSpi, Pin, PullDown, PullNone}; //#[cfg(debug_assertions)] //use panic_probe as _; use rp2040_panic_usb_boot as _; @@ -17,7 +19,6 @@ use rp2040_panic_usb_boot as _; use embedded_graphics::pixelcolor::Rgb565; use embedded_graphics::prelude::*; use embedded_graphics::primitives::*; -use embedded_hal::blocking::spi; use st7306::{FpsConfig, HpmFps, LpmFps, PowerMode, ST7306}; // Provide an alias for our BSP so we can switch targets quickly. @@ -37,17 +38,36 @@ use bsp::hal::{ use fugit::RateExtU32; // USB Device support +use usb_device::descriptor::lang_id::LangID; +use usb_device::device::StringDescriptors; use usb_device::{class_prelude::*, prelude::*}; // USB Communications Class Device support use usbd_serial::{SerialPort, USB_CLASS_CDC}; // Used to demonstrate writing formatted strings -use core::fmt::Debug; use core::fmt::Write; use heapless::String; use fl16_inputmodules::control::*; + +/// Wrapper around cortex_m::delay::Delay that implements embedded-hal 1.0's DelayNs +struct Delay(cortex_m::delay::Delay); + +impl DelayNs for Delay { + fn delay_ns(&mut self, ns: u32) { + // Round up to microseconds + self.0.delay_us(ns.div_ceil(1000)); + } + + fn delay_us(&mut self, us: u32) { + self.0.delay_us(us); + } + + fn delay_ms(&mut self, ms: u32) { + self.0.delay_ms(ms); + } +} use fl16_inputmodules::graphics::*; use fl16_inputmodules::serialnum::{device_release, get_serialnum}; @@ -58,11 +78,19 @@ use fl16_inputmodules::serialnum::{device_release, get_serialnum}; // 00000000 - Device Identifier const DEFAULT_SERIAL: &str = "FRAKDEAM0000000000"; +type SpiPinout = ( + Pin, // TX/MOSI + Pin, // RX/MISO + Pin, // SCK +); + +type SpiBus = rp2040_hal::spi::Spi; +type CsPin = Pin; + type B1ST7306 = ST7306< - rp2040_hal::Spi, - Pin>, - Pin>, - Pin>, + ExclusiveDevice, + Pin, // DC + Pin, // RST 25, 200, >; @@ -92,7 +120,10 @@ fn main() -> ! { .ok() .unwrap(); - let mut delay = cortex_m::delay::Delay::new(core.SYST, clocks.system_clock.freq().to_Hz()); + let mut delay = Delay(cortex_m::delay::Delay::new( + core.SYST, + clocks.system_clock.freq().to_Hz(), + )); let pins = bsp::Pins::new( pac.IO_BANK0, @@ -101,6 +132,9 @@ fn main() -> ! { &mut pac.RESETS, ); + // Create timer before USB bus since USB bus moves clocks.usb_clock + let timer = Timer::new(pac.TIMER, &mut pac.RESETS, &clocks); + // Set up the USB driver let usb_bus = UsbBusAllocator::new(usb::UsbBus::new( pac.USBCTRL_REGS, @@ -120,32 +154,39 @@ fn main() -> ! { }; let mut usb_dev = UsbDeviceBuilder::new(&usb_bus, UsbVidPid(0x32ac, 0x0021)) - .manufacturer("Framework Computer Inc") - .product("B1 Display") - .serial_number(serialnum) + .strings(&[StringDescriptors::new(LangID::EN_US) + .manufacturer("Framework Computer Inc") + .product("B1 Display") + .serial_number(serialnum)]) + .unwrap() .max_power(500) // TODO: Check how much + .unwrap() .device_release(device_release()) // TODO: Assign dynamically based on crate version .device_class(USB_CLASS_CDC) .build(); - // Display SPI pins - let _spi_sclk = pins.scl.into_mode::(); - let _spi_mosi = pins.sda.into_mode::(); - let _spi_miso = pins.miso.into_mode::(); - let spi = bsp::hal::Spi::<_, _, 8>::new(pac.SPI0); + // Display SPI pins - order is (TX/MOSI, RX/MISO, SCK) + // Reconfigure pins to PullNone before setting SPI function + let spi_mosi = pins.sda.reconfigure::(); + let spi_miso = pins.miso.reconfigure::(); + let spi_sclk = pins.scl.reconfigure::(); + let spi = bsp::hal::Spi::<_, _, _, 8>::new(pac.SPI0, (spi_mosi, spi_miso, spi_sclk)); // Display control pins let dc = pins.dc.into_push_pull_output(); - let mut cs = pins.cs.into_push_pull_output(); - cs.set_low().unwrap(); + let cs = pins.cs.into_push_pull_output(); let rst = pins.rstb.into_push_pull_output(); let spi = spi.init( &mut pac.RESETS, clocks.peripheral_clock.freq(), 16_000_000u32.Hz(), - &embedded_hal::spi::MODE_0, + embedded_hal::spi::MODE_0, ); + // Wrap SPI bus with ExclusiveDevice to get SpiDevice trait + // ExclusiveDevice manages CS for us + let spi_device = ExclusiveDevice::new_no_delay(spi, cs).unwrap(); + let mut state = B1DIsplayState { sleeping: SimpleSleepState::Awake, screen_inverted: false, @@ -165,9 +206,8 @@ fn main() -> ! { const COL_START: u16 = 0x12; const ROW_START: u16 = 0x00; let mut disp: B1ST7306 = ST7306::new( - spi, + spi_device, dc, - cs, rst, INVERTED, AUTO_PWRDOWN, @@ -219,9 +259,8 @@ fn main() -> ! { } disp.flush().unwrap(); - let sleep = pins.sleep.into_pull_down_input(); + let mut sleep = pins.sleep.into_pull_down_input(); - let timer = Timer::new(pac.TIMER, &mut pac.RESETS); let mut prev_timer = timer.get_counter().ticks(); let mut ticks = 0; @@ -343,17 +382,16 @@ fn main() -> ! { } } -fn handle_sleep( +fn handle_sleep( go_sleeping: bool, state: &mut B1DIsplayState, - delay: &mut Delay, - disp: &mut ST7306, + delay: &mut DELAY, + disp: &mut ST7306, ) where - SPI: spi::Write, + SPI: SpiDevice, DC: OutputPin, - CS: OutputPin, RST: OutputPin, - >::Error: Debug, + DELAY: DelayNs, { match (state.sleeping.clone(), go_sleeping) { (SimpleSleepState::Awake, false) => (), diff --git a/c1minimal/Cargo.toml b/c1minimal/Cargo.toml index a932ccb3..e2546d27 100644 --- a/c1minimal/Cargo.toml +++ b/c1minimal/Cargo.toml @@ -22,7 +22,6 @@ rp2040-boot2.workspace = true usb-device.workspace = true heapless.workspace = true usbd-serial.workspace = true -usbd-hid.workspace = true fugit.workspace = true # C1 Minimal diff --git a/c1minimal/src/main.rs b/c1minimal/src/main.rs index 9967774e..599632a1 100644 --- a/c1minimal/src/main.rs +++ b/c1minimal/src/main.rs @@ -11,9 +11,10 @@ use bsp::entry; use cortex_m::delay::Delay; use defmt_rtt as _; -use embedded_hal::digital::v2::InputPin; +use embedded_hal::digital::InputPin; use rp2040_hal::gpio::bank0::Gpio16; +use rp2040_hal::gpio::{FunctionPio0, Pin, PullDown}; use rp2040_hal::pio::PIOExt; //#[cfg(debug_assertions)] //use panic_probe as _; @@ -34,6 +35,8 @@ use bsp::hal::{ }; // USB Device support +use usb_device::descriptor::lang_id::LangID; +use usb_device::device::StringDescriptors; use usb_device::{class_prelude::*, prelude::*}; // USB Communications Class Device support @@ -45,11 +48,11 @@ use usbd_serial::{SerialPort, USB_CLASS_CDC}; // RGB LED use smart_leds::{colors, SmartLedsWrite, RGB8}; -pub type Ws2812<'a> = ws2812_pio::Ws2812< +pub type Ws2812 = ws2812_pio::Ws2812< crate::pac::PIO0, rp2040_hal::pio::SM0, - rp2040_hal::timer::CountDown<'a>, - Gpio16, + rp2040_hal::timer::CountDown, + Pin, >; use fl16_inputmodules::control::*; @@ -90,6 +93,9 @@ fn main() -> ! { &mut pac.RESETS, ); + // Create timer before USB bus since USB bus moves clocks.usb_clock + let timer = Timer::new(pac.TIMER, &mut pac.RESETS, &clocks); + // Set up the USB driver let usb_bus = UsbBusAllocator::new(usb::UsbBus::new( pac.USBCTRL_REGS, @@ -109,15 +115,18 @@ fn main() -> ! { }; let mut usb_dev = UsbDeviceBuilder::new(&usb_bus, UsbVidPid(0x32ac, 0x0022)) - .manufacturer("Framework Computer Inc") - .product("C1 Minimal Input Module") - .serial_number(serialnum) + .strings(&[StringDescriptors::new(LangID::EN_US) + .manufacturer("Framework Computer Inc") + .product("C1 Minimal Input Module") + .serial_number(serialnum)]) + .unwrap() .max_power(500) // TODO: Check how much + .unwrap() .device_release(device_release()) .device_class(USB_CLASS_CDC) .build(); - let sleep = pins.sleep.into_pull_down_input(); + let mut sleep = pins.sleep.into_pull_down_input(); let mut state = C1MinimalState { sleeping: SimpleSleepState::Awake, @@ -125,12 +134,11 @@ fn main() -> ! { brightness: 10, }; - let timer = Timer::new(pac.TIMER, &mut pac.RESETS); let mut prev_timer = timer.get_counter().ticks(); let (mut pio, sm0, _, _, _) = pac.PIO0.split(&mut pac.RESETS); let mut ws2812: Ws2812 = ws2812_pio::Ws2812::new( - pins.rgb_led.into_mode(), + pins.rgb_led.into_function(), &mut pio, sm0, clocks.peripheral_clock.freq(), diff --git a/devenv.lock b/devenv.lock new file mode 100644 index 00000000..4158dce3 --- /dev/null +++ b/devenv.lock @@ -0,0 +1,123 @@ +{ + "nodes": { + "devenv": { + "locked": { + "dir": "src/modules", + "lastModified": 1768738650, + "owner": "cachix", + "repo": "devenv", + "rev": "43328b8bc4096055622390ee4fc21b5977aab2e3", + "type": "github" + }, + "original": { + "dir": "src/modules", + "owner": "cachix", + "repo": "devenv", + "type": "github" + } + }, + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1767039857, + "owner": "NixOS", + "repo": "flake-compat", + "rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "flake-compat", + "type": "github" + } + }, + "git-hooks": { + "inputs": { + "flake-compat": "flake-compat", + "gitignore": "gitignore", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1767281941, + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "f0927703b7b1c8d97511c4116eb9b4ec6645a0fa", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "git-hooks.nix", + "type": "github" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "git-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1762808025, + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "cb5e3fdca1de58ccbc3ef53de65bd372b48f567c", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1767052823, + "owner": "cachix", + "repo": "devenv-nixpkgs", + "rev": "538a5124359f0b3d466e1160378c87887e3b51a4", + "type": "github" + }, + "original": { + "owner": "cachix", + "ref": "rolling", + "repo": "devenv-nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "devenv": "devenv", + "git-hooks": "git-hooks", + "nixpkgs": "nixpkgs", + "pre-commit-hooks": [ + "git-hooks" + ], + "rust-overlay": "rust-overlay" + } + }, + "rust-overlay": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1768704795, + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "4b7472a78857ac789fb26616040f55cfcbd36c6e", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/devenv.nix b/devenv.nix new file mode 100644 index 00000000..f875fe01 --- /dev/null +++ b/devenv.nix @@ -0,0 +1,17 @@ +{ pkgs, lib, config, inputs, ... }: + +{ + packages = with pkgs; [ + flip-link + cargo-make + pkg-config + systemd + ]; + + languages.rust = { + enable = true; + targets = [ "thumbv6m-none-eabi" ]; + # https://devenv.sh/reference/options/#languagesrustchannel + channel = "stable"; + }; +} diff --git a/devenv.yaml b/devenv.yaml new file mode 100644 index 00000000..c08ccc88 --- /dev/null +++ b/devenv.yaml @@ -0,0 +1,6 @@ +inputs: + rust-overlay: + url: github:oxalica/rust-overlay + inputs: + nixpkgs: + follows: nixpkgs diff --git a/fl16-inputmodules/Cargo.toml b/fl16-inputmodules/Cargo.toml index 4af886d8..dbd87997 100644 --- a/fl16-inputmodules/Cargo.toml +++ b/fl16-inputmodules/Cargo.toml @@ -23,11 +23,10 @@ rp2040-boot2.workspace = true usb-device.workspace = true heapless.workspace = true usbd-serial.workspace = true -usbd-hid.workspace = true fugit.workspace = true num = { version = "0.4", default-features = false } -num-derive = "0.3" +num-derive = "0.4" num-traits = { version = "0.2", default-features = false } # LED Matrix diff --git a/fl16-inputmodules/src/animations.rs b/fl16-inputmodules/src/animations.rs index 923e6e32..cad4071a 100644 --- a/fl16-inputmodules/src/animations.rs +++ b/fl16-inputmodules/src/animations.rs @@ -119,7 +119,7 @@ impl Iterator for GameOfLifeIterator { if self.frames_remaining > 0 { self.frames_remaining -= 1; // Only update every 8th frame, otherwise the animation is too fast - if self.frames_remaining % 8 == 0 { + if self.frames_remaining.is_multiple_of(8) { self.state.tick(); } Some(self.state.draw_matrix()) diff --git a/fl16-inputmodules/src/control.rs b/fl16-inputmodules/src/control.rs index ed1fbd32..42961486 100644 --- a/fl16-inputmodules/src/control.rs +++ b/fl16-inputmodules/src/control.rs @@ -7,9 +7,7 @@ use crate::serialnum::{device_release, is_pre_release}; #[cfg(feature = "b1display")] use crate::graphics::*; #[cfg(feature = "b1display")] -use core::fmt::{Debug, Write}; -#[cfg(feature = "b1display")] -use cortex_m::delay::Delay; +use core::fmt::Write; #[cfg(feature = "b1display")] use embedded_graphics::Pixel; #[cfg(feature = "b1display")] @@ -19,9 +17,11 @@ use embedded_graphics::{ primitives::Rectangle, }; #[cfg(feature = "b1display")] -use embedded_hal::blocking::spi; +use embedded_hal::delay::DelayNs; +#[cfg(feature = "b1display")] +use embedded_hal::digital::OutputPin; #[cfg(feature = "b1display")] -use embedded_hal::digital::v2::OutputPin; +use embedded_hal::spi::SpiDevice; #[cfg(feature = "b1display")] use heapless::String; #[cfg(feature = "b1display")] @@ -640,19 +640,18 @@ pub fn handle_command( } #[cfg(feature = "b1display")] -pub fn handle_command( +pub fn handle_command( command: &Command, state: &mut B1DIsplayState, logo_rect: Rectangle, - disp: &mut ST7306, - delay: &mut Delay, + disp: &mut ST7306, + delay: &mut DELAY, ) -> Option<[u8; 32]> where - SPI: spi::Write, + SPI: SpiDevice, DC: OutputPin, - CS: OutputPin, RST: OutputPin, - >::Error: Debug, + DELAY: DelayNs, { match command { // TODO: Move to handle_generic_command diff --git a/fl16-inputmodules/src/games/game_of_life.rs b/fl16-inputmodules/src/games/game_of_life.rs index 1670bacf..684e2ec8 100644 --- a/fl16-inputmodules/src/games/game_of_life.rs +++ b/fl16-inputmodules/src/games/game_of_life.rs @@ -84,7 +84,7 @@ impl GameOfLifeState { for row in 0..HEIGHT { for col in 0..WIDTH { let i = col * HEIGHT + row; - if i % 2 == 0 || i % 7 == 0 { + if i.is_multiple_of(2) || i.is_multiple_of(7) { cells[row][col] = Cell::Alive; } } diff --git a/fl16-inputmodules/src/games/snake_animation.rs b/fl16-inputmodules/src/games/snake_animation.rs index 533750e2..000c986c 100644 --- a/fl16-inputmodules/src/games/snake_animation.rs +++ b/fl16-inputmodules/src/games/snake_animation.rs @@ -32,7 +32,7 @@ impl Iterator for SnakeIterator { } // Slow down animation by a factor of 4 - if self.current_tick % 4 == 0 { + if self.current_tick.is_multiple_of(4) { let (maybe_cmd, random) = self.commands[self.current_tick / 4]; if let Some(command) = maybe_cmd { self.state.handle_control(&command); diff --git a/fl16-inputmodules/src/lcd_hal.rs b/fl16-inputmodules/src/lcd_hal.rs index 663f17ef..3384dc41 100644 --- a/fl16-inputmodules/src/lcd_hal.rs +++ b/fl16-inputmodules/src/lcd_hal.rs @@ -30,21 +30,21 @@ hal::bsp_pins!( name: scl, aliases: { /// SPI Function alias for pin [crate::Pins::gpio14]. - FunctionSpi: Gp18Spi1Sck + FunctionSpi, PullNone: Gp18Spi1Sck } }, Gpio19 { name: sda, aliases: { /// SPI Function alias for pin [crate::Pins::gpio15]. - FunctionSpi: Gp19Spi1Tx + FunctionSpi, PullNone: Gp19Spi1Tx } }, Gpio16 { name: miso, aliases: { /// SPI Function alias for pin [crate::Pins::gpio12]. - FunctionSpi: Gp16Spi1Rx + FunctionSpi, PullNone: Gp16Spi1Rx } }, Gpio20 { name: dc }, diff --git a/fl16-inputmodules/src/led_hal.rs b/fl16-inputmodules/src/led_hal.rs index efe9e790..7ac6c2b2 100644 --- a/fl16-inputmodules/src/led_hal.rs +++ b/fl16-inputmodules/src/led_hal.rs @@ -24,7 +24,7 @@ hal::bsp_pins!( name: gpio26, aliases: { /// I2C Function alias for pin [crate::Pins::gpio26]. - FunctionI2C: Gp26I2C1Sda + FunctionI2C, PullUp: Gp26I2C1Sda } }, /// GPIO 27 is connected to I2C SCL of the LED controller @@ -32,7 +32,7 @@ hal::bsp_pins!( name: gpio27, aliases: { /// I2C Function alias for pin [crate::Pins::gpio27]. - FunctionI2C: Gp27I2C1Scl + FunctionI2C, PullUp: Gp27I2C1Scl } }, /// GPIO 29 is connected to the INTB pin of the LED controller diff --git a/fl16-inputmodules/src/lib.rs b/fl16-inputmodules/src/lib.rs index 8c445376..df107681 100644 --- a/fl16-inputmodules/src/lib.rs +++ b/fl16-inputmodules/src/lib.rs @@ -32,5 +32,8 @@ pub mod lcd_hal; #[cfg(all(feature = "c1minimal", not(feature = "qtpy")))] pub mod minimal_hal; +#[cfg(feature = "qtpy")] +pub mod qtpy_hal; + pub mod control; pub mod serialnum; diff --git a/fl16-inputmodules/src/minimal_hal.rs b/fl16-inputmodules/src/minimal_hal.rs index bab6d363..89e2c0bc 100644 --- a/fl16-inputmodules/src/minimal_hal.rs +++ b/fl16-inputmodules/src/minimal_hal.rs @@ -38,17 +38,17 @@ hal::bsp_pins!( name: tx, aliases: { /// UART Function alias for pin [crate::Pins::gpio0]. - FunctionUart: Gp0Uart0Tx, + FunctionUart, PullNone: Gp0Uart0Tx, /// SPI Function alias for pin [crate::Pins::gpio0]. - FunctionSpi: Gp0Spi0Rx, + FunctionSpi, PullNone: Gp0Spi0Rx, /// I2C Function alias for pin [crate::Pins::gpio0]. - FunctionI2C: Gp0I2C0Sda, + FunctionI2C, PullUp: Gp0I2C0Sda, /// PWM Function alias for pin [crate::Pins::gpio0]. - FunctionPwm: Gp0Pwm0A, + FunctionPwm, PullNone: Gp0Pwm0A, /// PIO0 Function alias for pin [crate::Pins::gpio0]. - FunctionPio0: Gp0Pio0, + FunctionPio0, PullNone: Gp0Pio0, /// PIO1 Function alias for pin [crate::Pins::gpio0]. - FunctionPio1: Gp0Pio1 + FunctionPio1, PullNone: Gp0Pio1 } }, @@ -66,17 +66,17 @@ hal::bsp_pins!( name: rx, aliases: { /// UART Function alias for pin [crate::Pins::gpio1]. - FunctionUart: Gp1Uart0Rx, + FunctionUart, PullNone: Gp1Uart0Rx, /// SPI Function alias for pin [crate::Pins::gpio1]. - FunctionSpi: Gp1Spi0Csn, + FunctionSpi, PullNone: Gp1Spi0Csn, /// I2C Function alias for pin [crate::Pins::gpio1]. - FunctionI2C: Gp1I2C0Scl, + FunctionI2C, PullUp: Gp1I2C0Scl, /// PWM Function alias for pin [crate::Pins::gpio1]. - FunctionPwm: Gp1Pwm0B, + FunctionPwm, PullNone: Gp1Pwm0B, /// PIO0 Function alias for pin [crate::Pins::gpio1]. - FunctionPio0: Gp1Pio0, + FunctionPio0, PullNone: Gp1Pio0, /// PIO1 Function alias for pin [crate::Pins::gpio1]. - FunctionPio1: Gp1Pio1 + FunctionPio1, PullNone: Gp1Pio1 } }, @@ -94,17 +94,17 @@ hal::bsp_pins!( name: sda, aliases: { /// UART Function alias for pin [crate::Pins::gpio2]. - FunctionUart: Gp2Uart0Cts, + FunctionUart, PullNone: Gp2Uart0Cts, /// SPI Function alias for pin [crate::Pins::gpio2]. - FunctionSpi: Gp2Spi0Sck, + FunctionSpi, PullNone: Gp2Spi0Sck, /// I2C Function alias for pin [crate::Pins::gpio2]. - FunctionI2C: Gp2I2C1Sda, + FunctionI2C, PullUp: Gp2I2C1Sda, /// PWM Function alias for pin [crate::Pins::gpio2]. - FunctionPwm: Gp2Pwm1A, + FunctionPwm, PullNone: Gp2Pwm1A, /// PIO0 Function alias for pin [crate::Pins::gpio2]. - FunctionPio0: Gp2Pio0, + FunctionPio0, PullNone: Gp2Pio0, /// PIO1 Function alias for pin [crate::Pins::gpio2]. - FunctionPio1: Gp2Pio1 + FunctionPio1, PullNone: Gp2Pio1 } }, @@ -122,17 +122,17 @@ hal::bsp_pins!( name: scl, aliases: { /// UART Function alias for pin [crate::Pins::gpio3]. - FunctionUart: Gp3Uart0Rts, + FunctionUart, PullNone: Gp3Uart0Rts, /// SPI Function alias for pin [crate::Pins::gpio3]. - FunctionSpi: Gp3Spi0Tx, + FunctionSpi, PullNone: Gp3Spi0Tx, /// I2C Function alias for pin [crate::Pins::gpio3]. - FunctionI2C: Gp3I2C1Scl, + FunctionI2C, PullUp: Gp3I2C1Scl, /// PWM Function alias for pin [crate::Pins::gpio3]. - FunctionPwm: Gp3Pwm1B, + FunctionPwm, PullNone: Gp3Pwm1B, /// PIO0 Function alias for pin [crate::Pins::gpio3]. - FunctionPio0: Gp3Pio0, + FunctionPio0, PullNone: Gp3Pio0, /// PIO1 Function alias for pin [crate::Pins::gpio3]. - FunctionPio1: Gp3Pio1 + FunctionPio1, PullNone: Gp3Pio1 } }, @@ -155,17 +155,17 @@ hal::bsp_pins!( name: d4, aliases: { /// UART Function alias for pin [crate::Pins::gpio6]. - FunctionUart: Gp6Uart1Cts, + FunctionUart, PullNone: Gp6Uart1Cts, /// SPI Function alias for pin [crate::Pins::gpio6]. - FunctionSpi: Gp6Spi0Sck, + FunctionSpi, PullNone: Gp6Spi0Sck, /// I2C Function alias for pin [crate::Pins::gpio6]. - FunctionI2C: Gp6I2C1Sda, + FunctionI2C, PullUp: Gp6I2C1Sda, /// PWM Function alias for pin [crate::Pins::gpio6]. - FunctionPwm: Gp6Pwm3A, + FunctionPwm, PullNone: Gp6Pwm3A, /// PIO0 Function alias for pin [crate::Pins::gpio6]. - FunctionPio0: Gp6Pio0, + FunctionPio0, PullNone: Gp6Pio0, /// PIO1 Function alias for pin [crate::Pins::gpio6]. - FunctionPio1: Gp6Pio1 + FunctionPio1, PullNone: Gp6Pio1 } }, @@ -183,17 +183,17 @@ hal::bsp_pins!( name: d5, aliases: { /// UART Function alias for pin [crate::Pins::gpio7]. - FunctionUart: Gp7Uart1Rts, + FunctionUart, PullNone: Gp7Uart1Rts, /// SPI Function alias for pin [crate::Pins::gpio7]. - FunctionSpi: Gp7Spi0Tx, + FunctionSpi, PullNone: Gp7Spi0Tx, /// I2C Function alias for pin [crate::Pins::gpio7]. - FunctionI2C: Gp7I2C1Scl, + FunctionI2C, PullUp: Gp7I2C1Scl, /// PWM Function alias for pin [crate::Pins::gpio7]. - FunctionPwm: Gp7Pwm3B, + FunctionPwm, PullNone: Gp7Pwm3B, /// PIO0 Function alias for pin [crate::Pins::gpio7]. - FunctionPio0: Gp7Pio0, + FunctionPio0, PullNone: Gp7Pio0, /// PIO1 Function alias for pin [crate::Pins::gpio7]. - FunctionPio1: Gp7Pio1 + FunctionPio1, PullNone: Gp7Pio1 } }, @@ -211,17 +211,17 @@ hal::bsp_pins!( name: d6, aliases: { /// UART Function alias for pin [crate::Pins::gpio8]. - FunctionUart: Gp8Uart1Tx, + FunctionUart, PullNone: Gp8Uart1Tx, /// SPI Function alias for pin [crate::Pins::gpio8]. - FunctionSpi: Gp8Spi1Rx, + FunctionSpi, PullNone: Gp8Spi1Rx, /// I2C Function alias for pin [crate::Pins::gpio8]. - FunctionI2C: Gp8I2C0Sda, + FunctionI2C, PullUp: Gp8I2C0Sda, /// PWM Function alias for pin [crate::Pins::gpio8]. - FunctionPwm: Gp8Pwm4A, + FunctionPwm, PullNone: Gp8Pwm4A, /// PIO0 Function alias for pin [crate::Pins::gpio8]. - FunctionPio0: Gp8Pio0, + FunctionPio0, PullNone: Gp8Pio0, /// PIO1 Function alias for pin [crate::Pins::gpio8]. - FunctionPio1: Gp8Pio1 + FunctionPio1, PullNone: Gp8Pio1 } }, @@ -239,17 +239,17 @@ hal::bsp_pins!( name: d9, aliases: { /// UART Function alias for pin [crate::Pins::gpio9]. - FunctionUart: Gp9Uart1Rx, + FunctionUart, PullNone: Gp9Uart1Rx, /// SPI Function alias for pin [crate::Pins::gpio9]. - FunctionSpi: Gp9Spi1Csn, + FunctionSpi, PullNone: Gp9Spi1Csn, /// I2C Function alias for pin [crate::Pins::gpio9]. - FunctionI2C: Gp9I2C0Scl, + FunctionI2C, PullUp: Gp9I2C0Scl, /// PWM Function alias for pin [crate::Pins::gpio9]. - FunctionPwm: Gp9Pwm4B, + FunctionPwm, PullNone: Gp9Pwm4B, /// PIO0 Function alias for pin [crate::Pins::gpio9]. - FunctionPio0: Gp9Pio0, + FunctionPio0, PullNone: Gp9Pio0, /// PIO1 Function alias for pin [crate::Pins::gpio9]. - FunctionPio1: Gp9Pio1 + FunctionPio1, PullNone: Gp9Pio1 } }, @@ -267,17 +267,17 @@ hal::bsp_pins!( name: d10, aliases: { /// UART Function alias for pin [crate::Pins::gpio10]. - FunctionUart: Gp10Uart1Cts, + FunctionUart, PullNone: Gp10Uart1Cts, /// SPI Function alias for pin [crate::Pins::gpio10]. - FunctionSpi: Gp10Spi1Sck, + FunctionSpi, PullNone: Gp10Spi1Sck, /// I2C Function alias for pin [crate::Pins::gpio10]. - FunctionI2C: Gp10I2C1Sda, + FunctionI2C, PullUp: Gp10I2C1Sda, /// PWM Function alias for pin [crate::Pins::gpio10]. - FunctionPwm: Gp10Pwm5A, + FunctionPwm, PullNone: Gp10Pwm5A, /// PIO0 Function alias for pin [crate::Pins::gpio10]. - FunctionPio0: Gp10Pio0, + FunctionPio0, PullNone: Gp10Pio0, /// PIO1 Function alias for pin [crate::Pins::gpio10]. - FunctionPio1: Gp10Pio1 + FunctionPio1, PullNone: Gp10Pio1 } }, @@ -295,17 +295,17 @@ hal::bsp_pins!( name: d11, aliases: { /// UART Function alias for pin [crate::Pins::gpio11]. - FunctionUart: Gp11Uart1Rts, + FunctionUart, PullNone: Gp11Uart1Rts, /// SPI Function alias for pin [crate::Pins::gpio11]. - FunctionSpi: Gp11Spi1Tx, + FunctionSpi, PullNone: Gp11Spi1Tx, /// I2C Function alias for pin [crate::Pins::gpio11]. - FunctionI2C: Gp11I2C1Scl, + FunctionI2C, PullUp: Gp11I2C1Scl, /// PWM Function alias for pin [crate::Pins::gpio11]. - FunctionPwm: Gp11Pwm5B, + FunctionPwm, PullNone: Gp11Pwm5B, /// PIO0 Function alias for pin [crate::Pins::gpio11]. - FunctionPio0: Gp11Pio0, + FunctionPio0, PullNone: Gp11Pio0, /// PIO1 Function alias for pin [crate::Pins::gpio11]. - FunctionPio1: Gp11Pio1 + FunctionPio1, PullNone: Gp11Pio1 } }, @@ -323,17 +323,17 @@ hal::bsp_pins!( name: d12, aliases: { /// UART Function alias for pin [crate::Pins::gpio12]. - FunctionUart: Gp12Uart0Tx, + FunctionUart, PullNone: Gp12Uart0Tx, /// SPI Function alias for pin [crate::Pins::gpio12]. - FunctionSpi: Gp12Spi1Rx, + FunctionSpi, PullNone: Gp12Spi1Rx, /// I2C Function alias for pin [crate::Pins::gpio12]. - FunctionI2C: Gp12I2C0Sda, + FunctionI2C, PullUp: Gp12I2C0Sda, /// PWM Function alias for pin [crate::Pins::gpio12]. - FunctionPwm: Gp12Pwm6A, + FunctionPwm, PullNone: Gp12Pwm6A, /// PIO0 Function alias for pin [crate::Pins::gpio12]. - FunctionPio0: Gp12Pio0, + FunctionPio0, PullNone: Gp12Pio0, /// PIO1 Function alias for pin [crate::Pins::gpio12]. - FunctionPio1: Gp12Pio1 + FunctionPio1, PullNone: Gp12Pio1 } }, @@ -351,17 +351,17 @@ hal::bsp_pins!( name: d13, aliases: { /// UART Function alias for pin [crate::Pins::gpio13]. - FunctionUart: Gp13Uart0Rx, + FunctionUart, PullNone: Gp13Uart0Rx, /// SPI Function alias for pin [crate::Pins::gpio13]. - FunctionSpi: Gp13Spi1Csn, + FunctionSpi, PullNone: Gp13Spi1Csn, /// I2C Function alias for pin [crate::Pins::gpio13]. - FunctionI2C: Gp13I2C0Scl, + FunctionI2C, PullUp: Gp13I2C0Scl, /// PWM Function alias for pin [crate::Pins::gpio13]. - FunctionPwm: Gp13Pwm6B, + FunctionPwm, PullNone: Gp13Pwm6B, /// PIO0 Function alias for pin [crate::Pins::gpio13]. - FunctionPio0: Gp13Pio0, + FunctionPio0, PullNone: Gp13Pio0, /// PIO1 Function alias for pin [crate::Pins::gpio13]. - FunctionPio1: Gp13Pio1 + FunctionPio1, PullNone: Gp13Pio1 } }, @@ -370,17 +370,17 @@ hal::bsp_pins!( name: rgb_led, aliases: { /// UART Function alias for pin [crate::Pins::gpio16]. - FunctionUart: Gp16Uart0Tx, + FunctionUart, PullNone: Gp16Uart0Tx, /// SPI Function alias for pin [crate::Pins::gpio16]. - FunctionSpi: Gp16Spi0Rx, + FunctionSpi, PullNone: Gp16Spi0Rx, /// I2C Function alias for pin [crate::Pins::gpio16]. - FunctionI2C: Gp16I2C0Sda, + FunctionI2C, PullUp: Gp16I2C0Sda, /// PWM Function alias for pin [crate::Pins::gpio16]. - FunctionPwm: Gp16Pwm0A, + FunctionPwm, PullNone: Gp16Pwm0A, /// PIO0 Function alias for pin [crate::Pins::gpio16]. - FunctionPio0: Gp16Pio0, + FunctionPio0, PullNone: Gp16Pio0, /// PIO1 Function alias for pin [crate::Pins::gpio16]. - FunctionPio1: Gp16Pio1 + FunctionPio1, PullNone: Gp16Pio1 } }, @@ -398,17 +398,17 @@ hal::bsp_pins!( name: sck, aliases: { /// UART Function alias for pin [crate::Pins::gpio18]. - FunctionUart: Gp18Uart0Cts, + FunctionUart, PullNone: Gp18Uart0Cts, /// SPI Function alias for pin [crate::Pins::gpio18]. - FunctionSpi: Gp18Spi0Sck, + FunctionSpi, PullNone: Gp18Spi0Sck, /// I2C Function alias for pin [crate::Pins::gpio18]. - FunctionI2C: Gp18I2C1Sda, + FunctionI2C, PullUp: Gp18I2C1Sda, /// PWM Function alias for pin [crate::Pins::gpio18]. - FunctionPwm: Gp18Pwm1A, + FunctionPwm, PullNone: Gp18Pwm1A, /// PIO0 Function alias for pin [crate::Pins::gpio18]. - FunctionPio0: Gp18Pio0, + FunctionPio0, PullNone: Gp18Pio0, /// PIO1 Function alias for pin [crate::Pins::gpio18]. - FunctionPio1: Gp18Pio1 + FunctionPio1, PullNone: Gp18Pio1 } }, @@ -426,17 +426,17 @@ hal::bsp_pins!( name: mosi, aliases: { /// UART Function alias for pin [crate::Pins::gpio19]. - FunctionUart: Gp19Uart0Rts, + FunctionUart, PullNone: Gp19Uart0Rts, /// SPI Function alias for pin [crate::Pins::gpio19]. - FunctionSpi: Gp19Spi0Tx, + FunctionSpi, PullNone: Gp19Spi0Tx, /// I2C Function alias for pin [crate::Pins::gpio19]. - FunctionI2C: Gp19I2C1Scl, + FunctionI2C, PullUp: Gp19I2C1Scl, /// PWM Function alias for pin [crate::Pins::gpio19]. - FunctionPwm: Gp19Pwm1B, + FunctionPwm, PullNone: Gp19Pwm1B, /// PIO0 Function alias for pin [crate::Pins::gpio19]. - FunctionPio0: Gp19Pio0, + FunctionPio0, PullNone: Gp19Pio0, /// PIO1 Function alias for pin [crate::Pins::gpio19]. - FunctionPio1: Gp19Pio1 + FunctionPio1, PullNone: Gp19Pio1 } }, @@ -454,17 +454,17 @@ hal::bsp_pins!( name: miso, aliases: { /// UART Function alias for pin [crate::Pins::gpio20]. - FunctionUart: Gp20Uart1Tx, + FunctionUart, PullNone: Gp20Uart1Tx, /// SPI Function alias for pin [crate::Pins::gpio20]. - FunctionSpi: Gp20Spi0Rx, + FunctionSpi, PullNone: Gp20Spi0Rx, /// I2C Function alias for pin [crate::Pins::gpio20]. - FunctionI2C: Gp20I2C0Sda, + FunctionI2C, PullUp: Gp20I2C0Sda, /// PWM Function alias for pin [crate::Pins::gpio20]. - FunctionPwm: Gp20Pwm2A, + FunctionPwm, PullNone: Gp20Pwm2A, /// PIO0 Function alias for pin [crate::Pins::gpio20]. - FunctionPio0: Gp20Pio0, + FunctionPio0, PullNone: Gp20Pio0, /// PIO1 Function alias for pin [crate::Pins::gpio20]. - FunctionPio1: Gp20Pio1 + FunctionPio1, PullNone: Gp20Pio1 } }, @@ -494,17 +494,17 @@ hal::bsp_pins!( name: a0, aliases: { /// UART Function alias for pin [crate::Pins::gpio26]. - FunctionUart: Gp26Uart1Cts, + FunctionUart, PullNone: Gp26Uart1Cts, /// SPI Function alias for pin [crate::Pins::gpio26]. - FunctionSpi: Gp26Spi1Sck, + FunctionSpi, PullNone: Gp26Spi1Sck, /// I2C Function alias for pin [crate::Pins::gpio26]. - FunctionI2C: Gp26I2C1Sda, + FunctionI2C, PullUp: Gp26I2C1Sda, /// PWM Function alias for pin [crate::Pins::gpio26]. - FunctionPwm: Gp26Pwm5A, + FunctionPwm, PullNone: Gp26Pwm5A, /// PIO0 Function alias for pin [crate::Pins::gpio26]. - FunctionPio0: Gp26Pio0, + FunctionPio0, PullNone: Gp26Pio0, /// PIO1 Function alias for pin [crate::Pins::gpio26]. - FunctionPio1: Gp26Pio1 + FunctionPio1, PullNone: Gp26Pio1 } }, @@ -522,17 +522,17 @@ hal::bsp_pins!( name: a1, aliases: { /// UART Function alias for pin [crate::Pins::gpio27]. - FunctionUart: Gp27Uart1Rts, + FunctionUart, PullNone: Gp27Uart1Rts, /// SPI Function alias for pin [crate::Pins::gpio27]. - FunctionSpi: Gp27Spi1Tx, + FunctionSpi, PullNone: Gp27Spi1Tx, /// I2C Function alias for pin [crate::Pins::gpio27]. - FunctionI2C: Gp27I2C1Scl, + FunctionI2C, PullUp: Gp27I2C1Scl, /// PWM Function alias for pin [crate::Pins::gpio27]. - FunctionPwm: Gp27Pwm5B, + FunctionPwm, PullNone: Gp27Pwm5B, /// PIO0 Function alias for pin [crate::Pins::gpio27]. - FunctionPio0: Gp27Pio0, + FunctionPio0, PullNone: Gp27Pio0, /// PIO1 Function alias for pin [crate::Pins::gpio27]. - FunctionPio1: Gp27Pio1 + FunctionPio1, PullNone: Gp27Pio1 } }, @@ -550,17 +550,17 @@ hal::bsp_pins!( name: a2, aliases: { /// UART Function alias for pin [crate::Pins::gpio28]. - FunctionUart: Gp28Uart0Tx, + FunctionUart, PullNone: Gp28Uart0Tx, /// SPI Function alias for pin [crate::Pins::gpio28]. - FunctionSpi: Gp28Spi1Rx, + FunctionSpi, PullNone: Gp28Spi1Rx, /// I2C Function alias for pin [crate::Pins::gpio28]. - FunctionI2C: Gp28I2C0Sda, + FunctionI2C, PullUp: Gp28I2C0Sda, /// PWM Function alias for pin [crate::Pins::gpio28]. - FunctionPwm: Gp28Pwm6A, + FunctionPwm, PullNone: Gp28Pwm6A, /// PIO0 Function alias for pin [crate::Pins::gpio28]. - FunctionPio0: Gp28Pio0, + FunctionPio0, PullNone: Gp28Pio0, /// PIO1 Function alias for pin [crate::Pins::gpio28]. - FunctionPio1: Gp28Pio1 + FunctionPio1, PullNone: Gp28Pio1 } }, diff --git a/fl16-inputmodules/src/patterns.rs b/fl16-inputmodules/src/patterns.rs index 5ed6fc9b..e8ff33d6 100644 --- a/fl16-inputmodules/src/patterns.rs +++ b/fl16-inputmodules/src/patterns.rs @@ -1,5 +1,8 @@ use rp2040_hal::{ - gpio::bank0::{Gpio26, Gpio27}, + gpio::{ + bank0::{Gpio26, Gpio27}, + FunctionI2C, PullUp, + }, pac::I2C1, }; @@ -19,8 +22,8 @@ pub type Foo = LedMatrix< bsp::hal::I2C< I2C1, ( - bsp::hal::gpio::Pin>, - bsp::hal::gpio::Pin>, + bsp::hal::gpio::Pin, + bsp::hal::gpio::Pin, ), >, >; diff --git a/fl16-inputmodules/src/qtpy_hal.rs b/fl16-inputmodules/src/qtpy_hal.rs new file mode 100644 index 00000000..716f327b --- /dev/null +++ b/fl16-inputmodules/src/qtpy_hal.rs @@ -0,0 +1,177 @@ +// Adafruit QT Py RP2040 BSP +// Based on https://learn.adafruit.com/adafruit-qt-py-2040/pinouts +// Until https://github.com/rp-rs/rp-hal-boards/pull/99 is merged + +pub extern crate rp2040_hal as hal; + +extern crate cortex_m_rt; +pub use hal::entry; + +/// The linker will place this boot block at the start of our program image. We +/// need this to help the ROM bootloader get our code up and running. +#[link_section = ".boot2"] +#[no_mangle] +#[used] +pub static BOOT2_FIRMWARE: [u8; 256] = rp2040_boot2::BOOT_LOADER_GD25Q64CS; + +pub use hal::pac; + +hal::bsp_pins!( + /// GPIO 0 - UART0 TX / I2C0 SDA / SPI0 RX + Gpio0 { + name: tx, + aliases: { + FunctionUart, PullNone: Gp0Uart0Tx, + FunctionI2C, PullUp: Gp0I2C0Sda, + FunctionSpi, PullNone: Gp0Spi0Rx, + FunctionPio0, PullNone: Gp0Pio0, + FunctionPio1, PullNone: Gp0Pio1 + } + }, + + /// GPIO 1 - UART0 RX / I2C0 SCL / SPI0 CSn + Gpio1 { + name: rx, + aliases: { + FunctionUart, PullNone: Gp1Uart0Rx, + FunctionI2C, PullUp: Gp1I2C0Scl, + FunctionSpi, PullNone: Gp1Spi0Csn, + FunctionPio0, PullNone: Gp1Pio0, + FunctionPio1, PullNone: Gp1Pio1 + } + }, + + /// GPIO 2 - SPI0 SCK / I2C1 SDA + Gpio2 { + name: sck0, + aliases: { + FunctionSpi, PullNone: Gp2Spi0Sck, + FunctionI2C, PullUp: Gp2I2C1Sda, + FunctionPio0, PullNone: Gp2Pio0, + FunctionPio1, PullNone: Gp2Pio1 + } + }, + + /// GPIO 3 - SPI0 TX (MOSI) / I2C1 SCL + Gpio3 { + name: mosi0, + aliases: { + FunctionSpi, PullNone: Gp3Spi0Tx, + FunctionI2C, PullUp: Gp3I2C1Scl, + FunctionPio0, PullNone: Gp3Pio0, + FunctionPio1, PullNone: Gp3Pio1 + } + }, + + /// GPIO 4 - SPI0 RX (MISO) + Gpio4 { + name: miso0, + aliases: { + FunctionSpi, PullNone: Gp4Spi0Rx, + FunctionPio0, PullNone: Gp4Pio0, + FunctionPio1, PullNone: Gp4Pio1 + } + }, + + /// GPIO 5 - A0 + Gpio5 { + name: a0, + }, + + /// GPIO 6 - A1 + Gpio6 { + name: a1, + }, + + /// GPIO 7 - A2 + Gpio7 { + name: a2, + }, + + /// GPIO 8 - A3 + Gpio8 { + name: a3, + }, + + /// GPIO 11 - NeoPixel Power (directly active high enable) + Gpio11 { + name: neopixel_power, + }, + + /// GPIO 12 - NeoPixel Data + Gpio12 { + name: neopixel_data, + aliases: { + FunctionPio0, PullNone: Gp12Pio0, + FunctionPio1, PullNone: Gp12Pio1 + } + }, + + /// GPIO 20 - I2C0 SDA (STEMMA QT) + Gpio20 { + name: sda, + aliases: { + FunctionI2C, PullUp: Gp20I2C0Sda, + FunctionPio0, PullNone: Gp20Pio0, + FunctionPio1, PullNone: Gp20Pio1 + } + }, + + /// GPIO 21 - I2C0 SCL (STEMMA QT) + Gpio21 { + name: scl, + aliases: { + FunctionI2C, PullUp: Gp21I2C0Scl, + FunctionPio0, PullNone: Gp21Pio0, + FunctionPio1, PullNone: Gp21Pio1 + } + }, + + /// GPIO 24 - SPI1 RX (MISO) + Gpio24 { + name: miso1, + aliases: { + FunctionSpi, PullNone: Gp24Spi1Rx, + FunctionPio0, PullNone: Gp24Pio0, + FunctionPio1, PullNone: Gp24Pio1 + } + }, + + /// GPIO 25 - SPI1 CSn + Gpio25 { + name: cs1, + aliases: { + FunctionSpi, PullNone: Gp25Spi1Csn, + FunctionPio0, PullNone: Gp25Pio0, + FunctionPio1, PullNone: Gp25Pio1 + } + }, + + /// GPIO 26 - SPI1 SCK + Gpio26 { + name: sck1, + aliases: { + FunctionSpi, PullNone: Gp26Spi1Sck, + FunctionPio0, PullNone: Gp26Pio0, + FunctionPio1, PullNone: Gp26Pio1 + } + }, + + /// GPIO 27 - SPI1 TX (MOSI) + Gpio27 { + name: mosi1, + aliases: { + FunctionSpi, PullNone: Gp27Spi1Tx, + FunctionPio0, PullNone: Gp27Pio0, + FunctionPio1, PullNone: Gp27Pio1 + } + }, + + /// GPIO 29 - A3 (also used internally) + Gpio29 { + name: a3_alt, + }, +); + +// QT Py RP2040 uses a 12 MHz crystal +pub const XOSC_CRYSTAL_FREQ: u32 = 12_000_000; diff --git a/fl16-inputmodules/src/serialnum.rs b/fl16-inputmodules/src/serialnum.rs index 545054ac..695da49c 100644 --- a/fl16-inputmodules/src/serialnum.rs +++ b/fl16-inputmodules/src/serialnum.rs @@ -3,7 +3,7 @@ const FLASH_OFFSET: usize = 0x10000000; const LAST_4K_BLOCK: usize = 0xff000; const SERIALNUM_LEN: usize = 18; -#[repr(packed)] +#[repr(C, packed)] pub struct SerialnumStructRaw { sn_rev: u8, serialnum: [u8; SERIALNUM_LEN], diff --git a/inputmodule-control/src/inputmodule.rs b/inputmodule-control/src/inputmodule.rs index d2d4e83c..8008cbb4 100644 --- a/inputmodule-control/src/inputmodule.rs +++ b/inputmodule-control/src/inputmodule.rs @@ -1080,8 +1080,7 @@ fn gif_cmd(serialdev: &str, image_path: &str) { let img = std::fs::File::open(image_path).unwrap(); let gif = GifDecoder::new(img).unwrap(); let frames = gif.into_frames(); - for (_i, frame) in frames.enumerate() { - //println!("Frame {i}"); + for frame in frames { let frame = frame.unwrap(); //let delay = frame.delay(); //println!(" Delay: {:?}", Duration::from(delay)); diff --git a/inputmodule-control/src/ledmatrix.rs b/inputmodule-control/src/ledmatrix.rs index 30ae5750..656ddee6 100644 --- a/inputmodule-control/src/ledmatrix.rs +++ b/inputmodule-control/src/ledmatrix.rs @@ -14,6 +14,7 @@ pub enum Pattern { //AllBrightnesses } +#[allow(clippy::enum_variant_names)] #[derive(Clone, Copy, Debug, PartialEq, clap::ValueEnum)] #[repr(u8)] pub enum Game { diff --git a/ledmatrix/Cargo.toml b/ledmatrix/Cargo.toml index 563971c6..7f56d910 100644 --- a/ledmatrix/Cargo.toml +++ b/ledmatrix/Cargo.toml @@ -26,7 +26,6 @@ rp2040-boot2.workspace = true usb-device.workspace = true heapless.workspace = true usbd-serial.workspace = true -usbd-hid.workspace = true fugit.workspace = true is31fl3741.workspace = true diff --git a/ledmatrix/src/main.rs b/ledmatrix/src/main.rs index c4082c72..9337f053 100644 --- a/ledmatrix/src/main.rs +++ b/ledmatrix/src/main.rs @@ -6,7 +6,7 @@ use cortex_m::delay::Delay; //use defmt::*; use defmt_rtt as _; -use embedded_hal::digital::v2::{InputPin, OutputPin}; +use embedded_hal::digital::{InputPin, OutputPin}; use rp2040_hal::{ gpio::bank0::Gpio29, @@ -132,6 +132,8 @@ use bsp::hal::{ use fugit::RateExtU32; // USB Device support +use usb_device::descriptor::lang_id::LangID; +use usb_device::device::StringDescriptors; use usb_device::{class_prelude::*, prelude::*}; // USB Communications Class Device support @@ -185,6 +187,9 @@ fn main() -> ! { &mut pac.RESETS, ); + // Create timer before USB bus since USB bus moves clocks.usb_clock + let timer = Timer::new(pac.TIMER, &mut pac.RESETS, &clocks); + // Set up the USB driver let usb_bus = UsbBusAllocator::new(usb::UsbBus::new( pac.USBCTRL_REGS, @@ -204,10 +209,13 @@ fn main() -> ! { }; let mut usb_dev = UsbDeviceBuilder::new(&usb_bus, UsbVidPid(0x32ac, 0x0020)) - .manufacturer("Framework Computer Inc") - .product("LED Matrix Input Module") - .serial_number(serialnum) + .strings(&[StringDescriptors::new(LangID::EN_US) + .manufacturer("Framework Computer Inc") + .product("LED Matrix Input Module") + .serial_number(serialnum)]) + .unwrap() .max_power(MAX_CURRENT) + .unwrap() .device_release(device_release()) .device_class(USB_CLASS_CDC) .build(); @@ -221,14 +229,14 @@ fn main() -> ! { let i2c = bsp::hal::I2C::i2c1( pac.I2C1, - pins.gpio26.into_mode::(), - pins.gpio27.into_mode::(), + pins.gpio26.reconfigure::(), + pins.gpio27.reconfigure::(), 1000.kHz(), &mut pac.RESETS, &clocks.peripheral_clock, ); - let dip1 = pins.dip1.into_pull_up_input(); + let mut dip1 = pins.dip1.into_pull_up_input(); let mut state = LedmatrixState { grid: percentage(0), @@ -292,7 +300,6 @@ fn main() -> ! { fill_grid_pixels(&state, &mut matrix); - let timer = Timer::new(pac.TIMER, &mut pac.RESETS); let mut animation_timer = timer.get_counter().ticks(); let mut game_timer = timer.get_counter().ticks(); let mut sleep_timer = timer.get_counter().ticks(); @@ -301,11 +308,11 @@ fn main() -> ! { // Early revisions of the hardware didn't have it wired up, if that is the // case we have to ignore its state. let mut sleep_present = false; - let sleep = pins.sleep.into_pull_up_input(); + let mut sleep = pins.sleep.into_pull_up_input(); if sleep.is_low().unwrap() { sleep_present = true; } - let sleep = sleep.into_pull_down_input(); + let mut sleep = sleep.into_pull_down_input(); if sleep.is_high().unwrap() { sleep_present = true; } @@ -608,7 +615,7 @@ fn handle_sleep( state: &mut LedmatrixState, matrix: &mut Foo, delay: &mut Delay, - led_enable: &mut gpio::Pin>, + led_enable: &mut gpio::Pin, ) { match (state.sleeping.clone(), sleep_reason) { // Awake and staying awake @@ -620,7 +627,7 @@ fn handle_sleep( let mut brightness = state.brightness; loop { delay.delay_ms(100); - brightness = if brightness <= 5 { 0 } else { brightness - 5 }; + brightness = brightness.saturating_sub(5); set_brightness(state, brightness, matrix); if brightness == 0 { break; diff --git a/memory.x b/memory.x index 070eac78..a15501f3 100644 --- a/memory.x +++ b/memory.x @@ -1,6 +1,8 @@ MEMORY { BOOT2 : ORIGIN = 0x10000000, LENGTH = 0x100 - FLASH : ORIGIN = 0x10000100, LENGTH = 2048K - 0x100 + FLASH : ORIGIN = 0x10000100, LENGTH = 2048K - 0x104 + /* Serial number - programmed at manufacturing, read-only */ + SERIALNUM : ORIGIN = 0x100FF000, LENGTH = 4K RAM : ORIGIN = 0x20000000, LENGTH = 256K } @@ -12,4 +14,4 @@ SECTIONS { { KEEP(*(.boot2)); } > BOOT2 -} INSERT BEFORE .text; \ No newline at end of file +} INSERT BEFORE .text; diff --git a/qtpy/Cargo.toml b/qtpy/Cargo.toml index 39e128f9..ec7a1ff8 100644 --- a/qtpy/Cargo.toml +++ b/qtpy/Cargo.toml @@ -22,16 +22,12 @@ rp2040-boot2.workspace = true usb-device.workspace = true heapless.workspace = true usbd-serial.workspace = true -usbd-hid.workspace = true fugit.workspace = true # C1 Minimal smart-leds.workspace = true ws2812-pio.workspace = true -# QT Py -adafruit-qt-py-rp2040 = "0.6.0" - [dependencies.fl16-inputmodules] path = "../fl16-inputmodules" # Same feature as c1minimal diff --git a/qtpy/src/main.rs b/qtpy/src/main.rs index 1ba7cd1a..5b2e79d0 100644 --- a/qtpy/src/main.rs +++ b/qtpy/src/main.rs @@ -13,15 +13,14 @@ use cortex_m::delay::Delay; use defmt_rtt as _; use rp2040_hal::gpio::bank0::Gpio12; +use rp2040_hal::gpio::{FunctionPio0, Pin, PullDown}; use rp2040_hal::pio::PIOExt; //#[cfg(debug_assertions)] //use panic_probe as _; use rp2040_panic_usb_boot as _; -// Provide an alias for our BSP so we can switch targets quickly. -// Uncomment the BSP you included in Cargo.toml, the rest of the code does not need to change. -use adafruit_qt_py_rp2040 as bsp; -//use rp_pico as bsp; +// Use local BSP from fl16-inputmodules +use fl16_inputmodules::qtpy_hal as bsp; use bsp::hal::{ clocks::{init_clocks_and_plls, Clock}, @@ -34,6 +33,8 @@ use bsp::hal::{ }; // USB Device support +use usb_device::descriptor::lang_id::LangID; +use usb_device::device::StringDescriptors; use usb_device::{class_prelude::*, prelude::*}; // USB Communications Class Device support @@ -45,11 +46,11 @@ use usbd_serial::{SerialPort, USB_CLASS_CDC}; // RGB LED use smart_leds::{colors, SmartLedsWrite, RGB8}; -pub type Ws2812<'a> = ws2812_pio::Ws2812< +pub type Ws2812 = ws2812_pio::Ws2812< crate::pac::PIO0, rp2040_hal::pio::SM0, - rp2040_hal::timer::CountDown<'a>, - Gpio12, + rp2040_hal::timer::CountDown, + Pin, >; use fl16_inputmodules::control::*; @@ -86,6 +87,9 @@ fn main() -> ! { &mut pac.RESETS, ); + // Create timer before USB bus since USB bus moves clocks.usb_clock + let timer = Timer::new(pac.TIMER, &mut pac.RESETS, &clocks); + // Set up the USB driver let usb_bus = UsbBusAllocator::new(usb::UsbBus::new( pac.USBCTRL_REGS, @@ -99,9 +103,12 @@ fn main() -> ! { let mut serial = SerialPort::new(&usb_bus); let mut usb_dev = UsbDeviceBuilder::new(&usb_bus, UsbVidPid(FRAMEWORK_VID, COMMUNITY_PID)) - .manufacturer("Adafruit") - .product("QT PY - Framework 16 Inputmodule FW") + .strings(&[StringDescriptors::new(LangID::EN_US) + .manufacturer("Adafruit") + .product("QT PY - Framework 16 Inputmodule FW")]) + .unwrap() .max_power(500) + .unwrap() .device_release(device_release()) .device_class(USB_CLASS_CDC) .build(); @@ -112,14 +119,13 @@ fn main() -> ! { brightness: 10, }; - let timer = Timer::new(pac.TIMER, &mut pac.RESETS); let mut prev_timer = timer.get_counter().ticks(); pins.neopixel_power .into_push_pull_output_in_state(PinState::High); let (mut pio, sm0, _, _, _) = pac.PIO0.split(&mut pac.RESETS); let mut ws2812: Ws2812 = ws2812_pio::Ws2812::new( - pins.neopixel_data.into_mode(), + pins.neopixel_data.into_function(), &mut pio, sm0, clocks.peripheral_clock.freq(), diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 460b3c4b..aa909bbd 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,4 +1,4 @@ [toolchain] -channel = "1.74.0" +channel = "stable" targets = ["thumbv6m-none-eabi"] components = ["clippy", "rustfmt"]