scratch repo for intrusive networking

Add microbit-null demo (#139)

* add microbit-null demo

* add microbit demo to CI and scripts

authored by Reto Trappitsch and committed by GitHub 15e478f0 5ec8053c

+6
.github/workflows/build-demos-nostd.yml
··· 22 - name: Install thumbv8m target 23 run: rustup target add thumbv8m.main-none-eabihf 24 # 25 # nRF52840 demos 26 # 27 - name: Build nRF52840 Demos
··· 22 - name: Install thumbv8m target 23 run: rustup target add thumbv8m.main-none-eabihf 24 # 25 + # microbit demos 26 + # 27 + - name: Build microbit Demos 28 + working-directory: ./demos/microbit 29 + run: cargo build --all 30 + # 31 # nRF52840 demos 32 # 33 - name: Build nRF52840 Demos
+1
checkall.sh
··· 10 cargo check --manifest-path=./demos/shared-icd/Cargo.toml 11 cargo check --manifest-path=./demos/shared-icd/Cargo.toml --target=thumbv7em-none-eabi 12 cargo check --all --manifest-path=./demos/std/Cargo.toml 13 cargo check --all --target=thumbv7em-none-eabi --manifest-path=./demos/nrf52840/Cargo.toml 14 cargo check --all --target=thumbv6m-none-eabi --manifest-path=./demos/rp2040/Cargo.toml 15 cargo check --all --target=riscv32imac-unknown-none-elf --manifest-path=./demos/esp32c6/Cargo.toml
··· 10 cargo check --manifest-path=./demos/shared-icd/Cargo.toml 11 cargo check --manifest-path=./demos/shared-icd/Cargo.toml --target=thumbv7em-none-eabi 12 cargo check --all --manifest-path=./demos/std/Cargo.toml 13 + cargo check --all --target=thumbv7em-none-eabi --manifest-path=./demos/microbit/Cargo.toml 14 cargo check --all --target=thumbv7em-none-eabi --manifest-path=./demos/nrf52840/Cargo.toml 15 cargo check --all --target=thumbv6m-none-eabi --manifest-path=./demos/rp2040/Cargo.toml 16 cargo check --all --target=riscv32imac-unknown-none-elf --manifest-path=./demos/esp32c6/Cargo.toml
+1
cleanall.sh
··· 10 cargo clean --manifest-path=./demos/shared-icd/Cargo.toml 11 cargo clean --manifest-path=./demos/shared-icd/Cargo.toml 12 cargo clean --manifest-path=./demos/std/Cargo.toml 13 cargo clean --manifest-path=./demos/nrf52840/Cargo.toml 14 cargo clean --manifest-path=./demos/rp2040/Cargo.toml 15 cargo clean --manifest-path=./demos/esp32c6/Cargo.toml
··· 10 cargo clean --manifest-path=./demos/shared-icd/Cargo.toml 11 cargo clean --manifest-path=./demos/shared-icd/Cargo.toml 12 cargo clean --manifest-path=./demos/std/Cargo.toml 13 + cargo clean --manifest-path=./demos/microbit/Cargo.toml 14 cargo clean --manifest-path=./demos/nrf52840/Cargo.toml 15 cargo clean --manifest-path=./demos/rp2040/Cargo.toml 16 cargo clean --manifest-path=./demos/esp32c6/Cargo.toml
+2 -1
demos/README.md
··· 2 3 These are various demos that are currently used to showcase specific features, and in many cases, act as basic smoke tests that things are still working. 4 5 - The demos are split into separate cargo workspaces, one per target platform. 6 7 Currently, there are demos for: 8 ··· 10 * `esp32c6` - Applications for the ESP32-C6 platform, typically using the `ESP32-C6-DevKitC-1` 11 * `rp2350` - Applications for the RP2350 platform, typically using a `Pico2` development board, with or without a debugger. 12 * `rp2040` - Applications for the RP2040 platform, typically using a `Pico` development board, with or without a debugger. 13 * `nrf52840` - Applications for the `nRF52840` platform, typically using an `nRF52840-DK` 14 15 ## End to End Demos
··· 2 3 These are various demos that are currently used to showcase specific features, and in many cases, act as basic smoke tests that things are still working. 4 5 + The demos are split into separate cargo workspaces, one per target platform and/or board. 6 7 Currently, there are demos for: 8 ··· 10 * `esp32c6` - Applications for the ESP32-C6 platform, typically using the `ESP32-C6-DevKitC-1` 11 * `rp2350` - Applications for the RP2350 platform, typically using a `Pico2` development board, with or without a debugger. 12 * `rp2040` - Applications for the RP2040 platform, typically using a `Pico` development board, with or without a debugger. 13 + * `microbit` - Applications for the micro:bit v2 board (nrf52833), which has an included debugger. 14 * `nrf52840` - Applications for the `nRF52840` platform, typically using an `nRF52840-DK` 15 16 ## End to End Demos
+12
demos/microbit/.cargo/config.toml
···
··· 1 + [target.'cfg(all(target_arch = "arm", target_os = "none"))'] 2 + runner = "probe-rs run --chip nrf52833_xxAA --protocol swd" 3 + 4 + [build] 5 + target = "thumbv7em-none-eabihf" 6 + 7 + [env] 8 + DEFMT_LOG = "debug" 9 + 10 + [unstable] 11 + build-std = ["core"] 12 + build-std-features = ["panic_immediate_abort"]
+1622
demos/microbit/Cargo.lock
···
··· 1 + # This file is automatically @generated by Cargo. 2 + # It is not intended for manual editing. 3 + version = 4 4 + 5 + [[package]] 6 + name = "ahash" 7 + version = "0.8.12" 8 + source = "registry+https://github.com/rust-lang/crates.io-index" 9 + checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" 10 + dependencies = [ 11 + "cfg-if", 12 + "once_cell", 13 + "version_check", 14 + "zerocopy", 15 + ] 16 + 17 + [[package]] 18 + name = "aho-corasick" 19 + version = "1.1.3" 20 + source = "registry+https://github.com/rust-lang/crates.io-index" 21 + checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" 22 + dependencies = [ 23 + "memchr", 24 + ] 25 + 26 + [[package]] 27 + name = "atomic-polyfill" 28 + version = "1.0.3" 29 + source = "registry+https://github.com/rust-lang/crates.io-index" 30 + checksum = "8cf2bce30dfe09ef0bfaef228b9d414faaf7e563035494d7fe092dba54b300f4" 31 + dependencies = [ 32 + "critical-section", 33 + ] 34 + 35 + [[package]] 36 + name = "autocfg" 37 + version = "1.5.0" 38 + source = "registry+https://github.com/rust-lang/crates.io-index" 39 + checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" 40 + 41 + [[package]] 42 + name = "az" 43 + version = "1.2.1" 44 + source = "registry+https://github.com/rust-lang/crates.io-index" 45 + checksum = "7b7e4c2464d97fe331d41de9d5db0def0a96f4d823b8b32a2efd503578988973" 46 + 47 + [[package]] 48 + name = "bare-metal" 49 + version = "0.2.5" 50 + source = "registry+https://github.com/rust-lang/crates.io-index" 51 + checksum = "5deb64efa5bd81e31fcd1938615a6d98c82eafcbcd787162b6f63b91d6bac5b3" 52 + dependencies = [ 53 + "rustc_version 0.2.3", 54 + ] 55 + 56 + [[package]] 57 + name = "bbq2" 58 + version = "0.4.2" 59 + source = "registry+https://github.com/rust-lang/crates.io-index" 60 + checksum = "25d3e5fd78b60ce3a60e21e9a92b1d5e741328264de8e609193e2bf7616747bd" 61 + dependencies = [ 62 + "const-init", 63 + "critical-section", 64 + "maitake-sync", 65 + ] 66 + 67 + [[package]] 68 + name = "bitfield" 69 + version = "0.13.2" 70 + source = "registry+https://github.com/rust-lang/crates.io-index" 71 + checksum = "46afbd2983a5d5a7bd740ccb198caf5b82f45c40c09c0eed36052d91cb92e719" 72 + 73 + [[package]] 74 + name = "bitfield" 75 + version = "0.14.0" 76 + source = "registry+https://github.com/rust-lang/crates.io-index" 77 + checksum = "2d7e60934ceec538daadb9d8432424ed043a904d8e0243f3c6446bce549a46ac" 78 + 79 + [[package]] 80 + name = "bitflags" 81 + version = "1.3.2" 82 + source = "registry+https://github.com/rust-lang/crates.io-index" 83 + checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 84 + 85 + [[package]] 86 + name = "bitflags" 87 + version = "2.9.4" 88 + source = "registry+https://github.com/rust-lang/crates.io-index" 89 + checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394" 90 + 91 + [[package]] 92 + name = "bytemuck" 93 + version = "1.23.2" 94 + source = "registry+https://github.com/rust-lang/crates.io-index" 95 + checksum = "3995eaeebcdf32f91f980d360f78732ddc061097ab4e39991ae7a6ace9194677" 96 + 97 + [[package]] 98 + name = "byteorder" 99 + version = "1.5.0" 100 + source = "registry+https://github.com/rust-lang/crates.io-index" 101 + checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" 102 + 103 + [[package]] 104 + name = "cc" 105 + version = "1.2.36" 106 + source = "registry+https://github.com/rust-lang/crates.io-index" 107 + checksum = "5252b3d2648e5eedbc1a6f501e3c795e07025c1e93bbf8bbdd6eef7f447a6d54" 108 + dependencies = [ 109 + "find-msvc-tools", 110 + "shlex", 111 + ] 112 + 113 + [[package]] 114 + name = "cfg-if" 115 + version = "1.0.3" 116 + source = "registry+https://github.com/rust-lang/crates.io-index" 117 + checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" 118 + 119 + [[package]] 120 + name = "cobs" 121 + version = "0.3.0" 122 + source = "registry+https://github.com/rust-lang/crates.io-index" 123 + checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1" 124 + dependencies = [ 125 + "thiserror", 126 + ] 127 + 128 + [[package]] 129 + name = "cobs" 130 + version = "0.4.0" 131 + source = "registry+https://github.com/rust-lang/crates.io-index" 132 + checksum = "fea6d1b751c55bd9c0dda7d4ff752074e98f4765ae969664648bd193bb326d15" 133 + dependencies = [ 134 + "thiserror", 135 + ] 136 + 137 + [[package]] 138 + name = "cobs-acc" 139 + version = "0.1.0" 140 + dependencies = [ 141 + "cobs 0.4.0", 142 + ] 143 + 144 + [[package]] 145 + name = "const-fnv1a-hash" 146 + version = "1.1.0" 147 + source = "registry+https://github.com/rust-lang/crates.io-index" 148 + checksum = "32b13ea120a812beba79e34316b3942a857c86ec1593cb34f27bb28272ce2cca" 149 + 150 + [[package]] 151 + name = "const-init" 152 + version = "1.0.0" 153 + source = "registry+https://github.com/rust-lang/crates.io-index" 154 + checksum = "4bd422bfb4f24a97243f60b6a4443e63d810c925d8da4bb2d8fde26a7c1d57ec" 155 + 156 + [[package]] 157 + name = "cordyceps" 158 + version = "0.3.4" 159 + source = "registry+https://github.com/rust-lang/crates.io-index" 160 + checksum = "688d7fbb8092b8de775ef2536f36c8c31f2bc4006ece2e8d8ad2d17d00ce0a2a" 161 + dependencies = [ 162 + "loom", 163 + "tracing", 164 + ] 165 + 166 + [[package]] 167 + name = "cortex-m" 168 + version = "0.7.7" 169 + source = "registry+https://github.com/rust-lang/crates.io-index" 170 + checksum = "8ec610d8f49840a5b376c69663b6369e71f4b34484b9b2eb29fb918d92516cb9" 171 + dependencies = [ 172 + "bare-metal", 173 + "bitfield 0.13.2", 174 + "critical-section", 175 + "embedded-hal 0.2.7", 176 + "volatile-register", 177 + ] 178 + 179 + [[package]] 180 + name = "cortex-m-rt" 181 + version = "0.7.5" 182 + source = "registry+https://github.com/rust-lang/crates.io-index" 183 + checksum = "801d4dec46b34c299ccf6b036717ae0fce602faa4f4fe816d9013b9a7c9f5ba6" 184 + dependencies = [ 185 + "cortex-m-rt-macros", 186 + ] 187 + 188 + [[package]] 189 + name = "cortex-m-rt-macros" 190 + version = "0.7.5" 191 + source = "registry+https://github.com/rust-lang/crates.io-index" 192 + checksum = "e37549a379a9e0e6e576fd208ee60394ccb8be963889eebba3ffe0980364f472" 193 + dependencies = [ 194 + "proc-macro2", 195 + "quote", 196 + "syn 2.0.106", 197 + ] 198 + 199 + [[package]] 200 + name = "critical-section" 201 + version = "1.2.0" 202 + source = "registry+https://github.com/rust-lang/crates.io-index" 203 + checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" 204 + 205 + [[package]] 206 + name = "crunchy" 207 + version = "0.2.4" 208 + source = "registry+https://github.com/rust-lang/crates.io-index" 209 + checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" 210 + 211 + [[package]] 212 + name = "darling" 213 + version = "0.20.11" 214 + source = "registry+https://github.com/rust-lang/crates.io-index" 215 + checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" 216 + dependencies = [ 217 + "darling_core", 218 + "darling_macro", 219 + ] 220 + 221 + [[package]] 222 + name = "darling_core" 223 + version = "0.20.11" 224 + source = "registry+https://github.com/rust-lang/crates.io-index" 225 + checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" 226 + dependencies = [ 227 + "fnv", 228 + "ident_case", 229 + "proc-macro2", 230 + "quote", 231 + "strsim", 232 + "syn 2.0.106", 233 + ] 234 + 235 + [[package]] 236 + name = "darling_macro" 237 + version = "0.20.11" 238 + source = "registry+https://github.com/rust-lang/crates.io-index" 239 + checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" 240 + dependencies = [ 241 + "darling_core", 242 + "quote", 243 + "syn 2.0.106", 244 + ] 245 + 246 + [[package]] 247 + name = "defmt" 248 + version = "0.3.100" 249 + source = "registry+https://github.com/rust-lang/crates.io-index" 250 + checksum = "f0963443817029b2024136fc4dd07a5107eb8f977eaf18fcd1fdeb11306b64ad" 251 + dependencies = [ 252 + "defmt 1.0.1", 253 + ] 254 + 255 + [[package]] 256 + name = "defmt" 257 + version = "1.0.1" 258 + source = "registry+https://github.com/rust-lang/crates.io-index" 259 + checksum = "548d977b6da32fa1d1fda2876453da1e7df63ad0304c8b3dae4dbe7b96f39b78" 260 + dependencies = [ 261 + "bitflags 1.3.2", 262 + "defmt-macros", 263 + ] 264 + 265 + [[package]] 266 + name = "defmt-macros" 267 + version = "1.0.1" 268 + source = "registry+https://github.com/rust-lang/crates.io-index" 269 + checksum = "3d4fc12a85bcf441cfe44344c4b72d58493178ce635338a3f3b78943aceb258e" 270 + dependencies = [ 271 + "defmt-parser", 272 + "proc-macro-error2", 273 + "proc-macro2", 274 + "quote", 275 + "syn 2.0.106", 276 + ] 277 + 278 + [[package]] 279 + name = "defmt-parser" 280 + version = "1.0.0" 281 + source = "registry+https://github.com/rust-lang/crates.io-index" 282 + checksum = "10d60334b3b2e7c9d91ef8150abfb6fa4c1c39ebbcf4a81c2e346aad939fee3e" 283 + dependencies = [ 284 + "thiserror", 285 + ] 286 + 287 + [[package]] 288 + name = "defmt-rtt" 289 + version = "1.0.0" 290 + source = "registry+https://github.com/rust-lang/crates.io-index" 291 + checksum = "b2cac3b8a5644a9e02b75085ebad3b6deafdbdbdec04bb25086523828aa4dfd1" 292 + dependencies = [ 293 + "critical-section", 294 + "defmt 1.0.1", 295 + ] 296 + 297 + [[package]] 298 + name = "document-features" 299 + version = "0.2.11" 300 + source = "registry+https://github.com/rust-lang/crates.io-index" 301 + checksum = "95249b50c6c185bee49034bcb378a49dc2b5dff0be90ff6616d31d64febab05d" 302 + dependencies = [ 303 + "litrs", 304 + ] 305 + 306 + [[package]] 307 + name = "embassy-embedded-hal" 308 + version = "0.3.2" 309 + source = "registry+https://github.com/rust-lang/crates.io-index" 310 + checksum = "8c62a3bf127e03832fb97d8b01a058775e617653bc89e2a12c256485a7fb54c1" 311 + dependencies = [ 312 + "defmt 0.3.100", 313 + "embassy-embedded-hal 0.4.0", 314 + "embassy-futures", 315 + "embassy-sync 0.6.2", 316 + "embassy-time", 317 + "embedded-hal 0.2.7", 318 + "embedded-hal 1.0.0", 319 + "embedded-hal-async", 320 + "embedded-storage", 321 + "embedded-storage-async", 322 + "nb 1.1.0", 323 + ] 324 + 325 + [[package]] 326 + name = "embassy-embedded-hal" 327 + version = "0.4.0" 328 + source = "registry+https://github.com/rust-lang/crates.io-index" 329 + checksum = "d1611b7a7ab5d1fbed84c338df26d56fd9bded58006ebb029075112ed2c5e039" 330 + dependencies = [ 331 + "embassy-futures", 332 + "embassy-hal-internal", 333 + "embassy-sync 0.7.2", 334 + "embedded-hal 0.2.7", 335 + "embedded-hal 1.0.0", 336 + "embedded-hal-async", 337 + "embedded-storage", 338 + "embedded-storage-async", 339 + "nb 1.1.0", 340 + ] 341 + 342 + [[package]] 343 + name = "embassy-executor" 344 + version = "0.7.0" 345 + source = "registry+https://github.com/rust-lang/crates.io-index" 346 + checksum = "90327bcc66333a507f89ecc4e2d911b265c45f5c9bc241f98eee076752d35ac6" 347 + dependencies = [ 348 + "cortex-m", 349 + "critical-section", 350 + "defmt 0.3.100", 351 + "document-features", 352 + "embassy-executor-macros", 353 + ] 354 + 355 + [[package]] 356 + name = "embassy-executor-macros" 357 + version = "0.6.2" 358 + source = "registry+https://github.com/rust-lang/crates.io-index" 359 + checksum = "3577b1e9446f61381179a330fc5324b01d511624c55f25e3c66c9e3c626dbecf" 360 + dependencies = [ 361 + "darling", 362 + "proc-macro2", 363 + "quote", 364 + "syn 2.0.106", 365 + ] 366 + 367 + [[package]] 368 + name = "embassy-futures" 369 + version = "0.1.2" 370 + source = "registry+https://github.com/rust-lang/crates.io-index" 371 + checksum = "dc2d050bdc5c21e0862a89256ed8029ae6c290a93aecefc73084b3002cdebb01" 372 + 373 + [[package]] 374 + name = "embassy-hal-internal" 375 + version = "0.3.0" 376 + source = "registry+https://github.com/rust-lang/crates.io-index" 377 + checksum = "95285007a91b619dc9f26ea8f55452aa6c60f7115a4edc05085cd2bd3127cd7a" 378 + dependencies = [ 379 + "cortex-m", 380 + "critical-section", 381 + "defmt 1.0.1", 382 + "num-traits", 383 + ] 384 + 385 + [[package]] 386 + name = "embassy-net-driver" 387 + version = "0.2.0" 388 + source = "registry+https://github.com/rust-lang/crates.io-index" 389 + checksum = "524eb3c489760508f71360112bca70f6e53173e6fe48fc5f0efd0f5ab217751d" 390 + 391 + [[package]] 392 + name = "embassy-net-driver-channel" 393 + version = "0.3.2" 394 + source = "registry+https://github.com/rust-lang/crates.io-index" 395 + checksum = "b7b2739fbcf6cd206ae08779c7d709087b16577d255f2ea4a45bc4bbbf305b3f" 396 + dependencies = [ 397 + "embassy-futures", 398 + "embassy-net-driver", 399 + "embassy-sync 0.7.2", 400 + ] 401 + 402 + [[package]] 403 + name = "embassy-nrf" 404 + version = "0.5.0" 405 + source = "registry+https://github.com/rust-lang/crates.io-index" 406 + checksum = "6ae20388606f23184ab567537b9c7758eef5ac20cf5f94db3d936a641b9f4b9e" 407 + dependencies = [ 408 + "bitflags 2.9.4", 409 + "cfg-if", 410 + "cortex-m", 411 + "cortex-m-rt", 412 + "critical-section", 413 + "defmt 1.0.1", 414 + "document-features", 415 + "embassy-embedded-hal 0.3.2", 416 + "embassy-hal-internal", 417 + "embassy-sync 0.7.2", 418 + "embassy-time", 419 + "embassy-time-driver", 420 + "embassy-time-queue-utils", 421 + "embassy-usb-driver", 422 + "embedded-hal 0.2.7", 423 + "embedded-hal 1.0.0", 424 + "embedded-hal-async", 425 + "embedded-io", 426 + "embedded-io-async", 427 + "embedded-storage", 428 + "embedded-storage-async", 429 + "fixed", 430 + "nrf-pac", 431 + "rand_core 0.6.4", 432 + "rand_core 0.9.3", 433 + ] 434 + 435 + [[package]] 436 + name = "embassy-sync" 437 + version = "0.6.2" 438 + source = "registry+https://github.com/rust-lang/crates.io-index" 439 + checksum = "8d2c8cdff05a7a51ba0087489ea44b0b1d97a296ca6b1d6d1a33ea7423d34049" 440 + dependencies = [ 441 + "cfg-if", 442 + "critical-section", 443 + "embedded-io-async", 444 + "futures-sink", 445 + "futures-util", 446 + "heapless 0.8.0", 447 + ] 448 + 449 + [[package]] 450 + name = "embassy-sync" 451 + version = "0.7.2" 452 + source = "registry+https://github.com/rust-lang/crates.io-index" 453 + checksum = "73974a3edbd0bd286759b3d483540f0ebef705919a5f56f4fc7709066f71689b" 454 + dependencies = [ 455 + "cfg-if", 456 + "critical-section", 457 + "defmt 1.0.1", 458 + "embedded-io-async", 459 + "futures-core", 460 + "futures-sink", 461 + "heapless 0.8.0", 462 + ] 463 + 464 + [[package]] 465 + name = "embassy-time" 466 + version = "0.4.0" 467 + source = "registry+https://github.com/rust-lang/crates.io-index" 468 + checksum = "f820157f198ada183ad62e0a66f554c610cdcd1a9f27d4b316358103ced7a1f8" 469 + dependencies = [ 470 + "cfg-if", 471 + "critical-section", 472 + "defmt 0.3.100", 473 + "document-features", 474 + "embassy-time-driver", 475 + "embedded-hal 0.2.7", 476 + "embedded-hal 1.0.0", 477 + "embedded-hal-async", 478 + "futures-util", 479 + ] 480 + 481 + [[package]] 482 + name = "embassy-time-driver" 483 + version = "0.2.1" 484 + source = "registry+https://github.com/rust-lang/crates.io-index" 485 + checksum = "a0a244c7dc22c8d0289379c8d8830cae06bb93d8f990194d0de5efb3b5ae7ba6" 486 + dependencies = [ 487 + "document-features", 488 + ] 489 + 490 + [[package]] 491 + name = "embassy-time-queue-utils" 492 + version = "0.1.0" 493 + source = "registry+https://github.com/rust-lang/crates.io-index" 494 + checksum = "dc55c748d16908a65b166d09ce976575fb8852cf60ccd06174092b41064d8f83" 495 + dependencies = [ 496 + "embassy-executor", 497 + "heapless 0.8.0", 498 + ] 499 + 500 + [[package]] 501 + name = "embassy-usb" 502 + version = "0.5.1" 503 + source = "registry+https://github.com/rust-lang/crates.io-index" 504 + checksum = "dc4462e48b19a4f401a11901bdd981aab80c6a826608016a0bdc73cbbab31954" 505 + dependencies = [ 506 + "embassy-futures", 507 + "embassy-net-driver-channel", 508 + "embassy-sync 0.7.2", 509 + "embassy-usb-driver", 510 + "embedded-io-async", 511 + "heapless 0.8.0", 512 + "ssmarshal", 513 + "usbd-hid", 514 + ] 515 + 516 + [[package]] 517 + name = "embassy-usb-driver" 518 + version = "0.2.0" 519 + source = "registry+https://github.com/rust-lang/crates.io-index" 520 + checksum = "17119855ccc2d1f7470a39756b12068454ae27a3eabb037d940b5c03d9c77b7a" 521 + dependencies = [ 522 + "defmt 1.0.1", 523 + "embedded-io-async", 524 + ] 525 + 526 + [[package]] 527 + name = "embedded-hal" 528 + version = "0.2.7" 529 + source = "registry+https://github.com/rust-lang/crates.io-index" 530 + checksum = "35949884794ad573cf46071e41c9b60efb0cb311e3ca01f7af807af1debc66ff" 531 + dependencies = [ 532 + "nb 0.1.3", 533 + "void", 534 + ] 535 + 536 + [[package]] 537 + name = "embedded-hal" 538 + version = "1.0.0" 539 + source = "registry+https://github.com/rust-lang/crates.io-index" 540 + checksum = "361a90feb7004eca4019fb28352a9465666b24f840f5c3cddf0ff13920590b89" 541 + 542 + [[package]] 543 + name = "embedded-hal-async" 544 + version = "1.0.0" 545 + source = "registry+https://github.com/rust-lang/crates.io-index" 546 + checksum = "0c4c685bbef7fe13c3c6dd4da26841ed3980ef33e841cddfa15ce8a8fb3f1884" 547 + dependencies = [ 548 + "embedded-hal 1.0.0", 549 + ] 550 + 551 + [[package]] 552 + name = "embedded-io" 553 + version = "0.6.1" 554 + source = "registry+https://github.com/rust-lang/crates.io-index" 555 + checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" 556 + 557 + [[package]] 558 + name = "embedded-io-async" 559 + version = "0.6.1" 560 + source = "registry+https://github.com/rust-lang/crates.io-index" 561 + checksum = "3ff09972d4073aa8c299395be75161d582e7629cd663171d62af73c8d50dba3f" 562 + dependencies = [ 563 + "embedded-io", 564 + ] 565 + 566 + [[package]] 567 + name = "embedded-storage" 568 + version = "0.3.1" 569 + source = "registry+https://github.com/rust-lang/crates.io-index" 570 + checksum = "a21dea9854beb860f3062d10228ce9b976da520a73474aed3171ec276bc0c032" 571 + 572 + [[package]] 573 + name = "embedded-storage-async" 574 + version = "0.4.1" 575 + source = "registry+https://github.com/rust-lang/crates.io-index" 576 + checksum = "1763775e2323b7d5f0aa6090657f5e21cfa02ede71f5dc40eead06d64dcd15cc" 577 + dependencies = [ 578 + "embedded-storage", 579 + ] 580 + 581 + [[package]] 582 + name = "encode_unicode" 583 + version = "0.3.6" 584 + source = "registry+https://github.com/rust-lang/crates.io-index" 585 + checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" 586 + 587 + [[package]] 588 + name = "ergot" 589 + version = "0.11.0" 590 + dependencies = [ 591 + "bbq2", 592 + "cobs 0.3.0", 593 + "cobs-acc", 594 + "const-fnv1a-hash", 595 + "cordyceps", 596 + "critical-section", 597 + "defmt 1.0.1", 598 + "embassy-futures", 599 + "embassy-time", 600 + "embassy-usb", 601 + "heapless 0.9.1", 602 + "log", 603 + "maitake-sync", 604 + "mutex", 605 + "pin-project", 606 + "portable-atomic", 607 + "postcard", 608 + "postcard-schema", 609 + "serde", 610 + "static_cell", 611 + ] 612 + 613 + [[package]] 614 + name = "find-msvc-tools" 615 + version = "0.1.1" 616 + source = "registry+https://github.com/rust-lang/crates.io-index" 617 + checksum = "7fd99930f64d146689264c637b5af2f0233a933bef0d8570e2526bf9e083192d" 618 + 619 + [[package]] 620 + name = "fixed" 621 + version = "1.29.0" 622 + source = "registry+https://github.com/rust-lang/crates.io-index" 623 + checksum = "707070ccf8c4173548210893a0186e29c266901b71ed20cd9e2ca0193dfe95c3" 624 + dependencies = [ 625 + "az", 626 + "bytemuck", 627 + "half", 628 + "typenum", 629 + ] 630 + 631 + [[package]] 632 + name = "fnv" 633 + version = "1.0.7" 634 + source = "registry+https://github.com/rust-lang/crates.io-index" 635 + checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 636 + 637 + [[package]] 638 + name = "futures-core" 639 + version = "0.3.31" 640 + source = "registry+https://github.com/rust-lang/crates.io-index" 641 + checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" 642 + 643 + [[package]] 644 + name = "futures-sink" 645 + version = "0.3.31" 646 + source = "registry+https://github.com/rust-lang/crates.io-index" 647 + checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" 648 + 649 + [[package]] 650 + name = "futures-task" 651 + version = "0.3.31" 652 + source = "registry+https://github.com/rust-lang/crates.io-index" 653 + checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" 654 + 655 + [[package]] 656 + name = "futures-util" 657 + version = "0.3.31" 658 + source = "registry+https://github.com/rust-lang/crates.io-index" 659 + checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" 660 + dependencies = [ 661 + "futures-core", 662 + "futures-task", 663 + "pin-project-lite", 664 + "pin-utils", 665 + ] 666 + 667 + [[package]] 668 + name = "generator" 669 + version = "0.8.7" 670 + source = "registry+https://github.com/rust-lang/crates.io-index" 671 + checksum = "605183a538e3e2a9c1038635cc5c2d194e2ee8fd0d1b66b8349fad7dbacce5a2" 672 + dependencies = [ 673 + "cc", 674 + "cfg-if", 675 + "libc", 676 + "log", 677 + "rustversion", 678 + "windows", 679 + ] 680 + 681 + [[package]] 682 + name = "half" 683 + version = "2.6.0" 684 + source = "registry+https://github.com/rust-lang/crates.io-index" 685 + checksum = "459196ed295495a68f7d7fe1d84f6c4b7ff0e21fe3017b2f283c6fac3ad803c9" 686 + dependencies = [ 687 + "cfg-if", 688 + "crunchy", 689 + ] 690 + 691 + [[package]] 692 + name = "hash32" 693 + version = "0.2.1" 694 + source = "registry+https://github.com/rust-lang/crates.io-index" 695 + checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" 696 + dependencies = [ 697 + "byteorder", 698 + ] 699 + 700 + [[package]] 701 + name = "hash32" 702 + version = "0.3.1" 703 + source = "registry+https://github.com/rust-lang/crates.io-index" 704 + checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606" 705 + dependencies = [ 706 + "byteorder", 707 + ] 708 + 709 + [[package]] 710 + name = "hashbrown" 711 + version = "0.13.2" 712 + source = "registry+https://github.com/rust-lang/crates.io-index" 713 + checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" 714 + dependencies = [ 715 + "ahash", 716 + ] 717 + 718 + [[package]] 719 + name = "heapless" 720 + version = "0.7.17" 721 + source = "registry+https://github.com/rust-lang/crates.io-index" 722 + checksum = "cdc6457c0eb62c71aac4bc17216026d8410337c4126773b9c5daba343f17964f" 723 + dependencies = [ 724 + "atomic-polyfill", 725 + "hash32 0.2.1", 726 + "rustc_version 0.4.1", 727 + "serde", 728 + "spin", 729 + "stable_deref_trait", 730 + ] 731 + 732 + [[package]] 733 + name = "heapless" 734 + version = "0.8.0" 735 + source = "registry+https://github.com/rust-lang/crates.io-index" 736 + checksum = "0bfb9eb618601c89945a70e254898da93b13be0388091d42117462b265bb3fad" 737 + dependencies = [ 738 + "hash32 0.3.1", 739 + "stable_deref_trait", 740 + ] 741 + 742 + [[package]] 743 + name = "heapless" 744 + version = "0.9.1" 745 + source = "registry+https://github.com/rust-lang/crates.io-index" 746 + checksum = "b1edcd5a338e64688fbdcb7531a846cfd3476a54784dcb918a0844682bc7ada5" 747 + dependencies = [ 748 + "defmt 1.0.1", 749 + "hash32 0.3.1", 750 + "serde", 751 + "stable_deref_trait", 752 + ] 753 + 754 + [[package]] 755 + name = "ident_case" 756 + version = "1.0.1" 757 + source = "registry+https://github.com/rust-lang/crates.io-index" 758 + checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" 759 + 760 + [[package]] 761 + name = "lazy_static" 762 + version = "1.5.0" 763 + source = "registry+https://github.com/rust-lang/crates.io-index" 764 + checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" 765 + 766 + [[package]] 767 + name = "libc" 768 + version = "0.2.175" 769 + source = "registry+https://github.com/rust-lang/crates.io-index" 770 + checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" 771 + 772 + [[package]] 773 + name = "litrs" 774 + version = "0.4.2" 775 + source = "registry+https://github.com/rust-lang/crates.io-index" 776 + checksum = "f5e54036fe321fd421e10d732f155734c4e4afd610dd556d9a82833ab3ee0bed" 777 + 778 + [[package]] 779 + name = "lock_api" 780 + version = "0.4.13" 781 + source = "registry+https://github.com/rust-lang/crates.io-index" 782 + checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" 783 + dependencies = [ 784 + "autocfg", 785 + "scopeguard", 786 + ] 787 + 788 + [[package]] 789 + name = "log" 790 + version = "0.4.28" 791 + source = "registry+https://github.com/rust-lang/crates.io-index" 792 + checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" 793 + 794 + [[package]] 795 + name = "loom" 796 + version = "0.7.2" 797 + source = "registry+https://github.com/rust-lang/crates.io-index" 798 + checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca" 799 + dependencies = [ 800 + "cfg-if", 801 + "generator", 802 + "scoped-tls", 803 + "tracing", 804 + "tracing-subscriber", 805 + ] 806 + 807 + [[package]] 808 + name = "maitake-sync" 809 + version = "0.2.2" 810 + source = "registry+https://github.com/rust-lang/crates.io-index" 811 + checksum = "748f86d9befd480b602c3bebc9ef30dbf2f3dfc8acc4a73d07b90f0117e6de3f" 812 + dependencies = [ 813 + "cordyceps", 814 + "loom", 815 + "mutex-traits", 816 + "mycelium-bitfield", 817 + "pin-project", 818 + "portable-atomic", 819 + "tracing", 820 + ] 821 + 822 + [[package]] 823 + name = "matchers" 824 + version = "0.2.0" 825 + source = "registry+https://github.com/rust-lang/crates.io-index" 826 + checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" 827 + dependencies = [ 828 + "regex-automata", 829 + ] 830 + 831 + [[package]] 832 + name = "memchr" 833 + version = "2.7.5" 834 + source = "registry+https://github.com/rust-lang/crates.io-index" 835 + checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" 836 + 837 + [[package]] 838 + name = "microbit-null" 839 + version = "0.1.0" 840 + dependencies = [ 841 + "bbq2", 842 + "cortex-m", 843 + "cortex-m-rt", 844 + "defmt 1.0.1", 845 + "defmt-rtt", 846 + "embassy-executor", 847 + "embassy-nrf", 848 + "embassy-sync 0.7.2", 849 + "embassy-time", 850 + "embassy-usb", 851 + "ergot", 852 + "mutex", 853 + "panic-probe", 854 + "static_cell", 855 + ] 856 + 857 + [[package]] 858 + name = "mutex" 859 + version = "1.0.2" 860 + source = "registry+https://github.com/rust-lang/crates.io-index" 861 + checksum = "f23bf5944734b7a5d1bd0a9b594213dd04de471fd3d3a1bfce672913dd72d606" 862 + dependencies = [ 863 + "critical-section", 864 + "mutex-traits", 865 + ] 866 + 867 + [[package]] 868 + name = "mutex-traits" 869 + version = "1.0.1" 870 + source = "registry+https://github.com/rust-lang/crates.io-index" 871 + checksum = "3929f2b5633d29cf7b6624992e5f3c1e9334f1193423e12d17be4faf678cde3f" 872 + 873 + [[package]] 874 + name = "mycelium-bitfield" 875 + version = "0.1.5" 876 + source = "registry+https://github.com/rust-lang/crates.io-index" 877 + checksum = "24e0cc5e2c585acbd15c5ce911dff71e1f4d5313f43345873311c4f5efd741cc" 878 + 879 + [[package]] 880 + name = "nb" 881 + version = "0.1.3" 882 + source = "registry+https://github.com/rust-lang/crates.io-index" 883 + checksum = "801d31da0513b6ec5214e9bf433a77966320625a37860f910be265be6e18d06f" 884 + dependencies = [ 885 + "nb 1.1.0", 886 + ] 887 + 888 + [[package]] 889 + name = "nb" 890 + version = "1.1.0" 891 + source = "registry+https://github.com/rust-lang/crates.io-index" 892 + checksum = "8d5439c4ad607c3c23abf66de8c8bf57ba8adcd1f129e699851a6e43935d339d" 893 + 894 + [[package]] 895 + name = "nrf-pac" 896 + version = "0.1.0" 897 + source = "registry+https://github.com/rust-lang/crates.io-index" 898 + checksum = "d334027d6703534f2a80de0794ae435c0e029358d28278533d3935e69b221b01" 899 + dependencies = [ 900 + "cortex-m", 901 + "cortex-m-rt", 902 + ] 903 + 904 + [[package]] 905 + name = "nu-ansi-term" 906 + version = "0.50.1" 907 + source = "registry+https://github.com/rust-lang/crates.io-index" 908 + checksum = "d4a28e057d01f97e61255210fcff094d74ed0466038633e95017f5beb68e4399" 909 + dependencies = [ 910 + "windows-sys", 911 + ] 912 + 913 + [[package]] 914 + name = "num-traits" 915 + version = "0.2.19" 916 + source = "registry+https://github.com/rust-lang/crates.io-index" 917 + checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" 918 + dependencies = [ 919 + "autocfg", 920 + ] 921 + 922 + [[package]] 923 + name = "once_cell" 924 + version = "1.21.3" 925 + source = "registry+https://github.com/rust-lang/crates.io-index" 926 + checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" 927 + 928 + [[package]] 929 + name = "panic-probe" 930 + version = "1.0.0" 931 + source = "registry+https://github.com/rust-lang/crates.io-index" 932 + checksum = "fd402d00b0fb94c5aee000029204a46884b1262e0c443f166d86d2c0747e1a1a" 933 + dependencies = [ 934 + "cortex-m", 935 + "defmt 1.0.1", 936 + ] 937 + 938 + [[package]] 939 + name = "pin-project" 940 + version = "1.1.10" 941 + source = "registry+https://github.com/rust-lang/crates.io-index" 942 + checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" 943 + dependencies = [ 944 + "pin-project-internal", 945 + ] 946 + 947 + [[package]] 948 + name = "pin-project-internal" 949 + version = "1.1.10" 950 + source = "registry+https://github.com/rust-lang/crates.io-index" 951 + checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" 952 + dependencies = [ 953 + "proc-macro2", 954 + "quote", 955 + "syn 2.0.106", 956 + ] 957 + 958 + [[package]] 959 + name = "pin-project-lite" 960 + version = "0.2.16" 961 + source = "registry+https://github.com/rust-lang/crates.io-index" 962 + checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" 963 + 964 + [[package]] 965 + name = "pin-utils" 966 + version = "0.1.0" 967 + source = "registry+https://github.com/rust-lang/crates.io-index" 968 + checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 969 + 970 + [[package]] 971 + name = "portable-atomic" 972 + version = "1.11.1" 973 + source = "registry+https://github.com/rust-lang/crates.io-index" 974 + checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" 975 + 976 + [[package]] 977 + name = "postcard" 978 + version = "1.1.3" 979 + source = "registry+https://github.com/rust-lang/crates.io-index" 980 + checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" 981 + dependencies = [ 982 + "cobs 0.3.0", 983 + "heapless 0.7.17", 984 + "serde", 985 + ] 986 + 987 + [[package]] 988 + name = "postcard-derive" 989 + version = "0.2.2" 990 + source = "registry+https://github.com/rust-lang/crates.io-index" 991 + checksum = "e0232bd009a197ceec9cc881ba46f727fcd8060a2d8d6a9dde7a69030a6fe2bb" 992 + dependencies = [ 993 + "proc-macro2", 994 + "quote", 995 + "syn 2.0.106", 996 + ] 997 + 998 + [[package]] 999 + name = "postcard-schema" 1000 + version = "0.2.5" 1001 + source = "registry+https://github.com/rust-lang/crates.io-index" 1002 + checksum = "9475666d89f42231a0a57da32d5f6ca7f9b5cd4c335ea1fe8f3278215b7a21ff" 1003 + dependencies = [ 1004 + "heapless 0.9.1", 1005 + "postcard-derive", 1006 + "serde", 1007 + ] 1008 + 1009 + [[package]] 1010 + name = "proc-macro-error-attr2" 1011 + version = "2.0.0" 1012 + source = "registry+https://github.com/rust-lang/crates.io-index" 1013 + checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" 1014 + dependencies = [ 1015 + "proc-macro2", 1016 + "quote", 1017 + ] 1018 + 1019 + [[package]] 1020 + name = "proc-macro-error2" 1021 + version = "2.0.1" 1022 + source = "registry+https://github.com/rust-lang/crates.io-index" 1023 + checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" 1024 + dependencies = [ 1025 + "proc-macro-error-attr2", 1026 + "proc-macro2", 1027 + "quote", 1028 + "syn 2.0.106", 1029 + ] 1030 + 1031 + [[package]] 1032 + name = "proc-macro2" 1033 + version = "1.0.101" 1034 + source = "registry+https://github.com/rust-lang/crates.io-index" 1035 + checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" 1036 + dependencies = [ 1037 + "unicode-ident", 1038 + ] 1039 + 1040 + [[package]] 1041 + name = "quote" 1042 + version = "1.0.40" 1043 + source = "registry+https://github.com/rust-lang/crates.io-index" 1044 + checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" 1045 + dependencies = [ 1046 + "proc-macro2", 1047 + ] 1048 + 1049 + [[package]] 1050 + name = "rand_core" 1051 + version = "0.6.4" 1052 + source = "registry+https://github.com/rust-lang/crates.io-index" 1053 + checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 1054 + 1055 + [[package]] 1056 + name = "rand_core" 1057 + version = "0.9.3" 1058 + source = "registry+https://github.com/rust-lang/crates.io-index" 1059 + checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" 1060 + 1061 + [[package]] 1062 + name = "regex-automata" 1063 + version = "0.4.10" 1064 + source = "registry+https://github.com/rust-lang/crates.io-index" 1065 + checksum = "6b9458fa0bfeeac22b5ca447c63aaf45f28439a709ccd244698632f9aa6394d6" 1066 + dependencies = [ 1067 + "aho-corasick", 1068 + "memchr", 1069 + "regex-syntax", 1070 + ] 1071 + 1072 + [[package]] 1073 + name = "regex-syntax" 1074 + version = "0.8.6" 1075 + source = "registry+https://github.com/rust-lang/crates.io-index" 1076 + checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001" 1077 + 1078 + [[package]] 1079 + name = "rustc_version" 1080 + version = "0.2.3" 1081 + source = "registry+https://github.com/rust-lang/crates.io-index" 1082 + checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" 1083 + dependencies = [ 1084 + "semver 0.9.0", 1085 + ] 1086 + 1087 + [[package]] 1088 + name = "rustc_version" 1089 + version = "0.4.1" 1090 + source = "registry+https://github.com/rust-lang/crates.io-index" 1091 + checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" 1092 + dependencies = [ 1093 + "semver 1.0.26", 1094 + ] 1095 + 1096 + [[package]] 1097 + name = "rustversion" 1098 + version = "1.0.22" 1099 + source = "registry+https://github.com/rust-lang/crates.io-index" 1100 + checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" 1101 + 1102 + [[package]] 1103 + name = "scoped-tls" 1104 + version = "1.0.1" 1105 + source = "registry+https://github.com/rust-lang/crates.io-index" 1106 + checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" 1107 + 1108 + [[package]] 1109 + name = "scopeguard" 1110 + version = "1.2.0" 1111 + source = "registry+https://github.com/rust-lang/crates.io-index" 1112 + checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 1113 + 1114 + [[package]] 1115 + name = "semver" 1116 + version = "0.9.0" 1117 + source = "registry+https://github.com/rust-lang/crates.io-index" 1118 + checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" 1119 + dependencies = [ 1120 + "semver-parser", 1121 + ] 1122 + 1123 + [[package]] 1124 + name = "semver" 1125 + version = "1.0.26" 1126 + source = "registry+https://github.com/rust-lang/crates.io-index" 1127 + checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" 1128 + 1129 + [[package]] 1130 + name = "semver-parser" 1131 + version = "0.7.0" 1132 + source = "registry+https://github.com/rust-lang/crates.io-index" 1133 + checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" 1134 + 1135 + [[package]] 1136 + name = "serde" 1137 + version = "1.0.219" 1138 + source = "registry+https://github.com/rust-lang/crates.io-index" 1139 + checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" 1140 + dependencies = [ 1141 + "serde_derive", 1142 + ] 1143 + 1144 + [[package]] 1145 + name = "serde_derive" 1146 + version = "1.0.219" 1147 + source = "registry+https://github.com/rust-lang/crates.io-index" 1148 + checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" 1149 + dependencies = [ 1150 + "proc-macro2", 1151 + "quote", 1152 + "syn 2.0.106", 1153 + ] 1154 + 1155 + [[package]] 1156 + name = "sharded-slab" 1157 + version = "0.1.7" 1158 + source = "registry+https://github.com/rust-lang/crates.io-index" 1159 + checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" 1160 + dependencies = [ 1161 + "lazy_static", 1162 + ] 1163 + 1164 + [[package]] 1165 + name = "shlex" 1166 + version = "1.3.0" 1167 + source = "registry+https://github.com/rust-lang/crates.io-index" 1168 + checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" 1169 + 1170 + [[package]] 1171 + name = "smallvec" 1172 + version = "1.15.1" 1173 + source = "registry+https://github.com/rust-lang/crates.io-index" 1174 + checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" 1175 + 1176 + [[package]] 1177 + name = "spin" 1178 + version = "0.9.8" 1179 + source = "registry+https://github.com/rust-lang/crates.io-index" 1180 + checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" 1181 + dependencies = [ 1182 + "lock_api", 1183 + ] 1184 + 1185 + [[package]] 1186 + name = "ssmarshal" 1187 + version = "1.0.0" 1188 + source = "registry+https://github.com/rust-lang/crates.io-index" 1189 + checksum = "f3e6ad23b128192ed337dfa4f1b8099ced0c2bf30d61e551b65fda5916dbb850" 1190 + dependencies = [ 1191 + "encode_unicode", 1192 + "serde", 1193 + ] 1194 + 1195 + [[package]] 1196 + name = "stable_deref_trait" 1197 + version = "1.2.0" 1198 + source = "registry+https://github.com/rust-lang/crates.io-index" 1199 + checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" 1200 + 1201 + [[package]] 1202 + name = "static_cell" 1203 + version = "2.1.1" 1204 + source = "registry+https://github.com/rust-lang/crates.io-index" 1205 + checksum = "0530892bb4fa575ee0da4b86f86c667132a94b74bb72160f58ee5a4afec74c23" 1206 + dependencies = [ 1207 + "portable-atomic", 1208 + ] 1209 + 1210 + [[package]] 1211 + name = "strsim" 1212 + version = "0.11.1" 1213 + source = "registry+https://github.com/rust-lang/crates.io-index" 1214 + checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" 1215 + 1216 + [[package]] 1217 + name = "syn" 1218 + version = "1.0.109" 1219 + source = "registry+https://github.com/rust-lang/crates.io-index" 1220 + checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" 1221 + dependencies = [ 1222 + "proc-macro2", 1223 + "quote", 1224 + "unicode-ident", 1225 + ] 1226 + 1227 + [[package]] 1228 + name = "syn" 1229 + version = "2.0.106" 1230 + source = "registry+https://github.com/rust-lang/crates.io-index" 1231 + checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" 1232 + dependencies = [ 1233 + "proc-macro2", 1234 + "quote", 1235 + "unicode-ident", 1236 + ] 1237 + 1238 + [[package]] 1239 + name = "thiserror" 1240 + version = "2.0.16" 1241 + source = "registry+https://github.com/rust-lang/crates.io-index" 1242 + checksum = "3467d614147380f2e4e374161426ff399c91084acd2363eaf549172b3d5e60c0" 1243 + dependencies = [ 1244 + "thiserror-impl", 1245 + ] 1246 + 1247 + [[package]] 1248 + name = "thiserror-impl" 1249 + version = "2.0.16" 1250 + source = "registry+https://github.com/rust-lang/crates.io-index" 1251 + checksum = "6c5e1be1c48b9172ee610da68fd9cd2770e7a4056cb3fc98710ee6906f0c7960" 1252 + dependencies = [ 1253 + "proc-macro2", 1254 + "quote", 1255 + "syn 2.0.106", 1256 + ] 1257 + 1258 + [[package]] 1259 + name = "thread_local" 1260 + version = "1.1.9" 1261 + source = "registry+https://github.com/rust-lang/crates.io-index" 1262 + checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" 1263 + dependencies = [ 1264 + "cfg-if", 1265 + ] 1266 + 1267 + [[package]] 1268 + name = "tracing" 1269 + version = "0.1.41" 1270 + source = "registry+https://github.com/rust-lang/crates.io-index" 1271 + checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" 1272 + dependencies = [ 1273 + "pin-project-lite", 1274 + "tracing-attributes", 1275 + "tracing-core", 1276 + ] 1277 + 1278 + [[package]] 1279 + name = "tracing-attributes" 1280 + version = "0.1.30" 1281 + source = "registry+https://github.com/rust-lang/crates.io-index" 1282 + checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" 1283 + dependencies = [ 1284 + "proc-macro2", 1285 + "quote", 1286 + "syn 2.0.106", 1287 + ] 1288 + 1289 + [[package]] 1290 + name = "tracing-core" 1291 + version = "0.1.34" 1292 + source = "registry+https://github.com/rust-lang/crates.io-index" 1293 + checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" 1294 + dependencies = [ 1295 + "once_cell", 1296 + "valuable", 1297 + ] 1298 + 1299 + [[package]] 1300 + name = "tracing-log" 1301 + version = "0.2.0" 1302 + source = "registry+https://github.com/rust-lang/crates.io-index" 1303 + checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" 1304 + dependencies = [ 1305 + "log", 1306 + "once_cell", 1307 + "tracing-core", 1308 + ] 1309 + 1310 + [[package]] 1311 + name = "tracing-subscriber" 1312 + version = "0.3.20" 1313 + source = "registry+https://github.com/rust-lang/crates.io-index" 1314 + checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5" 1315 + dependencies = [ 1316 + "matchers", 1317 + "nu-ansi-term", 1318 + "once_cell", 1319 + "regex-automata", 1320 + "sharded-slab", 1321 + "smallvec", 1322 + "thread_local", 1323 + "tracing", 1324 + "tracing-core", 1325 + "tracing-log", 1326 + ] 1327 + 1328 + [[package]] 1329 + name = "typenum" 1330 + version = "1.18.0" 1331 + source = "registry+https://github.com/rust-lang/crates.io-index" 1332 + checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" 1333 + 1334 + [[package]] 1335 + name = "unicode-ident" 1336 + version = "1.0.19" 1337 + source = "registry+https://github.com/rust-lang/crates.io-index" 1338 + checksum = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d" 1339 + 1340 + [[package]] 1341 + name = "usb-device" 1342 + version = "0.3.2" 1343 + source = "registry+https://github.com/rust-lang/crates.io-index" 1344 + checksum = "98816b1accafbb09085168b90f27e93d790b4bfa19d883466b5e53315b5f06a6" 1345 + dependencies = [ 1346 + "heapless 0.8.0", 1347 + "portable-atomic", 1348 + ] 1349 + 1350 + [[package]] 1351 + name = "usbd-hid" 1352 + version = "0.8.2" 1353 + source = "registry+https://github.com/rust-lang/crates.io-index" 1354 + checksum = "e6f291ab53d428685cc780f08a2eb9d5d6ff58622db2b36e239a4f715f1e184c" 1355 + dependencies = [ 1356 + "serde", 1357 + "ssmarshal", 1358 + "usb-device", 1359 + "usbd-hid-macros", 1360 + ] 1361 + 1362 + [[package]] 1363 + name = "usbd-hid-descriptors" 1364 + version = "0.8.2" 1365 + source = "registry+https://github.com/rust-lang/crates.io-index" 1366 + checksum = "0eee54712c5d778d2fb2da43b1ce5a7b5060886ef7b09891baeb4bf36910a3ed" 1367 + dependencies = [ 1368 + "bitfield 0.14.0", 1369 + ] 1370 + 1371 + [[package]] 1372 + name = "usbd-hid-macros" 1373 + version = "0.8.2" 1374 + source = "registry+https://github.com/rust-lang/crates.io-index" 1375 + checksum = "bb573c76e7884035ac5e1ab4a81234c187a82b6100140af0ab45757650ccda38" 1376 + dependencies = [ 1377 + "byteorder", 1378 + "hashbrown", 1379 + "log", 1380 + "proc-macro2", 1381 + "quote", 1382 + "serde", 1383 + "syn 1.0.109", 1384 + "usbd-hid-descriptors", 1385 + ] 1386 + 1387 + [[package]] 1388 + name = "valuable" 1389 + version = "0.1.1" 1390 + source = "registry+https://github.com/rust-lang/crates.io-index" 1391 + checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" 1392 + 1393 + [[package]] 1394 + name = "vcell" 1395 + version = "0.1.3" 1396 + source = "registry+https://github.com/rust-lang/crates.io-index" 1397 + checksum = "77439c1b53d2303b20d9459b1ade71a83c716e3f9c34f3228c00e6f185d6c002" 1398 + 1399 + [[package]] 1400 + name = "version_check" 1401 + version = "0.9.5" 1402 + source = "registry+https://github.com/rust-lang/crates.io-index" 1403 + checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" 1404 + 1405 + [[package]] 1406 + name = "void" 1407 + version = "1.0.2" 1408 + source = "registry+https://github.com/rust-lang/crates.io-index" 1409 + checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" 1410 + 1411 + [[package]] 1412 + name = "volatile-register" 1413 + version = "0.2.2" 1414 + source = "registry+https://github.com/rust-lang/crates.io-index" 1415 + checksum = "de437e2a6208b014ab52972a27e59b33fa2920d3e00fe05026167a1c509d19cc" 1416 + dependencies = [ 1417 + "vcell", 1418 + ] 1419 + 1420 + [[package]] 1421 + name = "windows" 1422 + version = "0.61.3" 1423 + source = "registry+https://github.com/rust-lang/crates.io-index" 1424 + checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" 1425 + dependencies = [ 1426 + "windows-collections", 1427 + "windows-core", 1428 + "windows-future", 1429 + "windows-link", 1430 + "windows-numerics", 1431 + ] 1432 + 1433 + [[package]] 1434 + name = "windows-collections" 1435 + version = "0.2.0" 1436 + source = "registry+https://github.com/rust-lang/crates.io-index" 1437 + checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" 1438 + dependencies = [ 1439 + "windows-core", 1440 + ] 1441 + 1442 + [[package]] 1443 + name = "windows-core" 1444 + version = "0.61.2" 1445 + source = "registry+https://github.com/rust-lang/crates.io-index" 1446 + checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" 1447 + dependencies = [ 1448 + "windows-implement", 1449 + "windows-interface", 1450 + "windows-link", 1451 + "windows-result", 1452 + "windows-strings", 1453 + ] 1454 + 1455 + [[package]] 1456 + name = "windows-future" 1457 + version = "0.2.1" 1458 + source = "registry+https://github.com/rust-lang/crates.io-index" 1459 + checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" 1460 + dependencies = [ 1461 + "windows-core", 1462 + "windows-link", 1463 + "windows-threading", 1464 + ] 1465 + 1466 + [[package]] 1467 + name = "windows-implement" 1468 + version = "0.60.0" 1469 + source = "registry+https://github.com/rust-lang/crates.io-index" 1470 + checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" 1471 + dependencies = [ 1472 + "proc-macro2", 1473 + "quote", 1474 + "syn 2.0.106", 1475 + ] 1476 + 1477 + [[package]] 1478 + name = "windows-interface" 1479 + version = "0.59.1" 1480 + source = "registry+https://github.com/rust-lang/crates.io-index" 1481 + checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" 1482 + dependencies = [ 1483 + "proc-macro2", 1484 + "quote", 1485 + "syn 2.0.106", 1486 + ] 1487 + 1488 + [[package]] 1489 + name = "windows-link" 1490 + version = "0.1.3" 1491 + source = "registry+https://github.com/rust-lang/crates.io-index" 1492 + checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" 1493 + 1494 + [[package]] 1495 + name = "windows-numerics" 1496 + version = "0.2.0" 1497 + source = "registry+https://github.com/rust-lang/crates.io-index" 1498 + checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" 1499 + dependencies = [ 1500 + "windows-core", 1501 + "windows-link", 1502 + ] 1503 + 1504 + [[package]] 1505 + name = "windows-result" 1506 + version = "0.3.4" 1507 + source = "registry+https://github.com/rust-lang/crates.io-index" 1508 + checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" 1509 + dependencies = [ 1510 + "windows-link", 1511 + ] 1512 + 1513 + [[package]] 1514 + name = "windows-strings" 1515 + version = "0.4.2" 1516 + source = "registry+https://github.com/rust-lang/crates.io-index" 1517 + checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" 1518 + dependencies = [ 1519 + "windows-link", 1520 + ] 1521 + 1522 + [[package]] 1523 + name = "windows-sys" 1524 + version = "0.52.0" 1525 + source = "registry+https://github.com/rust-lang/crates.io-index" 1526 + checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" 1527 + dependencies = [ 1528 + "windows-targets", 1529 + ] 1530 + 1531 + [[package]] 1532 + name = "windows-targets" 1533 + version = "0.52.6" 1534 + source = "registry+https://github.com/rust-lang/crates.io-index" 1535 + checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" 1536 + dependencies = [ 1537 + "windows_aarch64_gnullvm", 1538 + "windows_aarch64_msvc", 1539 + "windows_i686_gnu", 1540 + "windows_i686_gnullvm", 1541 + "windows_i686_msvc", 1542 + "windows_x86_64_gnu", 1543 + "windows_x86_64_gnullvm", 1544 + "windows_x86_64_msvc", 1545 + ] 1546 + 1547 + [[package]] 1548 + name = "windows-threading" 1549 + version = "0.1.0" 1550 + source = "registry+https://github.com/rust-lang/crates.io-index" 1551 + checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" 1552 + dependencies = [ 1553 + "windows-link", 1554 + ] 1555 + 1556 + [[package]] 1557 + name = "windows_aarch64_gnullvm" 1558 + version = "0.52.6" 1559 + source = "registry+https://github.com/rust-lang/crates.io-index" 1560 + checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" 1561 + 1562 + [[package]] 1563 + name = "windows_aarch64_msvc" 1564 + version = "0.52.6" 1565 + source = "registry+https://github.com/rust-lang/crates.io-index" 1566 + checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" 1567 + 1568 + [[package]] 1569 + name = "windows_i686_gnu" 1570 + version = "0.52.6" 1571 + source = "registry+https://github.com/rust-lang/crates.io-index" 1572 + checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" 1573 + 1574 + [[package]] 1575 + name = "windows_i686_gnullvm" 1576 + version = "0.52.6" 1577 + source = "registry+https://github.com/rust-lang/crates.io-index" 1578 + checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" 1579 + 1580 + [[package]] 1581 + name = "windows_i686_msvc" 1582 + version = "0.52.6" 1583 + source = "registry+https://github.com/rust-lang/crates.io-index" 1584 + checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" 1585 + 1586 + [[package]] 1587 + name = "windows_x86_64_gnu" 1588 + version = "0.52.6" 1589 + source = "registry+https://github.com/rust-lang/crates.io-index" 1590 + checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" 1591 + 1592 + [[package]] 1593 + name = "windows_x86_64_gnullvm" 1594 + version = "0.52.6" 1595 + source = "registry+https://github.com/rust-lang/crates.io-index" 1596 + checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" 1597 + 1598 + [[package]] 1599 + name = "windows_x86_64_msvc" 1600 + version = "0.52.6" 1601 + source = "registry+https://github.com/rust-lang/crates.io-index" 1602 + checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" 1603 + 1604 + [[package]] 1605 + name = "zerocopy" 1606 + version = "0.8.27" 1607 + source = "registry+https://github.com/rust-lang/crates.io-index" 1608 + checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" 1609 + dependencies = [ 1610 + "zerocopy-derive", 1611 + ] 1612 + 1613 + [[package]] 1614 + name = "zerocopy-derive" 1615 + version = "0.8.27" 1616 + source = "registry+https://github.com/rust-lang/crates.io-index" 1617 + checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" 1618 + dependencies = [ 1619 + "proc-macro2", 1620 + "quote", 1621 + "syn 2.0.106", 1622 + ]
+42
demos/microbit/Cargo.toml
···
··· 1 + [workspace] 2 + members = [ 3 + "microbit-null", 4 + ] 5 + resolver = "2" 6 + 7 + [workspace.dependencies] 8 + ergot = { path = "../../crates/ergot", features = ["embassy-usb-v0_5"] } 9 + 10 + bbq2 = { version = "0.4.1", default-features = false, features = ["critical-section", "maitake-sync-0_2"] } 11 + cortex-m = { version = "0.7.7", features = ["inline-asm", "critical-section-single-core"] } 12 + embassy-executor = { version = "0.7.0", features = ["task-arena-size-32768", "arch-cortex-m", "executor-thread", "executor-interrupt", "defmt"] } 13 + embassy-nrf = { version = "0.5.0", features = ["defmt", "nrf52833", "time-driver-rtc1", "gpiote", "unstable-pac", "time"] } 14 + embassy-time = { version = "0.4.0", features = ["defmt", "defmt-timestamp-uptime"] } 15 + mutex = { version = "1.0.2", features = ["impl-unsafe-cortex-m-single-core"] } 16 + panic-probe = { version = "1.0.0", features = ["print-defmt"] } 17 + 18 + cortex-m-rt = "0.7.5" 19 + defmt = "1.0.1" 20 + defmt-rtt = "1.0.0" 21 + static_cell = "2.1.1" 22 + embassy-usb = "0.5.0" 23 + embassy-sync = "0.7.0" 24 + 25 + [profile.release] 26 + debug = 2 27 + lto = true 28 + opt-level = 'z' 29 + codegen-units = 1 30 + incremental = false 31 + 32 + [profile.ci] 33 + inherits = "dev" 34 + debug = false 35 + strip = true 36 + debug-assertions = true 37 + overflow-checks = true 38 + lto = false 39 + panic = 'unwind' 40 + incremental = false 41 + codegen-units = 256 42 + rpath = false
+26
demos/microbit/README.md
···
··· 1 + # Ergot demos for the micro:bit v2 2 + 3 + These demos show how to use ergot on the micro:bit v2, which uses the nrf52833 chip. 4 + The demos are similar to the nrf52840 ones, but adopting to the different hardware 5 + and specific to this board, which you might already have laying around. 6 + 7 + No board support crate is used, and we drive the hardware, for simplicity, directly with `embassy_nrf`. 8 + 9 + This demos are board specific to provide the simplest possible starting experience 10 + utilizing a low-cost and widely available board. 11 + In that spirit, code comments are sprinkled throughout more extensively than usual. 12 + 13 + To run these demos, you need a micro:bit v2 board, a USB cable, and [probe-rs](https://probe.rs/). 14 + A good summary of how to get started with Rust and the micro:bit v2 is available in the 15 + [Embedded Rust Discovery Book](https://docs.rust-embedded.org/discovery-mb2/index.html). 16 + 17 + ## Demos currently implemented: 18 + 19 + - `microbit-null`: A minimal demo that does not communicate with the outside world. 20 + Message passing between tasks is implemented with ergot. After loading, press the two buttons and/or 21 + the touch logo to see some LEDs light up. 22 + 23 + ## Further information: 24 + 25 + - [micro:bit Circuit Schematics, assembly and test point map](https://tech.microbit.org/hardware/schematic/) 26 + - [micro:bit Hardware schematic](https://github.com/microbit-foundation/microbit-v2-hardware)
+22
demos/microbit/microbit-null/Cargo.toml
···
··· 1 + [package] 2 + name = "microbit-null" 3 + version = "0.1.0" 4 + edition = "2021" 5 + 6 + [dependencies] 7 + ergot = { workspace = true } 8 + 9 + bbq2 = { workspace = true } 10 + cortex-m = { workspace = true } 11 + embassy-executor = { workspace = true } 12 + embassy-nrf = { workspace = true } 13 + embassy-time = { workspace = true } 14 + mutex = { workspace = true } 15 + panic-probe = { workspace = true } 16 + 17 + cortex-m-rt = { workspace = true } 18 + defmt = { workspace = true } 19 + defmt-rtt = { workspace = true } 20 + static_cell = { workspace = true } 21 + embassy-usb = { workspace = true } 22 + embassy-sync = { workspace = true }
+35
demos/microbit/microbit-null/build.rs
···
··· 1 + //! This build script copies the `memory.x` file from the crate root into 2 + //! a directory where the linker can always find it at build time. 3 + //! For many projects this is optional, as the linker always searches the 4 + //! project root directory -- wherever `Cargo.toml` is. However, if you 5 + //! are using a workspace or have a more complicated build setup, this 6 + //! build script becomes required. Additionally, by requesting that 7 + //! Cargo re-run the build script whenever `memory.x` is changed, 8 + //! updating `memory.x` ensures a rebuild of the application with the 9 + //! new memory settings. 10 + 11 + use std::env; 12 + use std::fs::File; 13 + use std::io::Write; 14 + use std::path::PathBuf; 15 + 16 + fn main() { 17 + // Put `memory.x` in our output directory and ensure it's 18 + // on the linker search path. 19 + let out = &PathBuf::from(env::var_os("OUT_DIR").unwrap()); 20 + File::create(out.join("memory.x")) 21 + .unwrap() 22 + .write_all(include_bytes!("memory.x")) 23 + .unwrap(); 24 + println!("cargo:rustc-link-search={}", out.display()); 25 + 26 + // By default, Cargo will re-run a build script whenever 27 + // any file in the project changes. By specifying `memory.x` 28 + // here, we ensure the build script is only re-run when 29 + // `memory.x` is changed. 30 + println!("cargo:rerun-if-changed=memory.x"); 31 + 32 + println!("cargo:rustc-link-arg-bins=--nmagic"); 33 + println!("cargo:rustc-link-arg-bins=-Tlink.x"); 34 + println!("cargo:rustc-link-arg-bins=-Tdefmt.x"); 35 + }
+6
demos/microbit/microbit-null/memory.x
···
··· 1 + MEMORY 2 + { 3 + /* NOTE 1 K = 1 KiBi = 1024 bytes */ 4 + FLASH : ORIGIN = 0x00000000, LENGTH = 512K 5 + RAM : ORIGIN = 0x20000000, LENGTH = 128K 6 + }
+147
demos/microbit/microbit-null/src/main.rs
···
··· 1 + //! ergot null-interface demo for microbit 2 + 3 + #![no_std] 4 + #![no_main] 5 + 6 + use core::{mem, pin::pin}; 7 + 8 + use defmt::info; 9 + use embassy_executor::{task, Spawner}; 10 + use embassy_nrf::{ 11 + config::{Config as NrfConfig, HfclkSource}, 12 + gpio::{Input, Level, Output, OutputDrive, Pull}, 13 + }; 14 + use embassy_time::{Duration, WithTimeout}; 15 + use ergot::{endpoint, interface_manager::profiles::null::Null, topic, Address, NetStack}; 16 + use mutex::raw_impls::cs::CriticalSectionRawMutex; 17 + 18 + use {defmt_rtt as _, panic_probe as _}; 19 + 20 + pub static STACK: NetStack<CriticalSectionRawMutex, Null> = NetStack::new(); 21 + 22 + // Define an endpoint for toggling an LED and a topic for button presses 23 + endpoint!(LedEndpoint, bool, (), "led/set"); 24 + topic!(ButtonPressedTopic, u8, "button/press"); 25 + 26 + #[embassy_executor::main] 27 + async fn main(spawner: Spawner) { 28 + // SYSTEM INIT 29 + info!("Start"); 30 + let mut config = NrfConfig::default(); 31 + config.hfclk_source = HfclkSource::ExternalXtal; 32 + let p = embassy_nrf::init(Default::default()); 33 + 34 + // Tasks continue running after main returns. 35 + 36 + // Configure the LED pins that we use. 37 + let led_pins = [ 38 + Output::new(p.P0_28, Level::High, OutputDrive::Standard), // LED col 1 39 + Output::new(p.P0_31, Level::High, OutputDrive::Standard), // LED col 3 40 + Output::new(p.P0_30, Level::High, OutputDrive::Standard), // LED col 5 41 + ]; 42 + 43 + let led_names = ["LED1", "LED2", "LED3"]; 44 + 45 + // Put common anode to high and prevent it from being dropped when main returns. 46 + let row3 = Output::new(p.P0_15, Level::High, OutputDrive::Standard); 47 + mem::forget(row3); 48 + 49 + // Configure the button pins that we use. 50 + let btn_pins = [ 51 + Input::new(p.P0_14, Pull::Up), // Button A = 1 52 + Input::new(p.P1_04, Pull::None), // Touch Logo = 2, must be floating 53 + Input::new(p.P0_23, Pull::Up), // Button B = 3 54 + ]; 55 + 56 + // Spawn the LED servers, which will toggle the LEDs when adequate messages are received. 57 + for (name, led) in led_names.iter().zip(led_pins.into_iter()) { 58 + spawner.must_spawn(led_server(name, led)); 59 + } 60 + 61 + // Spawn the button workers, which will listen for button presses and message these events 62 + for ((btn_idx, name), btn) in led_names.iter().enumerate().zip(btn_pins.into_iter()) { 63 + // Note: the following `usize` to `u8` cast is safe, as we have only 3 buttons 64 + spawner.must_spawn(button_worker(btn, name, (btn_idx + 1) as u8)); 65 + } 66 + 67 + // Then start two tasks that just both listen and log every button press event 68 + spawner.must_spawn(press_listener(1)); 69 + spawner.must_spawn(press_listener(2)); 70 + } 71 + 72 + /// A task that listens to button press broadcast messages. 73 + /// 74 + /// It subscribes to the `ButtonPressedTopic` and logs every message it receives. 75 + #[task(pool_size = 2)] 76 + async fn press_listener(idx: u8) { 77 + // Declare and subscribe to the button pressed topic 78 + let recv = STACK 79 + .topics() 80 + .bounded_receiver::<ButtonPressedTopic, 4>(None); 81 + let recv = pin!(recv); 82 + let mut recv = recv.subscribe(); 83 + 84 + loop { 85 + // Now we wait for messages and log them when they arrive 86 + let msg = recv.recv().await; 87 + defmt::info!("Listener #{=u8}, button {=u8} pressed", idx, msg.t); 88 + } 89 + } 90 + 91 + /// A task to run the LED server. 92 + /// 93 + /// Creates a socket for the `LedEndpoint` and waits for the incoming messages. 94 + #[task(pool_size = 4)] 95 + async fn led_server(name: &'static str, mut led: Output<'static>) { 96 + let socket = STACK 97 + .endpoints() 98 + .bounded_server::<LedEndpoint, 4>(Some(name)); 99 + let socket = pin!(socket); 100 + let mut hdl = socket.attach(); 101 + 102 + loop { 103 + let _ = hdl 104 + .serve(async |on| { 105 + defmt::info!("{=str} set {=bool}", name, *on); 106 + if *on { 107 + led.set_low(); 108 + } else { 109 + led.set_high(); 110 + } 111 + }) 112 + .await; 113 + } 114 + } 115 + 116 + /// A task to handle button presses. 117 + /// 118 + /// When a button is pressed, it sends a message to the corresponding `LedEndpoint` to turn the 119 + /// specific LED on/off. It also broadcasts a message to the `ButtonPressedTopic`. 120 + #[task(pool_size = 4)] 121 + async fn button_worker(mut btn: Input<'static>, name: &'static str, btn_idx: u8) { 122 + // Create a client for the corresponding `LedENdpoint`. 123 + let client = STACK 124 + .endpoints() 125 + .client::<LedEndpoint>(Address::unknown(), Some(name)); 126 + loop { 127 + btn.wait_for_low().await; 128 + let res = btn 129 + .wait_for_high() 130 + .with_timeout(Duration::from_millis(5)) 131 + .await; 132 + if res.is_ok() { 133 + continue; 134 + } 135 + 136 + // So the button was pressed, turn on the LED by sending a message... 137 + client.request(&true).await.unwrap(); 138 + // ... and broadcast to the `ButtonPressedTopic` 139 + let _ = STACK 140 + .topics() 141 + .broadcast::<ButtonPressedTopic>(&btn_idx, None); 142 + 143 + btn.wait_for_high().await; 144 + // Button released, turn off the LED 145 + client.request(&false).await.unwrap(); 146 + } 147 + }
+2
demos/microbit/rust-toolchain.toml
···
··· 1 + [toolchain] 2 + targets = ["thumbv7em-none-eabihf"]
+1
fmtall.sh
··· 9 # Format all the demo workspaces 10 cargo fmt --manifest-path=./demos/shared-icd/Cargo.toml 11 cargo fmt --all --manifest-path=./demos/std/Cargo.toml 12 cargo fmt --all --manifest-path=./demos/nrf52840/Cargo.toml 13 cargo fmt --all --manifest-path=./demos/rp2040/Cargo.toml 14 cargo fmt --all --manifest-path=./demos/rp2350/Cargo.toml
··· 9 # Format all the demo workspaces 10 cargo fmt --manifest-path=./demos/shared-icd/Cargo.toml 11 cargo fmt --all --manifest-path=./demos/std/Cargo.toml 12 + cargo fmt --all --manifest-path=./demos/microbit/Cargo.toml 13 cargo fmt --all --manifest-path=./demos/nrf52840/Cargo.toml 14 cargo fmt --all --manifest-path=./demos/rp2040/Cargo.toml 15 cargo fmt --all --manifest-path=./demos/rp2350/Cargo.toml