From 8a14c13bf140a89e45e16e2693f7839fbf8ba95f Mon Sep 17 00:00:00 2001 From: Joakim Hulthe Date: Sun, 21 May 2023 00:57:08 +0200 Subject: [PATCH] Update dependencies --- Cargo.lock | 353 ++++++++++++++++++++++++++++++++--------------- Cargo.toml | 5 +- layers-left.ron | 10 +- layers-right.ron | 6 +- src/bin/left.rs | 4 +- src/bin/right.rs | 4 +- src/keyboard.rs | 6 +- src/lib.rs | 12 ++ src/lights.rs | 8 +- src/uart.rs | 4 +- src/usb.rs | 6 +- src/ws2812.rs | 70 +++++----- 12 files changed, 311 insertions(+), 177 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 137a8ee..528e3d6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "aho-corasick" -version = "0.7.20" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" +checksum = "67fc08ce920c31afb70f013dcce1bfc3a3195de6a228474e45e1f145b36f8d04" dependencies = [ "memchr", ] @@ -50,6 +50,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +[[package]] +name = "az" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b7e4c2464d97fe331d41de9d5db0def0a96f4d823b8b32a2efd503578988973" + [[package]] name = "bare-metal" version = "0.2.5" @@ -164,6 +170,15 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "crc-any" +version = "2.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "774646b687f63643eb0f4bf13dc263cb581c8c9e57973b6ddf78bda3994d88df" +dependencies = [ + "debug-helper", +] + [[package]] name = "critical-section" version = "1.1.1" @@ -211,6 +226,12 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "debug-helper" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f578e8e2c440e7297e008bb5486a3a8a194775224bbc23729b0dbdfaeebf162e" + [[package]] name = "diff" version = "0.1.13" @@ -247,7 +268,7 @@ checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" [[package]] name = "embassy-cortex-m" version = "0.1.0" -source = "git+https://github.com/embassy-rs/embassy.git#732614579b86c2a63856b6e8e2622e09322600a7" +source = "git+https://github.com/embassy-rs/embassy.git#d55b9bc6e2de528e1351b992bb30f54ec6f76b6d" dependencies = [ "atomic-polyfill 1.0.2", "cfg-if", @@ -262,11 +283,11 @@ dependencies = [ [[package]] name = "embassy-embedded-hal" version = "0.1.0" -source = "git+https://github.com/embassy-rs/embassy.git#732614579b86c2a63856b6e8e2622e09322600a7" +source = "git+https://github.com/embassy-rs/embassy.git#d55b9bc6e2de528e1351b992bb30f54ec6f76b6d" dependencies = [ "embassy-sync", "embedded-hal 0.2.7", - "embedded-hal 1.0.0-alpha.9", + "embedded-hal 1.0.0-alpha.10", "embedded-hal-async", "embedded-storage", "embedded-storage-async", @@ -275,11 +296,11 @@ dependencies = [ [[package]] name = "embassy-executor" -version = "0.1.1" -source = "git+https://github.com/embassy-rs/embassy.git#732614579b86c2a63856b6e8e2622e09322600a7" +version = "0.2.0" +source = "git+https://github.com/embassy-rs/embassy.git#d55b9bc6e2de528e1351b992bb30f54ec6f76b6d" dependencies = [ "atomic-polyfill 1.0.2", - "cfg-if", + "cortex-m", "critical-section", "embassy-macros", "embassy-time", @@ -291,7 +312,7 @@ dependencies = [ [[package]] name = "embassy-futures" version = "0.1.0" -source = "git+https://github.com/embassy-rs/embassy.git#732614579b86c2a63856b6e8e2622e09322600a7" +source = "git+https://github.com/embassy-rs/embassy.git#d55b9bc6e2de528e1351b992bb30f54ec6f76b6d" dependencies = [ "log", ] @@ -299,15 +320,15 @@ dependencies = [ [[package]] name = "embassy-hal-common" version = "0.1.0" -source = "git+https://github.com/embassy-rs/embassy.git#732614579b86c2a63856b6e8e2622e09322600a7" +source = "git+https://github.com/embassy-rs/embassy.git#d55b9bc6e2de528e1351b992bb30f54ec6f76b6d" dependencies = [ "num-traits", ] [[package]] name = "embassy-macros" -version = "0.1.0" -source = "git+https://github.com/embassy-rs/embassy.git#732614579b86c2a63856b6e8e2622e09322600a7" +version = "0.2.0" +source = "git+https://github.com/embassy-rs/embassy.git#d55b9bc6e2de528e1351b992bb30f54ec6f76b6d" dependencies = [ "darling", "proc-macro2", @@ -318,12 +339,12 @@ dependencies = [ [[package]] name = "embassy-net-driver" version = "0.1.0" -source = "git+https://github.com/embassy-rs/embassy.git#732614579b86c2a63856b6e8e2622e09322600a7" +source = "git+https://github.com/embassy-rs/embassy.git#d55b9bc6e2de528e1351b992bb30f54ec6f76b6d" [[package]] name = "embassy-net-driver-channel" version = "0.1.0" -source = "git+https://github.com/embassy-rs/embassy.git#732614579b86c2a63856b6e8e2622e09322600a7" +source = "git+https://github.com/embassy-rs/embassy.git#d55b9bc6e2de528e1351b992bb30f54ec6f76b6d" dependencies = [ "embassy-futures", "embassy-net-driver", @@ -333,7 +354,7 @@ dependencies = [ [[package]] name = "embassy-rp" version = "0.1.0" -source = "git+https://github.com/embassy-rs/embassy.git#732614579b86c2a63856b6e8e2622e09322600a7" +source = "git+https://github.com/embassy-rs/embassy.git#d55b9bc6e2de528e1351b992bb30f54ec6f76b6d" dependencies = [ "atomic-polyfill 1.0.2", "cfg-if", @@ -349,11 +370,12 @@ dependencies = [ "embassy-time", "embassy-usb-driver", "embedded-hal 0.2.7", - "embedded-hal 1.0.0-alpha.9", + "embedded-hal 1.0.0-alpha.10", "embedded-hal-async", "embedded-hal-nb", "embedded-io", "embedded-storage", + "fixed", "futures", "log", "nb 1.1.0", @@ -361,13 +383,14 @@ dependencies = [ "pio", "pio-proc", "rand_core", - "rp2040-pac2", + "rp-pac", + "rp2040-boot2", ] [[package]] name = "embassy-sync" -version = "0.1.0" -source = "git+https://github.com/embassy-rs/embassy.git#732614579b86c2a63856b6e8e2622e09322600a7" +version = "0.2.0" +source = "git+https://github.com/embassy-rs/embassy.git#d55b9bc6e2de528e1351b992bb30f54ec6f76b6d" dependencies = [ "cfg-if", "critical-section", @@ -379,13 +402,12 @@ dependencies = [ [[package]] name = "embassy-time" -version = "0.1.0" -source = "git+https://github.com/embassy-rs/embassy.git#732614579b86c2a63856b6e8e2622e09322600a7" +version = "0.1.1" +source = "git+https://github.com/embassy-rs/embassy.git#d55b9bc6e2de528e1351b992bb30f54ec6f76b6d" dependencies = [ "atomic-polyfill 1.0.2", "cfg-if", "critical-section", - "embassy-sync", "embedded-hal 0.2.7", "futures-util", "heapless", @@ -395,7 +417,7 @@ dependencies = [ [[package]] name = "embassy-usb" version = "0.1.0" -source = "git+https://github.com/embassy-rs/embassy.git#732614579b86c2a63856b6e8e2622e09322600a7" +source = "git+https://github.com/embassy-rs/embassy.git#d55b9bc6e2de528e1351b992bb30f54ec6f76b6d" dependencies = [ "embassy-futures", "embassy-net-driver-channel", @@ -409,12 +431,12 @@ dependencies = [ [[package]] name = "embassy-usb-driver" version = "0.1.0" -source = "git+https://github.com/embassy-rs/embassy.git#732614579b86c2a63856b6e8e2622e09322600a7" +source = "git+https://github.com/embassy-rs/embassy.git#d55b9bc6e2de528e1351b992bb30f54ec6f76b6d" [[package]] name = "embassy-usb-logger" version = "0.1.0" -source = "git+https://github.com/embassy-rs/embassy.git#732614579b86c2a63856b6e8e2622e09322600a7" +source = "git+https://github.com/embassy-rs/embassy.git#d55b9bc6e2de528e1351b992bb30f54ec6f76b6d" dependencies = [ "embassy-futures", "embassy-sync", @@ -447,26 +469,26 @@ dependencies = [ [[package]] name = "embedded-hal" -version = "1.0.0-alpha.9" +version = "1.0.0-alpha.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "129b101ddfee640565f7c07b301a31d95aa21e5acef21a491c307139f5fa4c91" +checksum = "f65c4d073f5d91c66e629b216818a4c9747eeda0debedf2deda9a0a947e4e93b" [[package]] name = "embedded-hal-async" -version = "0.2.0-alpha.0" +version = "0.2.0-alpha.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608a322808d65da06715e03109c0cb69f79a5459af756fba393ab83e875d4969" +checksum = "8042370aa7af48de36d5312cda14c18ed8ca6b7ce64f5a07832fedc9dc83063f" dependencies = [ - "embedded-hal 1.0.0-alpha.9", + "embedded-hal 1.0.0-alpha.10", ] [[package]] name = "embedded-hal-nb" -version = "1.0.0-alpha.1" +version = "1.0.0-alpha.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e0760ec0a3bf76859d5e33f39542af103f157d5b2ecfb00ace56dd461472e3a" +checksum = "1465fffd56a95bbc105c17965bca1c1d5815027b1cc6bb183bc05d04563d065c" dependencies = [ - "embedded-hal 1.0.0-alpha.9", + "embedded-hal 1.0.0-alpha.10", "nb 1.1.0", ] @@ -508,13 +530,13 @@ checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" [[package]] name = "errno" -version = "0.2.8" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1" +checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" dependencies = [ "errno-dragonfly", "libc", - "winapi", + "windows-sys 0.48.0", ] [[package]] @@ -527,6 +549,18 @@ dependencies = [ "libc", ] +[[package]] +name = "fixed" +version = "1.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79386fdcec5e0fde91b1a6a5bcd89677d1f9304f7f986b154a1b9109038854d9" +dependencies = [ + "az", + "bytemuck", + "half", + "typenum", +] + [[package]] name = "fixedbitset" version = "0.4.2" @@ -541,9 +575,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "futures" -version = "0.3.27" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "531ac96c6ff5fd7c62263c5e3c67a603af4fcaee2e1a0ae5565ba3a11e69e549" +checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" dependencies = [ "futures-channel", "futures-core", @@ -555,9 +589,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.27" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "164713a5a0dcc3e7b4b1ed7d3b433cabc18025386f9339346e8daf15963cf7ac" +checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" dependencies = [ "futures-core", "futures-sink", @@ -565,44 +599,44 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.27" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86d7a0c1aa76363dac491de0ee99faf6941128376f1cf96f07db7603b7de69dd" +checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" [[package]] name = "futures-io" -version = "0.3.27" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89d422fa3cbe3b40dca574ab087abb5bc98258ea57eea3fd6f1fa7162c778b91" +checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" [[package]] name = "futures-macro" -version = "0.3.27" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3eb14ed937631bd8b8b8977f2c198443447a8355b6e3ca599f38c975e5a963b6" +checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.16", ] [[package]] name = "futures-sink" -version = "0.3.27" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec93083a4aecafb2a80a885c9de1f0ccae9dbd32c2bb54b0c3a65690e0b8d2f2" +checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" [[package]] name = "futures-task" -version = "0.3.27" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd65540d33b37b16542a0438c12e6aeead10d4ac5d05bd3f805b8f35ab592879" +checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" [[package]] name = "futures-util" -version = "0.3.27" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ef6b17e481503ec85211fed8f39d1970f128935ca1f814cd32ac4a6842e84ab" +checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" dependencies = [ "futures-core", "futures-macro", @@ -614,15 +648,24 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" +checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4" dependencies = [ "cfg-if", "libc", "wasi", ] +[[package]] +name = "half" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b4af3693f1b705df946e9fe5631932443781d0aabb423b62fcd4d73f6d2fd0" +dependencies = [ + "crunchy", +] + [[package]] name = "hash32" version = "0.2.1" @@ -676,25 +719,25 @@ dependencies = [ [[package]] name = "io-lifetimes" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09270fd4fa1111bc614ed2246c7ef56239a3063d5be0d1ec3b589c505d400aeb" +checksum = "9c66c74d2ae7e79a5a8f7ac924adbe38ee42a859c6539ad869eb51f0b52dc220" dependencies = [ "hermit-abi", "libc", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] name = "is-terminal" -version = "0.4.5" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8687c819457e979cc940d09cb16e42a1bf70aa6b60a549de6d3a62a0ee90c69e" +checksum = "adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f" dependencies = [ "hermit-abi", "io-lifetimes", "rustix", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] @@ -708,9 +751,9 @@ dependencies = [ [[package]] name = "lalrpop" -version = "0.19.9" +version = "0.19.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f34313ec00c2eb5c3c87ca6732ea02dcf3af99c3ff7a8fb622ffb99c9d860a87" +checksum = "0a1cbf952127589f2851ab2046af368fd20645491bb4b376f04b7f94d7a9837b" dependencies = [ "ascii-canvas", "bit-set", @@ -720,9 +763,8 @@ dependencies = [ "itertools", "lalrpop-util", "petgraph", - "pico-args", "regex", - "regex-syntax", + "regex-syntax 0.6.29", "string_cache", "term", "tiny-keccak", @@ -731,18 +773,18 @@ dependencies = [ [[package]] name = "lalrpop-util" -version = "0.19.9" +version = "0.19.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5c1f7869c94d214466c5fd432dfed12c379fd87786768d36455892d46b18edd" +checksum = "d3c48237b9604c5a4702de6b824e02006c3214327564636aef27c1028a8fa0ed" dependencies = [ "regex", ] [[package]] name = "libc" -version = "0.2.140" +version = "0.2.144" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c" +checksum = "2b00cc1c228a6782d0f076e7b232802e0c5689d41bb5df366f2a6b6621cfdfe1" [[package]] name = "linked_list_allocator" @@ -752,9 +794,9 @@ checksum = "9afa463f5405ee81cdb9cc2baf37e08ec7e4c8209442b5d72c04cfb2cd6e6286" [[package]] name = "linux-raw-sys" -version = "0.1.4" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4" +checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" [[package]] name = "lock_api" @@ -857,7 +899,7 @@ dependencies = [ "libc", "redox_syscall", "smallvec", - "windows-sys", + "windows-sys 0.45.0", ] [[package]] @@ -885,12 +927,6 @@ dependencies = [ "siphasher", ] -[[package]] -name = "pico-args" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db8bcd96cb740d03149cbad5518db9fd87126a10ab519c011893b1754134c468" - [[package]] name = "pin-project-lite" version = "0.2.9" @@ -916,20 +952,21 @@ dependencies = [ [[package]] name = "pio-parser" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57e25a6443ddde6cf1122debd1ee58d002390934fa2a0415e660d6f6d7842b06" +checksum = "77532c2b8279aef98dfc7207ef15298a5a3d6b6cc76ccc8b65913d69f3a8dd6b" dependencies = [ "lalrpop", "lalrpop-util", "pio", + "regex-syntax 0.6.29", ] [[package]] name = "pio-proc" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d1e7e61a9dc0a0f8fa54ab33a6ab52bf17f221b86f157c79f09a08cc2a8c7e4" +checksum = "6b04dc870fb3a4fd8b3e4ca8c61b53bc8ac4eb78b66805d2b3c2e5c4829e0d7a" dependencies = [ "codespan-reporting", "lalrpop-util", @@ -938,6 +975,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", + "regex-syntax 0.6.29", "syn 1.0.109", ] @@ -984,18 +1022,18 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.54" +version = "1.0.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e472a104799c74b514a57226160104aa483546de37e839ec50e3c2e41dd87534" +checksum = "fa1fb82fc0c281dd9671101b66b771ebbe1eaf967b96ac8740dcba4b70005ca8" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.26" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" +checksum = "8f4f29d145265ec1c483c7c654450edde0bfe043d3938d6972630663356d9500" dependencies = [ "proc-macro2", ] @@ -1028,13 +1066,13 @@ dependencies = [ [[package]] name = "regex" -version = "1.7.3" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b1f693b24f6ac912f4893ef08244d70b6067480d2f1a46e950c9691e6749d1d" +checksum = "af83e617f331cc6ae2da5443c602dfa5af81e517212d9d611a5b3ba1777b5370" dependencies = [ "aho-corasick", "memchr", - "regex-syntax", + "regex-syntax 0.7.1", ] [[package]] @@ -1043,6 +1081,12 @@ version = "0.6.29" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" +[[package]] +name = "regex-syntax" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5996294f19bd3aae0453a862ad728f60e6600695733dd5df01da90c54363a3c" + [[package]] name = "rgb" version = "0.8.36" @@ -1064,14 +1108,24 @@ dependencies = [ ] [[package]] -name = "rp2040-pac2" -version = "0.1.0" -source = "git+https://github.com/embassy-rs/rp2040-pac2?rev=017e3c9007b2d3b6965f0d85b5bf8ce3fa6d7364#017e3c9007b2d3b6965f0d85b5bf8ce3fa6d7364" +name = "rp-pac" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a76e426cd8377db668fba1fe885028788b126b7cef91059cd478de8b076c2915" dependencies = [ "cortex-m", "cortex-m-rt", ] +[[package]] +name = "rp2040-boot2" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c92f344f63f950ee36cf4080050e4dce850839b9175da38f9d2ffb69b4dbb21" +dependencies = [ + "crc-any", +] + [[package]] name = "rustc_version" version = "0.2.3" @@ -1092,16 +1146,16 @@ dependencies = [ [[package]] name = "rustix" -version = "0.36.11" +version = "0.37.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db4165c9963ab29e422d6c26fbc1d37f15bace6b2810221f9d925023480fcf0e" +checksum = "acf8729d8542766f1b2cf77eb034d52f40d375bb8b615d0b147089946e16613d" dependencies = [ "bitflags", "errno", "io-lifetimes", "libc", "linux-raw-sys", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] @@ -1139,22 +1193,22 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.158" +version = "1.0.163" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "771d4d9c4163ee138805e12c710dd365e4f44be8be0503cb1bb9eb989425d9c9" +checksum = "2113ab51b87a539ae008b5c6c02dc020ffa39afd2d83cffcb3f4eb2722cebec2" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.158" +version = "1.0.163" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e801c1712f48475582b7696ac71e0ca34ebb30e09338425384269d9717c62cad" +checksum = "8c805777e3930c8883389c602315a24224bcc738b63905ef87cd1420353ea93e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.10", + "syn 2.0.16", ] [[package]] @@ -1189,9 +1243,9 @@ dependencies = [ [[package]] name = "spin" -version = "0.9.6" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5d6e0250b93c8427a177b849d144a96d5acc57006149479403d7861ab721e34" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" dependencies = [ "lock_api", ] @@ -1253,9 +1307,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.10" +version = "2.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aad1363ed6d37b84299588d62d3a7d95b5a5c2d9aad5c85609fda12afaa1f40" +checksum = "a6f671d4b5ffdb8eadec19c0ae67fe2639df8684bd7bc4b83d986b8db549cf01" dependencies = [ "proc-macro2", "quote", @@ -1279,6 +1333,7 @@ dependencies = [ "embedded-alloc", "embedded-hal 0.2.7", "embedded-io", + "fixed", "futures", "log", "pio", @@ -1337,7 +1392,7 @@ checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.10", + "syn 2.0.16", ] [[package]] @@ -1349,6 +1404,12 @@ dependencies = [ "crunchy", ] +[[package]] +name = "typenum" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" + [[package]] name = "unicode-ident" version = "1.0.8" @@ -1478,7 +1539,16 @@ version = "0.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" dependencies = [ - "windows-targets", + "windows-targets 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.0", ] [[package]] @@ -1487,13 +1557,28 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" +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", ] [[package]] @@ -1502,38 +1587,80 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" + [[package]] name = "windows_aarch64_msvc" version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" + [[package]] name = "windows_i686_gnu" version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" +[[package]] +name = "windows_i686_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" + [[package]] name = "windows_i686_msvc" version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" +[[package]] +name = "windows_i686_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" + [[package]] name = "windows_x86_64_gnu" version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" + [[package]] name = "windows_x86_64_gnullvm" version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" + [[package]] name = "windows_x86_64_msvc" version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" diff --git a/Cargo.toml b/Cargo.toml index 6c29701..f892e70 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,20 +16,21 @@ usbd-hid = "0.6.1" static_cell = "1.0.0" embedded-io = { version = "*", features = ["async"] } futures = { version = "0.3", default-features = false } -embassy-executor = { git = "https://github.com/embassy-rs/embassy.git", features = ["log", "nightly", "integrated-timers" ] } +embassy-executor = { git = "https://github.com/embassy-rs/embassy.git", features = ["log", "arch-cortex-m", "executor-thread", "nightly", "integrated-timers" ] } embassy-sync = { git = "https://github.com/embassy-rs/embassy.git", features = ["log", "nightly"] } embassy-time = { git = "https://github.com/embassy-rs/embassy.git", features = ["log"] } embassy-futures = { git = "https://github.com/embassy-rs/embassy.git", features = ["log"] } embassy-usb = { git = "https://github.com/embassy-rs/embassy.git", features = ["usbd-hid"] } embassy-usb-logger = { git = "https://github.com/embassy-rs/embassy.git", features = [] } embassy-usb-driver = { git = "https://github.com/embassy-rs/embassy.git", features = [] } -embassy-rp = { git = "https://github.com/embassy-rs/embassy.git", features = ["log", "nightly", "unstable-traits", "unstable-pac", "time-driver", "pio", "critical-section-impl"] } +embassy-rp = { git = "https://github.com/embassy-rs/embassy.git", features = ["log", "nightly", "unstable-traits", "unstable-pac", "time-driver", "critical-section-impl"] } log = "0.4.17" pio = "0.2.1" pio-proc = "0.2.1" smart-leds = "0.3.0" embedded-alloc = "0.5.0" postcard = { version = "1.0.4", features = ["alloc"] } +fixed = "1.23.1" #[patch."https://git.nubo.sh/hulthe/tgnt.git"] #tgnt = { path = "../tgnt" } diff --git a/layers-left.ron b/layers-left.ron index aa444be..8819ba8 100644 --- a/layers-left.ron +++ b/layers-left.ron @@ -31,7 +31,7 @@ Layer( buttons: [ // Row 1 - Key(Apostrophe), + Key(Escape), Key(Slash), Key(Equal), Key(Accent), @@ -46,9 +46,9 @@ // Row 3 None, - Key(Mute), - Key(VolumeDown), - Key(VolumeUp), + None, + None, + Key(Apostrophe), None, // Thumbpad @@ -60,7 +60,7 @@ Layer( buttons: [ // Row 1 - None, + Key(Escape), Key(Mute), Key(VolumeDown), Key(VolumeUp), diff --git a/layers-right.ron b/layers-right.ron index 88bf978..01ab85e 100644 --- a/layers-right.ron +++ b/layers-right.ron @@ -31,14 +31,14 @@ Layer( buttons: [ // Row 1 - None, + Key(PrintScreen), Key(D7), Key(D8), Key(D9), - Key(PrintScreen), + Key(D0), // Row 2 - Key(D0), + None, ModTap(D4, RCtrl), ModTap(D5, RShift), ModTap(D6, RAlt), diff --git a/src/bin/left.rs b/src/bin/left.rs index 2399396..0948aad 100644 --- a/src/bin/left.rs +++ b/src/bin/left.rs @@ -31,8 +31,8 @@ async fn main(_spawner: Spawner) { let _led = Output::new(board.d13, Level::High); let _neopixel_power = Output::new(board.neopixel_power, Level::High); - let mut neopixel = Ws2812::new(board.PIO0, board.DMA_CH0, board.neopixel.degrade()); - let neopixels_d5 = Ws2812::new(board.PIO1, board.DMA_CH1, board.d5.degrade()); + let mut neopixel = Ws2812::new(board.PIO0, board.DMA_CH0, board.neopixel); + let neopixels_d5 = Ws2812::new(board.PIO1, board.DMA_CH1, board.d5); neopixel.write(&[Rgb::new(0xFF, 0x00, 0x00)]).await; diff --git a/src/bin/right.rs b/src/bin/right.rs index 3b4a812..54f1629 100644 --- a/src/bin/right.rs +++ b/src/bin/right.rs @@ -31,8 +31,8 @@ async fn main(_spawner: Spawner) { let _led = Output::new(board.d13, Level::High); let _neopixel_power = Output::new(board.neopixel_power, Level::High); - let mut neopixel = Ws2812::new(board.PIO0, board.DMA_CH0, board.neopixel.degrade()); - let neopixels_d5 = Ws2812::new(board.PIO1, board.DMA_CH1, board.d5.degrade()); + let mut neopixel = Ws2812::new(board.PIO0, board.DMA_CH0, board.neopixel); + let neopixels_d5 = Ws2812::new(board.PIO1, board.DMA_CH1, board.d5); neopixel.write(&[Rgb::new(0xFF, 0x00, 0x00)]).await; diff --git a/src/keyboard.rs b/src/keyboard.rs index eed9a7f..b078c76 100644 --- a/src/keyboard.rs +++ b/src/keyboard.rs @@ -6,7 +6,7 @@ use alloc::{boxed::Box, vec::Vec}; use embassy_executor::Spawner; use embassy_rp::{ gpio::{AnyPin, Input, Pin, Pull}, - pio::PioInstanceBase, + peripherals::PIO1, }; use embassy_sync::pubsub::{ImmediatePublisher, PubSubChannel, Subscriber}; use embassy_time::{Duration, Timer}; @@ -28,7 +28,7 @@ pub struct KeyboardConfig { pub pins: [AnyPin; SWITCH_COUNT], /// Array of LED indices of each switch pub led_map: [usize; SWITCH_COUNT], - pub led_driver: Ws2812>, + pub led_driver: Ws2812, pub layers: Vec, } @@ -39,7 +39,7 @@ struct State { layers: &'static [Layer], /// Array of LED indices of each switch led_map: [usize; SWITCH_COUNT], - lights: Lights, SWITCH_COUNT>, + lights: Lights, } /// A keyboard half. diff --git a/src/lib.rs b/src/lib.rs index d9f9701..372b00c 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,6 +1,11 @@ #![no_std] #![feature(type_alias_impl_trait)] +use embassy_rp::{ + bind_interrupts, + peripherals::{UART0, USB}, +}; + extern crate alloc; pub mod allocator; @@ -13,3 +18,10 @@ pub mod uart; pub mod usb; pub mod util; pub mod ws2812; + +bind_interrupts! { + pub struct Irqs { + UART0_IRQ => embassy_rp::uart::BufferedInterruptHandler; + USBCTRL_IRQ => embassy_rp::usb::InterruptHandler; + } +} diff --git a/src/lights.rs b/src/lights.rs index e369e12..dd5d9b3 100644 --- a/src/lights.rs +++ b/src/lights.rs @@ -1,19 +1,19 @@ use crate::ws2812::Ws2812; -use embassy_rp::pio::PioInstance; +use embassy_rp::pio; use embassy_sync::mutex::Mutex; use crate::{util::CS, ws2812::Rgb}; -pub struct Lights { +pub struct Lights { state: Mutex>, } -struct State { +struct State { colors: [Rgb; N], driver: Ws2812

, } -impl Lights { +impl Lights { pub const fn new(driver: Ws2812

) -> Self { Lights { state: Mutex::new(State { diff --git a/src/uart.rs b/src/uart.rs index 94c99db..f1faf0c 100644 --- a/src/uart.rs +++ b/src/uart.rs @@ -1,7 +1,6 @@ use core::mem::{size_of, transmute}; use embassy_executor::Spawner; -use embassy_rp::interrupt; use embassy_rp::peripherals::{PIN_0, PIN_1, UART0}; use embassy_rp::uart::{self, BufferedUart, DataBits, Parity, StopBits}; use embassy_time::{with_timeout, Duration, TimeoutError}; @@ -11,6 +10,7 @@ use log::{error, info}; use static_cell::StaticCell; use crate::keyboard::{self, Half, KbEvents}; +use crate::Irqs; #[derive(Clone, Debug)] enum Message { @@ -29,7 +29,7 @@ pub async fn start(tx: PIN_0, rx: PIN_1, uart: UART0, board: Half, events: KbEve let uart = embassy_rp::uart::BufferedUart::new( uart, - interrupt::take!(UART0_IRQ), + Irqs, tx, rx, TX_BUF.init_with(|| [0u8; 1024]), diff --git a/src/usb.rs b/src/usb.rs index f614b94..4cfde79 100644 --- a/src/usb.rs +++ b/src/usb.rs @@ -1,9 +1,9 @@ use embassy_executor::Spawner; -use embassy_rp::{interrupt, peripherals::USB, usb::Driver}; +use embassy_rp::{peripherals::USB, usb::Driver}; use embassy_usb::{Builder, Config, UsbDevice}; use static_cell::StaticCell; -use crate::keyboard::KbEvents; +use crate::{keyboard::KbEvents, Irqs}; pub mod keyboard; pub mod logger; @@ -59,7 +59,7 @@ pub fn builder(usb: USB) -> Builder<'static, Driver<'static, USB>> { config.device_protocol = 0x01; config.composite_with_iads = true; - let driver = Driver::new(usb, interrupt::take!(USBCTRL_IRQ)); + let driver = Driver::new(usb, Irqs); Builder::new( driver, diff --git a/src/ws2812.rs b/src/ws2812.rs index 7d0e264..43e50c7 100644 --- a/src/ws2812.rs +++ b/src/ws2812.rs @@ -3,16 +3,13 @@ use core::mem::transmute; use core::ops::Div; use embassy_rp::dma::{self, AnyChannel}; -use embassy_rp::pio::{ - FifoJoin, PioInstance, PioPeripheral, PioStateMachine, PioStateMachineInstance, ShiftDirection, - SmInstanceBase, -}; -use embassy_rp::pio_instr_util; +use embassy_rp::pio::{self, FifoJoin, Instance, Pio, PioPin, ShiftConfig, ShiftDirection}; use embassy_rp::relocate::RelocatedProgram; -use embassy_rp::{gpio, PeripheralRef}; +use embassy_rp::{Peripheral, PeripheralRef}; +use fixed::FixedU32; -pub struct Ws2812 { - sm: PioStateMachineInstance>, +pub struct Ws2812 { + sm: pio::StateMachine<'static, P, 0>, dma: PeripheralRef<'static, AnyChannel>, } @@ -21,16 +18,17 @@ pub struct Ws2812 { #[derive(Clone, Copy, PartialEq, Eq)] pub struct Rgb(u32); -impl Ws2812

{ - pub fn new>( - pio: PP, +impl Ws2812

{ + pub fn new( + pio: impl Peripheral

+ 'static, dma: impl dma::Channel, - pin: gpio::AnyPin, + pin: impl PioPin, ) -> Self { - let (_, mut sm, ..) = pio.split(); + let mut pio = Pio::new(pio); + let mut sm = pio.sm0; // prepare the PIO program - let side_set = pio::SideSet::new(false, 1, false); - let mut a: pio::Assembler<32> = pio::Assembler::new_with_side_set(side_set); + let side_set = ::pio::SideSet::new(false, 1, false); + let mut a: ::pio::Assembler<32> = ::pio::Assembler::new_with_side_set(side_set); const T1: u8 = 2; // start bit const T2: u8 = 5; // data bit @@ -40,14 +38,14 @@ impl Ws2812

{ let mut wrap_target = a.label(); let mut wrap_source = a.label(); let mut do_zero = a.label(); - a.set_with_side_set(pio::SetDestination::PINDIRS, 1, 0); + a.set_with_side_set(::pio::SetDestination::PINDIRS, 1, 0); a.bind(&mut wrap_target); // Do stop bit - a.out_with_delay_and_side_set(pio::OutDestination::X, 1, T3 - 1, 0); + a.out_with_delay_and_side_set(::pio::OutDestination::X, 1, T3 - 1, 0); // Do start bit - a.jmp_with_delay_and_side_set(pio::JmpCondition::XIsZero, &mut do_zero, T1 - 1, 1); + a.jmp_with_delay_and_side_set(::pio::JmpCondition::XIsZero, &mut do_zero, T1 - 1, 1); // Do data bit = 1 - a.jmp_with_delay_and_side_set(pio::JmpCondition::Always, &mut wrap_target, T2 - 1, 1); + a.jmp_with_delay_and_side_set(::pio::JmpCondition::Always, &mut wrap_target, T2 - 1, 1); a.bind(&mut do_zero); // Do data bit = 0 a.nop_with_delay_and_side_set(T2 - 1, 0); @@ -55,15 +53,8 @@ impl Ws2812

{ let prg = a.assemble_with_wrap(wrap_source, wrap_target); - let relocated = RelocatedProgram::new(&prg); - sm.write_instr(relocated.origin() as usize, relocated.code()); - pio_instr_util::exec_jmp(&mut sm, relocated.origin()); - - // Pin config - let out_pin = sm.make_pio_pin(pin); - sm.set_set_pins(&[&out_pin]); - sm.set_sideset_base_pin(&out_pin); - sm.set_sideset_count(1); + let relocated_prg = RelocatedProgram::new(&prg); + let loaded_prg = pio.common.load_program(&relocated_prg); // Clock config // TODO CLOCK_FREQ should come from embassy_rp @@ -79,16 +70,19 @@ impl Ws2812

{ int = 0; } - sm.set_clkdiv((int << 8) | frac); - let pio::Wrap { source, target } = relocated.wrap(); - sm.set_wrap(source, target); - - // FIFO config - sm.set_autopull(true); - sm.set_fifo_join(FifoJoin::TxOnly); - sm.set_pull_threshold(24); - sm.set_out_shift_dir(ShiftDirection::Left); + let mut config = pio::Config::default(); + config.clock_divider = FixedU32::from_bits((int << 8) | frac); + config.fifo_join = FifoJoin::TxOnly; + config.shift_out = ShiftConfig { + threshold: 24, + direction: ShiftDirection::Left, + auto_fill: true, + }; + let out_pin = pio.common.make_pio_pin(pin); + config.set_set_pins(&[&out_pin]); + config.use_program(&loaded_prg, &[&out_pin]); + sm.set_config(&config); sm.set_enable(true); Self { @@ -99,7 +93,7 @@ impl Ws2812

{ pub async fn write(&mut self, colors: &[Rgb]) { let colors = Rgb::slice_as_u32s(colors); - self.sm.dma_push(self.dma.reborrow(), colors).await; + self.sm.tx().dma_push(self.dma.reborrow(), colors).await; } }