diff --git a/.github/ci/_lib.sh b/.github/ci/_lib.sh index 93a7c7a57..694ead2f8 100644 --- a/.github/ci/_lib.sh +++ b/.github/ci/_lib.sh @@ -23,27 +23,33 @@ export CARGO_TERM_PROGRESS_WHEN=never export CARGO_NET_GIT_FETCH_WITH_CLI=true export TERM="${TERM:-dumb}" -# Shared target dir for scripts that run cargo. Callers that need it should -# `mkdir -p "$target_root"` before use; we don't create it here so scripts -# that don't run cargo (e.g. discover.sh) don't leave an empty directory. +# Shared parent for CI target directories. Cargo creates each target directory +# itself so it also writes the CACHEDIR.TAG required by `cargo clean`. target_root="$repo_root/target/ci" log_section() { printf "\n==> %s\n" "$1" } -# Feature-set matrix for rmk check/clippy/test. An empty entry means -# `--no-default-features` with no extra features on top. Kept here so -# check.sh and test.sh stay in lockstep — a set added for check is also -# exercised by tests, and vice versa. +# Shared rmk feature-set matrix; empty means only `--no-default-features`. RMK_FEATURESETS=( "" "log,std" "storage" "async_matrix,storage" + "vial,host_lock,storage" + "vial,_ble" + "split,async_matrix" + "split,async_matrix,_ble" + "split,vial,async_matrix" + "split,vial,async_matrix,_ble" "split,vial,storage" "passkey_entry" "split,vial,storage,passkey_entry" + "vial,storage,steno" + "split,vial,storage,async_matrix,_ble,steno" + "rynk,_ble,split,storage,async_matrix" + "rynk,storage" ) # Examples auto-discovery skiplist. Reasons: diff --git a/.github/ci/check.sh b/.github/ci/check.sh index 4c3e051b4..0d7121f5b 100755 --- a/.github/ci/check.sh +++ b/.github/ci/check.sh @@ -3,8 +3,6 @@ set -euo pipefail # shellcheck source=_lib.sh source "$(dirname "${BASH_SOURCE[0]}")/_lib.sh" -mkdir -p "$target_root" - # Emit "--- ..." tuples for rmk (every feature set) plus the other # workspace crates. Tokens are literal or feature lists with no whitespace, # so relying on word-splitting at the call site is safe. diff --git a/.github/ci/format.sh b/.github/ci/format.sh index 772ec544d..649e3ae07 100755 --- a/.github/ci/format.sh +++ b/.github/ci/format.sh @@ -8,6 +8,9 @@ for crate in rmk rmk-config rmk-macro rmk-types; do cargo +nightly fmt --manifest-path "$crate/Cargo.toml" --check done +log_section "Formatting host tooling" +cargo +nightly fmt --manifest-path rynk/Cargo.toml --all --check + log_section "Formatting examples" while IFS= read -r manifest; do cargo +nightly fmt --manifest-path "$manifest" --check diff --git a/.github/ci/host.sh b/.github/ci/host.sh new file mode 100755 index 000000000..b8522401d --- /dev/null +++ b/.github/ci/host.sh @@ -0,0 +1,40 @@ +#!/bin/bash +set -euo pipefail +# shellcheck source=_lib.sh +source "$(dirname "${BASH_SOURCE[0]}")/_lib.sh" + +# The host tooling is its own cargo workspace. +cd "$repo_root/rynk" + +export CARGO_TERM_COLOR=always +export CARGO_TARGET_DIR="${CARGO_TARGET_DIR:-$target_root/host}" + +log_section "Tests" +cargo +stable test --workspace --lib --tests + +log_section "Doctests" +cargo +stable test -p rynk --doc + +log_section "No-alloc smoke check" +# The dongle build: every other job runs `rynk` with default features (std ⇒ +# alloc), so without this its `#[cfg(not(feature = "alloc"))]` half is never +# compiled. +cargo +stable clippy -p rynk --lib --no-default-features -- -D warnings + +log_section "Wasm smoke check" +cargo +stable check -p rynk --lib --target wasm32-unknown-unknown +cargo +stable check -p rynk-wasm --target wasm32-unknown-unknown + +log_section "Wasm package build" +# wasm-pack emits the JS package + generated .d.ts under rynk-wasm/pkg/ (ignored, not checked in). +# --dev keeps wasm-bindgen's type descriptors un-optimized, so a malformed one surfaces as invalid TS below. +(cd rynk-wasm && wasm-pack build --dev --target web >/dev/null) +# Typecheck the whole generated .d.ts: a broken descriptor for any exported type fails CI. +npx --yes --package typescript@5.9.3 tsc \ + --noEmit --strict --target ES2022 --lib ES2022,DOM,ESNext.Disposable \ + --module ES2022 --moduleResolution bundler \ + rynk-wasm/pkg/rynk_wasm.d.ts + +log_section "Clippy" +cargo +stable clippy --workspace --lib --tests --examples -- -D warnings +cargo +stable clippy -p rynk-wasm --target wasm32-unknown-unknown -- -D warnings diff --git a/.github/ci/test.sh b/.github/ci/test.sh index a4b6c5524..7f0e8846d 100755 --- a/.github/ci/test.sh +++ b/.github/ci/test.sh @@ -5,7 +5,6 @@ source "$(dirname "${BASH_SOURCE[0]}")/_lib.sh" export CARGO_NET_OFFLINE=false export CARGO_TARGET_DIR="${CARGO_TARGET_DIR:-$target_root/test}" -mkdir -p "$CARGO_TARGET_DIR" # Each crate is its own cargo workspace in this repo, so nextest's default # `/.config/nextest.toml` lookup would miss our shared config at @@ -16,10 +15,9 @@ nx=(nextest run --config-file "$nextest_cfg" --profile ci) log_section "Running tests" cargo +stable "${nx[@]}" --manifest-path rmk-config/Cargo.toml cargo +stable "${nx[@]}" --manifest-path rmk-types/Cargo.toml -# Exercise the rmk_protocol module (gated behind `rmk_protocol`) so the wire-format -# snapshot tests under rmk-types/src/protocol/rmk/snapshots/ run in CI. `host` -# enables rmk_protocol + bulk + _ble + split, covering every snapshot. +# Exercise the rynk protocol module (gated behind `rynk`). cargo +stable "${nx[@]}" --manifest-path rmk-types/Cargo.toml --features host +cargo +stable "${nx[@]}" --manifest-path rmk-types/Cargo.toml --features steno cargo +stable "${nx[@]}" --manifest-path rmk-macro/Cargo.toml for feats in "${RMK_FEATURESETS[@]}"; do if [[ -z "$feats" ]]; then diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 11cfb2f36..c57f9ec5d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -78,6 +78,49 @@ jobs: run: cargo install --locked cargo-expand - run: .github/ci/test.sh + # Host tooling lives in its own workspace, so it gets its own job. + host: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + - uses: dtolnay/rust-toolchain@stable + with: + components: clippy + targets: wasm32-unknown-unknown + - name: Install host system dependencies + run: | + sudo apt-get update + sudo apt-get install -y libdbus-1-dev pkg-config + # host.sh runs wasm-pack to verify JS/.d.ts package generation. + - uses: taiki-e/install-action@v2 + with: + tool: wasm-pack + - uses: Swatinem/rust-cache@v2 + with: + shared-key: ci-host + cache-directories: | + target/ci + - run: .github/ci/host.sh + + qemu-rynk: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + - uses: dtolnay/rust-toolchain@stable + with: + targets: riscv32imac-unknown-none-elf + - uses: Swatinem/rust-cache@v2 + with: + shared-key: ci-qemu-rynk + - name: Install QEMU + run: | + sudo apt-get update + sudo apt-get install -y qemu-system-misc libdbus-1-dev pkg-config + qemu-system-riscv32 --version + - name: Run QEMU Rynk behavior verifier + working-directory: examples/use_rust/qemu-riscv-rynk + run: python3 run.py + # Discover buildable examples for the matrix discover: runs-on: ubuntu-latest diff --git a/.gitignore b/.gitignore index db4aeaeaa..26093006f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,9 @@ target node_modules +# wasm-pack output +pkg + .DS_Store *.bin @@ -15,6 +18,7 @@ rmk/Cargo.lock rmk-macro/Cargo.lock rmk-config/Cargo.lock rmk-types/Cargo.lock +rynk/Cargo.lock # esp idf build files .embuild diff --git a/.vscode/settings.json b/.vscode/settings.json index 90b957f8a..4922c2e5e 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -19,6 +19,7 @@ "rust-analyzer.linkedProjects": [ "rmk-macro/Cargo.toml", "rmk/Cargo.toml", + "rynk/Cargo.toml", // To work on the examples, comment the line above and all of the cargo.features lines, // then uncomment ONE line below to select the chip you want to work on. // This makes rust-analyzer work on the example crate and all its dependencies. diff --git a/CLAUDE.md b/CLAUDE.md index c5b81cf52..a93729297 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -54,11 +54,11 @@ Matrix / InputDevices → Events (pub/sub channels) -> InputProcessors/Keyboard( ### `keyboard.toml` and compile-time constants -`keyboard.toml` is parsed by `rmk-config` (`KeyboardTomlConfig`) at two points: by `rmk/build.rs` at build time, and by `rmk-macro` at macro-expansion time. The path defaults to `keyboard.toml` next to `Cargo.toml` and can be overridden with `KEYBOARD_TOML_PATH` in user space's `.cargo/config.toml`. +`keyboard.toml` is parsed by `rmk-config` (`KeyboardTomlConfig`) at two points: by `rmk-types/build.rs` at build time, and by `rmk-macro` at macro-expansion time. The path defaults to `keyboard.toml` next to `Cargo.toml` and can be overridden with `KEYBOARD_TOML_PATH` in user space's `.cargo/config.toml`. Config is loaded in three layers (later overrides earlier): `event_default.toml` → chip-specific default (from `rmk-config/src/default_config/.toml`, selected via `[keyboard].chip`) → user `keyboard.toml`. -`build.rs` reads only the `[rmk]` and `[event]` sections, then emits `constants.rs` as Rust `const` items. The full `KeyboardTomlConfig` struct in `rmk-config/src/lib.rs` is the authoritative reference for all available fields and their defaults. +`rmk-types/build.rs` reads only the `[rmk]` and `[event]` sections, then emits `constants.rs` as Rust `const` items. The full `KeyboardTomlConfig` struct in `rmk-config/src/lib.rs` is the authoritative reference for all available fields and their defaults. `[event]` tunes per-event pub/sub channel sizes (`channel_size`, `pubs`, `subs`). All event names and their defaults live in `rmk-config/src/default_config/event_default.toml`. @@ -66,3 +66,6 @@ Config is loaded in three layers (later overrides earlier): `event_default.toml` - Don't use `pub use` for convenient usage **within** the crate - Don't add a small helper function (≤ 10 lines) that has only one call site — inline it at the call site +- When writing code comments, follow the principles in [Best practices for writing code comments](https://stackoverflow.blog/2021/12/23/best-practices-for-writing-code-comments/) +- When writing documentation and READMEs, follow the principles in [Best practices for GitHub Docs](https://docs.github.com/en/contributing/writing-for-github-docs/best-practices-for-github-docs) +- If you need a paragraph-long comment to justify why the workaround is OK, the code is wrong — fix the code. diff --git a/README.md b/README.md index 0dfca8c07..ef46111ea 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ ## Features - **Broad microcontroller compatibility**: Leveraging [embassy](https://github.com/embassy-rs/embassy), RMK supports a comprehensive range of microcontrollers, including stm32, nRF, rp2040(w), esp32, etc -- **Dynamic keymap customization**: RMK offers native [Vial](https://get.vial.today) support, enabling real-time keymap modifications. You can even edit keymaps over BLE connections wirelessly +- **Dynamic keymap customization**: RMK offers real-time keymap modifications through [Vial](https://get.vial.today), or its native [Rynk](https://rmk.rs/docs/features/rynk) protocol. You can even edit keymaps over BLE connections wirelessly - **Advanced keyboard functionality**: RMK comes with lots of advanced keyboard features by default, including layer switching, media controls, system commands, mouse control, and more - **Wireless connectivity**: BLE wireless support with automatic reconnection and multi-device capabilities for nRF52 and esp32 microcontrollers, tested on nRF52840, esp32c3, esp32s3, Pi Pico W - **Easy configuration**: RMK simplifies keyboard development through a single `keyboard.toml` configuration file. For Rust enthusiasts, the firmware remains highly customizable using Rust code diff --git a/README_zh.md b/README_zh.md index c720a99b4..8bb7230cb 100644 --- a/README_zh.md +++ b/README_zh.md @@ -25,7 +25,7 @@ ## 特性 - **MCU支持丰富**:基于 [embassy](https://github.com/embassy-rs/embassy),RMK 支持非常多的MCU系列,例如 stm32/nrf/rp2040/esp32等。 -- **实时键位编辑**:RMK 默认支持 Vial 进行实时键位编辑,即时生效。您甚至可以通过 BLE 使用 Vial 来编辑键位。 +- **实时键位编辑**:RMK 通过默认启用的 [Vial](https://get.vial.today) 或可选的原生协议 [Rynk](https://rmk.rs/docs/features/rynk) 支持实时键位编辑,即时生效。您甚至可以通过 BLE 无线编辑键位。 - **高级键盘功能**:RMK 默认提供许多高级键盘功能,如层切换、媒体控制、系统控制、鼠标控制等。 - **无线支持**:RMK 支持 BLE 无线连接,包括自动重连和多设备支持,已经在 nrf52840, esp32 和 Pi Pico W 上进行了测试。 - **易于配置**:RMK提供了一个非常简单的配置键盘的方法,你只需要一个`keyboard.toml`文件,就可以构建起你的键盘固件(不需要写任何Rust代码)!当然,对于 Rust 开发者来说,你仍然可以使用代码方式来使用 RMK 从而获得更大的灵活性。 diff --git a/docs/docs/main/docs/configuration/appendix.md b/docs/docs/main/docs/configuration/appendix.md index e3cee5513..0263c31e3 100644 --- a/docs/docs/main/docs/configuration/appendix.md +++ b/docs/docs/main/docs/configuration/appendix.md @@ -49,9 +49,7 @@ direct_pin_low_active = true rows = 5 # Number of cols. For a split keyboard, this is the total number of cols for all splits cols = 4 -# Number of layers. Be careful, since large layer number takes more flash and RAM -layers = 3 -# keypad example: (for the key in position (2,1) the `H1` profile is activated) +# keypad example # ┌───┬───┬───┬───┐ # │NUM│ / │ * │ - │ <-- row 0, col 0..4 # ├───┼───┼───┼───┤ @@ -63,14 +61,18 @@ layers = 3 # ├───┴───┼───┤ N │ # │ 0 │ . │ T │ # └───────┴───┴───┘ -matrix_map = """ -(0,0,R) (0,1,R) (0,2,R) (0,3,R) -(1,0,R) (1,1,R) (1,2,R) (1,3,R) -(2,0,R) (2,1,R:H1) (2,2,R) -(3,0,R) (3,1,R) (3,2,R) (3,3,R) -(4,0,R) (4,1,R) +map = """ +(0,0,R) (0,1,R) (0,2,R) (0,3,R) +(1,0,R) (1,1,R) (1,2,R) (1,3,R) +(2,0,R) (2,1,R) (2,2,R) +(3,0,R) (3,1,R) (3,2,R) (3,3,R) +(4,0,R) (4,1,R) """ +[keymap] +# Number of layers. Be careful, since large layer number takes more flash and RAM +layers = 3 + # here are the aliases for the example layer.keys below [aliases] MyCut = "WM(X, LCtrl)" @@ -79,13 +81,13 @@ MyPaste = "WM(V, LCtrl)" # Key map definitions per layer: # The number (and order) of entries on each layer should be -# identical with the number (and order) of entries in `matrix_map`. +# identical with the number (and order) of entries in `layout.map`. # Empty layers will be used to fill if the number of explicitly -# defined layers is smaller than the `layout.layers` setting +# defined layers is smaller than the `keymap.layers` setting # layer 0 (default): -# (the number comes from the order of '[[layer]] entries' in the file) -[[layer]] +# (the number comes from the order of '[[keymap.layer]] entries' in the file) +[[keymap.layer]] name = "base_layer" #optional name for the layer keys = """ NumLock KpSlash KpAsterisk KpMinus @@ -96,7 +98,7 @@ Kp1 Kp2 Kp3 Enter """ # layer 1: -[[layer]] +[[keymap.layer]] name = "mouse_navigation" #optional name for the layer keys = """ TO(base_layer) @MyCut @MyCopy @MyPaste @@ -131,7 +133,7 @@ one_shot_modifiers = { enable_flow_tap = true prior_idle_time = "120ms" hold_on_other_press = true -unilateral_false = false +unilateral_tap = false hold_timeout = "250ms" gap_timeout = "250ms" @@ -185,7 +187,8 @@ morses = [ ] [behavior.morse.profiles] -# matrix_map may refer these to override the defaults given in [behavior.morse] for some key positions - this example is a home row mod +# Named overrides of the [behavior.morse] defaults, referenced by name from a morse key +# (profile = "...") or a tap-hold action's optional profile arg — e.g. a home row mod is MT(key, mod, H1). H1 = { permissive_hold = true, unilateral_tap = true, hold_timeout = "250ms", gap_timeout = "250ms" } H2 = { enable_flow_tap = false, permissive_hold = true, unilateral_tap = true, hold_timeout = "200ms", gap_timeout = "200ms" } MRZ = { normal_mode = true, unilateral_tap = false, hold_timeout = "200ms", gap_timeout = "200ms" } @@ -295,6 +298,10 @@ split_peripherals_num = 0 ble_profiles_num = 3 # BLE Split Central sleep timeout in seconds (0 = disabled) split_central_sleep_timeout_seconds = 0 +# Maximum macro data bytes in one Rynk macro request or response +protocol_macro_chunk_size = 64 +# Rynk RX/TX buffer size in bytes. 488 bytes = 2*BLE maximum packet size +# rynk_buffer_size = 488 # Split configuration # This section conflicts with the [matrix] section. You can only have either [matrix] or [split], but NOT BOTH @@ -395,11 +402,18 @@ defmt_log = true # Host-side tools configuration [host] -# Whether Vial is enabled (default: true) +# Whether Vial is enabled (default: true in keyboard.toml config) vial_enabled = true +# Whether Rynk is enabled (default: false in keyboard.toml config) +# Rynk and Vial are mutually exclusive and must match Cargo features. +rynk_enabled = false # The unlock keys are the combo of the row 0, col 0 key and -# the row 0, col 1 key +# the row 0, col 1 key. Shared by the Vial lock and the Rynk lock gate. unlock_keys = [[0, 0], [0, 1]] +# Start (and stay) unlocked. Renamed from `vial_insecure` (still parses). +insecure = false +# Rynk only: move config writes into the locked tier (default: false). +write_requires_unlock = false # Chip-specific configuration # To use the default configuration, ignore this section completely diff --git a/docs/docs/main/docs/configuration/behavior.md b/docs/docs/main/docs/configuration/behavior.md index 0d26a9185..8ad5632e1 100644 --- a/docs/docs/main/docs/configuration/behavior.md +++ b/docs/docs/main/docs/configuration/behavior.md @@ -32,23 +32,17 @@ adjust = 3 In this example, when both layers 1 (`upper`) and 2 (`lower`) are active, layer 3 (`adjust`) will also be enabled. -Note that `"#layer_name"` could also be used in place of layer numbers. - ## One-Shot The `one_shot` sub-table contains common one-shot configuration (for both OSM and OSL) -Currently, there are only `timeout` field that specifies how long the one-shot modifier/layer remains active. -When no key is pressed within this time, the one-shot modifier/layer will be canceled. -`timeout` value is a string suffixed with `s` or `ms` (default: `1s`). +Currently, there are only `timeout` field that specifies how long the one-shot modifier/layer remains active. When no key is pressed within this time, the one-shot modifier/layer will be canceled. `timeout` value is a string suffixed with `s` or `ms` (default: `1s`). ## One-Shot Modifiers The `one_shot_modifiers` sub-table configures one-shot modifiers (OSM). -By default, one-shot modifiers do not activate on keypress and will be sent only when other key is pressed. -You can change this behavior by setting `activate_on_keypress` to `true`. -This behavior is also known as One-Shot Sticky Modifiers (OSSM). +By default, one-shot modifiers do not activate on keypress and will be sent only when other key is pressed. You can change this behavior by setting `activate_on_keypress` to `true`. This behavior is also known as One-Shot Sticky Modifiers (OSSM). If you press One-Shot Modifier again, it will be sent as a normal modifier key press and, therefore, released. @@ -221,7 +215,6 @@ morses = [ ``` ::: warning - The three definition methods are mutually exclusive. For any single Morse key definition, you must choose only one of the following approaches: - Full Morse: `morse_actions` @@ -229,19 +222,20 @@ The three definition methods are mutually exclusive. For any single Morse key de - Vial-style: `tap`, `hold`, `hold_after_tap`, `double_tap`. Mixing fields from different methods in the same definition is not allowed. - ::: ### Profile The `profile` of a morse key contains all tunable configurations of this morse key, such as behavior mode, timing configurations, etc. -A profile contains the following fields: +::: tip +- `enable_flow_tap`: Enables HRM (Home Row Mod) mode. When enabled, the global `prior_idle_time` setting becomes functional. Defaults to `false`. Profiles may set this to override the global `[behavior.morse]` value; omitting it inherits the global value. +- `prior_idle_time`: _(global only)_ If the previous non-modifier key is released within this period before pressing the current tap-hold key, the tap action for the tap-hold behavior will be triggered. This parameter lives in `[behavior.morse]` (not in a per-key profile) and is effective only when `enable_flow_tap` is enabled for the key. Defaults to 120ms. +::: -- `enable_flow_tap`: Enables HRM (Home Row Mod) mode. When enabled, the `prior_idle_time` setting becomes functional. Defaults to `false`. Profiles may set this to override the global `[behavior.morse]` value; omitting it inherits the global value. -- `prior_idle_time`: If the previous non-modifier key is released within this period before pressing the current tap-hold key, the tap action for the tap-hold behavior will be triggered. This parameter is configured globally in `[behavior.morse]` and is effective only when `enable_flow_tap` is enabled for the key. Defaults to 120ms. +A profile contains the following fields: -- `unilateral_tap`: (Experimental) Enables unilateral tap mode. When enabled, tap action will be triggered when a key from "same" hand is pressed. In current experimental version, the "same" hand is calculated using the ``, which can be given in `matrix_map`. This option is recommended to set to true when `enable_flow_tap` is set to true. +- `unilateral_tap`: (Experimental) Enables unilateral tap mode. When enabled, tap action will be triggered when a key from "same" hand is pressed. In current experimental version, the "same" hand is calculated using the ``, which can be given in `layout.map`. This option is recommended to set to true when `enable_flow_tap` is set to true. - The morse mode, which can be set by enabling one of these: - `permissive_hold`: Enables permissive hold mode. When enabled, hold action will be triggered when a key is pressed and released during tap-hold decision. This option is recommended to set to true when `enable_flow_tap` is set to true. @@ -287,12 +281,11 @@ gap_timeout = "250ms" In the `morse.profiles` sub-table you can define individual key profiles. Each profile has an associated name, which can be referred -- from the layout.matrix_map (the name is case sensitive), to override the defaults in certain key positions - from the tap hold keys in the key map if the third optional parameter is filled: - `TH(key-tap, key-hold, )`, - `MT(key, modifier, )`, - `LT(n, key, )` -- the Morse keys may also have their per key profile overrides (which is stronger than the positional override) by setting the `profile` field. +- the Morse keys may also have their per key profile overrides by setting the `profile` field. The following examples are the typical default configurations: @@ -312,7 +305,7 @@ MRZ = { normal_mode = true, unilateral_tap = false, hold_timeout = "200ms", gap_ Then you can reference the profile in layer config: ```toml -[[layer]] +[[keymap.layer]] keys = """ MT(A, LShift, HRM) LT(1, A, FH) @@ -431,22 +424,35 @@ You can use both `Morse` and `TD` to represent a morse key in your keymap, you c [layout] rows = 4 cols = 3 +map = """ +(0,0) (0,1) (0,2) +(1,0) (1,1) (1,2) +(2,0) (2,1) (2,2) +(3,0) (3,1) (3,2) +""" + +[keymap] layers = 2 -keymap = [ - [ - ["A", "B", "C"], - ["TD(0)", "TD(1)", "TD(2)"], # Use morse dances 0, 1, and 2 - ["LCtrl", "MO(1)", "LShift"], - ["OSL(1)", "LT(2, Kc9, PN)", "LM(1, LShift | LGui)"] # PN is a morse profile name here - [ - ["_", "TT(1)", "TG(2)"], - ["_", "_", "_"], - ["_", "_", "_"], - ["_", "_", "_"] - ], -] + +[[keymap.layer]] +keys = """ +A B C +TD(0) TD(1) TD(2) +LCtrl MO(1) LShift +OSL(1) LT(2, Kc9, PN) LM(1, LShift | LGui) +""" + +[[keymap.layer]] +keys = """ +_ TT(1) TG(2) +_ _ _ +_ _ _ +_ _ _ +""" ``` +Here `TD(0)`, `TD(1)`, and `TD(2)` reference morse dances by index, and the trailing `PN` in `LT(2, Kc9, PN)` names a morse profile (defined above). `keys` and `map` blocks hold data only. + ## Fork In the `fork` sub-table, you can configure the keyboard's state-based key fork functionality. Forks allow you to define a trigger key and condition-dependent possible replacement keys. When the trigger key is pressed, the condition is checked by the following rule: If any of the `match_any` states are active AND none of the `match_none` states are active, the trigger key will be replaced with positive_output; otherwise, it will be replaced with the negative_output. By default, the modifiers listed in `match_any` will be suppressed (even the one-shot modifiers) for the time the replacement key action is executed. However, with `kept_modifiers` some of them can be kept instead of automatic suppression. @@ -568,11 +574,9 @@ subs = 1 | `reset_timeout_on_key` | bool | `false` | When `true`, key presses that do NOT deactivate `target_layer` push the `timeout` deadline forward (reset it to *now + `timeout`*). When `deactivate_on_key` is `false`, every key press extends the timeout. | ::: warning - Prefer a dedicated layer that is not bound to any manual keys (like `MO` or `TG`). The auto-mouse task releases its ownership when keyboard-driven changes deactivate the layer, so transient overlap is handled cleanly. Layer state is still a single boolean, however, so pressing `TG(target_layer)` while auto-mouse is active toggles the layer off instead of pinning it on. Entries that share the same `target_layer` cooperate: the layer stays active until the last device stops moving, so per-device `timeout`/`threshold` differences on a shared layer are safe. - ::: ::: warning Limitation: keys that cannot be classified @@ -590,7 +594,6 @@ Some keys cannot be classified; they never trigger immediate deactivation (only - **Subscriber Slots**: Increment `[event.pointing].subs` and `[event.layer_change].subs` by `1` each in your `keyboard.toml` to reserve slots for this task. If any entry uses `deactivate_on_key` or `reset_timeout_on_key`, also set `[event.action].subs` to `1` (it defaults to `0`), otherwise the build fails with a validation error. See [Event Configuration](./event.md). - **Buffer Size**: If pointing events are dropped under high-frequency input, increase `[event.pointing].channel_size` (default `8`). `[event.layer_change].channel_size` defaults to `1` and only needs raising if you burst many layer changes faster than subscribers consume them. - ::: ::: note Rust API diff --git a/docs/docs/main/docs/configuration/host_config.md b/docs/docs/main/docs/configuration/host_config.md index 972c68255..78b16c163 100644 --- a/docs/docs/main/docs/configuration/host_config.md +++ b/docs/docs/main/docs/configuration/host_config.md @@ -1,19 +1,83 @@ # Host Configuration -The `[host]` section configures host-side tools and related features. +The `[host]` section selects the firmware protocol used by host-side tools. +RMK currently supports two mutually exclusive protocols: + +- `rynk_enabled`: RMK's native protocol for RMK-aware host tools. +- `vial_enabled`: the Vial/VIA-compatible protocol for the Vial app. + +The `keyboard.toml` values must match the `rmk` Cargo features. If +`host.rynk_enabled = true`, enable the `rynk` Cargo feature. If +`host.vial_enabled = true`, enable the `vial` Cargo feature. Do not enable both. ## Configuration Example ```toml [host] -# Enable or disable Vial support (default: true) -vial_enabled = true +# Enable Rynk, RMK's native host protocol. +rynk_enabled = true -# Unlock keys for Vial security (optional) -# Keys must be pressed simultaneously to unlock Vial configuration +# Disable Vial when using Rynk. Rynk and Vial are mutually exclusive. +vial_enabled = false + +# Physical keys (row, col) held simultaneously to unlock dangerous operations +# (optional, up to 4). Shared by the Vial lock and the Rynk lock gate. See the +# "Locking dangerous operations" section of the Rynk feature page. unlock_keys = [[0, 0], [0, 1]] # Keys at (row=0,col=0) and (row=0,col=1) -# Start Vial unlocked, bypassing the unlock-key combo (default: false) -# When true, secured operations such as the Matrix Tester are available immediately without pressing `unlock_keys`. -vial_insecure = false +# Start (and stay) unlocked, bypassing the unlock-key combo (default: false). +# A development escape hatch — don't ship it. Renamed from `vial_insecure`, +# which still parses. +insecure = false + +# Rynk only: move config writes (SetKeyAction, SetMacro, …) into the locked +# tier so they also require unlock (default: false). +write_requires_unlock = false +``` + +## Common Setups + +Use Vial with the `rmk` default Cargo features: + +```toml title="keyboard.toml" +[host] +vial_enabled = true +rynk_enabled = false +unlock_keys = [[0, 0], [0, 1]] +``` + +Use Rynk instead: + +```toml title="keyboard.toml" +[host] +vial_enabled = false +rynk_enabled = true +unlock_keys = [[0, 0], [0, 1]] +``` + +```toml title="Cargo.toml" +rmk = { version = "...", default-features = false, features = [ + "defmt", + "storage", + "rynk", + "watchdog", + "rp2040", +] } +``` + +Disable all host configurator support: + +```toml title="keyboard.toml" +[host] +vial_enabled = false +rynk_enabled = false +``` + +```toml title="Cargo.toml" +rmk = { version = "...", default-features = false, features = [ + "defmt", + "storage", + "watchdog", + "rp2040", +] } ``` diff --git a/docs/docs/main/docs/configuration/index.mdx b/docs/docs/main/docs/configuration/index.mdx index 3cc004a0a..5f2d796cd 100644 --- a/docs/docs/main/docs/configuration/index.mdx +++ b/docs/docs/main/docs/configuration/index.mdx @@ -1,41 +1,28 @@ # Configuration -RMK provides a simple and declarative way to configure your keyboard using a TOML configuration -file, requiring no Rust programming knowledge. You can also use Rust API which offers maximum -flexibility and control over your keyboard's behavior. +RMK provides a simple and declarative way to configure your keyboard using a TOML configuration file, requiring no Rust programming knowledge. You can also use Rust API which offers maximum flexibility and control over your keyboard's behavior. -In this section, we will introduce how to configure your keyboard in detail. The documentation will -mainly focus on `keyboard.toml` but still provide Rust API code example if needed. +In this section, we will introduce how to configure your keyboard in detail. The documentation will mainly focus on `keyboard.toml` but still provide Rust API code example if needed. ## `keyboard.toml` -The `keyboard.toml` file is the central configuration for nearly every aspect of your keyboard -setup. The following sections can be configured in your `keyboard.toml`: +The `keyboard.toml` file is the central configuration for nearly every aspect of your keyboard setup. The following sections can be configured in your `keyboard.toml`: -- **[Keyboard and Matrix](./keyboard_matrix.md)** - Basic keyboard information and physical key - matrix definition +- **[Keyboard and Matrix](./keyboard_matrix.md)** - Basic keyboard information and physical key matrix definition - **[Layout](./layout.md)** - Keyboard layout and default keymap configuration - **[Split Keyboard](./split_keyboard.md)** - Configuration for split keyboard setups - **[Storage](./storage.mdx)** - On-board configuration and keymap storage settings -- **[Behavior](./behavior.md)** - Advanced keyboard behaviors (one-shot keys, tri-layer, tap-hold, - morse key, home row mods, etc.) -- **[Input Devices](./input_device)** - Configuration for rotary encoders, joysticks, and other - input devices +- **[Behavior](./behavior.md)** - Advanced keyboard behaviors (one-shot keys, tri-layer, tap-hold, morse key, home row mods, etc.) +- **[Input Devices](./input_device)** - Configuration for rotary encoders, joysticks, and other input devices - **[Wireless/Bluetooth](./wireless.md)** - Wireless and Bluetooth connectivity settings - **[Lighting](./light.md)** - RGB lighting and LED configuration -- **[RMK Config](./rmk_config.md)** - Internal RMK settings (./communication channels, macro limits, - etc.) +- **[RMK Config](./rmk_config.md)** - Internal RMK settings (./communication channels, macro limits, etc.) - **[Complete Reference](./appendix.md)** - Full specification and examples for `keyboard.toml` -We also provide pre-configured templates for popular microcontroller chips in the -[`rmk-config/src/default_config`](https://github.com/HaoboGu/rmk/blob/main/rmk-config/src/default_config) -directory. You can use then when generating project using [rmkit](https://github.com/HaoboGu/rmkit). -Contributions for additional chip configurations are welcome! +We also provide pre-configured templates for popular microcontroller chips in the [`rmk-config/src/default_config`](https://github.com/HaoboGu/rmk/blob/main/rmk-config/src/default_config) directory. You can use then when generating project using [rmkit](https://github.com/HaoboGu/rmkit). Contributions for additional chip configurations are welcome! -For a complete specification of all TOML configuration options, please refer to the other -documentation chapters under `Configuration` section. +For a complete specification of all TOML configuration options, please refer to the other documentation chapters under `Configuration` section. ## Rust API -All Rust API that RMK provides can be found in https://docs.rs/rmk, you can also refer to -`examples/use_rust` in RMK's main repository for comprehensive examples. +All Rust API that RMK provides can be found in https://docs.rs/rmk, you can also refer to `examples/use_rust` in RMK's main repository for comprehensive examples. diff --git a/docs/docs/main/docs/configuration/input_device/encoder.md b/docs/docs/main/docs/configuration/input_device/encoder.md index 083cb3bbb..fa71bc942 100644 --- a/docs/docs/main/docs/configuration/input_device/encoder.md +++ b/docs/docs/main/docs/configuration/input_device/encoder.md @@ -62,32 +62,21 @@ phase = "default" ### Define Encoder Actions -To define the actions triggered by encoder rotation, add a `encoders` field under each `[[layer]]` section, or add a `encoder_map` field under the `[layout]` section. The former method is preferred and the latter will be deprecated in the future. +To define the actions triggered by encoder rotation, add an `encoders` field under each `[[keymap.layer]]` section. -A `encoders` field under `[[layer]]` is a 2D array where each entry corresponds to an encoder in the same order they are defined. Each entry is a 2-element array `[CW_action, CCW_action]`, representing the actions for clockwise and counter-clockwise rotations respectively for that encoder on that layer. - -The `encoder_map` under `[layout]` is a 3D array where each entry is a 2D array as described above, representing the encoder actions for that layer. +An `encoders` field is a 2D array where each entry corresponds to an encoder in the same order they are defined. Each entry is a 2-element array `[CW_action, CCW_action]`, representing the actions for clockwise and counter-clockwise rotations respectively for that encoder on that layer. **Structure**: ```toml -[[layer]] # Layer 0 +[[keymap.layer]] # Layer 0 encoders = [[CW, CCW], [CW, CCW], ...] # Encoder 0, encoder 1, ... -[[layer]] # Layer 1 +[[keymap.layer]] # Layer 1 encoders = [[CW, CCW], [CW, CCW], ...] # Encoder 0, encoder 1, ... -[[layer]] # More layers... +[[keymap.layer]] # More layers... encoders = [...] - -# Alternatively, use encoder_map: - -[layout] -encoder_map = [ - [ [CW, CCW], [CW, CCW], ... ], # Layer 0: encoder 0, encoder 1, ... - [ [CW, CCW], [CW, CCW], ... ], # Layer 1: encoder 0, encoder 1, ... - ... -] ``` **Example:** @@ -102,31 +91,20 @@ encoder_map = [ # - Encoder 0: No action ("_") # - Encoder 1: CW -> BrightnessUp, CCW -> BrightnessDown -[[layer]] # Layer 0 +[[keymap.layer]] # Layer 0 # ... keys ... encoders = [["AudioVolUp", "AudioVolDown"], ["PageDown", "PageUp"]] -[[layer]] # Layer 1 +[[keymap.layer]] # Layer 1 # ... keys ... encoders = [["_", "_"], ["BrightnessUp", "BrightnessDown"]] - -# Alternatively, use encoder_map: - -[layout] -rows = 5 -cols = 4 -layers = 2 -# ... matrix_map ... -encoder_map = [ - [["AudioVolUp", "AudioVolDown"], ["PageDown", "PageUp"]], - [["_", "_"], ["BrightnessUp", "BrightnessDown"]] -] ``` **Notes:** -- If the actions for an encoder are not specified in `encoders` or `encoder_map`, they will default to no action. -- The number of encoder entries should match the number of physical encoders defined in `[[input_device.encoder]]`. +- A layer must list actions for **every** encoder, or omit the `encoders` field entirely. Listing only some of the board's encoders is rejected, because the unlisted ones would silently stop working on that layer. To keep an encoder inactive on a given layer, give it an explicit `["_", "_"]` (transparent) or `["No", "No"]` entry — as shown for encoder 0 on layer 1 above. +- When `encoders` is omitted from a layer, every encoder defaults to no action on that layer. +- The number of encoder entries must match the number of physical encoders defined in `[[input_device.encoder]]`. On split keyboards this is the total across all halves, in the order they are defined (central first, then each peripheral). ## Rust configuration diff --git a/docs/docs/main/docs/configuration/input_device/pmw33xx.mdx b/docs/docs/main/docs/configuration/input_device/pmw33xx.mdx index 157a32f86..2c50c4ddd 100644 --- a/docs/docs/main/docs/configuration/input_device/pmw33xx.mdx +++ b/docs/docs/main/docs/configuration/input_device/pmw33xx.mdx @@ -3,14 +3,12 @@ PMW3360 / PMW3389 are optical mouse sensors. ::: note -Both chips, the PMW3360 and PMW3389, are very similar. The main difference is the higher maximum cpi of the sensor. (12000 on the PMW3360 vs. 16000 on PMW3389) -They share one driver in RMK and the configuration of both is the same. +Both chips, the PMW3360 and PMW3389, are very similar. The main difference is the higher maximum cpi of the sensor. (12000 on the PMW3360 vs. 16000 on PMW3389) They share one driver in RMK and the configuration of both is the same. - PMW33xx uses full-duplex SPI. (MISO/ MOSI) Please note that because of the special requirements those sensors have for the switching of their chip select pin, they can not share an SPI bus with each other or any other SPI device. For each SPI peripheral (SPI0, SPI1 etc.) there can only be one sensor connected. - Set `motion` pin for better power efficiency. If omitted, the sensor is polled. - By default, report rate is limited to 125 Hz to prevent flooding the event channel, which causes latency issues especially over BLE. - Only Nrf, RP2040 and STM32 are supported now. - ::: ## `toml` configuration @@ -63,10 +61,7 @@ name = ... ``` ::: warning Multi-device ID assignment - -`PointingEvent` carries a `device_id` so that each `PointingProcessor` can be paired -with a specific sensor. If you have sensors on both halves of a split keyboard, -assign distinct ids to avoid the central treating them as the same device: +`PointingEvent` carries a `device_id` so that each `PointingProcessor` can be paired with a specific sensor. If you have sensors on both halves of a split keyboard, assign distinct ids to avoid the central treating them as the same device: ```toml # Central side sensor @@ -78,27 +73,18 @@ id = 0 id = 1 ``` -The peripheral forwards events to the central with the `device_id` preserved. -The generated `PointingProcessorConfig` on the central will automatically use the -matching `device_id` for each sensor. - +The peripheral forwards events to the central with the `device_id` preserved. The generated `PointingProcessorConfig` on the central will automatically use the matching `device_id` for each sensor. ::: ::: warning Breaking change - -Adding `device_id` to `PointingEvent` changes the serialized binary format used by the -split protocol. Both halves of a split keyboard **must** be flashed with the same -firmware version at the same time. - +Adding `device_id` to `PointingEvent` changes the serialized binary format used by the split protocol. Both halves of a split keyboard **must** be flashed with the same firmware version at the same time. ::: ## Rust configuration -Define a `PointingDevice` and add it to `run_all!` macro. -For a split keyboard this must be added to the file (`central.rs` or `peripheral.rs`) corresponding to the side the sensor is connected to. +Define a `PointingDevice` and add it to `run_all!` macro. For a split keyboard this must be added to the file (`central.rs` or `peripheral.rs`) corresponding to the side the sensor is connected to. ::: warning - For nrf52 chips you need to add an interrupt for the used SPI. For example when using SPI2: ```rust @@ -109,7 +95,6 @@ bind_interrupts!(struct Irqs { SPI2 => spim::InterruptHandler; }); ``` - ::: ```rust @@ -171,9 +156,7 @@ run_all!(matrix, pmw33xx_device), And define a `PointingProcessor` and add it to the `run_all!` macro to process the events. ::: warning - This should be added to the `central.rs`-File even if the sensor is on split peripheral. - ::: ```rust @@ -193,4 +176,5 @@ This should be added to the `central.rs`-File even if the sensor is on split per ``` ## Pointing Modes + The PointingProcessor has four modes (Cursor, Scroll, Sniper, Caret) with per‑layer configuration. See the [PointingProcessor](./pointing_processor) page for all options. diff --git a/docs/docs/main/docs/configuration/input_device/pmw3610.mdx b/docs/docs/main/docs/configuration/input_device/pmw3610.mdx index e4f9a0126..90ff1afcb 100644 --- a/docs/docs/main/docs/configuration/input_device/pmw3610.mdx +++ b/docs/docs/main/docs/configuration/input_device/pmw3610.mdx @@ -3,19 +3,15 @@ PMW3610 is a low‑power optical mouse sensor. ::: note - - Currently, only implemented for nRF52 and RP2040 with a single-wire (SDIO) half-duplex SPI. - Set `motion` pin for better power efficiency. If omitted, the sensor is polled. - By default, report rate is limited to 125 Hz to prevent flooding the event channel, which causes latency issues especially over BLE. - ::: ## `toml` configuration ::: warning - `spi.mosi` and `spi.miso` must be the same pin, or one of them empty. - ::: ```toml @@ -62,10 +58,7 @@ name = ... ``` ::: warning Multi-device ID assignment - -`PointingEvent` carries a `device_id` so that each `PointingProcessor` can be paired -with a specific sensor. If you have sensors on both halves of a split keyboard, -assign distinct ids to avoid the central treating them as the same device: +`PointingEvent` carries a `device_id` so that each `PointingProcessor` can be paired with a specific sensor. If you have sensors on both halves of a split keyboard, assign distinct ids to avoid the central treating them as the same device: ```toml # Central side sensor @@ -77,24 +70,16 @@ id = 0 id = 1 ``` -The peripheral forwards events to the central with the `device_id` preserved. -The generated `PointingProcessorConfig` on the central will automatically use the -matching `device_id` for each sensor. - +The peripheral forwards events to the central with the `device_id` preserved. The generated `PointingProcessorConfig` on the central will automatically use the matching `device_id` for each sensor. ::: ::: warning Breaking change - -Adding `device_id` to `PointingEvent` changes the serialized binary format used by the -split protocol. Both halves of a split keyboard **must** be flashed with the same -firmware version at the same time. - +Adding `device_id` to `PointingEvent` changes the serialized binary format used by the split protocol. Both halves of a split keyboard **must** be flashed with the same firmware version at the same time. ::: ## Rust configuration -Define a `PointingDevice` and add it to `run_all!` macro. -For a split keyboard this must be added to the file (`central.rs` or `peripheral.rs`) corresponding to the side the sensor is connected to. +Define a `PointingDevice` and add it to `run_all!` macro. For a split keyboard this must be added to the file (`central.rs` or `peripheral.rs`) corresponding to the side the sensor is connected to. ```rust use embassy_rp::gpio::{Output, Flex, Level}; @@ -122,7 +107,7 @@ let pmw3610_spi = BitBangSpiBus::new(pmw3610_sck, pmw3610_sdio); const POINTING_DEV_ID: u8 = 0; // this ID can be anything from 0-255. Just make sure you don't use the same number twice for different sensors to avoid confusion. let mut pmw3610_device = PointingDevice::>::new( - POINTING_DEV_ID + POINTING_DEV_ID, pmw3610_spi, pmw3610_cs, pmw3610_motion, @@ -130,7 +115,7 @@ let mut pmw3610_device = PointingDevice::>::new( ); // If you want to customize the report rate (Hz): -// let mut pmw3610_device = Pmw3610Device::with_report_hz( +// let mut pmw3610_device = PointingDevice::>::with_report_hz( // POINTING_DEV_ID, // pmw3610_spi, // pmw3610_cs, @@ -145,9 +130,7 @@ run_all!(matrix, pmw3610_device), And define a `PointingProcessor` and add it to `run_all!` macro to process the events. ::: warning - This should be added to the `central.rs`-File even if the sensor is on split peripheral. - ::: ```rust @@ -166,4 +149,5 @@ run_all!(pmw3610_processor, /* other processors and devices */) ``` ## Pointing Modes + The PointingProcessor has four modes (Cursor, Scroll, Sniper, Caret) with per‑layer configuration. See the [PointingProcessor](./pointing_processor) page for all options. diff --git a/docs/docs/main/docs/configuration/input_device/pointing_processor.mdx b/docs/docs/main/docs/configuration/input_device/pointing_processor.mdx index e77cd82d5..fbc85ced0 100644 --- a/docs/docs/main/docs/configuration/input_device/pointing_processor.mdx +++ b/docs/docs/main/docs/configuration/input_device/pointing_processor.mdx @@ -36,11 +36,11 @@ rmk::input_device::pointing::ScrollConfig { Uses the `MotionAccumulator`: `total = remainder + delta * multiplier`, then `output = total / divisor`. The **remainder** (the part that didn't produce output) is kept for the next sample. Without this, small deltas like `3` with `divisor=8` would always produce `0` and the sensor would feel dead. -| Sample | delta | total | output (total/8) | remainder | -|--------|-------|-------|-----------------|-----------| -| 1 | 5 | 0+5=5 | 0 | 5 | -| 2 | 5 | 5+5=10 | 1 | 10−1×8=2 | -| 3 | 5 | 2+5=7 | 0 | 7 | +| Sample | delta | total | output (total/8) | remainder | +| ------ | ----- | ------ | ---------------- | --------- | +| 1 | 5 | 0+5=5 | 0 | 5 | +| 2 | 5 | 5+5=10 | 1 | 10−1×8=2 | +| 3 | 5 | 2+5=7 | 0 | 7 | ### Sniper @@ -212,7 +212,7 @@ use crate::pointingproccontroller::PointingProcessorController; mod keyboard_central { use super::*; - #[register_processor(event)] + #[register_processor(event)] fn pointing_processor_controller() -> PointingProcessorController { PointingProcessorController::new() } diff --git a/docs/docs/main/docs/configuration/keyboard_device.mdx b/docs/docs/main/docs/configuration/keyboard_device.mdx index 265124b1c..e47fc9f2d 100644 --- a/docs/docs/main/docs/configuration/keyboard_device.mdx +++ b/docs/docs/main/docs/configuration/keyboard_device.mdx @@ -1,12 +1,10 @@ # Keyboard Device -Keyboard device configuration contains keyboard name, USB VID/PID, etc, which is the information -about your keyboard that appears to the operating system or identifies your device. +Keyboard device configuration contains keyboard name, USB VID/PID, etc, which is the information about your keyboard that appears to the operating system or identifies your device. ## Basic Configuration -The keyboard device info is defined in `[keyboard]` section of `keyboard.toml`, or `device_config` -field in `RmkConfig` struct: +The keyboard device info is defined in `[keyboard]` section of `keyboard.toml`, or `device_config` field in `RmkConfig` struct: import { Rust, Toml, Tab, Tabs } from '@theme' @@ -101,12 +99,9 @@ board = "nice!nano_v2" # Pre-configured board - **Nordic nRF52 Series**: `nrf52840`, `nrf52833`, `nrf52832`, `nrf52811`, `nrf52810` - **Espressif ESP32 Series**: `esp32c3`, `esp32c6`, `esp32h2`, `esp32s3` - **Raspberry Pi**: `rp2040` -- **STM32 Series**: Any STM32 chip supported by - [embassy-stm32](https://github.com/embassy-rs/embassy/blob/main/embassy-stm32/Cargo.toml) with USB - capability +- **STM32 Series**: Any STM32 chip supported by [embassy-stm32](https://github.com/embassy-rs/embassy/blob/main/embassy-stm32/Cargo.toml) with USB capability -::: info `rp2350` is currently supported via the Rust API examples, but `keyboard.toml` chip -selection only recognizes `rp2040` for now. ::: +::: info `rp2350` is currently supported via the Rust API examples, but `keyboard.toml` chip selection only recognizes `rp2040` for now. ::: #### Supported Development Boards @@ -119,8 +114,7 @@ selection only recognizes `rp2040` for now. ::: ## USB Configuration -For microcontrollers that lack full USB device functionality (such as the nRF52832 or ESP32-C3), USB -support must be explicitly disabled: +For microcontrollers that lack full USB device functionality (such as the nRF52832 or ESP32-C3), USB support must be explicitly disabled: ```toml [keyboard] diff --git a/docs/docs/main/docs/configuration/keyboard_matrix.md b/docs/docs/main/docs/configuration/keyboard_matrix.md index ae64a1d2d..2645cf6ed 100644 --- a/docs/docs/main/docs/configuration/keyboard_matrix.md +++ b/docs/docs/main/docs/configuration/keyboard_matrix.md @@ -144,9 +144,9 @@ RMK has two debouncer modes, "default" and "fast": If no `debouncer` is set, the matrix will default to `default` mode. -## Vial Unlock Keys - `[host]` Section +## Host Unlock Keys - `[host]` Section -For enhanced security, Vial locks certain functions (like matrix testing) by default. You can set a key combination to unlock it. This configuration is part of the `[host]` section which controls host-side tools and features. +`unlock_keys` sets the physical key combination used to unlock protected host operations. When the `host_lock` Cargo feature is enabled alongside Vial, Vial uses it for secured configurator features such as matrix testing. [Rynk](../features/rynk) uses it as a physical-presence challenge for locked operations such as bootloader entry, storage reset, matrix-state reads, and optional configuration writes. For Rynk, leave it unset only if those locked operations should stay inaccessible or you intentionally enable `insecure = true` during development. ```toml [host] @@ -159,7 +159,7 @@ unlock_keys = [[0, 0], [0, 1]] # Keys at (row=0,col=0) and (row=0,col=1) - The unlock keys use the physical matrix position (row, column), not the keycode - Choose keys that are easy to press simultaneously but not commonly pressed together accidentally -- See the [Vial Support](../features/vial_support.mdx) page for more details on Vial configuration +- See [Vial Support](../features/vial_support) for Vial setup and [Host Configuration](./host_config) for the full `[host]` options ::: ## Troubleshooting diff --git a/docs/docs/main/docs/configuration/layout.md b/docs/docs/main/docs/configuration/layout.md index 9ef67fdc5..de85b76d3 100644 --- a/docs/docs/main/docs/configuration/layout.md +++ b/docs/docs/main/docs/configuration/layout.md @@ -1,26 +1,52 @@ # Layout -## Keyboard layout configuration +## Overview -`[matrix]` defines the physical key matrix on your board, while `[layout]` section contains the layout and the default keymap for the keyboard: +RMK splits the keyboard description into three sections: + +- `[matrix]` — the **electrical** wiring: which GPIO pins form the key matrix. See [matrix configuration](./keyboard_matrix#matrix-configuration). +- `[layout]` — the **physical** arrangement: the grid size (`rows`/`cols`), the `map` of key positions, and the shape of the rendered layout. +- `[keymap]` — the **logical** behavior: what each key does, across however many layers you define. + +Here is a complete config for a 2×2 macropad: `[layout]` says where each key sits, `[keymap]` says what it does. ```toml [layout] -rows = 5 -cols = 4 -layers = 3 -matrix_map = """ - ... the mapping between the "electronic matrix" of your keyboard - and your key map configuration is described here ... +rows = 2 +cols = 2 +map = """ +(0,0) (0,1) +(1,0) (1,1) +""" + +[[keymap.layer]] +keys = """ +A B +C D """ ``` -The `matrix_map` is a string built from `(row, col, )` tuples, listed in the same order as you want to define your keys in your key map. +Both strings are read in the same order, so the key at matrix position `(0,0)` is `A`, `(0,1)` is `B`, and so on. If your keyboard already has a [KLE](http://www.keyboard-layout-editor.com/) layout or a Vial `vial.json`, the `[layout]` section can be generated from it — see [converting from KLE or Vial](#converting-from-kle-or-vial). + +## The layout map + +`[layout].map` places your keys in the order you want to define them. **The order matters**: every `[[keymap.layer]]` reads its keys in this same order, so the _n_-th key in the map is the _n_-th key on each layer. -The `(row, col)` coordinates are using zero based indexing and referring to the position in the "electronic matrix" of your keyboard. As you can see in [matrix configuration](./keyboard_matrix#matrix-configuration), even the direct pin based keyboards are represented with a matrix. In case of split keyboards, the positions refer to the position in the "big unified matrix" of all split parts. -With the help of this matrix map, the configuration of non-regular key matrices can be intuitively arranged in your key maps. (Triple quote mark `"""` is used to limit multi-line strings) +Each item in the map is one of: -The `` is optional, it should only be used when `unilateral_tap = true`. By assigning `L` or `R` to ``, each key can be associated with either the left or right hand. If the `` is set to `*` it will be considered a "bilateral" key, meaning that in `unilateral_tap = true` it will be treated as opposite hand regardless of on which hand modifier was pressed. +| Item | Meaning | +| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | +| `(row, col, hand, @shape)` | a key at matrix position `(row, col)`, with an optional [hand marker](#assigning-a-hand-to-each-key) and render [shape](#shapes) | +| `(e, id)` | a rotary [encoder](#encoders) | +| `[n]` | a horizontal [gap](#gaps-and-row-steps) of `n` key-units | +| `[y=n]` | an extra vertical [step](#gaps-and-row-steps) before the next row | +| newline | a row break | + +`hand` and `@shape` are independent and optional — include either, both, or neither. When both appear, `hand` comes first, so `(row, col)`, `(row, col, hand)`, `(row, col, @shape)`, and `(row, col, hand, @shape)` are all valid. (The triple quotes `"""..."""` mark a multi-line string.) + +The `(row, col)` coordinates use zero-based indexing and refer to a position in the "electronic matrix" of your keyboard. As shown in [matrix configuration](./keyboard_matrix#matrix-configuration), even direct-pin keyboards are represented as a matrix. For split keyboards, the coordinates refer to the "big unified matrix" that spans all split parts. This lets non-rectangular matrices be laid out intuitively. + +The `map` and `[[keymap.layer]].keys` strings hold data only — they don't support inline comments. Put any annotations in normal TOML `#` comments outside the `"""…"""` block. ```toml # simple numpad example: @@ -38,33 +64,154 @@ The `` is optional, it should only be used when `unilateral_tap = true`. B [layout] rows = 5 cols = 4 -layers = 3 -matrix_map = """ +map = """ (0,0) (0,1) (0,2) (0,3) -(1,0) (1,1) (1,2) (1,3) +(1,0) (1,1) (1,2) (1,3,@2u_tall) (2,0) (2,1) (2,2) -(3,0) (3,1) (3,2) (3,3) - (4,0) (4,1) +(3,0) (3,1) (3,2) (3,3,@2u_tall) + (4,0,@2u) (4,1) """ -# split ortho example for matrix map, with L/R hand information filled +[keymap] +layers = 3 +``` + +And a split ortholinear example, with L/R hand information filled in: + +```toml [layout] rows = 4 cols = 10 -layers = 3 -matrix_map = """ +map = """ (0, 0, L) (0, 1, L) (0, 2, L) (0, 3, L) (0, 4, L) (0, 5, R) (0, 6, R) (0, 7, R) (0, 8, R) (0, 9, R) (1, 0, L) (1, 1, L) (1, 2, L) (1, 3, L) (1, 4, L) (1, 5, R) (1, 6, R) (1, 7, R) (1, 8, R) (1, 9, R) (2, 0, L) (2, 1, L) (2, 2, L) (2, 3, L) (2, 4, L) (2, 5, R) (2, 6, R) (2, 7, R) (2, 8, R) (2, 9, R) (3, 3, L) (3, 4, L) (3, 5, R) (3, 6, R) """ + +[keymap] +layers = 3 +``` + +Whitespace and line breaks between items are free to vary, but keeping an arrangement that mirrors the real keyboard makes the file easier to read. + +## Assigning a hand to each key + +The optional `hand` marker tags a key as belonging to the left or right hand. It is used only when `unilateral_tap = true` (see [behavior](./behavior#per-key-profiles-for-morse-tapdance-tap-hold-fine-tuning)); otherwise it is ignored. + +- `L` (also `LH`, `Left`) — left hand +- `R` (also `RH`, `Right`) — right hand +- `*` (also `Bilateral`) — bilateral; treated as the opposite hand no matter which hand's modifier was held + +Hand names are case-insensitive. The marker is the third element of the tuple, e.g. `(0, 0, L)`. See the split ortho example above for a full map with hands filled in. + +## Rendered layout + +Everything in this section changes only how your keyboard is _drawn_ in editors like Vial and Rynk — never what a key does. RMK compiles the rendered layout into a compact blob that the firmware streams to the host on request; the firmware itself never reads it. You can skip this section entirely: a bare `(row, col)` renders as a plain 1u key. + +### Shapes + +A `@shape` suffix sets a key's size, offset, and rotation. RMK ships a set of stock shapes: + +- Wider keys, 1u tall: `@1.25u`, `@1.5u`, `@1.75u`, `@2u`, `@2.25u`, `@2.75u`, `@3u`, `@6.25u`, `@7u` +- `@2u_tall` — 1u wide, 2u tall (the numpad `+` and `Enter`) +- `@stepped_caps` — a 1.75u Caps Lock +- `@iso_enter` — the L-shaped ISO Enter +- `@bae` — a "big-ass Enter" (L-shaped) + +The numpad example above uses `@2u_tall` for the 2u-tall `+` and `Enter` and `@2u` for the 2u-wide `0`, which is why it renders with those key sizes instead of a flat grid. + +Define your own shapes under `[layout.shapes]`: + +```toml +[layout.shapes] +lsft_iso = { w = 1.25 } +tilted = { r = 15.0 } # rotated 15° clockwise +isoenter = { w = 1.25, h = 2.0, y = -1.0, w2 = 1.5, h2 = 1.0, x2 = -0.125, y2 = -0.5 } +``` + +Every field is optional: + +- `w`, `h` — width and height in key-units (default `1.0`) +- `x`, `y` — nudge the cap from its default position, in key-units (default `0.0`) +- `r` — rotation in degrees, clockwise (default `0.0`) +- `w2`, `h2`, `x2`, `y2` — an optional second rectangle, for L-shaped caps like the ISO Enter. The second rectangle is drawn only when `w2` is set (it's the trigger); the other three then default to `h2 = 1.0`, `x2 = 0.0`, `y2 = 0.0`. + +A custom shape whose name matches a stock shape overrides it. A `@name` that isn't defined anywhere fails the build. + +### Gaps and row steps + +Two bracketed items fine-tune spacing inside the `map`: + +- `[n]` — insert a horizontal gap of `n` key-units before the next key, e.g. the space between the halves of a split board. +- `[y=n]` — add `n` key-units to the vertical step before the next row (may be negative). Handy for staggered thumb clusters. + +### Rotated clusters + +A `[r=deg@(x,y)]` marker rotates every key and encoder after it by `deg` degrees clockwise about the point `(x, y)`, until the next `[r=...]` marker. Keys inside the region are laid out flat, exactly like unrotated keys — the build applies the rotation afterwards, so you never compute a rotated coordinate by hand. + +```toml +map = """ +(0,0) (0,1) (0,2) (0,3) (0,4) (0,5) +(1,0) (1,1) (1,2) (1,3) (1,4) (1,5) +(2,0) (2,1) (2,2) (2,3) (2,4) (2,5) +[y=0.25] [3.0] [r=15@(3,3.25)] (3,3) (3,4) (3,5) +""" ``` -Once the layout is defined, the key mapping can be described for each layer: +The three thumb keys sit on a flat grid starting at x = 3 and swing 15° clockwise about `(3, 3.25)` as one rigid piece. The pivot uses the same flat coordinates as everything else — here it is the top-left corner of the first thumb key (its row top is y = 3.25 because of the `[y=0.25]`). + +A region spans line breaks, so a multi-row block rotates as one piece — keep writing rows and bring each one back under the cluster with a gap: + +```toml +map = """ +(0,0) (0,1) (0,2) +(1,0) (1,1) (1,2) +(2,0) (2,1) (2,2) +[3.5] [r=25@(3.5,3)] (3,0) (3,1) +[3.5] (4,0) (4,1) +""" +``` + +- `[r=0]` ends a region. A new `[r=deg@(x,y)]` also ends the previous one, so two thumb clusters chain without an `[r=0]` between them. +- A shape's own `r` still means "tilt in place about the key's center" and adds to the region's angle. + +### Encoders + +`(e, id)` places rotary encoder `id` in the rendered layout, e.g. `(e, 0)`. Encoder ids must be unique and cover `0..N` with no gaps. When you declare _any_ encoder tokens, their count must match the number of encoders your board declares — but providing no `(e, id)` tokens at all is allowed: the encoders still work, they just have nothing to render. Encoders are render-only — they are _not_ keymap positions, so they don't appear in `[[keymap.layer]].keys` (their actions go in `[[keymap.layer]].encoders` instead). + +### Variants + +One `map` can describe a _superset_ of positions that renders in several ways — for example a 60% board that ships as ANSI, ISO, and split-backspace. Each `[[layout.variant]]` is a complete render of the **same keymap**: it hides some keys and reshapes others, and the remaining keys reflow to close the gaps. + +```toml +[layout] +rows = 5 +cols = 16 +default_variant = "ansi" +map = """...""" + +[[layout.variant]] +name = "ansi" +hidden = ["(3,14)", "(0,14)"] # drop the ISO and split-bs keys + +[[layout.variant]] +name = "iso" +shapes = { "(2,12)" = "@isoenter", "(3,0)" = "@lsft_iso" } +hidden = ["(0,14)"] +``` + +- `hidden` — `"(row,col)"` positions to drop from this variant; following keys reflow left to close the gap. +- `shapes` — `"(row,col)"` → `"@shape"` overrides that reshape a key in this variant only. +- `default_variant` — the name of the variant shown first (a `[layout]`-level field). If it is unset or names a variant that doesn't exist, the first variant is used. + +## The keymap + +Once the layout is defined, describe each layer under `[[keymap.layer]]`: ```toml # layer 0 (default): -[[layer]] +[[keymap.layer]] name = "base_layer" #optional name for the layer keys = """ NumLock KpSlash KpAsterisk KpMinus @@ -75,7 +222,7 @@ Kp1 Kp2 Kp3 Enter """ # layer 1: -[[layer]] +[[keymap.layer]] name = "mouse_navigation" #optional name for the layer keys = """ TO(base_layer) @my_cut @my_copy @my_paste @@ -86,71 +233,73 @@ MouseWheelLeft MouseDown MouseWheelRight MouseWheelDown """ ``` -The number and order of entries on each defined layer must be identical with the number and order of entries in `matrix_map`. White spaces and line breaks are free to vary, but it's worth keeping a consistent arrangement with the real keyboard. +The number and order of keys on each layer must match the `(row, col)` keys in `layout.map` — encoders and render-only items don't count. Whitespace and line breaks are free to vary, but keeping a consistent arrangement with the real keyboard is worthwhile. + +`[keymap].layers` sets the total number of layers. It's optional — it defaults to the number of `[[keymap.layer]]` blocks you define; set it larger only to reserve extra empty layers (handy for on-the-fly Vial or Rynk editing). ::: warning -If the number of defined layers is smaller than what was defined in `layout.layers`, RMK will fill empty layers automatically (so you can configure them freely in Vial). But the empty layers still consume flash and RAM, so if you don't have enough space for them, it's not recommended to use a big layer count. +If you define fewer layers than `keymap.layers`, RMK fills the rest with empty layers automatically (so you can configure them freely in Vial). Empty layers still consume flash and RAM, so avoid a large layer count if you're short on space. ::: -In each `layer.keys`, the keys are bound to various key actions. Due to the limitation of the `toml` file format, this is done in a string. RMK parses the string and fills in the actual keymap initializer, like what's in [`keymap.rs`](https://github.com/HaoboGu/rmk/tree/main/examples/use_rust/rp2040/src/keymap.rs) +In each `layer.keys`, keys are bound to key actions. Because of the TOML format, this is done in a string: RMK parses it and fills in the actual keymap initializer, like the one in [`keymap.rs`](https://github.com/HaoboGu/rmk/tree/main/examples/use_rust/rp2040/src/keymap.rs). -The `layer.keys` string should follow several rules: +The `layer.keys` string follows several rules: 1. For a simple keycode (i.e., keys in RMK's [`HidKeyCode`](https://github.com/HaoboGu/rmk/blob/main/rmk-types/src/keycode/hid.rs) enum), just fill in its name as listed in the [KeyCode table](./keymap_configuration/keycodes). - For example, if you set a keycode `Backspace`, it will be turned to the corresponding HID keycode. So you have to ensure that the keycode string is valid, or RMK won't compile! However, to make things easier a number of alternative key names (see alias column in [KeyCode table](./keymap_configuration/keycodes)) were added and also case-insensitive search is used to find the valid keycode. + For example, `Backspace` is turned into the corresponding HID keycode. The keycode string must be valid, or RMK won't compile. To make things easier, a number of alternative key names were added (see the alias column in the [KeyCode table](./keymap_configuration/keycodes)), and lookup is case-insensitive. - For simple keycodes with modifiers active, you can use `WM(key, modifier)` to create a keypress with modifier action. Modifiers can be chained together like `LShift | RGui` to have multiple modifiers active. + For a simple keycode with modifiers held, use `WM(key, modifier)` to create a keypress-with-modifier action. Modifiers can be chained like `LShift | RGui` to hold several at once. To hold one or more modifiers without sending a non-modifier key, use `MOD(modifier)`. For example, `MOD(LCtrl | LAlt | LGui)` holds all three modifiers until the bound key is released. - You may use aliases, prefixed with `@`, like `@my_copy` in the above example. The alias names are case sensitive. The definition of aliases is described below. + You may use aliases, prefixed with `@`, like `@my_copy` in the example above. Alias names are case sensitive. Defining aliases is covered below. - You may use layer names instead of layer numbers, like `TO(base_layer)` in the above example. + You may use layer names instead of layer numbers, like `TO(base_layer)` above. ::: warning - Please note that layer name if used like this, may not contain white spaces and may not be a number. Layer names are case sensitive. + A layer name used this way may not contain whitespace and may not be a number. Layer names are case sensitive. ::: -2. For no-key (`KeyAction::No`), use `No` +2. For a no-key (`KeyAction::No`), use `No`. -3. For transparent key (`KeyAction::Transparent`), use `_` or `__` (you can put any number of `_`) +3. For a transparent key (`KeyAction::Transparent`), use `_` or `__` (any number of `_`), or `Trns`. 4. RMK supports many advanced layer operations: - 1. Use `DF(n)` to create a switch default layer action, `n` is the layer number. Use `PDF(n)` for a persistent version that is saved to storage and restored after reboot - 2. Use `MO(n)` to create a layer activate action, `n` is the layer number - 3. Use `LM(n, modifier)` to create layer activate with modifier action. The modifier can be chained in the same way as `WM` - 4. Use `LT(n, key, )` to create a layer activate action or tap key(tap/hold). The `key` here is the RMK [`KeyCode`](./keymap_configuration/keycodes), The `profile_name` is optional, which defines the key's [profile](./behavior#per-key-profiles-for-morse-tapdance-tap-hold-fine-tuning) - 5. Use `OSL(n)` to create a one-shot layer action, `n` is the layer number - 6. Use `OSM(modifier)` to create a one-shot modifier action. The modifier can be chained in the same way as `WM` - 7. Use `TT(n)` to create a layer activate or tap toggle action, `n` is the layer number - 8. Use `TG(n)` to create a layer toggle action, `n` is the layer number - 9. Use `TO(n)` to create a layer toggle only action (activate layer `n` and deactivate all other layers), `n` is the layer number - -The definitions of these operations are the same as QMK's; you can find them [here](https://docs.qmk.fm/#/feature_layers). If you want other actions, please [file an issue](https://github.com/HaoboGu/rmk/issues/new). - -5. For modifier-tap-hold, use `MT(key, modifier, )` where the modifier can be a chain like explained on point 1. The `profile_name` is optional, which defines the key's [profile](./behavior#per-key-profiles-for-morse-tapdance-tap-hold-fine-tuning) + 1. `DF(n)` — switch the default layer to layer `n`. + 2. `MO(n)` — momentarily activate layer `n`. + 3. `LM(n, modifier)` — activate layer `n` with a modifier held. The modifier chains like `WM`. + 4. `LT(n, key, )` — activate layer `n` on hold, or tap `key` (tap/hold). `key` is an RMK [`KeyCode`](./keymap_configuration/keycodes); the optional `profile_name` sets the key's [profile](./behavior#per-key-profiles-for-morse-tapdance-tap-hold-fine-tuning). + 5. `OSL(n)` — one-shot layer `n`. + 6. `OSM(modifier)` — one-shot modifier. The modifier chains like `WM`. + 7. `TT(n)` — activate layer `n`, or tap-toggle it. + 8. `TG(n)` — toggle layer `n`. + 9. `TO(n)` — activate layer `n` and deactivate all other layers. + + These match QMK's definitions; see the [QMK layer docs](https://docs.qmk.fm/#/feature_layers). If you need another action, please [file an issue](https://github.com/HaoboGu/rmk/issues/new). + +5. For modifier-tap-hold, use `MT(key, modifier, )`, where the modifier can be a chain as in rule 1. The optional `profile_name` sets the key's [profile](./behavior#per-key-profiles-for-morse-tapdance-tap-hold-fine-tuning). -6. For generic key tap-hold, use `TH(key-tap, key-hold, )`, The `profile_name` is optional, which defines the key's [profile](./behavior#per-key-profiles-for-morse-tapdance-tap-hold-fine-tuning) +6. For a generic tap-hold, use `TH(key-tap, key-hold, )`. The optional `profile_name` sets the key's [profile](./behavior#per-key-profiles-for-morse-tapdance-tap-hold-fine-tuning). - The tap/hold slots of `MT`, `TH` and `LT` are not limited to plain keycodes — they accept any single action, so you can nest other actions inside them. For example `MT(WM(P, RAlt), LShift, HRM)` taps `RAlt+P` and holds `LShift` with the `HRM` profile, and `TH(WM(A, LShift), MO(2))` taps `Shift+A` and holds momentary-layer 2. Composite tap-hold/morse forms (`MT`/`TH`/`LT`/`TT`/`TD`) cannot be nested inside a slot. + The tap/hold slots of `MT`, `TH`, and `LT` aren't limited to plain keycodes — they accept any single action, so you can nest other actions inside them. For example, `MT(WM(P, RAlt), LShift, HRM)` taps `RAlt+P` and holds `LShift` with the `HRM` profile, and `TH(WM(A, LShift), MO(2))` taps `Shift+A` and holds momentary-layer 2. Composite tap-hold/morse forms (`MT`/`TH`/`LT`/`TT`/`TD`) cannot be nested inside a slot. 7. For a shifted key, you can use `SHIFTED(key)` as an alternative to with-modifier (`WM(key, LShift)` - see above). -8. For Morse/Tap Dance, use `TD(n)` or `Morse(n)`, they are same +8. For Morse/Tap Dance, use `TD(n)` or `Morse(n)` — they are the same. -9. For keyboard macros, use `Macro(n)` +9. For keyboard macros, use `Macro(n)`. ## Aliases -The `[aliases]` section contains a table of user defined names and an associated replacement string, which can be used in the `layer.keys`: +The `[aliases]` section maps user-defined names to replacement strings, which you can then use in `layer.keys`: ```toml -# here are the aliases for the example above +# aliases for the example above: [aliases] my_cut = "WM(X, LCtrl)" my_copy = "WM(C, LCtrl)" @@ -159,21 +308,25 @@ my_paste = "WM(V, LCtrl)" ::: warning -Please note that alias names may not contain white spaces and they are case sensitive. +Alias names may not contain whitespace, and they are case sensitive. ::: -## Assigning the left/right hand to a position - -# default profile for morse, tap dance and tap-hold keys: +## Converting from KLE or Vial -[behavior.morse] -enable_flow_tap = true, -prior_idle_time = "120ms" -hold_on_other_press = true -hold_timeout = "250ms" -gap_timeout = "250ms" +If your keyboard already has a [KLE](http://www.keyboard-layout-editor.com/) layout or a [Vial](https://get.vial.today/) definition, you don't have to write the `[layout]` section by hand: `rmkit layout convert` (part of [rmkit](https://github.com/haobogu/rmkit)) converts both. It accepts a raw KLE JSON export ("Download JSON" on keyboard-layout-editor.com) or a `vial.json` (which embeds the same KLE data in `layouts.keymap`), and emits the equivalent `[layout]`: +```bash +rmkit layout convert path/to/vial.json -o layout.toml # vial.json → [layout] +rmkit layout convert path/to/kle_export.json # a raw KLE export works too +rmkit layout convert --to-vial keyboard.toml # reverse: [layout] → vial.json ``` -``` +Key positions, cap sizes, split gaps, rotation, ISO/L-shaped caps, encoders, and VIA layout options are all converted (into `map` items plus `[layout.shapes]` / `[[layout.variant]]` blocks as needed — a KLE rotation cluster becomes an `[r=deg@(x,y)]` region with its keys kept on the flat grid), and the result is round-tripped through RMK's own layout builder before it is printed, so it is guaranteed to build. + +Two things to review in the output: + +- **Matrix positions** are taken from the VIA-style `row,col` legends. A plain KLE export usually has key labels instead (`Esc`, `Q`, …) — the converter then assigns positions row-major and prints a warning; adjust them to match your `[matrix]` wiring. +- **No keycodes are converted** (KLE and `vial.json` carry none), so author the `[keymap]` yourself: each layer's `keys` follow the map's key order, plus one `["cw", "ccw"]` pair per encoder in `encoders`. + +The reverse direction (`--to-vial`) turns a `keyboard.toml`'s `[layout]` into a starting `vial.json` for [Vial support](../features/vial_support). To preview the layout without flashing, render it in the terminal with `rmkit layout show` — it takes a `keyboard.toml`, or a `vial.json` / KLE export directly. diff --git a/docs/docs/main/docs/configuration/rmk_config.md b/docs/docs/main/docs/configuration/rmk_config.md index 995189a6d..52ffa900c 100644 --- a/docs/docs/main/docs/configuration/rmk_config.md +++ b/docs/docs/main/docs/configuration/rmk_config.md @@ -18,6 +18,8 @@ combo_max_length = 4 fork_max_num = 8 # Maximum number of morse keys keyboard can store (max 256) morse_max_num = 8 +# Maximum number of named morse profiles, shared by morse and tap-hold keys (max 255) +morse_profile_max_num = 16 # Maximum number of patterns a morse key can handle (default: 8, min: 4, max 65536) max_patterns_per_key = 8 # Macro space size in bytes for storing sequences. The maximum number of Macros depends on the size of each sequence: All sequences combined need to fit into macro_space_size, the number of macro sequences doesn't matter. @@ -36,8 +38,12 @@ split_peripherals_num = 0 ble_profiles_num = 3 # BLE Split Central sleep timeout in seconds (0 = disabled) split_central_sleep_timeout_seconds = 0 +# Maximum macro data bytes in one Rynk macro request or response +protocol_macro_chunk_size = 64 # Maximum number of auto mouse layer entries (auto-derived from [[behavior.auto_mouse_layer]] if unset) auto_mouse_layer_max_num = 2 +# Rynk RX/TX buffer size in bytes. 488 bytes = 2*BLE maximum packet size +# rynk_buffer_size = 488 ``` ## Parameter Details @@ -59,6 +65,7 @@ Increasing the number of combos, forks, morses (tap dances), and macros will inc - `combo_max_length`: Maximum number of keys that can be pressed simultaneously in a combo, default value is 4. - `fork_max_num`: Maximum number of forks for conditional key actions, default value is 8. This value must be between 0 and 256. - `morse_max_num`: Maximum number of morses that can be stored, default value is 8. This value must be between 0 and 256. +- `morse_profile_max_num`: Capacity of the morse profile table (the named profiles in `[behavior.morse.profiles]`, referenced by morse and tap-hold keys), default value is 16. This value must be between 0 and 255. - `max_patterns_per_key` : Maximum number of tap/hold patterns a morse key can handle, default value is 8. This value must be between 4 and 65536. (Will be automatically set to the maximum length of `tap_actions` + `hold_actions` or `morse_actions`.) - `macro_space_size`: Space size in bytes for storing macro sequences, default value is 256. @@ -71,9 +78,16 @@ Increasing the number of combos, forks, morses (tap dances), and macros will inc In RMK there are several channels used for communication between tasks. The length of the channel can be adjusted. Larger channel size means more events can be buffered, but it will increase memory usage. - `report_channel_size`: The length of report channel, default value is 16. Used for buffering HID reports to be sent to the host. -- `vial_channel_size`: The length of vial channel, default value is 4. Used for communication with Vial protocol. +- `vial_channel_size`: The length of the legacy Vial channel, default value is 4. Used only by Vial builds. - `flash_channel_size`: The length of flash channel, default value is 4. Used for buffering flash storage operations. +### Rynk Protocol Configuration + +These tune the [Rynk](../features/rynk) protocol and rarely need changing. + +- `protocol_macro_chunk_size`: How many macro bytes a single macro transfer can carry, default value is 64. Smaller chunks use less firmware RAM but need more back-and-forth with the host. +- `rynk_buffer_size`: Size of Rynk's send/receive frame buffers in bytes. Payload capacity and bulk batch sizes derive from it. Default value is 488, which fills exactly two BLE notifications. + ### Split Keyboard Configuration - `split_peripherals_num`: The number of split peripherals, default value is 0. If peripherals are specified in `keyboard.toml`, this value is automatically set to the actual count. If you're using the Rust API without `[[split.peripheral]]` entries, set this manually to match your peripheral count. diff --git a/docs/docs/main/docs/configuration/storage.mdx b/docs/docs/main/docs/configuration/storage.mdx index 44c8ec8ec..208a3e8d1 100644 --- a/docs/docs/main/docs/configuration/storage.mdx +++ b/docs/docs/main/docs/configuration/storage.mdx @@ -1,14 +1,8 @@ # Storage -RMK's storage system provides persistent data storage for keyboard settings, keymaps, and system -configuration. It uses your microcontroller's internal flash memory to save changes between power -cycles. - -::: tip For most users, the -[default storage configuration](https://github.com/HaoboGu/rmk/tree/main/rmk-config/src/default_config) -works perfectly. If there's no default config for your chip, the **last two sectors** will be used. -In most cases, you only need to modify settings for advanced use cases or when troubleshooting -storage-related issues. ::: +RMK's storage system provides persistent data storage for keyboard settings, keymaps, and system configuration. It uses your microcontroller's internal flash memory to save changes between power cycles. + +::: tip For most users, the [default storage configuration](https://github.com/HaoboGu/rmk/tree/main/rmk-config/src/default_config) works perfectly. If there's no default config for your chip, the **last two sectors** will be used. In most cases, you only need to modify settings for advanced use cases or when troubleshooting storage-related issues. ::: The `[storage]` section in `keyboard.toml` configures RMK's storage. diff --git a/docs/docs/main/docs/development/rynk_protocol.md b/docs/docs/main/docs/development/rynk_protocol.md new file mode 100644 index 000000000..4f765947a --- /dev/null +++ b/docs/docs/main/docs/development/rynk_protocol.md @@ -0,0 +1,92 @@ + + +# Rynk Protocol Reference + +Current protocol version: **0.1**. + +Every transport (USB CDC, BLE GATT, BLE HID) carries the same frame — a 3-byte header plus a [postcard](https://docs.rs/postcard)-encoded payload: + +```text +┌──────────────┬───────────┐ +│ CMD u16 LE │ SEQ u8 │ ← 3-byte header +├──────────────┴───────────┤ +│ postcard-encoded payload │ +└──────────────────────────┘ +``` + +On the wire the whole frame is COBS-encoded and terminated by a single `0x00` delimiter, so the byte stream is self-synchronizing. + +- **Requests** use CMD `0x0000..=0x7FFF`. The response echoes CMD and SEQ and wraps its payload in postcard `Result` (`T = ()` for `Set*`). +- **Topics** use CMD `0x8000..=0xFFFF` (server → host push, SEQ `0`, bare payload). + +Which commands a firmware answers depends on the RMK Cargo features it was built with: a row with no **Feature** is present once `rynk` is on, and the rest need their feature (`_ble`, `split`, …) compiled in. A command the firmware wasn't built with answers `UnknownCmd`. + +## Endpoints + +| CMD | Name | Request | Response | Feature | Notes | +| -------- | --------------------- | ---------------------- | ----------------------- | ------- | ---------------------------------------------------------------------------- | +| `0x0001` | `GetVersion` | `()` | `ProtocolVersion` | | | +| `0x0002` | `GetCapabilities` | `()` | `DeviceCapabilities` | | | +| `0x0003` | `Reboot` | `()` | `()` | | | +| `0x0004` | `BootloaderJump` | `()` | `()` | | | +| `0x0005` | `StorageReset` | `StorageResetMode` | `()` | | | +| `0x0006` | `GetLockStatus` | `()` | `LockStatus` | | Pure read of the current lock state — no side effects. | +| `0x0007` | `UnlockPoll` | `()` | `LockStatus` | | Arms/refreshes the unlock attempt and samples the held challenge keys. | +| `0x0008` | `Lock` | `()` | `()` | | Relock immediately. | +| `0x0009` | `GetLayout` | `u32` | `LayoutChunk` | | Get layout blob chunk. `u32` is the byte offset. | +| `0x000A` | `GetDeviceInfo` | `()` | `DeviceInfo` | | Identity strings and USB ids; feature gating stays in `GetCapabilities`. | +| `0x0101` | `GetKeyAction` | `KeyPosition` | `KeyAction` | | | +| `0x0102` | `SetKeyAction` | `SetKeyRequest` | `()` | | | +| `0x0103` | `GetDefaultLayer` | `()` | `u8` | | | +| `0x0104` | `SetDefaultLayer` | `u8` | `()` | | | +| `0x0105` | `GetEncoderAction` | `GetEncoderRequest` | `EncoderAction` | | | +| `0x0106` | `SetEncoderAction` | `SetEncoderRequest` | `()` | | | +| `0x0107` | `GetKeymapBulk` | `GetKeymapBulkRequest` | `GetKeymapBulkResponse` | | | +| `0x0108` | `SetKeymapBulk` | `SetKeymapBulkRequest` | `()` | | | +| `0x0201` | `GetMacro` | `GetMacroRequest` | `MacroData` | | | +| `0x0202` | `SetMacro` | `SetMacroRequest` | `()` | | | +| `0x0301` | `GetCombo` | `u8` | `Combo` | | | +| `0x0302` | `SetCombo` | `SetComboRequest` | `()` | | | +| `0x0303` | `GetComboBulk` | `GetComboBulkRequest` | `GetComboBulkResponse` | | | +| `0x0304` | `SetComboBulk` | `SetComboBulkRequest` | `()` | | | +| `0x0401` | `GetMorse` | `u8` | `Morse` | | | +| `0x0402` | `SetMorse` | `SetMorseRequest` | `()` | | | +| `0x0403` | `GetMorseBulk` | `GetMorseBulkRequest` | `GetMorseBulkResponse` | | | +| `0x0404` | `SetMorseBulk` | `SetMorseBulkRequest` | `()` | | | +| `0x0501` | `GetFork` | `u8` | `Fork` | | | +| `0x0502` | `SetFork` | `SetForkRequest` | `()` | | | +| `0x0601` | `GetBehaviorConfig` | `()` | `BehaviorConfig` | | | +| `0x0602` | `SetBehaviorConfig` | `BehaviorConfig` | `()` | | | +| `0x0701` | `GetConnectionType` | `()` | `ConnectionType` | | | +| `0x0702` | `GetConnectionStatus` | `()` | `ConnectionStatus` | | Full `ConnectionStatus` snapshot. | +| `0x0703` | `GetBleStatus` | `()` | `BleStatus` | `_ble` | | +| `0x0704` | `SwitchBleProfile` | `u8` | `()` | `_ble` | | +| `0x0705` | `ClearBleProfile` | `u8` | `()` | `_ble` | | +| `0x0801` | `GetCurrentLayer` | `()` | `u8` | | | +| `0x0802` | `GetMatrixState` | `()` | `MatrixState` | | | +| `0x0803` | `GetBatteryStatus` | `()` | `BatteryStatus` | `_ble` | | +| `0x0804` | `GetPeripheralStatus` | `u8` | `PeripheralStatus` | `split` | | +| `0x0805` | `GetWpm` | `()` | `u16` | | Latest WPM, sourced from the `WpmUpdate` topic snapshot. | +| `0x0806` | `GetSleepState` | `()` | `bool` | | Latest sleep flag, sourced from the `SleepState` topic snapshot. | +| `0x0807` | `GetLedIndicator` | `()` | `LedIndicator` | | Latest HID LED bitmap, sourced from the `LedIndicatorChange` topic snapshot. | + +## Topics + +Topics are best-effort pushes; the `Get*` endpoints above mirror their payloads so a host can recover a missed push. + +| CMD | Name | Payload | Feature | Notes | +| -------- | --------------------- | ------------------ | ------- | ----- | +| `0x8001` | `LayerChange` | `u8` | | | +| `0x8002` | `WpmUpdate` | `u16` | | | +| `0x8003` | `ConnectionChange` | `ConnectionStatus` | | | +| `0x8004` | `SleepState` | `bool` | | | +| `0x8005` | `LedIndicatorChange` | `LedIndicator` | | | +| `0x8006` | `BatteryStatusChange` | `BatteryStatus` | `_ble` | | + +## Compatibility + +- `GetVersion` (`0x0001`) and its `Result` reply are frozen across all versions. +- Within a major version, adding a CMD or topic is a `minor` bump: old firmware answers `UnknownCmd`, old hosts ignore unknown topics. +- Reshaping an existing request/response — including appending a field — is a `major` bump. diff --git a/docs/docs/main/docs/features/_meta.json b/docs/docs/main/docs/features/_meta.json index a896b9c52..05722e52a 100644 --- a/docs/docs/main/docs/features/_meta.json +++ b/docs/docs/main/docs/features/_meta.json @@ -5,6 +5,7 @@ "configuration", "low_power", "split_keyboard", + "rynk", "vial_support", "usb_logging", "storage", diff --git a/docs/docs/main/docs/features/binary_size_optimization.md b/docs/docs/main/docs/features/binary_size_optimization.md index 259a78cc4..0950fa986 100644 --- a/docs/docs/main/docs/features/binary_size_optimization.md +++ b/docs/docs/main/docs/features/binary_size_optimization.md @@ -56,17 +56,17 @@ RMK provides several options that you can use to reduce the binary size: 2. You can also fully remove `defmt` by removing `defmt` feature from `rmk` crate and similar feature gates from all other dependencies. -3. If you don't need vial support, you can also disable the `vial` feature by disabling default features of `rmk` crate. +3. If you don't need on-the-fly configuration, you can disable the host configurator feature by disabling default features of the `rmk` crate. ```toml -# Default features `defmt`, `vial`, and `storage` are disabled +# The default features `defmt`, `storage`, `vial`, `host_lock`, and `watchdog` are all disabled rmk = { version = "...", default-features = false } ``` -If you're using `keyboard.toml`, you'll also need to disable storage, defmt, and vial in the toml config: +If you're using `keyboard.toml`, you'll also need to disable storage, defmt, and the host protocol in the toml config: ```toml -# Disable storage, defmt and vial in keyboard.toml +# Disable storage, defmt and the host protocol in keyboard.toml [storage] enabled = false @@ -74,7 +74,9 @@ enabled = false defmt_log = false [host] +# With no host feature enabled, both must be false (they must match the Cargo features) vial_enabled = false +rynk_enabled = false ``` ## For Rust code users @@ -127,12 +129,12 @@ In this case, you have to implement an empty defmt logger. ``` -### Totally remove storage and vial support +### Totally remove storage and host configurator support -You can disable `storage` and `vial` feature in `Cargo.toml`: +You can disable the `storage` and host protocol (`vial`, or `rynk` if you enabled it) features in `Cargo.toml`: ```toml -# Default features `defmt`, `vial`, and `storage` are disabled +# The default features `defmt`, `storage`, `vial`, `host_lock`, and `watchdog` are all disabled rmk = { version = "...", default-features = false } ``` diff --git a/docs/docs/main/docs/features/layers.md b/docs/docs/main/docs/features/layers.md index 3525c7c24..ffe5106f2 100644 --- a/docs/docs/main/docs/features/layers.md +++ b/docs/docs/main/docs/features/layers.md @@ -6,7 +6,7 @@ For example, if you have two layers, 0 and 1, pressing a key will first check it ## Default Layer -The default layer is called the "base" layer. Generally, you cannot access any layers below the default layer. By default, layer 0 is set as the default layer, but you can change this using the `DF` key. Please be cautious when changing the default layer: if you do not have a key to revert the default layer on any layer above the new default, you may lose access to the lower layers. In such cases, you will need to use Vial to update your keymap and set another `DF` key on an accessible layer. +The default layer is called the "base" layer. Generally, you cannot access any layers below the default layer. By default, layer 0 is set as the default layer, but you can change this using the `DF` key. Please be cautious when changing the default layer: if you do not have a key to revert the default layer on any layer above the new default, you may lose access to the lower layers. In such cases, you will need to use a host configurator ([Rynk](./rynk) or Vial) to update your keymap and set another `DF` key on an accessible layer. `DF` only changes the default layer until the keyboard loses power. To make the change survive a reboot, use the `PDF` (persistent default layer) key instead — it sets the default layer and saves it to storage, so it is restored on the next boot (requires the `storage` feature). diff --git a/docs/docs/main/docs/features/rynk.md b/docs/docs/main/docs/features/rynk.md new file mode 100644 index 000000000..c3620a830 --- /dev/null +++ b/docs/docs/main/docs/features/rynk.md @@ -0,0 +1,223 @@ +# Rynk + +Rynk is RMK's own protocol for configuring a keyboard while it's running — change +your keymap, layers, combos, tap-dance, macros and more without reflashing the +firmware. It plays the same role as [Vial](./vial_support), but it is built +natively for RMK and understands every RMK feature. + +::: tip Rynk or Vial — which should I use? +Rynk speaks RMK's full feature set, but it is opt-in and its host tools are still +young. [Vial](./vial_support) is enabled by default and +has a polished cross-platform app, but only supports the features in the Vial +standard. + +If you want a click-and-go app today, choose Vial. If you want access to every +RMK feature and don't mind newer tooling, choose Rynk. +::: + +## What you can configure + +Through Rynk, a host tool can read and change: + +- Keymap entries per layer, plus encoders and the default layer +- Combos, forks, tap-dance / morse keys, and macros +- Tap-hold and other behavior settings + +It can also watch live status — the current layer, a key tester (matrix state), +typing speed (WPM), the caps-lock/num-lock indicators, battery level, and, on +wireless boards, the connection and BLE profile (including switching or clearing +a profile). Finally it can reboot the keyboard, enter the bootloader, and reset +stored settings. + +## Enable Rynk + +Rynk and Vial are mutually exclusive — pick one. For `keyboard.toml` projects, +select Rynk in `[host]`: + +```toml title="keyboard.toml" +[host] +vial_enabled = false +rynk_enabled = true +``` + +Then disable RMK's default features, which include Vial, and enable `rynk` +explicitly. Add the other features your keyboard needs: + +```toml title="Cargo.toml" +rmk = { version = "...", default-features = false, features = [ + "defmt", + "storage", + "rynk", + "watchdog", + "rp2040", +] } +``` + +::: warning +The `[host]` setting and the Cargo feature must agree. For `keyboard.toml` +projects RMK checks this when it builds: if the `rynk` feature is on, +`rynk_enabled` must be `true` (and `vial_enabled` `false`), otherwise the build +stops with an error. To use Vial instead, flip both settings and swap the `rynk` +feature for `vial`. +::: + +::: warning +Keep the `storage` feature enabled (it's on by default) so your changes survive +a reboot. Without it, anything you set over Rynk is lost when the keyboard +restarts. See [Storage](./storage). +::: + +## Connecting to your keyboard + +Rynk works over the connection you already use: + +- **USB** — plug the keyboard in. Host tools find RMK keyboards automatically, so + you don't have to hunt for the right serial port. +- **Bluetooth** — native tools connect to an already-connected keyboard (the OS + must have it bonded and currently connected). +- **Browser** — Chromium browsers (Chrome or Edge) connect over USB (Web Serial) + or Bluetooth (WebHID). Firefox and Safari are not supported. + +Rynk tooling is still young. Today you have two options: + +- **A browser demo** — the `rynk-wasm` package ships a reference web page + (`index.html`) you build and serve locally; follow the steps in its README. +- **Rust libraries** — the `rynk`, `rynk-serial`, and `rynk-ble` crates let you + build a native tool (see [For tool authors](#for-tool-authors) below). The + browser build is a separate package, `rynk-wasm`. + +A ready-made desktop app is not available yet. + +## Locking dangerous operations + +By default Rynk locks the operations that could plant a persistent implant or +leak what you type, so a background process — or a web page you granted access +to once — can't quietly reflash your keyboard or read your keystrokes. To use a +locked operation you prove you're physically present by holding a key combo. + +There are three tiers: + +- **Open** — everything you normally reach for: read the keymap, change keys, + layers, combos, macros, switch BLE profiles, reboot. These stay available so + on-the-fly configuration is friction-free. +- **Locked** — the dangerous ones, always gated: entering the bootloader, + resetting stored settings and bonds, reading the live key matrix (a keylogger + if left open), and clearing a BLE bond. A host tool gets a "locked" error + until you unlock. +- **Config writes** — open by default, because on-the-fly configuration is the + point. Set `write_requires_unlock = true` to move every write (keymap, macros, + …) into the locked tier as well. + +### Unlocking + +Set the keys the owner holds to unlock in `[host].unlock_keys` (up to four): + +```toml title="keyboard.toml" +[host] +rynk_enabled = true +unlock_keys = [[0, 0], [3, 12]] # hold (row 0, col 0) and (row 3, col 12) +``` + +When you trigger a locked action, the host tool reads the challenge and shows +"hold these keys". Hold them together; the tool polls briefly until the device +unlocks, and the session stays unlocked until it ends. Unplugging, a Bluetooth +disconnect, or an explicit lock re-locks the device. + +If you leave `unlock_keys` unset, the locked operations can never be unlocked — +a safe default, but it means a fresh config can't enter the bootloader over Rynk +or use the matrix tester until you add the keys. + +For local development you can bypass the gate entirely: + +```toml title="keyboard.toml" +[host] +insecure = true # start and stay unlocked — don't ship this +``` + +::: warning Macros and combos are readable +Config _reads_ stay open, so anything that can reach the protocol can read your +stored macros. Don't put passwords or other secrets in a macro. +::: + +::: tip Two different `unlock_keys` +`[host].unlock_keys` guards this Rynk lock gate. A separate `[dfu].unlock_keys` +guards the firmware _download_ once the device is already in the bootloader (the +`dfu_lock` feature). They're independent — set either, both, or neither. A setup +that cares most about firmware replacement wants both: the Rynk gate blocks the +remote route into the bootloader, and `dfu_lock` covers a physically-present +attacker who reaches it another way. +::: + +## Advanced tuning + +Rynk's firmware buffers size themselves automatically and rarely need touching. +There are several parameters in `keyboard.toml`'s [`[rmk]`](../configuration/rmk_config#rynk-protocol-configuration) section that you can adjust: + +- `rynk_buffer_size`: the exact RAM of each Rynk frame buffer, holding one COBS-encoded wire frame. The payload a message can carry is what remains after framing overhead and the 3-byte header. A larger buffer moves more per round-trip at the cost of RAM. +- `protocol_macro_chunk_size`: macro chunk size. + +Bulk transfers (faster multi-entry reads and writes) are always available with +`rynk` — there's no separate feature to enable. Their batch size is derived from +`rynk_buffer_size`, so a larger buffer also moves more per bulk round-trip. The +keyboard advertises bulk support in its capabilities, so host tools pick it up +automatically and the same tool works on boards of any buffer size. + +## For tool authors + +If you're building your own host tool, RMK ships ready-made client crates so you +don't have to implement the protocol yourself: + +- `rynk` — the core typed client; talks to a keyboard over any byte link. +- `rynk-serial` — USB discovery and connection. +- `rynk-ble` — native Bluetooth discovery and connection. +- `rynk-wasm` — the browser build, driven from JavaScript over Web Serial / WebHID. + +A minimal native USB tool looks like this (add `embassy-futures` to your +`Cargo.toml` for `select`): + +```rust +use embassy_futures::select::{Either, select}; +use rynk::RynkDevice; +use rynk_serial::SerialDevice; + +async fn run() -> Result<(), Box> { + // Find a connected Rynk keyboard and open it (the handshake runs in `connect`). + let device = SerialDevice::discover()? + .into_iter() + .next() + .ok_or("no Rynk keyboard found")?; + + let (client, mut driver) = device.connect().await?; + let work = async { + let caps = client.get_capabilities().await?; + println!("{}x{}x{} keymap", caps.num_layers, caps.num_rows, caps.num_cols); + + let key = client.get_key(0, 0, 0).await?; + println!("L0(0,0) = {key:?}"); + Ok::<_, rynk::RynkHostError>(()) + }; + + match select(driver.run(&client), work).await { + Either::First(err) => return Err(err.into()), + Either::Second(result) => result?, + } + Ok(()) +} +``` + +Live status arrives as "topics" you poll for in work running alongside the +driver: + +```rust +loop { + let topic = client.next_topic().await; + println!("{topic:?}"); +} +``` + +Topics are best-effort. If you miss one, just read the current value again with +the matching `get_*` method. + +Firmware and host share the same message types (via `rmk-types`), so the two ends +can never disagree about a message's format. The client crates handle all the +encoding for you, so you never touch the raw bytes on the wire. diff --git a/docs/docs/main/docs/features/split_keyboard.mdx b/docs/docs/main/docs/features/split_keyboard.mdx index e341fa14a..c7d16767b 100644 --- a/docs/docs/main/docs/features/split_keyboard.mdx +++ b/docs/docs/main/docs/features/split_keyboard.mdx @@ -1,42 +1,29 @@ # Split keyboard -RMK supports multi-split keyboard, which contains one central board and unlimited peripheral boards. -The host is connected to the central board via USB or BLE. +RMK supports multi-split keyboard, which contains one central board and unlimited peripheral boards. The host is connected to the central board via USB or BLE. -::: info There are many examples for split keyboards in -[RMK examples folder](https://github.com/HaoboGu/rmk/tree/main/examples/use_config). ::: +::: info There are many examples for split keyboards in [RMK examples folder](https://github.com/HaoboGu/rmk/tree/main/examples/use_config). ::: ## Communication RMK supports both wired and wireless communication. -Currently, the communication type indicates that how split central communicates with split -peripherals. How the central talks with the host depends only on the central. +Currently, the communication type indicates that how split central communicates with split peripherals. How the central talks with the host depends only on the central. -- Wireless Split (BLE): The central connects to the host using BLE (Bluetooth Low Energy) or USB if - the cable is plugged in. +- Wireless Split (BLE): The central connects to the host using BLE (Bluetooth Low Energy) or USB if the cable is plugged in. - Wired Split (Serial): The central connects to the host using USB only. ### Wired split -RMK supports most existing opensource serial based split keyboard hardwares using UART, USART, PIO, -etc. +RMK supports most existing opensource serial based split keyboard hardwares using UART, USART, PIO, etc. -::: details RMK uses `embedded-io-async` as the abstract layer of wired communication. Any device -that implements `embedded-io-async::Read` and `embedded-io-async::Write` traits can be used as RMK -split central/peripheral. That unlocks many possibilities of RMK's split keyboard. +::: details RMK uses `embedded-io-async` as the abstract layer of wired communication. Any device that implements `embedded-io-async::Read` and `embedded-io-async::Write` traits can be used as RMK split central/peripheral. That unlocks many possibilities of RMK's split keyboard. -The most common implementations of those traits are serial ports(UART/USART), such as -`embassy_rp::uart::BufferedUart` and `embassy_stm32::usart::BufferedUart`. ::: +The most common implementations of those traits are serial ports(UART/USART), such as `embassy_rp::uart::BufferedUart` and `embassy_stm32::usart::BufferedUart`. ::: -For keyboards connected using only a single wire, e.g. a 3-pole TRS cable, for the **RP2040 only** -RMK implements a half-duplex UART serial port, `rmk::split::rp::uart::BufferedUart`, using one or -both of the Programmable IO (PIO) blocks available on the RP2040 chip. The PIO serial port also -supports full-duplex over two wires, and can be used when the central/peripheral connection does not -use the pins connected to the chip's standard UART ports. +For keyboards connected using only a single wire, e.g. a 3-pole TRS cable, for the **RP2040 only** RMK implements a half-duplex UART serial port, `rmk::split::rp::uart::BufferedUart`, using one or both of the Programmable IO (PIO) blocks available on the RP2040 chip. The PIO serial port also supports full-duplex over two wires, and can be used when the central/peripheral connection does not use the pins connected to the chip's standard UART ports. -To use the RP2040's PIO UART driver, you need to enable the `rp2040` feature gate in your -`Cargo.toml`: +To use the RP2040's PIO UART driver, you need to enable the `rp2040` feature gate in your `Cargo.toml`: ```toml {3} rmk = { version = "...", features = [ @@ -47,8 +34,7 @@ rmk = { version = "...", features = [ ### Wireless split -RMK supports BLE wireless split on nRF52, ESP32 and Pi Pico W right now. For BLE split, the central -and peripheral parts are connected via BLE, and the host is connected to the central via USB or BLE. +RMK supports BLE wireless split on nRF52, ESP32 and Pi Pico W right now. For BLE split, the central and peripheral parts are connected via BLE, and the host is connected to the central via USB or BLE. ::: tip [storage](./storage.md) feature is required for BLE split. ::: @@ -65,8 +51,7 @@ keyboard.toml Cargo.toml ``` -In `Cargo.toml`, the `split` feature should be enabled, and the `[[bin]]` section should be added -for both central and peripheral: +In `Cargo.toml`, the `split` feature should be enabled, and the `[[bin]]` section should be added for both central and peripheral: ```toml rmk = { version = "...", features = [ @@ -95,5 +80,4 @@ path = "src/peripheral2.rs" ## Configuration -For the detailed configuration of split keyboards, refer to -[Split Keyboard Configuration](../configuration/split_keyboard) documentation +For the detailed configuration of split keyboards, refer to [Split Keyboard Configuration](../configuration/split_keyboard) documentation diff --git a/docs/docs/main/docs/features/steno.md b/docs/docs/main/docs/features/steno.md index 157e38885..be4ca6df6 100644 --- a/docs/docs/main/docs/features/steno.md +++ b/docs/docs/main/docs/features/steno.md @@ -30,7 +30,7 @@ rmk = { version = "...", features = ["steno"] } Use `STN(key)` in your layer keys: ```toml -[[layer]] +[[keymap.layer]] keys = [ "STN(NUM1)", "STN(NUM1)", "STN(NUM1)", "STN(NUM1)", "STN(NUM1)", "STN(NUM1)", "STN(NUM1)", "STN(NUM1)", "STN(NUM1)", "STN(NUM1)", "STN(S1)", "STN(T)", "STN(P)", "STN(H)", "STN(STAR1)", "STN(STAR1)", "STN(RF)", "STN(RP)", "STN(RL)", "STN(RT)", diff --git a/docs/docs/main/docs/features/storage.md b/docs/docs/main/docs/features/storage.md index ddf1c8638..41b61a982 100644 --- a/docs/docs/main/docs/features/storage.md +++ b/docs/docs/main/docs/features/storage.md @@ -4,7 +4,7 @@ RMK's storage system provides persistent flash memory for storing data like keyb ## Storage Feature -RMK's storage system is enabled by the `storage` feature. Enabling features related to `vial` and `ble` automatically enables the `storage` feature because they require keymap and BLE bonding data to be persisted to non-volatile storage. +RMK's storage system is enabled by the `storage` feature, which is part of the default feature set. Enabling BLE automatically pulls in `storage`, since BLE bonding data must be persisted to non-volatile storage. The host configurator protocols (`rynk` and `vial`) rely on `storage` to persist keymap edits across reboots but do not enable it themselves, so keep it enabled when you use them. ## Storage Configuration diff --git a/docs/docs/main/docs/features/use_rust_api.md b/docs/docs/main/docs/features/use_rust_api.md index e54b226ac..9d5a9558e 100644 --- a/docs/docs/main/docs/features/use_rust_api.md +++ b/docs/docs/main/docs/features/use_rust_api.md @@ -28,10 +28,12 @@ bind_interrupts!(struct Irqs { ### Add your own layout -The next step is to add your own keymap layout for your firmware. RMK supports the [Vial app](https://get.vial.today/), an open-source cross-platform (Windows/macOS/Linux/web) keyboard configurator. The Vial-like keymap definition needs to be imported into the firmware project. +This step only applies when you build with the [Vial](https://get.vial.today/) protocol (the `vial` feature), like the Rust examples do. RMK supports the [Vial app](https://get.vial.today/), an open-source cross-platform (Windows/macOS/Linux/web) keyboard configurator. The Vial-like keymap definition needs to be imported into the firmware project. Fortunately, RMK does most of the heavy lifting for you. All you need to do is create your own keymap definition and convert it to `vial.json` following **[Vial's documentation here](https://get.vial.today/docs/porting-to-via.html)**, and place it at the root of the firmware project, replacing the default one. RMK will handle all the rest for you. +If you opt into [Rynk](./rynk) instead of the default Vial protocol, you don't need a `vial.json` — skip this step. + ### Add your default keymap After adding the layout of your keyboard, the default keymap should also be updated. The default keymap is defined in `src/keymap.rs`. Update the keyboard matrix constants and add a `get_default_keymap()` function that returns the default keymap of your keyboard. diff --git a/docs/docs/main/docs/features/vial_support.mdx b/docs/docs/main/docs/features/vial_support.mdx index 1349e54c0..8f903e96f 100644 --- a/docs/docs/main/docs/features/vial_support.mdx +++ b/docs/docs/main/docs/features/vial_support.mdx @@ -1,26 +1,45 @@ # Vial support -RMK uses [Vial](https://get.vial.today/) as the default keymap editor. Vial allows you to change -your keymapping in real-time, no additional firmware flashing is required. +RMK can expose the [Vial](https://get.vial.today/) protocol for compatibility with the Vial app. Vial allows you to change your keymapping in real-time without flashing new firmware. -::: warning Vial requires the [storage feature](./storage) to persist your keymap data. Without -storage feature enabled, any changes to your keymap will be lost after the keyboard reboots. ::: +::: warning Vial and [Rynk](./rynk) are mutually exclusive firmware protocols. Vial is enabled by the `rmk` crate's default Cargo features; enable Rynk explicitly only after disabling those defaults. ::: + +::: warning Vial requires the [storage feature](./storage) to persist your keymap data. Without storage feature enabled, any changes to your keymap will be lost after the keyboard reboots. ::: + +## Enable Vial + +For `keyboard.toml` projects, keep Vial enabled in `[host]` and keep Rynk disabled: + +```toml title="keyboard.toml" +[host] +vial_enabled = true +rynk_enabled = false +``` + +In `Cargo.toml`, keep RMK's default features and add the features your keyboard needs: + +```toml title="Cargo.toml" +rmk = { version = "...", features = ["rp2040"] } +``` + +Add any chip, BLE, split, display, or other features your board needs. ## Port Vial -To use Vial with RMK, you need a keyboard definition file named `vial.json`. Vial provides detailed -documentation on how to generate this file: https://get.vial.today/docs/porting-to-via.html. +To use Vial with RMK, you need a keyboard definition file named `vial.json`. Vial provides detailed documentation on how to generate this file: https://get.vial.today/docs/porting-to-via.html. -::: Note When creating your `vial.json`, it is essential that you use the exact same layout -definition as your RMK firmware's internal keymap, which is defined in either `src/keymap.rs` or -`keyboard.toml`. +::: Note When creating your `vial.json`, it is essential that you use the exact same layout definition as your RMK firmware's internal keymap, which is defined in either `src/keymap.rs` or `keyboard.toml`. It's important to understand the difference: -- `vial.json`: Defines the keyboard layout recognized by Vial, which specifies the position of each - key that Vial sets. -- `src/keymap.rs` / `keyboard.toml`: Defines the actual layout and keymap in the firmware, which - specifies the action for each key press. +- `vial.json`: Defines the keyboard layout recognized by Vial, which specifies the position of each key that Vial sets. +- `src/keymap.rs` / `keyboard.toml`: Defines the actual layout and keymap in the firmware, which specifies the action for each key press. + +::: + +::: tip Generate vial.json from your keyboard.toml + +If your `keyboard.toml` already defines the [`[layout]`](../configuration/layout) section, [rmkit](https://github.com/haobogu/rmkit) can generate a matching `vial.json` for you: run `rmkit layout convert --to-vial path/to/keyboard.toml`. The rendered layout is decoded from the exact layout the firmware builds, so it cannot drift from the firmware — just fill in the Vial-specific fields (USB `vendorId`/`productId`, `lighting`, `customKeycodes`, …) yourself. The same command also works in the forward direction, converting an existing `vial.json` or KLE export into the `[layout]` section — see [converting from KLE or Vial](../configuration/layout#converting-from-kle-or-vial). ::: @@ -29,26 +48,31 @@ project. RMK will automatically handle the rest. ## Disable Vial -Vial support requires additional Flash and RAM. If you want to minimize binary size and memory -usage, you can disable Vial support. +Vial support requires additional Flash and RAM. If you want to minimize binary size and memory usage, you can disable Vial support. -When using `keyboard.toml`, you can disable Vial by setting `vial_enabled` to `false` under the -`[host]` section. To completely remove Vial from the build, also disable the `vial` feature in your -`Cargo.toml` by turning off the default features: +When using `keyboard.toml`, disable Vial by setting `vial_enabled` to `false` under `[host]`. If you still want host-side configuration, enable Rynk instead: ```toml title="keyboard.toml" [host] vial_enabled = false +rynk_enabled = true ``` ```toml title="Cargo.toml" -rmk = { version = "...", default-features = false } +rmk = { version = "...", default-features = false, features = [ + "defmt", + "storage", + "rynk", + "watchdog", + "rp2040", +] } ``` +To remove all host configurator support, set both host protocols to `false` and use `default-features = false` without `vial` or `rynk`. + ## Configure Unlock Keys -For security purposes, you can configure unlock keys that must be pressed simultaneously to unlock -Vial configuration in Vial. This prevents accidental keymap changes. +For security purposes, you can configure unlock keys that must be pressed simultaneously to unlock Vial configuration in Vial. This prevents accidental keymap changes. ```toml title="keyboard.toml" [host] @@ -57,27 +81,19 @@ Vial configuration in Vial. This prevents accidental keymap changes. unlock_keys = [[0, 0], [0, 1]] # Keys at (row=0,col=0) and (row=0,col=1) ``` -::: tip The unlock keys use the physical matrix position (row, column), not the keycode. Make sure -to use keys that are easy to press simultaneously but not commonly pressed together accidentally. -::: +::: tip The unlock keys use the physical matrix position (row, column), not the keycode. Make sure to use keys that are easy to press simultaneously but not commonly pressed together accidentally. ::: ## Start Vial Unlocked (insecure) -By default Vial starts **locked**: security-sensitive operations are unavailable until the keyboard -is unlocked by holding the configured `unlock_keys`. This includes the Matrix Tester and saving Tap -Dance entries (called *morse* in RMK) — Vial requires the keyboard to be unlocked before these can be -used. The lock is part of [Vial's security model](https://get.vial.today/docs/security.html), which -prevents a host from silently reading what you type before you explicitly authorize it. +By default Vial starts **locked**: security-sensitive operations are unavailable until the keyboard is unlocked by holding the configured `unlock_keys`. This includes the Matrix Tester and saving Tap Dance entries (called _morse_ in RMK) — Vial requires the keyboard to be unlocked before these can be used. The lock is part of [Vial's security model](https://get.vial.today/docs/security.html), which prevents a host from silently reading what you type before you explicitly authorize it. -For development and testing it can be convenient to skip this step. Setting `vial_insecure = true` -under the `[host]` section starts Vial in the unlocked state, so the Matrix Tester, Tap Dance -saving, and other secured operations are available immediately without pressing the unlock combo. +For development and testing it can be convenient to skip this step. Setting `insecure = true` under the `[host]` section starts Vial in the unlocked state, so the Matrix Tester, Tap Dance saving, and other secured operations are available immediately without pressing the unlock combo. ```toml title="keyboard.toml" [host] -vial_insecure = true +insecure = true ``` -::: Note `vial_insecure` only takes effect with the `vial_lock` feature (enabled by default). It does -not replace `unlock_keys`: the host can still lock and re-unlock a session that started unlocked, so -you may keep `unlock_keys` configured alongside it. ::: +::: Note +`insecure` (formerly `vial_insecure`; the old name still parses) only takes effect for Vial with the `host_lock` Cargo feature, which is enabled by default. If you disable default features and select Vial explicitly, add both `vial` and `host_lock`. `insecure` does not replace `unlock_keys`: the host can still lock and re-unlock a session that started unlocked, so you may keep `unlock_keys` configured alongside it. +::: diff --git a/docs/docs/main/docs/getting_started/faq.md b/docs/docs/main/docs/getting_started/faq.md index 94cc097e3..6ecd58e0e 100644 --- a/docs/docs/main/docs/getting_started/faq.md +++ b/docs/docs/main/docs/getting_started/faq.md @@ -61,7 +61,7 @@ By default, Rust compiler generates `elf` file in target folder. There're a litt ### I changed the keymap in `keyboard.toml`, but the keyboard is not updated -RMK assumes that users change the keymap using [vial](https://vial.rocks). So reflashing the firmware won't change the keymap by default. For testing scenarios, RMK provides a config `clear_storage` under the `[storage]` section. You can enable it to clear the storage when the keyboard boots. +RMK stores your keymap in flash and assumes you change it live with a host configurator — [Vial](https://vial.rocks) (enabled by default) or RMK's optional native [Rynk](../features/rynk) protocol. Because the stored keymap takes precedence, reflashing the firmware won't change an already-stored keymap by default. For testing scenarios, RMK provides a config `clear_storage` under the `[storage]` section. You can enable it to clear the storage when the keyboard boots. ```toml [storage] diff --git a/docs/docs/main/docs/getting_started/introduction.mdx b/docs/docs/main/docs/getting_started/introduction.mdx index 6b05d65e9..7731a7035 100644 --- a/docs/docs/main/docs/getting_started/introduction.mdx +++ b/docs/docs/main/docs/getting_started/introduction.mdx @@ -1,20 +1,13 @@ # Introduction -RMK is a high-performance and feature-rich keyboard firmware framework, designed for flexibility and -ease of customization. RMK leverages the power of Rust and it's great async ecosystem, provides -comprehensive and modern functionality across a wide range of microcontrollers. +RMK is a high-performance and feature-rich keyboard firmware framework, designed for flexibility and ease of customization. RMK leverages the power of Rust and it's great async ecosystem, provides comprehensive and modern functionality across a wide range of microcontrollers. ## Core Features -- **Broad Microcontroller Support**: ESP32, nRF52, STM32, RP2040/2350, CYW43(Raspberry Pi Pico W), - etc. -- **Wired and Wireless Connectivity**: Offers both wired (USB) and wireless (BLE) connections, with - optimized low-power performance and multi-profile support. -- **Simple Configuration**: Configure your keyboard easily through a single [TOML](https://toml.io/) - file. -- **Advanced Feature Set**: Packed with modern features, including on-the-fly keymap customization, - advanced layer management, powerful macros and multi-role key support (e.g., Tap-Hold, TapDance, - Morse Key) +- **Broad Microcontroller Support**: ESP32, nRF52, STM32, RP2040/2350, CYW43(Raspberry Pi Pico W), etc. +- **Wired and Wireless Connectivity**: Offers both wired (USB) and wireless (BLE) connections, with optimized low-power performance and multi-profile support. +- **Simple Configuration**: Configure your keyboard easily through a single [TOML](https://toml.io/) file. +- **Advanced Feature Set**: Packed with modern features, including on-the-fly keymap customization, advanced layer management, powerful macros and multi-role key support (e.g., Tap-Hold, TapDance, Morse Key) - **Split Keyboard Support**: Natively supports both wired and wireless split keyboard. ## Next Steps diff --git a/docs/docs/main/docs/migration/v07_v08.mdx b/docs/docs/main/docs/migration/v07_v08.mdx index f928245d5..68a82f99c 100644 --- a/docs/docs/main/docs/migration/v07_v08.mdx +++ b/docs/docs/main/docs/migration/v07_v08.mdx @@ -2,15 +2,11 @@ RMK v0.8 is a major release with lots of updates and improvements. The key changes in v0.8 include: -- **Dependency upgrades**: Updated many dependencies to their latest versions, including `esp-hal` - v1.0, `trouble-host` v0.5, and others. +- **Dependency upgrades**: Updated many dependencies to their latest versions, including `esp-hal` v1.0, `trouble-host` v0.5, and others. -- **Tap-hold system refactoring**: Introduced the new `Morse` operation — a superset of tap-hold and - tap-dance functionalities. +- **Tap-hold system refactoring**: Introduced the new `Morse` operation — a superset of tap-hold and tap-dance functionalities. -- **Simplified matrix configuration**: Replaced `input/output_pins` with `row/col_pins` in - `keyboard.toml` and removed the `col2row` feature from `Cargo.toml`, making matrix setup more - intuitive. +- **Simplified matrix configuration**: Replaced `input/output_pins` with `row/col_pins` in `keyboard.toml` and removed the `col2row` feature from `Cargo.toml`, making matrix setup more intuitive. - **Dongle support**: Reintroduced dongle support for split keyboards. @@ -20,8 +16,7 @@ RMK v0.8 is a major release with lots of updates and improvements. The key chang ### Update RMK and embassy-\* dependencies -First, update the `rmk` version to v0.8 and adjust its feature flag. Update versions of embassy-\* -dependencies and HALs as well: +First, update the `rmk` version to v0.8 and adjust its feature flag. Update versions of embassy-\* dependencies and HALs as well: ```diff # Update the following dependencies in your `Cargo.toml`. @@ -111,8 +106,7 @@ For RP2040 wired split, rename "rp2040_bl" feature to "rp2040", remove "rp2040_p ### ESP32 specific update -For ESP32, update all esp-\* dependencies to latest, add vial feature gate to `rmk` if you need vial -support +For ESP32, update all esp-\* dependencies to latest, add vial feature gate to `rmk` if you need vial support ```diff rmk = { version = "0.8", default-features = false, features = [ @@ -178,8 +172,7 @@ The main update of `keyboard.toml` is in the `[matrix]` section: Due to `Morse` update, `[behavior]` section is needed to be updated as well. -The options are also updated, please refer to -[Morse Configuration](../configuration/behavior#morse-and-tapdance) for details +The options are also updated, please refer to [Morse Configuration](../configuration/behavior#morse-and-tapdance) for details ```diff [behavior] @@ -194,14 +187,11 @@ For other configuration updates, please refer to [Configuration](../configuratio ## Dongle support -Dongle support is back! Checkout -[config example](https://github.com/HaoboGu/rmk/tree/main/examples/use_config/nrf52840_ble_split_dongle) -and -[Rust example](https://github.com/HaoboGu/rmk/tree/main/examples/use_rust/nrf52840_ble_split_dongle) -for more details. +Dongle support is back! Checkout [config example](https://github.com/HaoboGu/rmk/tree/main/examples/use_config/nrf52840_ble_split_dongle) and [Rust example](https://github.com/HaoboGu/rmk/tree/main/examples/use_rust/nrf52840_ble_split_dongle) for more details. -::: info For Rust code users, you need to add a `keyboard.toml` with following content to your -project to specify the number of peripherals: +::: info + +For Rust code users, you need to add a `keyboard.toml` with following content to your project to specify the number of peripherals: ```toml title="keyboard.toml" [rmk] diff --git a/docs/docs/main/docs/migration/v08_v09.md b/docs/docs/main/docs/migration/v08_v09.md index 57380e1c7..68044c21f 100644 --- a/docs/docs/main/docs/migration/v08_v09.md +++ b/docs/docs/main/docs/migration/v08_v09.md @@ -1,10 +1,223 @@ # From v0.8 to v0.9 -RMK v0.9 introduces a unified event and processor system, consolidating the previously separate `controller` and `input_processor` APIs into a single, cohesive architecture. +v0.9 introduces [Rynk](../features/rynk), RMK's optional native host protocol, while keeping Vial as +the default. v0.9 also updates the embassy and BLE dependency stacks, unifies the event/processor +Rust API, restructures `keyboard.toml` to separate the electrical matrix, physical layout, and +logical keymap, and includes a few smaller breaking changes. -## Breaking Changes +Each change below is labeled with who it affects. Use the table to find what applies to you, then +follow the steps in that section. Changes are grouped as **Everyone** and **Rust API developers** +(`examples/use_rust`); `keyboard.toml` users (`examples/use_config`) are affected only by the +**Everyone** changes. -### Macro Changes +| Change | `keyboard.toml` users | Rust API developers | +| ----------------------------------------------------------------------------------------- | :-------------------: | :-----------------: | +| [Rynk is a new optional host protocol](#rynk-is-a-new-optional-host-protocol) | opt in | opt in | +| [`keyboard.toml` layout restructured](#keyboardtoml-layout-restructured) | ✅ | — | +| [Dependency updates](#dependency-updates) | ✅ | ✅ | +| [Experimental protocol features renamed](#experimental-protocol-features-renamed) | rare | rare | +| [Event and processor API is unified](#event-and-processor-api-is-unified) | — | ✅ | +| [Pointing device API renamed](#pointing-device-api-renamed) | — | if you use it | +| [PollingController interval is now a method](#pollingcontroller-interval-is-now-a-method) | — | if you use it | +| [MouseKeyConfig fields renamed](#mousekeyconfig-fields-renamed) | — | if you use it | +| [Tap-hold macros take a profile index](#tap-hold-macros-take-a-profile-index) | — | if you use it | + +--- + +## Everyone + +### Rynk is a new optional host protocol + +[Rynk](../features/rynk) is RMK's native host protocol and a new opt-in alternative to Vial. Vial +remains the default host protocol. The `rmk` crate's default features changed only to replace the +removed `vial_lock` alias with its underlying `host_lock` feature: + +| v0.8 default features | v0.9 default features | +| --------------------------------------------------- | --------------------------------------------------- | +| `defmt`, `storage`, `vial`, `vial_lock`, `watchdog` | `defmt`, `storage`, `vial`, `host_lock`, `watchdog` | + +Rynk and Vial are mutually exclusive — enable exactly one. If you relied on the defaults, your +firmware continues to use Vial with its physical-presence lock. + +#### If you use keyboard.toml + +The `[host]` section must match the `rmk` Cargo features — RMK checks this when it builds and stops +with an error if they disagree. + +To keep Vial, no host-protocol changes are needed. The default `[host]` values continue to match the +`rmk` default features. + +To opt into Rynk, update `[host]`: + +```toml title="keyboard.toml" +[host] +vial_enabled = false +rynk_enabled = true +``` + +Then turn off default features and explicitly enable `rynk` along with the other features you need: + +```toml title="Cargo.toml" +rmk = { version = "0.9", default-features = false, features = [ + "defmt", + "storage", + "rynk", + "watchdog", + # ...your chip and other features +] } +``` + +See [Host Configuration](../configuration/host_config) for the full set of options. + +#### If you use the Rust API + +**Step 1 — pick the protocol in `Cargo.toml`.** Rust projects that list `vial` explicitly do not need +to change it. To move to Rynk, disable default features and replace `vial` (and `vial_lock`) with +`rynk` in your explicit feature list. + +**Step 2 — update how you wire up the host service.** It no longer takes a separate `KeyboardContext`, +and it now attaches to a transport instead of running as its own task. + +Before (v0.8): + +```rust +let host_ctx = rmk::host::KeyboardContext::new(&keymap); +let mut host_service = HostService::new(&host_ctx, &rmk_config); + +let mut usb_transport = UsbTransport::new(driver, rmk_config.device_config); + +run_all!(matrix, storage, usb_transport, keyboard, host_service, watchdog_runner).await; +``` + +After (v0.9): + +```rust +let host_service = HostService::new(&keymap, &rmk_config); + +// Attach the host service to each transport that should serve it. +let mut usb_transport = + UsbTransport::new(driver, rmk_config.device_config).with_host_service(&host_service); + +// `host_service` is no longer passed to `run_all!` — the transport drives it. +run_all!(matrix, storage, usb_transport, keyboard, watchdog_runner).await; +``` + +On wireless boards, attach it to the BLE transport the same way: + +```rust +let mut ble_transport = BleTransport::new(&stack, rmk_config).with_host_service(&host_service); +``` + +`HostService` is protocol-agnostic — it resolves to whichever of `rynk` or `vial` you enabled, so the +wiring above is the same for both. + +### `keyboard.toml` layout restructured + +**Who this affects:** everyone using `keyboard.toml`. + +The keyboard description is now split into three sections: `[matrix]` (electrical wiring, unchanged), +`[layout]` (physical arrangement), and the new `[keymap]` (layer count and key actions). The +layer-related fields move out of `[layout]` into `[keymap]`: + +| Old (v0.8) | New (v0.9) | +| -------------------------------- | --------------------------- | +| `[layout].matrix_map` | `[layout].map` | +| `[layout].layers` | `[keymap].layers` | +| `[[layer]]` | `[[keymap.layer]]` | +| `[layout].keymap` (removed) | `[[keymap.layer]]` | +| `[layout].encoder_map` (removed) | `[[keymap.layer]].encoders` | + +`[layout].rows` and `[layout].cols` stay in `[layout]`. + +**Before (v0.8):** + +```toml +[layout] +rows = 2 +cols = 3 +layers = 2 +matrix_map = """ +(0,0) (0,1) (0,2) +(1,0) (1,1) (1,2) +""" + +[[layer]] +name = "base" +keys = """ +A B C +D E F +""" +``` + +**After (v0.9):** + +```toml +[layout] +rows = 2 +cols = 3 +map = """ +(0,0) (0,1) (0,2) +(1,0) (1,1) (1,2) +""" + +[keymap] +layers = 2 + +[[keymap.layer]] +name = "base" +keys = """ +A B C +D E F +""" +``` + +### Experimental protocol features renamed + +**Who this affects:** the rare early adopters who enabled the experimental protocol features by name. + +If your `Cargo.toml` used the experimental feature `rmk_protocol`, rename it to `rynk`. The separate +`bulk_transfer` feature is gone — bulk transfers are now always on with `rynk` and sized by the +`[rmk].rynk_buffer_size` knob, so just drop `bulk_transfer` from your feature list. + +| Old (v0.8) | New (v0.9) | +| --------------- | ------------------------------------------- | +| `rmk_protocol` | `rynk` | +| `bulk_transfer` | removed — always on, use `rynk_buffer_size` | + +The `[rmk].protocol_max_bulk_size` key was likewise removed; `[rmk].rynk_buffer_size` is now the +single knob for bulk-transfer throughput. + +### Dependency updates + +**Who this affects:** everyone — these versions live in your own `Cargo.toml`. + +v0.9 moves to newer embassy and BLE-stack releases. Update your dependency versions to match the +example for your chip. The main bumps are: + +| Dependency | v0.8 | v0.9 | +| -------------------- | ---- | ---- | +| `embassy-executor` | 0.9 | 0.10 | +| `embassy-rp` | 0.8 | 0.10 | +| `embassy-nrf` | 0.8 | 0.11 | +| `trouble-host` (BLE) | 0.5 | 0.7 | +| `bt-hci` (BLE) | 0.6 | 0.9 | + +`embassy-time` is unchanged (0.5). For nRF BLE boards, the `nrf-sdc` / `nrf-mpsl` git `rev` also +moves forward — copy the exact `rev` (and any other pins) from the matching example under `examples/` +for your chip, since some boards track specific git revisions. + +--- + +## Rust API developers + +### Event and processor API is unified + +**Who this affects:** anyone who wrote custom controllers, input processors, or events. + +v0.9 consolidates the previously separate `controller` and `input_processor` APIs into a single, +cohesive event/processor model. Rename the macros and functions as follows. + +#### Macro changes | Old | New | | ------------------------ | ----------------------- | @@ -15,7 +228,7 @@ RMK v0.9 introduces a unified event and processor system, consolidating the prev | `#[derive(InputEvent)]` | `#[derive(Event)]` | | `#[register_controller]` | `#[register_processor]` | -### Function Changes +#### Function changes | Old | New | | ---------------------------------- | ----------------------- | @@ -24,13 +237,12 @@ RMK v0.9 introduces a unified event and processor system, consolidating the prev | `publish_input_event()` | `publish_event()` | | `publish_input_event_async()` | `publish_event_async()` | -## Migration Examples - -### Migrating a Controller to Processor +#### Examples -**Before (v0.8):** +Migrating a controller to a processor: ```rust +// Before (v0.8) use rmk_macro::controller; #[controller(subscribe = [LayerChangeEvent])] @@ -38,61 +250,35 @@ pub struct DisplayController { display: Display, } -impl DisplayController { - async fn on_layer_change_event(&mut self, event: LayerChangeEvent) { - // Handle layer change - } -} -``` - -**After (v0.9):** - -```rust +// After (v0.9) use rmk_macro::processor; #[processor(subscribe = [LayerChangeEvent])] pub struct DisplayProcessor { display: Display, } - -impl DisplayProcessor { - async fn on_layer_change_event(&mut self, event: LayerChangeEvent) { - // Handle layer change - } -} ``` -### Migrating Registration - -**Before (v0.8):** +Migrating registration: ```rust -#[rmk_keyboard] -mod my_keyboard { - #[register_controller(event)] - fn display_controller() -> DisplayController { - DisplayController::new() - } +// Before (v0.8) +#[register_controller(event)] +fn display_controller() -> DisplayController { + DisplayController::new() } -``` - -**After (v0.9):** -```rust -#[rmk_keyboard] -mod my_keyboard { - #[register_processor(event)] - fn display_processor() -> DisplayProcessor { - DisplayProcessor::new() - } +// After (v0.9) +#[register_processor(event)] +fn display_processor() -> DisplayProcessor { + DisplayProcessor::new() } ``` -### Migrating Custom Events - -**Before (v0.8):** +Migrating custom events: ```rust +// Before (v0.8) use rmk_macro::controller_event; #[controller_event(channel_size = 8, subs = 2, pubs = 1)] @@ -100,11 +286,8 @@ use rmk_macro::controller_event; pub struct MyCustomEvent { pub data: u8, } -``` -**After (v0.9):** - -```rust +// After (v0.9) use rmk_macro::event; #[event(channel_size = 8, subs = 2, pubs = 1)] @@ -114,11 +297,10 @@ pub struct MyCustomEvent { } ``` -### Migrating Multi-Event Enums - -**Before (v0.8):** +Migrating multi-event enums: ```rust +// Before (v0.8) use rmk_macro::InputEvent; #[derive(InputEvent, Clone, Debug)] @@ -126,11 +308,8 @@ pub enum MyEvents { Battery(BatteryEvent), Pointing(PointingEvent), } -``` - -**After (v0.9):** -```rust +// After (v0.9) use rmk_macro::Event; #[derive(Event, Clone, Debug)] @@ -140,12 +319,96 @@ pub enum MyEvents { } ``` -## Why This Change? +### Pointing device API renamed + +**Who this affects:** anyone constructing a pointing device in Rust. + +The generic `PointingDevice` / `PointingProcessor` replace the PMW3610-specific `Pmw3610Device` / +`Pmw3610Processor`. For the PMW3610, only the type name changes — the `::new()` arguments are the +same: + +```rust +// Before (v0.8) +let device = Pmw3610Device::new(/* ...same args... */); + +// After (v0.9) +let device = PointingDevice::new(/* ...same args... */); +``` + +keyboard.toml users don't need to do anything — the TOML config is unchanged. + +### PollingController interval is now a method + +**Who this affects:** anyone who implemented `PollingController` for a custom input device. + +The `INTERVAL` associated constant became an `interval()` method, so the interval can be chosen at +runtime: + +```rust +// Before (v0.8) +impl PollingController for MyDevice { + const INTERVAL: Duration = Duration::from_millis(10); +} + +// After (v0.9) +impl PollingController for MyDevice { + fn interval(&self) -> Duration { + Duration::from_millis(10) + } +} +``` + +### MouseKeyConfig fields renamed + +**Who this affects:** anyone building a `MouseKeyConfig` in Rust. (keyboard.toml users are unaffected — +the `[rmk]` `mouse_key_interval` / `mouse_wheel_interval` settings are unchanged.) + +| Old (v0.8) | New (v0.9) | +| ---------------------------- | -------------------- | +| `time_to_max` | `ticks_to_max` | +| `wheel_time_to_max` | `wheel_ticks_to_max` | +| `wheel_max_speed_multiplier` | `wheel_max_speed` | + +The renames reflect that these values now count acceleration **ticks**, not milliseconds. + +### Tap-hold macros take a profile index + +**Who this affects:** Rust keymaps that set custom tap-hold timing profiles, or that construct +`KeyAction::TapHold` directly. (keyboard.toml users are unaffected — the macro interns profiles by +name automatically.) + +`KeyAction::TapHold` now carries a `u8` index into the morse-profile table instead of an inline +`MorseProfile`. The custom-profile macros `thp!` / `mtp!` / `ltp!` / `ttp!` take that index as their +last argument: populate `behavior.morse.profiles` and pass the 0-based index of the profile you want. +An index with no matching entry falls back to the default profile. The default-profile macros `th!` / +`mt!` / `lt!` / `tt!` are unchanged. + +--- + +## Automatic changes (usually no action) + +- **Event channel subscriber counts.** Several events had their default `subs` count increased to make + room for Rynk's host sessions. This is applied automatically. You only need to act if you **pinned + custom `[event.]` `subs` values** — recheck them against the new defaults. When enabling Rynk, + also make sure there are enough subscriber slots, or the keyboard will panic on connect. +- **`keyboard.toml` rejects unknown keys.** A leftover or misspelled key that v0.8 silently ignored is + now an error at build time. No action unless the build complains — then remove or fix the flagged key. + +## New in v0.9 (no migration needed) + +These are new capabilities, listed so you know they exist: + +- **`rmk::boot` is now public** — call `rmk::boot::jump_to_bootloader()` from your own code. +- **`bootmagic`** — hold a designated key during boot to drop into the chip bootloader (works per-half + on splits). +- **New input-device drivers** — Azoteq IQS5xx trackpad and PMW3360 / PMW3389 mouse sensors. -The unified API simplifies the mental model for RMK users: +See the [changelog](https://github.com/HaoboGu/rmk/blob/main/rmk/CHANGELOG.md) for the complete list. -- **One macro for events**: `#[event]` replaces both `#[controller_event]` and `#[input_event]` -- **One macro for processors**: `#[processor]` replaces both `#[controller]` and `#[input_processor]` -- **Consistent naming**: All event-related functions now use `publish_event()` instead of separate names for different event types +## Why these changes? -This consolidation reduces confusion and makes the codebase more maintainable while preserving all existing functionality. +- **Rynk** gives RMK a native host protocol that understands every RMK feature, instead of being + limited to what the Vial standard supports. +- **The unified event/processor API** collapses two parallel systems into one: a single `#[event]` + macro, a single `#[processor]` macro, and one `publish_event()` family — simpler to learn and + maintain, with no loss of functionality. diff --git a/docs/docs/main/docs/user_guide/create_firmware.mdx b/docs/docs/main/docs/user_guide/create_firmware.mdx index c619696c1..fd2f7776c 100644 --- a/docs/docs/main/docs/user_guide/create_firmware.mdx +++ b/docs/docs/main/docs/user_guide/create_firmware.mdx @@ -4,8 +4,7 @@ RMK offers two methods for compiling your keyboard firmware: ### 1. Cloud Compilation -Compile your firmware using GitHub Actions with zero local setup required. This method is perfect -for: +Compile your firmware using GitHub Actions with zero local setup required. This method is perfect for: - New users who want to get started quickly - Users who prefer not to install development toolchain locally @@ -19,8 +18,7 @@ Compile firmware on your local machine. This method offers: ## Next Steps -Select your preferred compilation method following or from the navigation menu to continue with -detailed instructions: +Select your preferred compilation method following or from the navigation menu to continue with detailed instructions: import { LinkCard } from '@theme' diff --git a/docs/docs/main/docs/user_guide/create_firmware/cloud_compilation.mdx b/docs/docs/main/docs/user_guide/create_firmware/cloud_compilation.mdx index 97024c884..5fda9ea3a 100644 --- a/docs/docs/main/docs/user_guide/create_firmware/cloud_compilation.mdx +++ b/docs/docs/main/docs/user_guide/create_firmware/cloud_compilation.mdx @@ -1,21 +1,16 @@ # Cloud compilation -RMK provides a [project-template](https://github.com/HaoboGu/rmk-project-template) that you can use -to create your firmware easily. The following is a step-by-step tutorial for compiling RMK firmware -using Github Actions. +RMK provides a [project-template](https://github.com/HaoboGu/rmk-project-template) that you can use to create your firmware easily. The following is a step-by-step tutorial for compiling RMK firmware using Github Actions. ::: info -There are some limitations currently for cloud compilation via Github Actions. For example, you -cannot edit cargo features in the generated project. If you have any problems when compiling RMK on -the cloud, please [open an issue](https://github.com/HaoboGu/rmk/issues/new)! +There are some limitations currently for cloud compilation via Github Actions. For example, you cannot edit cargo features in the generated project. If you have any problems when compiling RMK on the cloud, please [open an issue](https://github.com/HaoboGu/rmk/issues/new)! ::: ## Steps -1. To get started, open [project-template](https://github.com/HaoboGu/rmk-project-template), click - `Use this template` button and choose `Create a new repository`: +1. To get started, open [project-template](https://github.com/HaoboGu/rmk-project-template), click `Use this template` button and choose `Create a new repository`: ![use_template](../../../images/use_template.png) @@ -23,25 +18,15 @@ the cloud, please [open an issue](https://github.com/HaoboGu/rmk/issues/new)! ![create rmk repository](../../../images/create_repository.png) -3. Navigate to your created repository, there are two config files in the project:`keyboard.toml` - and `vial.json`: - - `keyboard.toml`: this file defines almost everything about your keyboard, follow - [keyboard configuration](../../configuration) to create your own keyboard definition - - `vial.json`: this file contains matrix definitions which will be recognized by - [vial](https://get.vial.today/). RMK now uses vial to update the keymap on-the-fly. Follow - vial's [porting guide](https://get.vial.today/docs/porting-to-via.html) to create `vial.json` - for your keyboard. - - you can edit the files directly on Github by clicking the file and then choosing - `edit this file`: ![edit file](../../../images/edit_config_file.png). After updating your config, - click `Commit changes..` to save it: ![commit change](../../../images/commit_changes.png) - -4. Once you saved your file, Github Action will automatically run to compile your firmware using - your saved config files. Click `Action` tab on the top bar and you can see there's a workflow - running. ![workflow](../../../images/workflow.png) - - You can also check the compilation log by clicking `build/build`. After the compilation finished, - refresh the page and you can see the compiled RMK firmware under `Summary/Artifacts`: +3. Navigate to your created repository, there are two config files in the project:`keyboard.toml` and `vial.json`: + - `keyboard.toml`: this file defines almost everything about your keyboard, follow [keyboard configuration](../../configuration) to create your own keyboard definition + - `vial.json`: this file contains matrix definitions which will be recognized by [vial](https://get.vial.today/). RMK now uses vial to update the keymap on-the-fly. Follow vial's [porting guide](https://get.vial.today/docs/porting-to-via.html) to create `vial.json` for your keyboard. + + you can edit the files directly on Github by clicking the file and then choosing `edit this file`: ![edit file](../../../images/edit_config_file.png). After updating your config, click `Commit changes..` to save it: ![commit change](../../../images/commit_changes.png) + +4. Once you saved your file, Github Action will automatically run to compile your firmware using your saved config files. Click `Action` tab on the top bar and you can see there's a workflow running. ![workflow](../../../images/workflow.png) + + You can also check the compilation log by clicking `build/build`. After the compilation finished, refresh the page and you can see the compiled RMK firmware under `Summary/Artifacts`: ![artifacts](../../../images/artifacts.png) diff --git a/docs/docs/main/docs/user_guide/create_firmware/local_compilation.mdx b/docs/docs/main/docs/user_guide/create_firmware/local_compilation.mdx index 9b27b583d..d90b4d4fb 100644 --- a/docs/docs/main/docs/user_guide/create_firmware/local_compilation.mdx +++ b/docs/docs/main/docs/user_guide/create_firmware/local_compilation.mdx @@ -4,44 +4,29 @@ This section describes everything you need to compile RMK firmware on your local ## Setup RMK environment -First, you need to setup the Rust development environment and install all the needed components for -compiling and flashing RMK firmware. +First, you need to setup the Rust development environment and install all the needed components for compiling and flashing RMK firmware. ### 1. Install Rust -Installing Rust is easy, checkout [https://rustup.rs](https://rustup.rs) and follow the -instructions. +Installing Rust is easy, checkout [https://rustup.rs](https://rustup.rs) and follow the instructions. -[Here](https://doc.rust-lang.org/book/ch01-01-installation.html) is a more detailed guide for -installing Rust. +[Here](https://doc.rust-lang.org/book/ch01-01-installation.html) is a more detailed guide for installing Rust. ### 2. Choose your hardware and install the target -RMK firmware runs on microcontrollers. By using [Embassy](https://github.com/embassy-rs/embassy) as -the runtime, RMK supports a wide range of microcontrollers. Choosing one of the supported -microcontrollers makes your journey of RMK much easier. In the RMK repo, there are -[many examples](https://github.com/HaoboGu/rmk/tree/main/examples), microcontrollers used in the -examples are safe options. If you want to use other microcontrollers, make sure your microcontroller -supports [Embassy](https://github.com/embassy-rs/embassy). +RMK firmware runs on microcontrollers. By using [Embassy](https://github.com/embassy-rs/embassy) as the runtime, RMK supports a wide range of microcontrollers. Choosing one of the supported microcontrollers makes your journey of RMK much easier. In the RMK repo, there are [many examples](https://github.com/HaoboGu/rmk/tree/main/examples), microcontrollers used in the examples are safe options. If you want to use other microcontrollers, make sure your microcontroller supports [Embassy](https://github.com/embassy-rs/embassy). -After picking your microcontroller, the next step is to add Rust's compilation target of your chosen -microcontroller. Rust's default installation includes only your host's compilation target, so you -have to install the compilation target of your microcontroller manually. +After picking your microcontroller, the next step is to add Rust's compilation target of your chosen microcontroller. Rust's default installation includes only your host's compilation target, so you have to install the compilation target of your microcontroller manually. -Different microcontrollers with different architectures may have different compilation targets. In -case you're using ARM Cortex-M microcontrollers, -[here](https://docs.rust-embedded.org/book/intro/install.html#rust-toolchain) is a simple target -list. +Different microcontrollers with different architectures may have different compilation targets. In case you're using ARM Cortex-M microcontrollers, [here](https://docs.rust-embedded.org/book/intro/install.html#rust-toolchain) is a simple target list. -For example, rp2040 is a Cortex-M0+ microcontroller, it's compilation target is -`thumbv6m-none-eabi`. Use `rustup target add` command to install it: +For example, rp2040 is a Cortex-M0+ microcontroller, it's compilation target is `thumbv6m-none-eabi`. Use `rustup target add` command to install it: ```bash rustup target add thumbv6m-none-eabi ``` -nRF52840 is also commonly used in wireless keyboards, it's a Cortex-M4F microcontroller whose -compilation target is `thumbv7em-none-eabihf`. To add the target, run: +nRF52840 is also commonly used in wireless keyboards, it's a Cortex-M4F microcontroller whose compilation target is `thumbv7em-none-eabihf`. To add the target, run: ```bash rustup target add thumbv7em-none-eabihf @@ -49,8 +34,7 @@ rustup target add thumbv7em-none-eabihf ### 3. Install `rmkit` and other tools -`rmkit` is a tool that helps you create your RMK project easily. You can use the following command -to install `rmkit`: +`rmkit` is a tool that helps you create your RMK project easily. You can use the following command to install `rmkit`: ```shell cargo install rmkit @@ -64,8 +48,7 @@ There are several other tools that should be installed: - `cargo-make`: a helper for automating uf2 generation. -- (optional) `probe-rs`: a tool for flashing and debugging your firmware with debug probe. - [Here](https://probe.rs/docs/getting-started/installation/) is the installation instruction. +- (optional) `probe-rs`: a tool for flashing and debugging your firmware with debug probe. [Here](https://probe.rs/docs/getting-started/installation/) is the installation instruction. You can use the following commands to install them: @@ -80,9 +63,7 @@ You can use the following commands to install them: irm https://github.com/probe-rs/probe-rs/releases/latest/download/probe-rs-tools-installer.ps1 | iex ``` -To compile firmware for nRF52 on windows, you may need to install LLVM(Clang) as well. Follow the -doc [here](https://rust-lang.github.io/rust-bindgen/requirements.html#windows) to install -LLVM(Clang). +To compile firmware for nRF52 on windows, you may need to install LLVM(Clang) as well. Follow the doc [here](https://rust-lang.github.io/rust-bindgen/requirements.html#windows) to install LLVM(Clang). ## Create firmware project @@ -92,8 +73,7 @@ You can use `rmkit` to create the firmware project: rmkit init ``` -This command will ask you to give some basic info about your project and then create a project from -RMK's [project templates](https://github.com/HaoboGu/rmk-template): +This command will ask you to give some basic info about your project and then create a project from RMK's [project templates](https://github.com/HaoboGu/rmk-template): ```shell $ rmkit init @@ -104,58 +84,45 @@ $ rmkit init ✅ Project created, path: rmk-keyboard ``` -Now RMK has project templates for many microcontrollers, such as nRF52840, RP2040, STM32, ESP32, -etc. If you find that there's no template for your microcontroller, please feel free to add one. +Now RMK has project templates for many microcontrollers, such as nRF52840, RP2040, STM32, ESP32, etc. If you find that there's no template for your microcontroller, please feel free to add one. ## Update firmware project -The generated project uses the **`keyboard.toml`** file to configure the keyboard by default. Follow -the steps to customize your own firmware: +The generated project uses the **`keyboard.toml`** file to configure the keyboard by default. Follow the steps to customize your own firmware: ### Edit `keyboard.toml` -The generated `keyboard.toml` should have some fields configured from `rmkit init`. But there are -still some fields that you want to fill, such as the pin matrix, default keymap, led config, etc. +The generated `keyboard.toml` should have some fields configured from `rmkit init`. But there are still some fields that you want to fill, such as the pin matrix, default keymap, led config, etc. -The [Keyboard Configuration](../../configuration) section has full instructions on how to write your -own `keyboard.toml`. Follow the doc and report any issues/questions at -https://github.com/HaoboGu/rmk/issues. We appreciate your feedback! +The [Keyboard Configuration](../../configuration) section has full instructions on how to write your own `keyboard.toml`. Follow the doc and report any issues/questions at https://github.com/HaoboGu/rmk/issues. We appreciate your feedback! ### Update `memory.x` -`memory.x` is the linker script of the Rust embedded project, it's used to define the memory layout -of the microcontroller. RMK enables the `memory-x` feature for `embassy-stm32`, so if you're using -stm32, you can just ignore this step. +`memory.x` is the linker script of the Rust embedded project, it's used to define the memory layout of the microcontroller. RMK enables the `memory-x` feature for `embassy-stm32`, so if you're using stm32, you can just ignore this step. -For other ARM Cortex-M microcontrollers, you only need to update the `LENGTH` of FLASH and RAM to -your microcontroller. +For other ARM Cortex-M microcontrollers, you only need to update the `LENGTH` of FLASH and RAM to your microcontroller. -If you're using **nRF52840**, ensure that you have -[Adafruit_nRF52_Bootloader](https://github.com/adafruit/Adafruit_nRF52_Bootloader) flashed to your -board. Most nice!nano compatible boards have it already. As long as you can open a USB drive for -your board and update uf2 firmware by dragging and dropping, you're all set. +If you're using **nRF52840**, ensure that you have [Adafruit_nRF52_Bootloader](https://github.com/adafruit/Adafruit_nRF52_Bootloader) flashed to your board. Most nice!nano compatible boards have it already. As long as you can open a USB drive for your board and update uf2 firmware by dragging and dropping, you're all set. -You can either checkout your microcontroller's datasheet or an existing Rust project of your -microcontroller for it. +You can either checkout your microcontroller's datasheet or an existing Rust project of your microcontroller for it. ### Add your own layout(vial.json) -::: tip The layout should be consistent with the default keymap set in `keyboard.toml` ::: +::: tip +The layout should be consistent with the default keymap set in `keyboard.toml` +::: -The next step is to add your own keymap layout for your firmware. RMK supports -[vial app](https://get.vial.today/), an open-source cross-platform(windows/macos/linux/web) keyboard -configurator. So the vial like keymap definition has to be imported to the firmware project. +This step applies only when you build with the [Vial](https://get.vial.today/) protocol (the `vial` feature). RMK supports the [vial app](https://get.vial.today/), an open-source cross-platform(windows/macos/linux/web) keyboard configurator. So the vial like keymap definition has to be imported to the firmware project. -Fortunately, RMK does most of the heavy things for you, all you need to do is to create your own -keymap definition and convert it to `vial.json` following -**[vial's doc here](https://get.vial.today/docs/porting-to-via.html)**, and place it at the root of -the firmware project, replacing the default one. RMK will do all the rest for you. +Fortunately, RMK does most of the heavy things for you, all you need to do is to create your own keymap definition and convert it to `vial.json` following **[vial's doc here](https://get.vial.today/docs/porting-to-via.html)**, and place it at the root of the firmware project, replacing the default one. RMK will do all the rest for you. + +If you opt into [Rynk](../../features/rynk) instead of the default Vial protocol, you don't need a `vial.json` — skip this step. + +If your `keyboard.toml` already defines the `[layout]` section, you can also generate a matching `vial.json` from it with `rmkit layout convert --to-vial` — see [Vial support](../../features/vial_support). ### (Optional) Update compilation target -For STM32 microcontrollers, the compilation target varies according to the series. If there's no -project template for your specific STM32 model, a common template will be used. An extra step for -the common template is to update `.cargo/config.toml`, change the project's default target: +For STM32 microcontrollers, the compilation target varies according to the series. If there's no project template for your specific STM32 model, a common template will be used. An extra step for the common template is to update `.cargo/config.toml`, change the project's default target: ```toml [build] @@ -169,8 +136,7 @@ target = "thumbv7em-none-eabihf" # Cortex-M4F and Cortex-M7F (with FPU) # target = "thumbv8m.main-none-eabihf" # Cortex-M33 (with FPU) ``` -It's also welcome to submit and share your project template, please open an -[issue](https://github.com/HaoboGu/rmk-template/issues) with your project attached. +It's also welcome to submit and share your project template, please open an [issue](https://github.com/HaoboGu/rmk-template/issues) with your project attached. ## Compile the firmware @@ -180,27 +146,17 @@ Compiling the firmware is easy, just run cargo build --release ``` -If you've done all the previous steps correctly, you can find your compiled firmware at -`target//release` folder, whose name is your project's name or the name set in -`Cargo.toml`'s `[[bin]]` section. +If you've done all the previous steps correctly, you can find your compiled firmware at `target//release` folder, whose name is your project's name or the name set in `Cargo.toml`'s `[[bin]]` section. The firmware generated by Rust has no extension, which is actually an ELF file. -If you encountered any problems when compiling the firmware, check the -[FAQ](../../getting_started/faq.md) first. If you still can't find the solution, report it at -[github issue](https://github.com/HaoboGu/rmk/issues) or our -[Discord server](https://discord.gg/HHGA7pQxkG). +If you encountered any problems when compiling the firmware, check the [FAQ](../../getting_started/faq.md) first. If you still can't find the solution, report it at [github issue](https://github.com/HaoboGu/rmk/issues) or our [Discord server](https://discord.gg/HHGA7pQxkG). ### Compile uf2 firmware -By default, Rust firmware is an ELF file, so we have to do some extra steps converting it to uf2 -format. +By default, Rust firmware is an ELF file, so we have to do some extra steps converting it to uf2 format. -RMK uses [cargo-make](https://github.com/sagiegurari/cargo-make) to automate the uf2 firmware -generation. `cargo-make` configurations can be found in `Makefile.toml` file, you should make sure -the chip family argument(aka argument after --family) in `Makefile.toml` is correct. All supported -chip families are listed -[here](https://github.com/fhanrath/hex-to-uf2/blob/main/hex_to_uf2/src/families.rs#L7). +RMK uses [cargo-make](https://github.com/sagiegurari/cargo-make) to automate the uf2 firmware generation. `cargo-make` configurations can be found in `Makefile.toml` file, you should make sure the chip family argument(aka argument after --family) in `Makefile.toml` is correct. All supported chip families are listed [here](https://github.com/fhanrath/hex-to-uf2/blob/main/hex_to_uf2/src/families.rs#L7). That's all you need to set up. The final step is to run diff --git a/docs/docs/main/docs/user_guide/flash_firmware/index.mdx b/docs/docs/main/docs/user_guide/flash_firmware/index.mdx index 66cd71536..c6ade7e4c 100644 --- a/docs/docs/main/docs/user_guide/flash_firmware/index.mdx +++ b/docs/docs/main/docs/user_guide/flash_firmware/index.mdx @@ -1,24 +1,18 @@ # Flashing Firmware -The last step is to flash compiled firmware to your microcontroller. RMK supports flashing the -firmware via uf2 bootloader or debug probe. +The last step is to flash compiled firmware to your microcontroller. RMK supports flashing the firmware via uf2 bootloader or debug probe. ## Use uf2 bootloader -Flashing using uf2 bootloader is easy: set your board to bootloader mode, then a USB drive should -appear in your computer. Copy the uf2 firmware to the USB drive, and that's it! +Flashing using uf2 bootloader is easy: set your board to bootloader mode, then a USB drive should appear in your computer. Copy the uf2 firmware to the USB drive, and that's it! If you're using macOS, an error might appear, you can safely ignore it. ### Tips for nRF52840 -For nRF52840, you need to check whether your have a uf2 bootloader flashed to your board. If you can -enter bootloader mode, there will be an USB drive shown in your computer. If there's `INFO_UF2.TXT` -in the USB drive, you have it! +For nRF52840, you need to check whether your have a uf2 bootloader flashed to your board. If you can enter bootloader mode, there will be an USB drive shown in your computer. If there's `INFO_UF2.TXT` in the USB drive, you have it! -The [Adafruit_nRF52_Bootloader](https://github.com/adafruit/Adafruit_nRF52_Bootloader) for nRF52840 -has a special MBR section at the beginning of the flash, ensure that the flash origin in `memory.x` -starts with 0x00001000: +The [Adafruit_nRF52_Bootloader](https://github.com/adafruit/Adafruit_nRF52_Bootloader) for nRF52840 has a special MBR section at the beginning of the flash, ensure that the flash origin in `memory.x` starts with 0x00001000: ``` MEMORY @@ -41,9 +35,7 @@ If you have a debug probe and don't want to use the bootloader, use the followin ### Tips for the STM32F411 Blackpill / F401 Bluepill -For STM32 MCUs the memory.x file us usually created by the embassy-stm32 crate and a memory.x file -doesnt have to be created. This will result in a file similar to this: (you can find that in the -target directory) +For STM32 MCUs the memory.x file us usually created by the embassy-stm32 crate and a memory.x file doesnt have to be created. This will result in a file similar to this: (you can find that in the target directory) ``` MEMORY @@ -53,17 +45,13 @@ MEMORY } ``` -Where the LENGTH value may vary, depending on the chip. This setup works fine for the default -stm32-dfu bootloader and the debug probe. +Where the LENGTH value may vary, depending on the chip. This setup works fine for the default stm32-dfu bootloader and the debug probe. #### Use tinyuf2 bootloader for stm32 -For some STM32 there is a [tinyuf2 bootloader](https://github.com/adafruit/tinyuf2) available. Using -that you can just drop the finished uf2 file onto the device like it's an USB stick. +For some STM32 there is a [tinyuf2 bootloader](https://github.com/adafruit/tinyuf2) available. Using that you can just drop the finished uf2 file onto the device like it's an USB stick. -Because the bootloader takes up 64K at the beginnning of the first sector, we need to shift the -flash address accordingly. To do this first run `cargo build --release` at least once. get your -generated memory.x file out of the target directory: +Because the bootloader takes up 64K at the beginnning of the first sector, we need to shift the flash address accordingly. To do this first run `cargo build --release` at least once. get your generated memory.x file out of the target directory: ```shell # pwd in project root @@ -104,22 +92,17 @@ Then build the firmware using cargo make uf2 --release ``` -To flash, double tap `NRST` an the board, the board will go into bootloader mode and appear as a USB -flash drive. Drop the \*.uf2 files into the drive, the board will then reboot into the firmware. +To flash, double tap `NRST` an the board, the board will go into bootloader mode and appear as a USB flash drive. Drop the \*.uf2 files into the drive, the board will then reboot into the firmware. ## Use debug probe -If you have a debug probe like [daplink](https://daplink.io/), -[jlink](https://www.segger.com/products/debug-probes/j-link/) or -[stlink](https://github.com/stlink-org/stlink)(stm32 only), things become much easier: connect it -with your board and host, make sure you have installed [probe-rs](https://probe.rs/), then just run +If you have a debug probe like [daplink](https://daplink.io/), [jlink](https://www.segger.com/products/debug-probes/j-link/) or [stlink](https://github.com/stlink-org/stlink)(stm32 only), things become much easier: connect it with your board and host, make sure you have installed [probe-rs](https://probe.rs/), then just run ```shell cargo run --release ``` -Then the command configured in `.cargo/config.toml` will be executed. The firmware will be flashed -to your microcontroller and run automatically, yay! +Then the command configured in `.cargo/config.toml` will be executed. The firmware will be flashed to your microcontroller and run automatically, yay! ## Use esptool @@ -175,8 +158,7 @@ You can also run the monitoring directly, which can be useful during testing/deb ## Next Steps -Now you've finished the RMK's user guide. For the next steps, you can checkout features that RMK -provides or explore how to configure RMK keyboard: +Now you've finished the RMK's user guide. For the next steps, you can checkout features that RMK provides or explore how to configure RMK keyboard: import { LinkCard } from '@theme' diff --git a/docs/prettier.config.ts b/docs/prettier.config.ts index 5a348306d..c717921c6 100644 --- a/docs/prettier.config.ts +++ b/docs/prettier.config.ts @@ -13,6 +13,12 @@ const config: Config = { options: { proseWrap: 'preserve' } + }, + { + files: '*.mdx', + options: { + proseWrap: 'never' + } } ] } diff --git a/examples/use_config/esp32_ble_split/Cargo.lock b/examples/use_config/esp32_ble_split/Cargo.lock index 3f7608c77..bbedbca33 100644 --- a/examples/use_config/esp32_ble_split/Cargo.lock +++ b/examples/use_config/esp32_ble_split/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -42,9 +48,9 @@ checksum = "c583acf993cf4245c4acb0a2cc2ab1f9cc097de73411bb6d3647ff6af2b1013d" [[package]] name = "anyhow" -version = "1.0.102" +version = "1.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" +checksum = "2a4385e2e34eb35d6b3efe798b9eb88096925d87726c0798709bf56d9ed84af3" [[package]] name = "arraydeque" @@ -60,7 +66,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -74,9 +80,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "bare-metal" @@ -128,7 +134,7 @@ checksum = "f48d6ace212fdf1b45fd6b566bb40808415344642b76c3224c07c8df9da81e97" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -139,7 +145,7 @@ checksum = "3ca6739863c590881f038d033a146c51ddae239186a4327014839fd864f44ed5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -150,9 +156,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.11.0" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" +checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" dependencies = [ "serde_core", ] @@ -168,16 +174,16 @@ dependencies = [ [[package]] name = "bt-hci" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40f2166cc54c410ddc0d0dafb3cf8dd536bcbae6bddfcc12c020c5ee4de518de" +checksum = "211713d2e9fb4793ce4360a712c0764264aff6be48932ccf02ca2a331c0436a9" dependencies = [ "btuuid", - "embassy-sync 0.7.2", + "embassy-sync 0.8.0", "embedded-io 0.7.1", "embedded-io-async 0.7.0", "futures-intrusive", - "heapless 0.9.2", + "heapless 0.9.3", ] [[package]] @@ -191,7 +197,7 @@ dependencies = [ "embedded-io 0.7.1", "embedded-io-async 0.7.0", "futures-intrusive", - "heapless 0.9.2", + "heapless 0.9.3", "serde", ] @@ -207,9 +213,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.20.2" +version = "3.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" [[package]] name = "bytemuck" @@ -229,19 +235,19 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa61aec073ec94791433ddf3df2323ff9d1711557c2a0eefb0f99cb4f8dca520" dependencies = [ - "semver 1.0.27", + "semver 1.0.28", "serde", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] name = "cc" -version = "1.2.56" +version = "1.2.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2" +checksum = "f5d6cac793997bd970000024b2934968efe83b382de4fdcf4fcb46b6ee4ad996" dependencies = [ "find-msvc-tools", - "shlex", + "shlex 2.0.1", ] [[package]] @@ -282,9 +288,9 @@ dependencies = [ [[package]] name = "config" -version = "0.15.19" +version = "0.15.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b30fa8254caad766fc03cb0ccae691e14bf3bd72bfff27f72802ce729551b3d6" +checksum = "b85f248a4de22d204ceabc6299d89d2c70fbd7f09fea53c06c852369652d8139" dependencies = [ "async-trait", "convert_case 0.6.0", @@ -295,7 +301,7 @@ dependencies = [ "serde-untagged", "serde_core", "serde_json", - "toml 0.9.12+spec-1.1.0", + "toml", "winnow", "yaml-rust2", ] @@ -485,7 +491,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -498,7 +504,7 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -511,7 +517,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -522,7 +528,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -533,7 +539,7 @@ checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" dependencies = [ "darling_core 0.21.3", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -544,7 +550,7 @@ checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ "darling_core 0.23.0", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -556,6 +562,37 @@ dependencies = [ "generic-array", ] +[[package]] +name = "defmt" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" +dependencies = [ + "bitflags 1.3.2", + "defmt-macros", +] + +[[package]] +name = "defmt-macros" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" +dependencies = [ + "defmt-parser", + "proc-macro2", + "quote", + "syn 2.0.118", +] + +[[package]] +name = "defmt-parser" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10d60334b3b2e7c9d91ef8150abfb6fa4c1c39ebbcf4a81c2e346aad939fee3e" +dependencies = [ + "thiserror 2.0.18", +] + [[package]] name = "delegate" version = "0.13.5" @@ -564,7 +601,7 @@ checksum = "780eb241654bf097afb00fc5f054a09b687dad862e485fdcf8399bb056565370" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -614,7 +651,7 @@ checksum = "11772ed3eb3db124d826f3abeadf5a791a557f62c19b123e3f07288158a71fdd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -684,7 +721,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -764,7 +801,7 @@ dependencies = [ "embedded-io-async 0.7.0", "futures-core", "futures-sink", - "heapless 0.9.2", + "heapless 0.9.3", ] [[package]] @@ -794,12 +831,12 @@ dependencies = [ [[package]] name = "embassy-time-queue-utils" -version = "0.3.0" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e2ee86063bd028a420a5fb5898c18c87a8898026da1d4c852af2c443d0a454" +checksum = "168297bf80aaf114b3c9ad589bf38b01b3009b9af7f97cd18086c5bbf96f5693" dependencies = [ "embassy-executor-timer-queue", - "heapless 0.8.0", + "heapless 0.9.3", ] [[package]] @@ -808,25 +845,26 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a25746d8b152b72fbf2a217f489a083dbbe243f281f09184a1f2cfbe9bbb245f" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "embassy-futures", "embassy-net-driver-channel", "embassy-sync 0.8.0", "embassy-time", "embassy-usb-driver", "embedded-io-async 0.7.0", - "heapless 0.9.2", + "heapless 0.9.3", "ssmarshal", "usbd-hid", ] [[package]] name = "embassy-usb-driver" -version = "0.2.0" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17119855ccc2d1f7470a39756b12068454ae27a3eabb037d940b5c03d9c77b7a" +checksum = "fa675c5f4349b6aa0fcffc4bf9b241f18cd11b97c1f8323273fb9a5449937fbd" dependencies = [ "embedded-io-async 0.6.1", + "embedded-io-async 0.7.0", ] [[package]] @@ -863,6 +901,12 @@ dependencies = [ "embedded-hal 1.0.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -918,7 +962,7 @@ dependencies = [ "bitflags 1.3.2", "filetime", "log", - "shlex", + "shlex 1.3.0", "thiserror 1.0.69", ] @@ -939,23 +983,23 @@ dependencies = [ [[package]] name = "enumset" -version = "1.1.10" +version = "1.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25b07a8dfbbbfc0064c0a6bdf9edcf966de6b1c33ce344bdeca3b41615452634" +checksum = "839c4174b41e75c8f7306110b2c51996a293b8d1d850edd529011841d9fede7d" dependencies = [ "enumset_derive", ] [[package]] name = "enumset_derive" -version = "0.14.0" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f43e744e4ea338060faee68ed933e46e722fb7f3617e722a5772d7e856d8b3ce" +checksum = "4bd536557b58c682b217b8fb199afdff47cd3eff260623f19e77074eb073d63a" dependencies = [ "darling 0.21.3", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -966,9 +1010,9 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "erased-serde" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e8918065695684b2b0702da20382d5ae6065cf3327bc2d6436bd49a71ce9f3" +checksum = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec" dependencies = [ "serde", "serde_core", @@ -1002,7 +1046,7 @@ dependencies = [ "esp-config", "esp-metadata-generated", "esp-println", - "heapless 0.9.2", + "heapless 0.9.3", "riscv", "xtensa-lx", ] @@ -1040,12 +1084,12 @@ dependencies = [ [[package]] name = "esp-hal" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6af8fa8216bc126941bd43b5a200a50eab16e43881ccd0dd0b6792f4a82805f0" +checksum = "2bfcf2a0842903717f4663f6a08512c32b0f6b2d7fb7db3c8a6895d2e6d49f72" dependencies = [ "bitfield 0.19.4", - "bitflags 2.11.0", + "bitflags 2.13.0", "bytemuck", "cfg-if", "critical-section", @@ -1102,7 +1146,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "termcolor", ] @@ -1151,7 +1195,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "23fbff98b06a96b6ce3791ecec5c668524052a068e23aacd23afe17ddba844ce" dependencies = [ "allocator-api2", - "bt-hci 0.8.0", + "bt-hci 0.8.1", "cfg-if", "docsplay", "document-features", @@ -1172,7 +1216,7 @@ dependencies = [ "esp-wifi-sys-esp32c6", "esp32c3", "esp32c6", - "heapless 0.9.2", + "heapless 0.9.3", "instability", "num-derive", "num-traits", @@ -1358,13 +1402,12 @@ dependencies = [ [[package]] name = "filetime" -version = "0.2.27" +version = "0.2.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f98844151eee8917efc50bd9e8318cb963ae8b297431495d3f758616ea5c57db" +checksum = "5c287a33c7f0a620c38e641e7f60827713987b3c0f26e8ddc9462cc69cf75759" dependencies = [ "cfg-if", "libc", - "libredox", ] [[package]] @@ -1381,9 +1424,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foldhash" -version = "0.1.5" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" [[package]] name = "fugit" @@ -1448,7 +1491,7 @@ checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1474,6 +1517,7 @@ dependencies = [ "futures-sink", "futures-task", "pin-project-lite", + "slab", ] [[package]] @@ -1484,9 +1528,9 @@ checksum = "1d758ba1b47b00caf47f24925c0074ecb20d6dfcffe7f6d53395c0465674841a" [[package]] name = "generator" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52f04ae4152da20c76fe800fa48659201d5cf627c5149ca0b707b69d7eef6cf9" +checksum = "b3b854b0e584ead1a33f18b2fcad7cf7be18b3875c78816b753639aa501513ae" dependencies = [ "cc", "cfg-if", @@ -1565,26 +1609,26 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hashbrown" -version = "0.15.5" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" dependencies = [ "foldhash", ] [[package]] name = "hashbrown" -version = "0.16.1" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" [[package]] name = "hashlink" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" +checksum = "824e001ac4f3012dd16a264bec811403a67ca9deb6c102fc5049b32c4574b35f" dependencies = [ - "hashbrown 0.15.5", + "hashbrown 0.16.1", ] [[package]] @@ -1613,9 +1657,9 @@ dependencies = [ [[package]] name = "heapless" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af2455f757db2b292a9b1768c4b70186d443bcb3b316252d6b540aec1cd89ed" +checksum = "25ba4bd83f9415b58b4ed8dc5714c76e626a105be4646c02630ad730ad3b5aa4" dependencies = [ "hash32 0.3.1", "serde_core", @@ -1654,12 +1698,12 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "indexmap" -version = "2.13.0" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.16.1", + "hashbrown 0.17.1", ] [[package]] @@ -1690,21 +1734,22 @@ dependencies = [ "indoc", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "itoa" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "jiff" -version = "0.2.21" +version = "0.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3e3d65f018c6ae946ab16e80944b97096ed73c35b221d1c478a6c81d8f57940" +checksum = "961d16382652bfdd8c6f68b223b26a8c93e0d475c672f414411db31c6c5c900e" dependencies = [ + "defmt", "jiff-static", "log", "portable-atomic", @@ -1714,22 +1759,23 @@ dependencies = [ [[package]] name = "jiff-static" -version = "0.2.21" +version = "0.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a17c2b211d863c7fde02cbea8a3c1a439b98e109286554f2860bdded7ff83818" +checksum = "d0879bd39df99c4c5e2c6615ccc026391a423dde10532c573e6086eb94a802cc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "js-sys" -version = "0.3.90" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14dc6f6450b3f6d4ed5b16327f38fed626d375a886159ca555bd7822c0c3a5a6" +checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ - "once_cell", + "cfg-if", + "futures-util", "wasm-bindgen", ] @@ -1758,26 +1804,15 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.182" +version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" - -[[package]] -name = "libredox" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d0b95e02c851351f877147b7deea7b1afb1df71b63aa5f8270716e0c5720616" -dependencies = [ - "bitflags 2.11.0", - "libc", - "redox_syscall", -] +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "linked_list_allocator" -version = "0.10.5" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9afa463f5405ee81cdb9cc2baf37e08ec7e4c8209442b5d72c04cfb2cd6e6286" +checksum = "2b23ac50abb8261cb38c6e2a7192d3302e0836dac1628f6a93b82b4fad185897" [[package]] name = "litrs" @@ -1796,9 +1831,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.29" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" [[package]] name = "loom" @@ -1835,9 +1870,18 @@ dependencies = [ [[package]] name = "memchr" -version = "2.8.0" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" + +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] [[package]] name = "nb" @@ -1871,7 +1915,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1894,9 +1938,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.21.3" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] name = "ordered-multimap" @@ -1932,9 +1976,9 @@ checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" [[package]] name = "pest" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662" +checksum = "47627dd7305c6a2d6c8c6bcd24c5a4c17dbbf425f4f9c5313e724b38fc9782e9" dependencies = [ "memchr", "ucd-trie", @@ -1942,9 +1986,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77" +checksum = "4b4254325ecad416ab689e27ba51da03ba01a9632bc6e108f5fe7c3c4ad29d58" dependencies = [ "pest", "pest_generator", @@ -1952,38 +1996,37 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f" +checksum = "6c4c0e91ead7a8f7acecbca6f003fc2e8282b1dbe2dd9c9d2f16aba42995e0a7" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "pest_meta" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220" +checksum = "f9744bc48116fee06334924bb5f2bad41eed5e89bd26e29b0b799f9a3f82c210" dependencies = [ "pest", - "sha2", ] [[package]] name = "pin-project-lite" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pkg-config" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" [[package]] name = "portable-atomic" @@ -1993,9 +2036,9 @@ checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" [[package]] name = "portable-atomic-util" -version = "0.2.5" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a9db96d7fa8782dd8c15ce32ffe8680bbd1e978a43bf51a34d39483540495f5" +checksum = "c2a106d1259c23fac8e543272398ae0e3c0b8d33c88ed73d0cc71b0f1d902618" dependencies = [ "portable-atomic", ] @@ -2018,7 +2061,7 @@ checksum = "a33fa6ec7f2047f572d49317cca19c87195de99c6e5b6ee492da701cfe02b053" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2028,6 +2071,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -2041,7 +2086,7 @@ checksum = "e0232bd009a197ceec9cc881ba46f727fcd8060a2d8d6a9dde7a69030a6fe2bb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2064,9 +2109,9 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "3.4.0" +version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" +checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" dependencies = [ "toml_edit", ] @@ -2082,18 +2127,18 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.44" +version = "1.0.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" +checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" dependencies = [ "proc-macro2", ] [[package]] name = "rand" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" dependencies = [ "rand_core 0.6.4", ] @@ -2126,20 +2171,11 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" -[[package]] -name = "redox_syscall" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d94dd2f7cd932d4dc02cc8b2b50dfd38bd079a4e5d79198b99743d7fcf9a4b4" -dependencies = [ - "bitflags 2.11.0", -] - [[package]] name = "regex-automata" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +checksum = "1f388202e4b80542a0921078cc23b6333bcf1409c1e3f86404cae4766a6131db" dependencies = [ "aho-corasick", "memchr", @@ -2148,9 +2184,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "riscv" @@ -2173,7 +2209,7 @@ checksum = "7d323d13972c1b104aa036bc692cd08b822c8bbf23d79a27c526095856499799" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2202,7 +2238,7 @@ checksum = "def519ddeeb5e43c2b4fc3952c27b3a86782fc05192f322b2309125cd85b1fc3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2245,7 +2281,7 @@ dependencies = [ "embedded-storage-async", "esp-hal", "futures", - "heapless 0.9.2", + "heapless 0.9.3", "log", "paste", "postcard", @@ -2263,13 +2299,15 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] @@ -2305,7 +2343,7 @@ dependencies = [ "rmk-config", "rmk-types", "strum 0.28.0", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2313,21 +2351,21 @@ name = "rmk-types" version = "0.2.2" dependencies = [ "bitfield-struct", - "heapless 0.9.2", + "heapless 0.9.3", "postcard", "rmk-config", "serde", "strum 0.28.0", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] name = "ron" -version = "0.12.0" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd490c5b18261893f14449cbd28cb9c0b637aebf161cd77900bfdedaff21ec32" +checksum = "81116b9531d61eabc41aeb228e4b6b2435bcca3233b98cf3b3077d4e6e9debb3" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "once_cell", "serde", "serde_derive", @@ -2360,14 +2398,14 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.27", + "semver 1.0.28", ] [[package]] name = "rustversion" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] name = "ryu" @@ -2411,9 +2449,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.27" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" dependencies = [ "serde", "serde_core", @@ -2427,9 +2465,9 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "sequential-storage" -version = "7.1.0" +version = "7.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4580ee0fa08cd41bee9f5b50ed309877e18735370fd4eef5766cc82863ef772" +checksum = "574e5a379bf43653079b34cb4cf32958404b5f42e0ed5b5adcdff02c2de04d4d" dependencies = [ "embedded-storage-async", "postcard", @@ -2454,7 +2492,7 @@ checksum = "2bf03b7a5281cfd4013bc788d057b0f09fc634397d83bc8973c955bd4f32727a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2486,14 +2524,14 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "serde_json" -version = "1.0.149" +version = "1.0.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" dependencies = [ "itoa", "memchr", @@ -2504,9 +2542,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "1.0.4" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" dependencies = [ "serde_core", ] @@ -2524,17 +2562,6 @@ dependencies = [ "unsafe-libyaml", ] -[[package]] -name = "sha2" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - [[package]] name = "sharded-slab" version = "0.1.7" @@ -2550,11 +2577,23 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "shlex" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" + +[[package]] +name = "slab" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" + [[package]] name = "smallvec" -version = "1.15.1" +version = "1.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" [[package]] name = "somni-expr" @@ -2638,7 +2677,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2650,7 +2689,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2685,9 +2724,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.117" +version = "2.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" dependencies = [ "proc-macro2", "quote", @@ -2729,7 +2768,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2740,7 +2779,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2763,27 +2802,14 @@ dependencies = [ [[package]] name = "toml" -version = "0.9.12+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" -dependencies = [ - "serde_core", - "serde_spanned", - "toml_datetime 0.7.5+spec-1.1.0", - "toml_parser", - "winnow", -] - -[[package]] -name = "toml" -version = "1.0.3+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7614eaf19ad818347db24addfa201729cf2a9b6fdfd9eb0ab870fcacc606c0c" +checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee" dependencies = [ "indexmap", "serde_core", "serde_spanned", - "toml_datetime 1.0.0+spec-1.1.0", + "toml_datetime", "toml_parser", "toml_writer", "winnow", @@ -2791,48 +2817,39 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.7.5+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" -dependencies = [ - "serde_core", -] - -[[package]] -name = "toml_datetime" -version = "1.0.0+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32c2555c699578a4f59f0cc68e5116c8d7cabbd45e1409b989d4be085b53f13e" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" dependencies = [ "serde_core", ] [[package]] name = "toml_edit" -version = "0.23.10+spec-1.0.0" +version = "0.25.12+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269" +checksum = "d2153edc6955a6c354fad8f5efd38b6a8769bdccf9fe50f8e1329f81b0baa5d7" dependencies = [ "indexmap", - "toml_datetime 0.7.5+spec-1.1.0", + "toml_datetime", "toml_parser", "winnow", ] [[package]] name = "toml_parser" -version = "1.0.9+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ "winnow", ] [[package]] name = "toml_writer" -version = "1.0.6+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" +checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" [[package]] name = "tracing" @@ -2853,7 +2870,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2908,7 +2925,7 @@ dependencies = [ "embassy-time", "embedded-io 0.7.1", "futures", - "heapless 0.9.2", + "heapless 0.9.3", "log", "p256", "rand", @@ -2929,7 +2946,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "uuid", ] @@ -2941,9 +2958,9 @@ checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" [[package]] name = "typenum" -version = "1.19.0" +version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" [[package]] name = "ucd-trie" @@ -2965,9 +2982,9 @@ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-segmentation" -version = "1.12.0" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" [[package]] name = "unicode-width" @@ -3022,15 +3039,15 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.117", + "syn 2.0.118", "usbd-hid-descriptors", ] [[package]] name = "uuid" -version = "1.21.0" +version = "1.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b672338555252d43fd2240c714dc444b8c6fb0a5c5335e65a07bba7742735ddb" +checksum = "bf80a72845275afea99e7f2b434723d3bc7e38470fcd1c7ed39a599c73319a53" dependencies = [ "js-sys", "wasm-bindgen", @@ -3077,9 +3094,9 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasm-bindgen" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60722a937f594b7fde9adb894d7c092fc1bb6612897c46368d18e7a20208eff2" +checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" dependencies = [ "cfg-if", "once_cell", @@ -3090,9 +3107,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac8c6395094b6b91c4af293f4c79371c163f9a6f56184d2c9a85f5a95f3950" +checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3100,22 +3117,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab3fabce6159dc20728033842636887e4877688ae94382766e00b180abac9d60" +checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de0e091bdb824da87dc01d967388880d017a0a9bc4f3bdc0d86ee9f9336e3bb5" +checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" dependencies = [ "unicode-ident", ] @@ -3155,9 +3172,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.14" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" +checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" dependencies = [ "memchr", ] @@ -3190,7 +3207,7 @@ checksum = "96fb42cd29c42f8744c74276e9f5bee7b06685bbe5b88df891516d72cb320450" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -3204,9 +3221,9 @@ dependencies = [ [[package]] name = "yaml-rust2" -version = "0.10.4" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2462ea039c445496d8793d052e13787f2b90e750b833afee748e601c17621ed9" +checksum = "631a50d867fafb7093e709d75aaee9e0e0d5deb934021fcea25ac2fe09edc51e" dependencies = [ "arraydeque", "encoding_rs", @@ -3215,29 +3232,29 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.39" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db6d35d663eadb6c932438e763b262fe1a70987f9ae936e60158176d710cae4a" +checksum = "b7cbbc0a705a0fd05cc3676525980d2bf5a9bc4adac6d6475209a7887cf59d19" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.39" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4122cd3169e94605190e77839c9a40d40ed048d305bfdc146e7df40ab0f3e517" +checksum = "e2e817b7b52d0c7358d3246da9d69935ebb18116b2b102b4230dac079b4862f5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "zeroize" -version = "1.8.2" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" [[package]] name = "zmij" diff --git a/examples/use_config/esp32_ble_split/keyboard.toml b/examples/use_config/esp32_ble_split/keyboard.toml index 5b252689a..1bbc98cc4 100644 --- a/examples/use_config/esp32_ble_split/keyboard.toml +++ b/examples/use_config/esp32_ble_split/keyboard.toml @@ -1,4 +1,5 @@ [keyboard] +# Replace with your keyboard identity. name = "RMK Keyboard" product_name = "RMK Keyboard" vendor_id = 0x4c4b @@ -8,29 +9,39 @@ chip = "esp32c3" usb_enable = false -# RMK uses col2row as the default matrix diode direction, if you want to use a row2col matrix, add `row2col = true` +# Default diode direction is col2row; set `row2col = true` if needed. # row2col = true [layout] rows = 4 cols = 3 -layers = 2 -keymap = [ - [ - ["A", "B", "C"], - ["Kc1", "Kc2", "Kc3"], - ["LCtrl", "MO(1)", "LShift"], - ["OSL(1)", "LT(2, Kc9)", "LM(1, LShift | LGui)"] - ], - [ - ["_", "TT(1)", "TG(2)"], - ["_", "_", "_"], - ["_", "_", "_"], - ["_", "_", "_"] - ], -] +map = """ +(0,0) (0,1) (0,2) +(1,0) (1,1) (1,2) +(2,0) (2,1) (2,2) +(3,0) (3,1) (3,2) +""" -# Storage feature is enabled by default +[keymap] +layers = 3 + +[[keymap.layer]] # layer 0 +keys = """ +A B C +Kc1 Kc2 Kc3 +LCtrl MO(1) LShift +OSL(1) LT(2, Kc9) LM(1, LShift | LGui) +""" + +[[keymap.layer]] # layer 1 +keys = """ +_ TT(1) TG(2) +_ _ _ +_ _ _ +_ _ _ +""" + +# Storage is enabled by default. [storage] enabled = true @@ -50,7 +61,7 @@ ble_addr = [0x18, 0xe2, 0x21, 0x80, 0xc0, 0xc7] [split.central.matrix] matrix_type = "normal" -# RMK uses col2row as the default matrix diode direction, if you want to use a row2col matrix, add `row2col = true` +# Default diode direction is col2row; set `row2col = true` if needed. # row2col = true row_pins = ["GPIO6", "GPIO7"] col_pins = ["GPIO3", "GPIO4"] diff --git a/examples/use_config/esp32c3_ble/Cargo.lock b/examples/use_config/esp32c3_ble/Cargo.lock index 5c3d6a65b..cb092356e 100644 --- a/examples/use_config/esp32c3_ble/Cargo.lock +++ b/examples/use_config/esp32c3_ble/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -42,9 +48,9 @@ checksum = "c583acf993cf4245c4acb0a2cc2ab1f9cc097de73411bb6d3647ff6af2b1013d" [[package]] name = "anyhow" -version = "1.0.102" +version = "1.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" +checksum = "2a4385e2e34eb35d6b3efe798b9eb88096925d87726c0798709bf56d9ed84af3" [[package]] name = "arraydeque" @@ -222,9 +228,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.65" +version = "1.2.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e228eec9be7c17ccb640b59b36a5cd805ea2a564a4c5e162c2f659fea30d3b96" +checksum = "f5d6cac793997bd970000024b2934968efe83b382de4fdcf4fcb46b6ee4ad996" dependencies = [ "find-msvc-tools", "shlex 2.0.1", @@ -268,9 +274,9 @@ dependencies = [ [[package]] name = "config" -version = "0.15.24" +version = "0.15.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b34d0237145f33580b89724f75d16950efd3e2c91b2d823917ecb69ec7f84f0" +checksum = "b85f248a4de22d204ceabc6299d89d2c70fbd7f09fea53c06c852369652d8139" dependencies = [ "async-trait", "convert_case 0.6.0", @@ -544,9 +550,9 @@ dependencies = [ [[package]] name = "defmt" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6e524506490a1953d237cb87b1cfc1e46f88c18f10a22dfe0f507dc6bfc7f7f" +checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" dependencies = [ "bitflags 1.3.2", "defmt-macros", @@ -554,12 +560,11 @@ dependencies = [ [[package]] name = "defmt-macros" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0a27770e9c8f719a79d8b638281f4d828f77d8fd61e0bd94451b9b85e576a0b" +checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" dependencies = [ "defmt-parser", - "proc-macro-error2", "proc-macro2", "quote", "syn 2.0.118", @@ -885,6 +890,12 @@ dependencies = [ "embedded-hal 1.0.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -1703,9 +1714,9 @@ checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "jiff" -version = "0.2.29" +version = "0.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34f877a98676d2fb664698d74cc6a51ce6c484ce8c770f05d0108ec9090aeb46" +checksum = "961d16382652bfdd8c6f68b223b26a8c93e0d475c672f414411db31c6c5c900e" dependencies = [ "defmt", "jiff-static", @@ -1717,9 +1728,9 @@ dependencies = [ [[package]] name = "jiff-static" -version = "0.2.29" +version = "0.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0666b5ab5ecaca213fc2a85b8c0083d9004e84ee2d5f9a7e0017aaf50986f25f" +checksum = "d0879bd39df99c4c5e2c6615ccc026391a423dde10532c573e6086eb94a802cc" dependencies = [ "proc-macro2", "quote", @@ -1728,9 +1739,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.102" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03d04c30968dffe80775bd4d7fb676131cd04a1fb46d2686dbffbaec2d9dfd31" +checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ "cfg-if", "futures-util", @@ -1828,9 +1839,18 @@ dependencies = [ [[package]] name = "memchr" -version = "2.8.2" +version = "2.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" + +[[package]] +name = "miniz_oxide" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] [[package]] name = "nb" @@ -1916,9 +1936,9 @@ checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" [[package]] name = "pest" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662" +checksum = "47627dd7305c6a2d6c8c6bcd24c5a4c17dbbf425f4f9c5313e724b38fc9782e9" dependencies = [ "memchr", "ucd-trie", @@ -1926,9 +1946,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77" +checksum = "4b4254325ecad416ab689e27ba51da03ba01a9632bc6e108f5fe7c3c4ad29d58" dependencies = [ "pest", "pest_generator", @@ -1936,9 +1956,9 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f" +checksum = "6c4c0e91ead7a8f7acecbca6f003fc2e8282b1dbe2dd9c9d2f16aba42995e0a7" dependencies = [ "pest", "pest_meta", @@ -1949,12 +1969,11 @@ dependencies = [ [[package]] name = "pest_meta" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220" +checksum = "f9744bc48116fee06334924bb5f2bad41eed5e89bd26e29b0b799f9a3f82c210" dependencies = [ "pest", - "sha2", ] [[package]] @@ -2012,6 +2031,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -2055,28 +2076,6 @@ dependencies = [ "toml_edit", ] -[[package]] -name = "proc-macro-error-attr2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "proc-macro-error2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" -dependencies = [ - "proc-macro-error-attr2", - "proc-macro2", - "quote", - "syn 2.0.118", -] - [[package]] name = "proc-macro2" version = "1.0.106" @@ -2134,9 +2133,9 @@ checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" [[package]] name = "regex-automata" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +checksum = "1f388202e4b80542a0921078cc23b6333bcf1409c1e3f86404cae4766a6131db" dependencies = [ "aho-corasick", "memchr", @@ -2237,6 +2236,7 @@ dependencies = [ "embassy-usb", "embedded-hal 1.0.0", "embedded-hal-async", + "embedded-io-async 0.7.0", "embedded-storage", "embedded-storage-async", "esp-hal", @@ -2259,10 +2259,12 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", "toml", @@ -2361,9 +2363,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] name = "ryu" @@ -2520,17 +2522,6 @@ dependencies = [ "unsafe-libyaml", ] -[[package]] -name = "sha2" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - [[package]] name = "sharded-slab" version = "0.1.7" @@ -3014,9 +3005,9 @@ dependencies = [ [[package]] name = "uuid" -version = "1.23.3" +version = "1.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "144d6b123cef80b301b8f72a9e2ca4370ddec21950d0a103dd22c437006d2db7" +checksum = "bf80a72845275afea99e7f2b434723d3bc7e38470fcd1c7ed39a599c73319a53" dependencies = [ "js-sys", "wasm-bindgen", @@ -3063,9 +3054,9 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasm-bindgen" -version = "0.2.125" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ddb3f79143bced6de84270411622a2699cee572fc0875aeaf1e7867cf9fca1a" +checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" dependencies = [ "cfg-if", "once_cell", @@ -3076,9 +3067,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.125" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e21a184b13fb19e157296e2c46056aec9092264fab83e4ba59e68c61b323c3d" +checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3086,9 +3077,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.125" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fecefd9c35bd935a20fc3fc344b5f29138961e4f47fb03297d88f2587afb5ebd" +checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" dependencies = [ "bumpalo", "proc-macro2", @@ -3099,9 +3090,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.125" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23939e44bb9a5d7576fa2b563dc2e136628f1224e88a8deed09e04858b77871f" +checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" dependencies = [ "unicode-ident", ] @@ -3198,18 +3189,18 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.52" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce1022995ff5ff5d841ad7d994facc23098cd40152f2c1d11cd607c6f530653f" +checksum = "b7cbbc0a705a0fd05cc3676525980d2bf5a9bc4adac6d6475209a7887cf59d19" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.52" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ae7f38b72ec2a254e2b87ef277cf2cd4fb97cbebf944faa6f33354da0867930" +checksum = "e2e817b7b52d0c7358d3246da9d69935ebb18116b2b102b4230dac079b4862f5" dependencies = [ "proc-macro2", "quote", diff --git a/examples/use_config/esp32c3_ble/keyboard.toml b/examples/use_config/esp32c3_ble/keyboard.toml index 36ec4a23c..13f993f61 100644 --- a/examples/use_config/esp32c3_ble/keyboard.toml +++ b/examples/use_config/esp32c3_ble/keyboard.toml @@ -1,4 +1,5 @@ [keyboard] +# Replace with your keyboard identity. name = "RMK Keyboard" product_name = "RMK Keyboard" vendor_id = 0x4c4b @@ -8,43 +9,53 @@ chip = "esp32c3" usb_enable = false [matrix] -# Row and col pins are mandatory +# Matrix pins are required. row_pins = ["GPIO6", "GPIO7", "GPIO20", "GPIO21"] col_pins = ["GPIO3", "GPIO4", "GPIO5"] -# RMK uses col2row as the default matrix diode direction, if you want to use a row2col matrix, add `row2col = true` +# Default diode direction is col2row; set `row2col = true` if needed. # row2col = true [layout] rows = 4 cols = 3 -layers = 2 -keymap = [ - [ - ["A", "B", "C"], - ["Kc1", "Kc2", "Kc3"], - ["LCtrl", "MO(1)", "LShift"], - ["OSL(1)", "LT(2, Kc9)", "LM(1, LShift | LGui)"] - ], - [ - ["_", "TT(1)", "TG(2)"], - ["_", "_", "_"], - ["_", "_", "_"], - ["_", "_", "_"] - ], -] +map = """ +(0,0) (0,1) (0,2) +(1,0) (1,1) (1,2) +(2,0) (2,1) (2,2) +(3,0) (3,1) (3,2) +""" + +[keymap] +layers = 3 + +[[keymap.layer]] +keys = """ +A B C +Kc1 Kc2 Kc3 +LCtrl MO(1) LShift +OSL(1) LT(2, Kc9) LM(1, LShift | LGui) +""" + +[[keymap.layer]] +keys = """ +_ TT(1) TG(2) +_ _ _ +_ _ _ +_ _ _ +""" [light] # All light pins are high-active by default, uncomment if you want it to be low-active -# capslock.pin = "PB2" +# capslock.pin = "GPIO8" # capslock.low_active = true -# scrolllock.pin = "PA3" +# scrolllock.pin = "GPIO9" # scrolllock.low_active = true # Just ignore if no light pin is used for it -# numslock.pin = "PA5" +# numslock.pin = "GPIO10" # numslock.low_active = true -# Storage feature is enabled by default +# Storage is enabled by default. [storage] enabled = true diff --git a/examples/use_config/esp32c6_ble/Cargo.lock b/examples/use_config/esp32c6_ble/Cargo.lock index c1db248d4..d729502c4 100644 --- a/examples/use_config/esp32c6_ble/Cargo.lock +++ b/examples/use_config/esp32c6_ble/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -42,9 +48,9 @@ checksum = "c583acf993cf4245c4acb0a2cc2ab1f9cc097de73411bb6d3647ff6af2b1013d" [[package]] name = "anyhow" -version = "1.0.102" +version = "1.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" +checksum = "2a4385e2e34eb35d6b3efe798b9eb88096925d87726c0798709bf56d9ed84af3" [[package]] name = "arraydeque" @@ -222,9 +228,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.65" +version = "1.2.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e228eec9be7c17ccb640b59b36a5cd805ea2a564a4c5e162c2f659fea30d3b96" +checksum = "f5d6cac793997bd970000024b2934968efe83b382de4fdcf4fcb46b6ee4ad996" dependencies = [ "find-msvc-tools", "shlex 2.0.1", @@ -268,9 +274,9 @@ dependencies = [ [[package]] name = "config" -version = "0.15.24" +version = "0.15.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b34d0237145f33580b89724f75d16950efd3e2c91b2d823917ecb69ec7f84f0" +checksum = "b85f248a4de22d204ceabc6299d89d2c70fbd7f09fea53c06c852369652d8139" dependencies = [ "async-trait", "convert_case 0.6.0", @@ -544,9 +550,9 @@ dependencies = [ [[package]] name = "defmt" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6e524506490a1953d237cb87b1cfc1e46f88c18f10a22dfe0f507dc6bfc7f7f" +checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" dependencies = [ "bitflags 1.3.2", "defmt-macros", @@ -554,12 +560,11 @@ dependencies = [ [[package]] name = "defmt-macros" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0a27770e9c8f719a79d8b638281f4d828f77d8fd61e0bd94451b9b85e576a0b" +checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" dependencies = [ "defmt-parser", - "proc-macro-error2", "proc-macro2", "quote", "syn 2.0.118", @@ -885,6 +890,12 @@ dependencies = [ "embedded-hal 1.0.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -1704,9 +1715,9 @@ checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "jiff" -version = "0.2.29" +version = "0.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34f877a98676d2fb664698d74cc6a51ce6c484ce8c770f05d0108ec9090aeb46" +checksum = "961d16382652bfdd8c6f68b223b26a8c93e0d475c672f414411db31c6c5c900e" dependencies = [ "defmt", "jiff-static", @@ -1718,9 +1729,9 @@ dependencies = [ [[package]] name = "jiff-static" -version = "0.2.29" +version = "0.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0666b5ab5ecaca213fc2a85b8c0083d9004e84ee2d5f9a7e0017aaf50986f25f" +checksum = "d0879bd39df99c4c5e2c6615ccc026391a423dde10532c573e6086eb94a802cc" dependencies = [ "proc-macro2", "quote", @@ -1729,9 +1740,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.102" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03d04c30968dffe80775bd4d7fb676131cd04a1fb46d2686dbffbaec2d9dfd31" +checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ "cfg-if", "futures-util", @@ -1829,9 +1840,18 @@ dependencies = [ [[package]] name = "memchr" -version = "2.8.2" +version = "2.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" + +[[package]] +name = "miniz_oxide" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] [[package]] name = "nb" @@ -1926,9 +1946,9 @@ checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" [[package]] name = "pest" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662" +checksum = "47627dd7305c6a2d6c8c6bcd24c5a4c17dbbf425f4f9c5313e724b38fc9782e9" dependencies = [ "memchr", "ucd-trie", @@ -1936,9 +1956,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77" +checksum = "4b4254325ecad416ab689e27ba51da03ba01a9632bc6e108f5fe7c3c4ad29d58" dependencies = [ "pest", "pest_generator", @@ -1946,9 +1966,9 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f" +checksum = "6c4c0e91ead7a8f7acecbca6f003fc2e8282b1dbe2dd9c9d2f16aba42995e0a7" dependencies = [ "pest", "pest_meta", @@ -1959,12 +1979,11 @@ dependencies = [ [[package]] name = "pest_meta" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220" +checksum = "f9744bc48116fee06334924bb5f2bad41eed5e89bd26e29b0b799f9a3f82c210" dependencies = [ "pest", - "sha2", ] [[package]] @@ -2022,6 +2041,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -2065,28 +2086,6 @@ dependencies = [ "toml_edit", ] -[[package]] -name = "proc-macro-error-attr2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "proc-macro-error2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" -dependencies = [ - "proc-macro-error-attr2", - "proc-macro2", - "quote", - "syn 2.0.118", -] - [[package]] name = "proc-macro2" version = "1.0.106" @@ -2144,9 +2143,9 @@ checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" [[package]] name = "regex-automata" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +checksum = "1f388202e4b80542a0921078cc23b6333bcf1409c1e3f86404cae4766a6131db" dependencies = [ "aho-corasick", "memchr", @@ -2247,6 +2246,7 @@ dependencies = [ "embassy-usb", "embedded-hal 1.0.0", "embedded-hal-async", + "embedded-io-async 0.7.0", "embedded-storage", "embedded-storage-async", "esp-hal", @@ -2269,10 +2269,12 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", "toml", @@ -2371,9 +2373,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] name = "ryu" @@ -2530,17 +2532,6 @@ dependencies = [ "unsafe-libyaml", ] -[[package]] -name = "sha2" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - [[package]] name = "sharded-slab" version = "0.1.7" @@ -3024,9 +3015,9 @@ dependencies = [ [[package]] name = "uuid" -version = "1.23.3" +version = "1.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "144d6b123cef80b301b8f72a9e2ca4370ddec21950d0a103dd22c437006d2db7" +checksum = "bf80a72845275afea99e7f2b434723d3bc7e38470fcd1c7ed39a599c73319a53" dependencies = [ "js-sys", "wasm-bindgen", @@ -3073,9 +3064,9 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasm-bindgen" -version = "0.2.125" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ddb3f79143bced6de84270411622a2699cee572fc0875aeaf1e7867cf9fca1a" +checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" dependencies = [ "cfg-if", "once_cell", @@ -3086,9 +3077,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.125" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e21a184b13fb19e157296e2c46056aec9092264fab83e4ba59e68c61b323c3d" +checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3096,9 +3087,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.125" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fecefd9c35bd935a20fc3fc344b5f29138961e4f47fb03297d88f2587afb5ebd" +checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" dependencies = [ "bumpalo", "proc-macro2", @@ -3109,9 +3100,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.125" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23939e44bb9a5d7576fa2b563dc2e136628f1224e88a8deed09e04858b77871f" +checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" dependencies = [ "unicode-ident", ] @@ -3208,18 +3199,18 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.52" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce1022995ff5ff5d841ad7d994facc23098cd40152f2c1d11cd607c6f530653f" +checksum = "b7cbbc0a705a0fd05cc3676525980d2bf5a9bc4adac6d6475209a7887cf59d19" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.52" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ae7f38b72ec2a254e2b87ef277cf2cd4fb97cbebf944faa6f33354da0867930" +checksum = "e2e817b7b52d0c7358d3246da9d69935ebb18116b2b102b4230dac079b4862f5" dependencies = [ "proc-macro2", "quote", diff --git a/examples/use_config/esp32c6_ble/keyboard.toml b/examples/use_config/esp32c6_ble/keyboard.toml index 97c021044..06bd6dd31 100644 --- a/examples/use_config/esp32c6_ble/keyboard.toml +++ b/examples/use_config/esp32c6_ble/keyboard.toml @@ -1,4 +1,5 @@ [keyboard] +# Replace with your keyboard identity. name = "RMK Keyboard" product_name = "RMK Keyboard" vendor_id = 0x4c4b @@ -8,44 +9,54 @@ chip = "esp32c6" usb_enable = false [matrix] -# Row and col pins are mandatory +# Matrix pins are required. row_pins = ["GPIO6", "GPIO7", "GPIO20", "GPIO21"] col_pins = ["GPIO3", "GPIO4", "GPIO5"] -# RMK uses col2row as the default matrix diode direction, if you want to use a row2col matrix, add `row2col = true` +# Default diode direction is col2row; set `row2col = true` if needed. # row2col = true [layout] rows = 4 cols = 3 -layers = 2 -keymap = [ - [ - ["A", "B", "C"], - ["Kc1", "Kc2", "Kc3"], - ["LCtrl", "MO(1)", "LShift"], - ["OSL(1)", "LT(2, Kc9)", "LM(1, LShift | LGui)"] - ], - [ - ["_", "TT(1)", "TG(2)"], - ["_", "_", "_"], - ["_", "_", "_"], - ["_", "_", "_"] - ], -] +map = """ +(0,0) (0,1) (0,2) +(1,0) (1,1) (1,2) +(2,0) (2,1) (2,2) +(3,0) (3,1) (3,2) +""" + +[keymap] +layers = 3 + +[[keymap.layer]] +keys = """ +A B C +Kc1 Kc2 Kc3 +LCtrl MO(1) LShift +OSL(1) LT(2, Kc9) LM(1, LShift | LGui) +""" + +[[keymap.layer]] +keys = """ +_ TT(1) TG(2) +_ _ _ +_ _ _ +_ _ _ +""" [light] # All light pins are high-active by default, uncomment if you want it to be low-active -# capslock.pin = "PB2" +# capslock.pin = "GPIO8" # capslock.low_active = true -# scrolllock.pin = "PA3" +# scrolllock.pin = "GPIO9" # scrolllock.low_active = true # Just ignore if no light pin is used for it -# numslock.pin = "PA5" +# numslock.pin = "GPIO10" # numslock.low_active = true [storage] -# Storage feature is enabled by default +# Storage is enabled by default. # enabled = false [ble] diff --git a/examples/use_config/esp32h2_ble/Cargo.lock b/examples/use_config/esp32h2_ble/Cargo.lock index 6812d3d3c..9c5500b14 100644 --- a/examples/use_config/esp32h2_ble/Cargo.lock +++ b/examples/use_config/esp32h2_ble/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -222,9 +228,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.65" +version = "1.2.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e228eec9be7c17ccb640b59b36a5cd805ea2a564a4c5e162c2f659fea30d3b96" +checksum = "f5d6cac793997bd970000024b2934968efe83b382de4fdcf4fcb46b6ee4ad996" dependencies = [ "find-msvc-tools", "shlex 2.0.1", @@ -544,9 +550,9 @@ dependencies = [ [[package]] name = "defmt" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6e524506490a1953d237cb87b1cfc1e46f88c18f10a22dfe0f507dc6bfc7f7f" +checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" dependencies = [ "bitflags 1.3.2", "defmt-macros", @@ -554,12 +560,11 @@ dependencies = [ [[package]] name = "defmt-macros" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0a27770e9c8f719a79d8b638281f4d828f77d8fd61e0bd94451b9b85e576a0b" +checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" dependencies = [ "defmt-parser", - "proc-macro-error2", "proc-macro2", "quote", "syn 2.0.118", @@ -885,6 +890,12 @@ dependencies = [ "embedded-hal 1.0.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -1709,9 +1720,9 @@ checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "jiff" -version = "0.2.31" +version = "0.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccfe6121cbe750cf81efa362d85c0bde7ea298ec43092d3a193baca59cdbd634" +checksum = "961d16382652bfdd8c6f68b223b26a8c93e0d475c672f414411db31c6c5c900e" dependencies = [ "defmt", "jiff-static", @@ -1723,9 +1734,9 @@ dependencies = [ [[package]] name = "jiff-static" -version = "0.2.31" +version = "0.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e165e897f662d428f3cd3828a919dbe067c2d42bb1031eede74ef9d27ecdedd2" +checksum = "d0879bd39df99c4c5e2c6615ccc026391a423dde10532c573e6086eb94a802cc" dependencies = [ "proc-macro2", "quote", @@ -1834,9 +1845,18 @@ dependencies = [ [[package]] name = "memchr" -version = "2.8.2" +version = "2.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" + +[[package]] +name = "miniz_oxide" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] [[package]] name = "nb" @@ -1922,9 +1942,9 @@ checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" [[package]] name = "pest" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662" +checksum = "47627dd7305c6a2d6c8c6bcd24c5a4c17dbbf425f4f9c5313e724b38fc9782e9" dependencies = [ "memchr", "ucd-trie", @@ -1932,9 +1952,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77" +checksum = "4b4254325ecad416ab689e27ba51da03ba01a9632bc6e108f5fe7c3c4ad29d58" dependencies = [ "pest", "pest_generator", @@ -1942,9 +1962,9 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f" +checksum = "6c4c0e91ead7a8f7acecbca6f003fc2e8282b1dbe2dd9c9d2f16aba42995e0a7" dependencies = [ "pest", "pest_meta", @@ -1955,12 +1975,11 @@ dependencies = [ [[package]] name = "pest_meta" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220" +checksum = "f9744bc48116fee06334924bb5f2bad41eed5e89bd26e29b0b799f9a3f82c210" dependencies = [ "pest", - "sha2", ] [[package]] @@ -2018,6 +2037,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -2061,28 +2082,6 @@ dependencies = [ "toml_edit", ] -[[package]] -name = "proc-macro-error-attr2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "proc-macro-error2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" -dependencies = [ - "proc-macro-error-attr2", - "proc-macro2", - "quote", - "syn 2.0.118", -] - [[package]] name = "proc-macro2" version = "1.0.106" @@ -2140,9 +2139,9 @@ checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" [[package]] name = "regex-automata" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +checksum = "1f388202e4b80542a0921078cc23b6333bcf1409c1e3f86404cae4766a6131db" dependencies = [ "aho-corasick", "memchr", @@ -2243,6 +2242,7 @@ dependencies = [ "embassy-usb", "embedded-hal 1.0.0", "embedded-hal-async", + "embedded-io-async 0.7.0", "embedded-storage", "embedded-storage-async", "esp-hal", @@ -2265,10 +2265,12 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", "toml", @@ -2367,9 +2369,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] name = "ryu" @@ -2526,17 +2528,6 @@ dependencies = [ "unsafe-libyaml", ] -[[package]] -name = "sha2" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - [[package]] name = "sharded-slab" version = "0.1.7" @@ -3204,18 +3195,18 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.52" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce1022995ff5ff5d841ad7d994facc23098cd40152f2c1d11cd607c6f530653f" +checksum = "b7cbbc0a705a0fd05cc3676525980d2bf5a9bc4adac6d6475209a7887cf59d19" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.52" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ae7f38b72ec2a254e2b87ef277cf2cd4fb97cbebf944faa6f33354da0867930" +checksum = "e2e817b7b52d0c7358d3246da9d69935ebb18116b2b102b4230dac079b4862f5" dependencies = [ "proc-macro2", "quote", diff --git a/examples/use_config/esp32h2_ble/keyboard.toml b/examples/use_config/esp32h2_ble/keyboard.toml index 8a626f6f4..b042e9162 100644 --- a/examples/use_config/esp32h2_ble/keyboard.toml +++ b/examples/use_config/esp32h2_ble/keyboard.toml @@ -8,32 +8,42 @@ chip = "esp32h2" usb_enable = false [matrix] -# Row and col pins are mandatory +# Matrix pins are required. # Note: esp32h2 exposes GPIO0-15 and GPIO22-27 (GPIO16-21 don't exist) row_pins = ["GPIO6", "GPIO7", "GPIO10", "GPIO11"] col_pins = ["GPIO3", "GPIO4", "GPIO5"] -# RMK uses col2row as the default matrix diode direction, if you want to use a row2col matrix, add `row2col = true` +# Default diode direction is col2row; set `row2col = true` if needed. # row2col = true [layout] rows = 4 cols = 3 -layers = 2 -keymap = [ - [ - ["A", "B", "C"], - ["Kc1", "Kc2", "Kc3"], - ["LCtrl", "MO(1)", "LShift"], - ["OSL(1)", "LT(2, Kc9)", "LM(1, LShift | LGui)"] - ], - [ - ["_", "TT(1)", "TG(2)"], - ["_", "_", "_"], - ["_", "_", "_"], - ["_", "_", "_"] - ], -] +map = """ +(0,0) (0,1) (0,2) +(1,0) (1,1) (1,2) +(2,0) (2,1) (2,2) +(3,0) (3,1) (3,2) +""" + +[keymap] +layers = 3 + +[[keymap.layer]] +keys = """ +A B C +Kc1 Kc2 Kc3 +LCtrl MO(1) LShift +OSL(1) LT(2, Kc9) LM(1, LShift | LGui) +""" + +[[keymap.layer]] +keys = """ +_ TT(1) TG(2) +_ _ _ +_ _ _ +_ _ _ +""" [light] # All light pins are high-active by default, uncomment if you want it to be low-active @@ -46,8 +56,8 @@ keymap = [ # numslock.low_active = true [storage] -# Storage feature is enabled by default +# Storage is enabled by default. # enabled = false [ble] -enabled = true \ No newline at end of file +enabled = true diff --git a/examples/use_config/esp32s3_ble/Cargo.lock b/examples/use_config/esp32s3_ble/Cargo.lock index a3e2c85b8..2aed36983 100644 --- a/examples/use_config/esp32s3_ble/Cargo.lock +++ b/examples/use_config/esp32s3_ble/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -42,9 +48,9 @@ checksum = "c583acf993cf4245c4acb0a2cc2ab1f9cc097de73411bb6d3647ff6af2b1013d" [[package]] name = "anyhow" -version = "1.0.102" +version = "1.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" +checksum = "2a4385e2e34eb35d6b3efe798b9eb88096925d87726c0798709bf56d9ed84af3" [[package]] name = "arraydeque" @@ -222,9 +228,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.65" +version = "1.2.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e228eec9be7c17ccb640b59b36a5cd805ea2a564a4c5e162c2f659fea30d3b96" +checksum = "f5d6cac793997bd970000024b2934968efe83b382de4fdcf4fcb46b6ee4ad996" dependencies = [ "find-msvc-tools", "shlex 2.0.1", @@ -268,9 +274,9 @@ dependencies = [ [[package]] name = "config" -version = "0.15.24" +version = "0.15.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b34d0237145f33580b89724f75d16950efd3e2c91b2d823917ecb69ec7f84f0" +checksum = "b85f248a4de22d204ceabc6299d89d2c70fbd7f09fea53c06c852369652d8139" dependencies = [ "async-trait", "convert_case 0.6.0", @@ -544,9 +550,9 @@ dependencies = [ [[package]] name = "defmt" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6e524506490a1953d237cb87b1cfc1e46f88c18f10a22dfe0f507dc6bfc7f7f" +checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" dependencies = [ "bitflags 1.3.2", "defmt-macros", @@ -554,12 +560,11 @@ dependencies = [ [[package]] name = "defmt-macros" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0a27770e9c8f719a79d8b638281f4d828f77d8fd61e0bd94451b9b85e576a0b" +checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" dependencies = [ "defmt-parser", - "proc-macro-error2", "proc-macro2", "quote", "syn 2.0.118", @@ -898,6 +903,12 @@ dependencies = [ "embedded-hal 1.0.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -1730,9 +1741,9 @@ checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "jiff" -version = "0.2.29" +version = "0.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34f877a98676d2fb664698d74cc6a51ce6c484ce8c770f05d0108ec9090aeb46" +checksum = "961d16382652bfdd8c6f68b223b26a8c93e0d475c672f414411db31c6c5c900e" dependencies = [ "defmt", "jiff-static", @@ -1744,9 +1755,9 @@ dependencies = [ [[package]] name = "jiff-static" -version = "0.2.29" +version = "0.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0666b5ab5ecaca213fc2a85b8c0083d9004e84ee2d5f9a7e0017aaf50986f25f" +checksum = "d0879bd39df99c4c5e2c6615ccc026391a423dde10532c573e6086eb94a802cc" dependencies = [ "proc-macro2", "quote", @@ -1755,9 +1766,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.102" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03d04c30968dffe80775bd4d7fb676131cd04a1fb46d2686dbffbaec2d9dfd31" +checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ "cfg-if", "futures-util", @@ -1855,9 +1866,18 @@ dependencies = [ [[package]] name = "memchr" -version = "2.8.2" +version = "2.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" + +[[package]] +name = "miniz_oxide" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] [[package]] name = "nb" @@ -1952,9 +1972,9 @@ checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" [[package]] name = "pest" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662" +checksum = "47627dd7305c6a2d6c8c6bcd24c5a4c17dbbf425f4f9c5313e724b38fc9782e9" dependencies = [ "memchr", "ucd-trie", @@ -1962,9 +1982,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77" +checksum = "4b4254325ecad416ab689e27ba51da03ba01a9632bc6e108f5fe7c3c4ad29d58" dependencies = [ "pest", "pest_generator", @@ -1972,9 +1992,9 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f" +checksum = "6c4c0e91ead7a8f7acecbca6f003fc2e8282b1dbe2dd9c9d2f16aba42995e0a7" dependencies = [ "pest", "pest_meta", @@ -1985,12 +2005,11 @@ dependencies = [ [[package]] name = "pest_meta" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220" +checksum = "f9744bc48116fee06334924bb5f2bad41eed5e89bd26e29b0b799f9a3f82c210" dependencies = [ "pest", - "sha2", ] [[package]] @@ -2048,6 +2067,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -2091,28 +2112,6 @@ dependencies = [ "toml_edit", ] -[[package]] -name = "proc-macro-error-attr2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "proc-macro-error2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" -dependencies = [ - "proc-macro-error-attr2", - "proc-macro2", - "quote", - "syn 2.0.118", -] - [[package]] name = "proc-macro2" version = "1.0.106" @@ -2170,9 +2169,9 @@ checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" [[package]] name = "regex-automata" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +checksum = "1f388202e4b80542a0921078cc23b6333bcf1409c1e3f86404cae4766a6131db" dependencies = [ "aho-corasick", "memchr", @@ -2273,6 +2272,7 @@ dependencies = [ "embassy-usb", "embedded-hal 1.0.0", "embedded-hal-async", + "embedded-io-async 0.7.0", "embedded-storage", "embedded-storage-async", "esp-hal", @@ -2295,10 +2295,12 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", "toml", @@ -2397,9 +2399,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] name = "ryu" @@ -2562,17 +2564,6 @@ dependencies = [ "unsafe-libyaml", ] -[[package]] -name = "sha2" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - [[package]] name = "sharded-slab" version = "0.1.7" @@ -3056,9 +3047,9 @@ dependencies = [ [[package]] name = "uuid" -version = "1.23.3" +version = "1.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "144d6b123cef80b301b8f72a9e2ca4370ddec21950d0a103dd22c437006d2db7" +checksum = "bf80a72845275afea99e7f2b434723d3bc7e38470fcd1c7ed39a599c73319a53" dependencies = [ "js-sys", "wasm-bindgen", @@ -3105,9 +3096,9 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasm-bindgen" -version = "0.2.125" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ddb3f79143bced6de84270411622a2699cee572fc0875aeaf1e7867cf9fca1a" +checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" dependencies = [ "cfg-if", "once_cell", @@ -3118,9 +3109,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.125" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e21a184b13fb19e157296e2c46056aec9092264fab83e4ba59e68c61b323c3d" +checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3128,9 +3119,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.125" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fecefd9c35bd935a20fc3fc344b5f29138961e4f47fb03297d88f2587afb5ebd" +checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" dependencies = [ "bumpalo", "proc-macro2", @@ -3141,9 +3132,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.125" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23939e44bb9a5d7576fa2b563dc2e136628f1224e88a8deed09e04858b77871f" +checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" dependencies = [ "unicode-ident", ] @@ -3240,18 +3231,18 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.52" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce1022995ff5ff5d841ad7d994facc23098cd40152f2c1d11cd607c6f530653f" +checksum = "b7cbbc0a705a0fd05cc3676525980d2bf5a9bc4adac6d6475209a7887cf59d19" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.52" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ae7f38b72ec2a254e2b87ef277cf2cd4fb97cbebf944faa6f33354da0867930" +checksum = "e2e817b7b52d0c7358d3246da9d69935ebb18116b2b102b4230dac079b4862f5" dependencies = [ "proc-macro2", "quote", diff --git a/examples/use_config/esp32s3_ble/keyboard.toml b/examples/use_config/esp32s3_ble/keyboard.toml index 9f8c16a1e..b5fea9a8a 100644 --- a/examples/use_config/esp32s3_ble/keyboard.toml +++ b/examples/use_config/esp32s3_ble/keyboard.toml @@ -1,4 +1,5 @@ [keyboard] +# Replace with your keyboard identity. name = "RMK Keyboard" product_name = "RMK Keyboard" vendor_id = 0x4c4b @@ -8,43 +9,53 @@ chip = "esp32s3" usb_enable = true [matrix] -# Row and col pins are mandatory +# Matrix pins are required. row_pins = ["GPIO6", "GPIO7", "GPIO18", "GPIO21"] col_pins = ["GPIO3", "GPIO4", "GPIO5"] -# RMK uses col2row as the default matrix diode direction, if you want to use a row2col matrix, add `row2col = true` +# Default diode direction is col2row; set `row2col = true` if needed. # row2col = true [layout] rows = 4 cols = 3 -layers = 2 -keymap = [ - [ - ["A", "B", "C"], - ["Kc1", "Kc2", "Kc3"], - ["LCtrl", "MO(1)", "LShift"], - ["OSL(1)", "LT(2, Kc9)", "LM(1, LShift | LGui)"] - ], - [ - ["_", "TT(1)", "TG(2)"], - ["_", "_", "_"], - ["_", "_", "_"], - ["_", "_", "_"] - ], -] +map = """ +(0,0) (0,1) (0,2) +(1,0) (1,1) (1,2) +(2,0) (2,1) (2,2) +(3,0) (3,1) (3,2) +""" + +[keymap] +layers = 3 + +[[keymap.layer]] # layer 0 +keys = """ +A B C +Kc1 Kc2 Kc3 +LCtrl MO(1) LShift +OSL(1) LT(2, Kc9) LM(1, LShift | LGui) +""" + +[[keymap.layer]] # layer 1 +keys = """ +_ TT(1) TG(2) +_ _ _ +_ _ _ +_ _ _ +""" [light] # All light pins are high-active by default, uncomment if you want it to be low-active -# capslock.pin = "PB2" +# capslock.pin = "GPIO8" # capslock.low_active = true -# scrolllock.pin = "PA3" +# scrolllock.pin = "GPIO9" # scrolllock.low_active = true # Just ignore if no light pin is used for it -# numslock.pin = "PA5" +# numslock.pin = "GPIO10" # numslock.low_active = true [storage] -# Storage feature is enabled by default +# Storage is enabled by default. # enabled = false [ble] diff --git a/examples/use_config/nrf52810_ble/Cargo.toml b/examples/use_config/nrf52810_ble/Cargo.toml index 37da9122d..76946f50d 100644 --- a/examples/use_config/nrf52810_ble/Cargo.toml +++ b/examples/use_config/nrf52810_ble/Cargo.toml @@ -10,7 +10,7 @@ edition = "2024" license = "MIT OR Apache-2.0" [dependencies] -rmk = { path = "../../../rmk", features = ["nrf52810_ble"] } +rmk = { path = "../../../rmk", default-features = false, features = ["defmt", "storage", "vial", "watchdog", "nrf52810_ble"] } cortex-m = "0.7.7" cortex-m-rt = "0.7.5" embassy-time = { version = "0.5", features = ["tick-hz-32_768", "defmt"] } diff --git a/examples/use_config/nrf52832_ble/Cargo.lock b/examples/use_config/nrf52832_ble/Cargo.lock index deefa9c18..0de94a2ef 100644 --- a/examples/use_config/nrf52832_ble/Cargo.lock +++ b/examples/use_config/nrf52832_ble/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -48,7 +54,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -62,9 +68,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "az" @@ -93,7 +99,7 @@ version = "0.72.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "cexpr", "clang-sys", "itertools", @@ -103,8 +109,8 @@ dependencies = [ "quote", "regex", "rustc-hash", - "shlex", - "syn 2.0.117", + "shlex 1.3.0", + "syn 2.0.118", ] [[package]] @@ -127,7 +133,7 @@ checksum = "3ca6739863c590881f038d033a146c51ddae239186a4327014839fd864f44ed5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -138,9 +144,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.11.0" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" +checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" dependencies = [ "serde_core", ] @@ -161,12 +167,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f3c66fd0a41a3b3a5906847b1bf5516048ce083e24fa9341a0fa31d3b4cd73d" dependencies = [ "btuuid", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-sync", "embedded-io 0.7.1", "embedded-io-async 0.7.0", "futures-intrusive", - "heapless 0.9.2", + "heapless 0.9.3", "serde", ] @@ -183,9 +189,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.20.2" +version = "3.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" [[package]] name = "bytemuck" @@ -205,19 +211,19 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa61aec073ec94791433ddf3df2323ff9d1711557c2a0eefb0f99cb4f8dca520" dependencies = [ - "semver 1.0.27", + "semver 1.0.28", "serde", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] name = "cc" -version = "1.2.56" +version = "1.2.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2" +checksum = "f5d6cac793997bd970000024b2934968efe83b382de4fdcf4fcb46b6ee4ad996" dependencies = [ "find-msvc-tools", - "shlex", + "shlex 2.0.1", ] [[package]] @@ -278,9 +284,9 @@ dependencies = [ [[package]] name = "config" -version = "0.15.19" +version = "0.15.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b30fa8254caad766fc03cb0ccae691e14bf3bd72bfff27f72802ce729551b3d6" +checksum = "b85f248a4de22d204ceabc6299d89d2c70fbd7f09fea53c06c852369652d8139" dependencies = [ "async-trait", "convert_case 0.6.0", @@ -291,8 +297,8 @@ dependencies = [ "serde-untagged", "serde_core", "serde_json", - "toml 0.9.12+spec-1.1.0", - "winnow", + "toml", + "winnow 1.0.3", "yaml-rust2", ] @@ -399,7 +405,7 @@ checksum = "e37549a379a9e0e6e576fd208ee60394ccb8be963889eebba3ffe0980364f472" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -485,7 +491,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -498,7 +504,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -509,7 +515,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -520,7 +526,7 @@ checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ "darling_core 0.23.0", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -538,14 +544,14 @@ version = "0.3.100" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0963443817029b2024136fc4dd07a5107eb8f977eaf18fcd1fdeb11306b64ad" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] name = "defmt" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "548d977b6da32fa1d1fda2876453da1e7df63ad0304c8b3dae4dbe7b96f39b78" +checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" dependencies = [ "bitflags 1.3.2", "defmt-macros", @@ -553,15 +559,14 @@ dependencies = [ [[package]] name = "defmt-macros" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d4fc12a85bcf441cfe44344c4b72d58493178ce635338a3f3b78943aceb258e" +checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" dependencies = [ "defmt-parser", - "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -575,12 +580,12 @@ dependencies = [ [[package]] name = "defmt-rtt" -version = "1.1.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d5a25c99d89c40f5676bec8cefe0614f17f0f40e916f98e345dae941807f9e" +checksum = "05144944c117db54127a8ac17a3c9a28d55e7047bfddb950bcd20b4a94c79b10" dependencies = [ "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -633,9 +638,9 @@ dependencies = [ [[package]] name = "either" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" [[package]] name = "elliptic-curve" @@ -662,7 +667,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b0641612053b2f34fc250bb63f6630ae75de46e02ade7f457268447081d709ce" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embassy-futures", "embassy-hal-internal 0.4.0", "embassy-sync", @@ -684,7 +689,7 @@ dependencies = [ "cordyceps", "cortex-m", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-executor-macros", "embassy-executor-timer-queue", @@ -699,7 +704,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -714,7 +719,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc2d050bdc5c21e0862a89256ed8029ae6c290a93aecefc73084b3002cdebb01" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -734,7 +739,7 @@ checksum = "568659fc53866d3d85c60fa33723fb751aa69e71507634fc2c19e7649432fb75" dependencies = [ "cortex-m", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "num-traits", ] @@ -761,12 +766,12 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82051f67e8a06a8faebd183f62cfade184c96be68126c5f064abb8223a591ff1" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "cfg-if", "cortex-m", "cortex-m-rt", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -799,11 +804,11 @@ checksum = "7bbd85cf5a5ae56bdf26f618364af642d1d0a4e245cdd75cd9aabda382f65a81" dependencies = [ "cfg-if", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io-async 0.7.0", "futures-core", "futures-sink", - "heapless 0.9.2", + "heapless 0.9.3", ] [[package]] @@ -814,7 +819,7 @@ checksum = "592b0c143ec626e821d4d90da51a2bd91d559d6c442b7c74a47d368c9e23d97a" dependencies = [ "cfg-if", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-time-driver", "embedded-hal 0.2.7", @@ -839,7 +844,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "168297bf80aaf114b3c9ad589bf38b01b3009b9af7f97cd18086c5bbf96f5693" dependencies = [ "embassy-executor-timer-queue", - "heapless 0.9.2", + "heapless 0.9.3", ] [[package]] @@ -848,15 +853,15 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a25746d8b152b72fbf2a217f489a083dbbe243f281f09184a1f2cfbe9bbb245f" dependencies = [ - "bitflags 2.11.0", - "defmt 1.0.1", + "bitflags 2.13.0", + "defmt 1.1.1", "embassy-futures", "embassy-net-driver-channel", "embassy-sync", "embassy-time", "embassy-usb-driver", "embedded-io-async 0.7.0", - "heapless 0.9.2", + "heapless 0.9.3", "ssmarshal", "usbd-hid", ] @@ -867,7 +872,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa675c5f4349b6aa0fcffc4bf9b241f18cd11b97c1f8323273fb9a5449937fbd" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io-async 0.6.1", "embedded-io-async 0.7.0", ] @@ -879,7 +884,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6efd0c0e0b21bcf91b475b8fa47347c1df32c9a99728ae1e1b0e6625862dfd1a" dependencies = [ "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-sync", "embassy-time", "embassy-usb-driver", @@ -915,6 +920,12 @@ dependencies = [ "embedded-hal 1.0.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -927,7 +938,7 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9eb1aa714776b75c7e67e1da744b81a129b3ff919c8712b5e1b32252c1f07cc7" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -945,7 +956,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2564b9f813c544241430e147d8bc454815ef9ac998878d30cc3055449f7fd4c0" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io 0.7.1", ] @@ -987,9 +998,9 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "erased-serde" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e8918065695684b2b0702da20382d5ae6065cf3327bc2d6436bd49a71ce9f3" +checksum = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec" dependencies = [ "serde", "serde_core", @@ -1014,9 +1025,9 @@ checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" [[package]] name = "fixed" -version = "1.30.0" +version = "1.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c566da967934c6c7ee0458a9773de9b2a685bd2ce26a3b28ddfc740e640182f5" +checksum = "9af2cbf772fa6d1c11358f92ef554cb6b386201210bcf0e91fb7fba8a907fb40" dependencies = [ "az", "bytemuck", @@ -1032,9 +1043,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foldhash" -version = "0.1.5" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" [[package]] name = "futures" @@ -1090,7 +1101,7 @@ checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1116,13 +1127,14 @@ dependencies = [ "futures-sink", "futures-task", "pin-project-lite", + "slab", ] [[package]] name = "generator" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52f04ae4152da20c76fe800fa48659201d5cf627c5149ca0b707b69d7eef6cf9" +checksum = "b3b854b0e584ead1a33f18b2fcad7cf7be18b3875c78816b753639aa501513ae" dependencies = [ "cc", "cfg-if", @@ -1218,26 +1230,26 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hashbrown" -version = "0.15.5" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" dependencies = [ "foldhash", ] [[package]] name = "hashbrown" -version = "0.16.1" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" [[package]] name = "hashlink" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" +checksum = "824e001ac4f3012dd16a264bec811403a67ca9deb6c102fc5049b32c4574b35f" dependencies = [ - "hashbrown 0.15.5", + "hashbrown 0.16.1", ] [[package]] @@ -1266,11 +1278,11 @@ dependencies = [ [[package]] name = "heapless" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af2455f757db2b292a9b1768c4b70186d443bcb3b316252d6b540aec1cd89ed" +checksum = "25ba4bd83f9415b58b4ed8dc5714c76e626a105be4646c02630ad730ad3b5aa4" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "hash32 0.3.1", "serde_core", "stable_deref_trait", @@ -1308,12 +1320,12 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "indexmap" -version = "2.13.0" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.16.1", + "hashbrown 0.17.1", ] [[package]] @@ -1336,17 +1348,18 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "js-sys" -version = "0.3.90" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14dc6f6450b3f6d4ed5b16327f38fed626d375a886159ca555bd7822c0c3a5a6" +checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ - "once_cell", + "cfg-if", + "futures-util", "wasm-bindgen", ] @@ -1375,9 +1388,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.182" +version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "libloading" @@ -1406,9 +1419,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.29" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" [[package]] name = "loom" @@ -1445,9 +1458,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.8.0" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" [[package]] name = "minimal-lexical" @@ -1455,6 +1468,15 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] + [[package]] name = "nb" version = "0.1.3" @@ -1488,7 +1510,7 @@ dependencies = [ "cfg-if", "cortex-m", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-nrf", "embassy-sync", "embedded-io 0.7.1", @@ -1523,7 +1545,7 @@ source = "git+https://github.com/alexmoon/nrf-sdc?rev=abe49d22ebfc85fae134eb082f dependencies = [ "bt-hci", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-nrf", "embassy-sync", "embedded-io 0.7.1", @@ -1541,7 +1563,7 @@ dependencies = [ "bindgen", "doxygen-rs", "nrf-mpsl-sys", - "winnow", + "winnow 0.7.15", ] [[package]] @@ -1564,9 +1586,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.21.3" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" dependencies = [ "critical-section", "portable-atomic", @@ -1599,7 +1621,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd402d00b0fb94c5aee000029204a46884b1262e0c443f166d86d2c0747e1a1a" dependencies = [ "cortex-m", - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -1616,9 +1638,9 @@ checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" [[package]] name = "pest" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662" +checksum = "47627dd7305c6a2d6c8c6bcd24c5a4c17dbbf425f4f9c5313e724b38fc9782e9" dependencies = [ "memchr", "ucd-trie", @@ -1626,9 +1648,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77" +checksum = "4b4254325ecad416ab689e27ba51da03ba01a9632bc6e108f5fe7c3c4ad29d58" dependencies = [ "pest", "pest_generator", @@ -1636,25 +1658,24 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f" +checksum = "6c4c0e91ead7a8f7acecbca6f003fc2e8282b1dbe2dd9c9d2f16aba42995e0a7" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "pest_meta" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220" +checksum = "f9744bc48116fee06334924bb5f2bad41eed5e89bd26e29b0b799f9a3f82c210" dependencies = [ "pest", - "sha2", ] [[package]] @@ -1687,7 +1708,7 @@ dependencies = [ "phf_shared", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1701,15 +1722,15 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pkg-config" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" [[package]] name = "portable-atomic" @@ -1724,7 +1745,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", - "defmt 1.0.1", + "defmt 1.1.1", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -1738,7 +1761,7 @@ checksum = "e0232bd009a197ceec9cc881ba46f727fcd8060a2d8d6a9dde7a69030a6fe2bb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1757,7 +1780,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1769,28 +1792,6 @@ dependencies = [ "elliptic-curve", ] -[[package]] -name = "proc-macro-error-attr2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "proc-macro-error2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" -dependencies = [ - "proc-macro-error-attr2", - "proc-macro2", - "quote", - "syn 2.0.117", -] - [[package]] name = "proc-macro2" version = "1.0.106" @@ -1802,18 +1803,18 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.44" +version = "1.0.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" +checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" dependencies = [ "proc-macro2", ] [[package]] name = "rand" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" dependencies = [ "rand_core 0.6.4", ] @@ -1848,9 +1849,9 @@ checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" [[package]] name = "regex" -version = "1.12.3" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +checksum = "2a0e75113e14dc5acb068cd0786884f214f1312650a3d36d269f5c4f3cdee8a2" dependencies = [ "aho-corasick", "memchr", @@ -1860,9 +1861,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +checksum = "1f388202e4b80542a0921078cc23b6333bcf1409c1e3f86404cae4766a6131db" dependencies = [ "aho-corasick", "memchr", @@ -1871,9 +1872,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rmk" @@ -1883,7 +1884,7 @@ dependencies = [ "byteorder", "cortex-m", "crc32fast", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -1897,7 +1898,7 @@ dependencies = [ "embedded-storage", "embedded-storage-async", "futures", - "heapless 0.9.2", + "heapless 0.9.3", "paste", "postcard", "rmk-macro", @@ -1914,13 +1915,15 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] @@ -1934,7 +1937,7 @@ dependencies = [ "rmk-config", "rmk-types", "strum", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1945,7 +1948,7 @@ dependencies = [ "const-gen", "cortex-m", "cortex-m-rt", - "defmt 1.0.1", + "defmt 1.1.1", "defmt-rtt", "embassy-executor", "embassy-nrf", @@ -1965,22 +1968,22 @@ name = "rmk-types" version = "0.2.2" dependencies = [ "bitfield-struct", - "defmt 1.0.1", - "heapless 0.9.2", + "defmt 1.1.1", + "heapless 0.9.3", "postcard", "rmk-config", "serde", "strum", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] name = "ron" -version = "0.12.0" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd490c5b18261893f14449cbd28cb9c0b637aebf161cd77900bfdedaff21ec32" +checksum = "81116b9531d61eabc41aeb228e4b6b2435bcca3233b98cf3b3077d4e6e9debb3" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "once_cell", "serde", "serde_derive", @@ -2000,9 +2003,9 @@ dependencies = [ [[package]] name = "rustc-hash" -version = "2.1.1" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" +checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d" [[package]] name = "rustc_version" @@ -2019,14 +2022,14 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.27", + "semver 1.0.28", ] [[package]] name = "rustversion" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] name = "scoped-tls" @@ -2064,9 +2067,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.27" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" dependencies = [ "serde", "serde_core", @@ -2080,11 +2083,11 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "sequential-storage" -version = "7.1.0" +version = "7.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4580ee0fa08cd41bee9f5b50ed309877e18735370fd4eef5766cc82863ef772" +checksum = "574e5a379bf43653079b34cb4cf32958404b5f42e0ed5b5adcdff02c2de04d4d" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-storage-async", "postcard", "serde", @@ -2108,7 +2111,7 @@ checksum = "2bf03b7a5281cfd4013bc788d057b0f09fc634397d83bc8973c955bd4f32727a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2140,14 +2143,14 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "serde_json" -version = "1.0.149" +version = "1.0.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" dependencies = [ "itoa", "memchr", @@ -2158,24 +2161,13 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "1.0.4" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" dependencies = [ "serde_core", ] -[[package]] -name = "sha2" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - [[package]] name = "sharded-slab" version = "0.1.7" @@ -2191,17 +2183,29 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "shlex" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" + [[package]] name = "siphasher" -version = "1.0.2" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" + +[[package]] +name = "slab" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] name = "smallvec" -version = "1.15.1" +version = "1.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" [[package]] name = "spin" @@ -2261,7 +2265,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2283,9 +2287,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.117" +version = "2.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" dependencies = [ "proc-macro2", "quote", @@ -2309,7 +2313,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2332,64 +2336,42 @@ dependencies = [ [[package]] name = "toml" -version = "0.9.12+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" -dependencies = [ - "serde_core", - "serde_spanned", - "toml_datetime 0.7.5+spec-1.1.0", - "toml_parser", - "winnow", -] - -[[package]] -name = "toml" -version = "1.0.3+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7614eaf19ad818347db24addfa201729cf2a9b6fdfd9eb0ab870fcacc606c0c" +checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee" dependencies = [ "indexmap", "serde_core", "serde_spanned", - "toml_datetime 1.0.0+spec-1.1.0", + "toml_datetime", "toml_parser", "toml_writer", - "winnow", + "winnow 1.0.3", ] [[package]] name = "toml_datetime" -version = "0.7.5+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" -dependencies = [ - "serde_core", -] - -[[package]] -name = "toml_datetime" -version = "1.0.0+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32c2555c699578a4f59f0cc68e5116c8d7cabbd45e1409b989d4be085b53f13e" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" dependencies = [ "serde_core", ] [[package]] name = "toml_parser" -version = "1.0.9+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ - "winnow", + "winnow 1.0.3", ] [[package]] name = "toml_writer" -version = "1.0.6+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" +checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" [[package]] name = "tracing" @@ -2410,7 +2392,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2460,13 +2442,13 @@ dependencies = [ "aes", "bt-hci", "cmac", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-futures", "embassy-sync", "embassy-time", "embedded-io 0.7.1", "futures", - "heapless 0.9.2", + "heapless 0.9.3", "p256", "rand", "rand_chacha", @@ -2486,7 +2468,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "uuid", ] @@ -2498,9 +2480,9 @@ checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" [[package]] name = "typenum" -version = "1.19.0" +version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" [[package]] name = "ucd-trie" @@ -2516,9 +2498,9 @@ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-segmentation" -version = "1.12.0" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" [[package]] name = "usb-device" @@ -2563,15 +2545,15 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.117", + "syn 2.0.118", "usbd-hid-descriptors", ] [[package]] name = "uuid" -version = "1.21.0" +version = "1.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b672338555252d43fd2240c714dc444b8c6fb0a5c5335e65a07bba7742735ddb" +checksum = "bf80a72845275afea99e7f2b434723d3bc7e38470fcd1c7ed39a599c73319a53" dependencies = [ "js-sys", "wasm-bindgen", @@ -2618,9 +2600,9 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasm-bindgen" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60722a937f594b7fde9adb894d7c092fc1bb6612897c46368d18e7a20208eff2" +checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" dependencies = [ "cfg-if", "once_cell", @@ -2631,9 +2613,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac8c6395094b6b91c4af293f4c79371c163f9a6f56184d2c9a85f5a95f3950" +checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2641,22 +2623,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab3fabce6159dc20728033842636887e4877688ae94382766e00b180abac9d60" +checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de0e091bdb824da87dc01d967388880d017a0a9bc4f3bdc0d86ee9f9336e3bb5" +checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" dependencies = [ "unicode-ident", ] @@ -2687,9 +2669,18 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.14" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" +checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" dependencies = [ "memchr", ] @@ -2705,9 +2696,9 @@ dependencies = [ [[package]] name = "yaml-rust2" -version = "0.10.4" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2462ea039c445496d8793d052e13787f2b90e750b833afee748e601c17621ed9" +checksum = "631a50d867fafb7093e709d75aaee9e0e0d5deb934021fcea25ac2fe09edc51e" dependencies = [ "arraydeque", "encoding_rs", @@ -2716,29 +2707,29 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.39" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db6d35d663eadb6c932438e763b262fe1a70987f9ae936e60158176d710cae4a" +checksum = "b7cbbc0a705a0fd05cc3676525980d2bf5a9bc4adac6d6475209a7887cf59d19" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.39" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4122cd3169e94605190e77839c9a40d40ed048d305bfdc146e7df40ab0f3e517" +checksum = "e2e817b7b52d0c7358d3246da9d69935ebb18116b2b102b4230dac079b4862f5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "zeroize" -version = "1.8.2" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" [[package]] name = "zmij" diff --git a/examples/use_config/nrf52832_ble/Cargo.toml b/examples/use_config/nrf52832_ble/Cargo.toml index 97ddcc0bc..f91928c1f 100644 --- a/examples/use_config/nrf52832_ble/Cargo.toml +++ b/examples/use_config/nrf52832_ble/Cargo.toml @@ -10,7 +10,7 @@ edition = "2024" license = "MIT OR Apache-2.0" [dependencies] -rmk = { path = "../../../rmk", features = ["async_matrix", "nrf52832_ble"] } +rmk = { path = "../../../rmk", default-features = false, features = ["defmt", "storage", "vial", "watchdog", "async_matrix", "nrf52832_ble"] } nrf-sdc = { git = "https://github.com/alexmoon/nrf-sdc", rev = "abe49d22ebfc85fae134eb082fbfddf752016a55", features = [ "defmt", "peripheral", diff --git a/examples/use_config/nrf52832_ble/keyboard.toml b/examples/use_config/nrf52832_ble/keyboard.toml index b8857e677..a6f7bd615 100644 --- a/examples/use_config/nrf52832_ble/keyboard.toml +++ b/examples/use_config/nrf52832_ble/keyboard.toml @@ -1,4 +1,5 @@ [keyboard] +# Replace with your keyboard identity. name = "RMK Keyboard" product_name = "RMK Keyboard" vendor_id = 0x4c4b @@ -8,44 +9,54 @@ chip = "nrf52832" usb_enable = false [matrix] -# Row and col pins are mandatory +# Matrix pins are required. row_pins = ["P0_03", "P0_04", "P0_28", "P0_29"] col_pins = ["P0_11", "P0_27", "P0_07"] -# RMK uses col2row as the default matrix diode direction, if you want to use a row2col matrix, add `row2col = true` +# Default diode direction is col2row; set `row2col = true` if needed. # row2col = true [layout] rows = 4 cols = 3 -layers = 2 -keymap = [ - [ - ["A", "B", "C"], - ["Kc1", "Kc2", "Kc3"], - ["LCtrl", "MO(1)", "LShift"], - ["OSL(1)", "LT(2, Kc9)", "LM(1, LShift | LGui)"] - ], - [ - ["_", "TT(1)", "TG(2)"], - ["_", "_", "_"], - ["_", "_", "_"], - ["_", "_", "_"] - ], -] +map = """ +(0,0) (0,1) (0,2) +(1,0) (1,1) (1,2) +(2,0) (2,1) (2,2) +(3,0) (3,1) (3,2) +""" + +[keymap] +layers = 3 + +[[keymap.layer]] # layer 0 +keys = """ +A B C +Kc1 Kc2 Kc3 +LCtrl MO(1) LShift +OSL(1) LT(2, Kc9) LM(1, LShift | LGui) +""" + +[[keymap.layer]] # layer 1 +keys = """ +_ TT(1) TG(2) +_ _ _ +_ _ _ +_ _ _ +""" [light] # All light pins are high-active by default, uncomment if you want it to be low-active -# capslock.pin = "PB2" +# capslock.pin = "P0_08" # capslock.low_active = true -# scrolllock.pin = "PA3" +# scrolllock.pin = "P0_09" # scrolllock.low_active = true # Just ignore if no light pin is used for it -# numslock.pin = "PA5" +# numslock.pin = "P0_10" # numslock.low_active = true [storage] -# Storage feature is enabled by default +# Storage is enabled by default. # enabled = false [ble] diff --git a/examples/use_config/nrf52840_ble/Cargo.lock b/examples/use_config/nrf52840_ble/Cargo.lock index abe028010..47b5dc3a1 100644 --- a/examples/use_config/nrf52840_ble/Cargo.lock +++ b/examples/use_config/nrf52840_ble/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -48,7 +54,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -62,9 +68,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "az" @@ -93,7 +99,7 @@ version = "0.72.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "cexpr", "clang-sys", "itertools", @@ -103,8 +109,8 @@ dependencies = [ "quote", "regex", "rustc-hash", - "shlex", - "syn 2.0.117", + "shlex 1.3.0", + "syn 2.0.118", ] [[package]] @@ -127,7 +133,7 @@ checksum = "3ca6739863c590881f038d033a146c51ddae239186a4327014839fd864f44ed5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -138,9 +144,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.11.0" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" +checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" dependencies = [ "serde_core", ] @@ -161,12 +167,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f3c66fd0a41a3b3a5906847b1bf5516048ce083e24fa9341a0fa31d3b4cd73d" dependencies = [ "btuuid", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-sync", "embedded-io 0.7.1", "embedded-io-async 0.7.0", "futures-intrusive", - "heapless 0.9.2", + "heapless 0.9.3", "serde", ] @@ -183,9 +189,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.20.2" +version = "3.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" [[package]] name = "bytemuck" @@ -205,19 +211,19 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa61aec073ec94791433ddf3df2323ff9d1711557c2a0eefb0f99cb4f8dca520" dependencies = [ - "semver 1.0.27", + "semver 1.0.28", "serde", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] name = "cc" -version = "1.2.56" +version = "1.2.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2" +checksum = "f5d6cac793997bd970000024b2934968efe83b382de4fdcf4fcb46b6ee4ad996" dependencies = [ "find-msvc-tools", - "shlex", + "shlex 2.0.1", ] [[package]] @@ -278,9 +284,9 @@ dependencies = [ [[package]] name = "config" -version = "0.15.19" +version = "0.15.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b30fa8254caad766fc03cb0ccae691e14bf3bd72bfff27f72802ce729551b3d6" +checksum = "b85f248a4de22d204ceabc6299d89d2c70fbd7f09fea53c06c852369652d8139" dependencies = [ "async-trait", "convert_case 0.6.0", @@ -291,8 +297,8 @@ dependencies = [ "serde-untagged", "serde_core", "serde_json", - "toml 0.9.12+spec-1.1.0", - "winnow", + "toml", + "winnow 1.0.3", "yaml-rust2", ] @@ -399,7 +405,7 @@ checksum = "e37549a379a9e0e6e576fd208ee60394ccb8be963889eebba3ffe0980364f472" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -485,7 +491,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -498,7 +504,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -509,7 +515,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -520,7 +526,7 @@ checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ "darling_core 0.23.0", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -538,14 +544,14 @@ version = "0.3.100" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0963443817029b2024136fc4dd07a5107eb8f977eaf18fcd1fdeb11306b64ad" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] name = "defmt" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "548d977b6da32fa1d1fda2876453da1e7df63ad0304c8b3dae4dbe7b96f39b78" +checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" dependencies = [ "bitflags 1.3.2", "defmt-macros", @@ -553,15 +559,14 @@ dependencies = [ [[package]] name = "defmt-macros" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d4fc12a85bcf441cfe44344c4b72d58493178ce635338a3f3b78943aceb258e" +checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" dependencies = [ "defmt-parser", - "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -575,12 +580,12 @@ dependencies = [ [[package]] name = "defmt-rtt" -version = "1.1.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d5a25c99d89c40f5676bec8cefe0614f17f0f40e916f98e345dae941807f9e" +checksum = "05144944c117db54127a8ac17a3c9a28d55e7047bfddb950bcd20b4a94c79b10" dependencies = [ "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -633,9 +638,9 @@ dependencies = [ [[package]] name = "either" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" [[package]] name = "elliptic-curve" @@ -662,7 +667,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b0641612053b2f34fc250bb63f6630ae75de46e02ade7f457268447081d709ce" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embassy-futures", "embassy-hal-internal 0.4.0", "embassy-sync", @@ -684,7 +689,7 @@ dependencies = [ "cordyceps", "cortex-m", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-executor-macros", "embassy-executor-timer-queue", @@ -699,7 +704,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -714,7 +719,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc2d050bdc5c21e0862a89256ed8029ae6c290a93aecefc73084b3002cdebb01" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -734,7 +739,7 @@ checksum = "568659fc53866d3d85c60fa33723fb751aa69e71507634fc2c19e7649432fb75" dependencies = [ "cortex-m", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "num-traits", ] @@ -761,12 +766,12 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82051f67e8a06a8faebd183f62cfade184c96be68126c5f064abb8223a591ff1" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "cfg-if", "cortex-m", "cortex-m-rt", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -799,11 +804,11 @@ checksum = "7bbd85cf5a5ae56bdf26f618364af642d1d0a4e245cdd75cd9aabda382f65a81" dependencies = [ "cfg-if", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io-async 0.7.0", "futures-core", "futures-sink", - "heapless 0.9.2", + "heapless 0.9.3", ] [[package]] @@ -814,7 +819,7 @@ checksum = "592b0c143ec626e821d4d90da51a2bd91d559d6c442b7c74a47d368c9e23d97a" dependencies = [ "cfg-if", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-time-driver", "embedded-hal 0.2.7", @@ -839,7 +844,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "168297bf80aaf114b3c9ad589bf38b01b3009b9af7f97cd18086c5bbf96f5693" dependencies = [ "embassy-executor-timer-queue", - "heapless 0.9.2", + "heapless 0.9.3", ] [[package]] @@ -848,15 +853,15 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a25746d8b152b72fbf2a217f489a083dbbe243f281f09184a1f2cfbe9bbb245f" dependencies = [ - "bitflags 2.11.0", - "defmt 1.0.1", + "bitflags 2.13.0", + "defmt 1.1.1", "embassy-futures", "embassy-net-driver-channel", "embassy-sync", "embassy-time", "embassy-usb-driver", "embedded-io-async 0.7.0", - "heapless 0.9.2", + "heapless 0.9.3", "ssmarshal", "usbd-hid", ] @@ -867,7 +872,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa675c5f4349b6aa0fcffc4bf9b241f18cd11b97c1f8323273fb9a5449937fbd" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io-async 0.6.1", "embedded-io-async 0.7.0", ] @@ -879,7 +884,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6efd0c0e0b21bcf91b475b8fa47347c1df32c9a99728ae1e1b0e6625862dfd1a" dependencies = [ "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-sync", "embassy-time", "embassy-usb-driver", @@ -915,6 +920,12 @@ dependencies = [ "embedded-hal 1.0.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -927,7 +938,7 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9eb1aa714776b75c7e67e1da744b81a129b3ff919c8712b5e1b32252c1f07cc7" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -945,7 +956,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2564b9f813c544241430e147d8bc454815ef9ac998878d30cc3055449f7fd4c0" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io 0.7.1", ] @@ -987,9 +998,9 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "erased-serde" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e8918065695684b2b0702da20382d5ae6065cf3327bc2d6436bd49a71ce9f3" +checksum = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec" dependencies = [ "serde", "serde_core", @@ -1014,9 +1025,9 @@ checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" [[package]] name = "fixed" -version = "1.30.0" +version = "1.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c566da967934c6c7ee0458a9773de9b2a685bd2ce26a3b28ddfc740e640182f5" +checksum = "9af2cbf772fa6d1c11358f92ef554cb6b386201210bcf0e91fb7fba8a907fb40" dependencies = [ "az", "bytemuck", @@ -1032,9 +1043,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foldhash" -version = "0.1.5" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" [[package]] name = "futures" @@ -1090,7 +1101,7 @@ checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1116,13 +1127,14 @@ dependencies = [ "futures-sink", "futures-task", "pin-project-lite", + "slab", ] [[package]] name = "generator" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52f04ae4152da20c76fe800fa48659201d5cf627c5149ca0b707b69d7eef6cf9" +checksum = "b3b854b0e584ead1a33f18b2fcad7cf7be18b3875c78816b753639aa501513ae" dependencies = [ "cc", "cfg-if", @@ -1218,26 +1230,26 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hashbrown" -version = "0.15.5" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" dependencies = [ "foldhash", ] [[package]] name = "hashbrown" -version = "0.16.1" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" [[package]] name = "hashlink" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" +checksum = "824e001ac4f3012dd16a264bec811403a67ca9deb6c102fc5049b32c4574b35f" dependencies = [ - "hashbrown 0.15.5", + "hashbrown 0.16.1", ] [[package]] @@ -1266,11 +1278,11 @@ dependencies = [ [[package]] name = "heapless" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af2455f757db2b292a9b1768c4b70186d443bcb3b316252d6b540aec1cd89ed" +checksum = "25ba4bd83f9415b58b4ed8dc5714c76e626a105be4646c02630ad730ad3b5aa4" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "hash32 0.3.1", "serde_core", "stable_deref_trait", @@ -1308,12 +1320,12 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "indexmap" -version = "2.13.0" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.16.1", + "hashbrown 0.17.1", ] [[package]] @@ -1336,17 +1348,18 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "js-sys" -version = "0.3.90" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14dc6f6450b3f6d4ed5b16327f38fed626d375a886159ca555bd7822c0c3a5a6" +checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ - "once_cell", + "cfg-if", + "futures-util", "wasm-bindgen", ] @@ -1375,9 +1388,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.182" +version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "libloading" @@ -1406,9 +1419,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.29" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" [[package]] name = "loom" @@ -1445,9 +1458,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.8.0" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" [[package]] name = "minimal-lexical" @@ -1455,6 +1468,15 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] + [[package]] name = "nb" version = "0.1.3" @@ -1488,7 +1510,7 @@ dependencies = [ "cfg-if", "cortex-m", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-nrf", "embassy-sync", "embedded-io 0.7.1", @@ -1523,7 +1545,7 @@ source = "git+https://github.com/alexmoon/nrf-sdc?rev=abe49d22ebfc85fae134eb082f dependencies = [ "bt-hci", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-nrf", "embassy-sync", "embedded-io 0.7.1", @@ -1541,7 +1563,7 @@ dependencies = [ "bindgen", "doxygen-rs", "nrf-mpsl-sys", - "winnow", + "winnow 0.7.15", ] [[package]] @@ -1564,9 +1586,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.21.3" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] name = "ordered-multimap" @@ -1595,7 +1617,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd402d00b0fb94c5aee000029204a46884b1262e0c443f166d86d2c0747e1a1a" dependencies = [ "cortex-m", - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -1612,9 +1634,9 @@ checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" [[package]] name = "pest" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662" +checksum = "47627dd7305c6a2d6c8c6bcd24c5a4c17dbbf425f4f9c5313e724b38fc9782e9" dependencies = [ "memchr", "ucd-trie", @@ -1622,9 +1644,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77" +checksum = "4b4254325ecad416ab689e27ba51da03ba01a9632bc6e108f5fe7c3c4ad29d58" dependencies = [ "pest", "pest_generator", @@ -1632,25 +1654,24 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f" +checksum = "6c4c0e91ead7a8f7acecbca6f003fc2e8282b1dbe2dd9c9d2f16aba42995e0a7" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "pest_meta" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220" +checksum = "f9744bc48116fee06334924bb5f2bad41eed5e89bd26e29b0b799f9a3f82c210" dependencies = [ "pest", - "sha2", ] [[package]] @@ -1683,7 +1704,7 @@ dependencies = [ "phf_shared", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1697,15 +1718,15 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pkg-config" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" [[package]] name = "portable-atomic" @@ -1720,7 +1741,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", - "defmt 1.0.1", + "defmt 1.1.1", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -1734,7 +1757,7 @@ checksum = "e0232bd009a197ceec9cc881ba46f727fcd8060a2d8d6a9dde7a69030a6fe2bb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1753,7 +1776,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1765,28 +1788,6 @@ dependencies = [ "elliptic-curve", ] -[[package]] -name = "proc-macro-error-attr2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "proc-macro-error2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" -dependencies = [ - "proc-macro-error-attr2", - "proc-macro2", - "quote", - "syn 2.0.117", -] - [[package]] name = "proc-macro2" version = "1.0.106" @@ -1798,18 +1799,18 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.44" +version = "1.0.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" +checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" dependencies = [ "proc-macro2", ] [[package]] name = "rand" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" dependencies = [ "rand_core 0.6.4", ] @@ -1844,9 +1845,9 @@ checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" [[package]] name = "regex" -version = "1.12.3" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +checksum = "2a0e75113e14dc5acb068cd0786884f214f1312650a3d36d269f5c4f3cdee8a2" dependencies = [ "aho-corasick", "memchr", @@ -1856,9 +1857,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +checksum = "1f388202e4b80542a0921078cc23b6333bcf1409c1e3f86404cae4766a6131db" dependencies = [ "aho-corasick", "memchr", @@ -1867,9 +1868,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rmk" @@ -1879,7 +1880,7 @@ dependencies = [ "byteorder", "cortex-m", "crc32fast", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -1893,7 +1894,7 @@ dependencies = [ "embedded-storage", "embedded-storage-async", "futures", - "heapless 0.9.2", + "heapless 0.9.3", "paste", "postcard", "rmk-macro", @@ -1910,13 +1911,15 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] @@ -1930,7 +1933,7 @@ dependencies = [ "rmk-config", "rmk-types", "strum", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1941,7 +1944,7 @@ dependencies = [ "const-gen", "cortex-m", "cortex-m-rt", - "defmt 1.0.1", + "defmt 1.1.1", "defmt-rtt", "embassy-executor", "embassy-nrf", @@ -1960,22 +1963,22 @@ name = "rmk-types" version = "0.2.2" dependencies = [ "bitfield-struct", - "defmt 1.0.1", - "heapless 0.9.2", + "defmt 1.1.1", + "heapless 0.9.3", "postcard", "rmk-config", "serde", "strum", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] name = "ron" -version = "0.12.0" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd490c5b18261893f14449cbd28cb9c0b637aebf161cd77900bfdedaff21ec32" +checksum = "81116b9531d61eabc41aeb228e4b6b2435bcca3233b98cf3b3077d4e6e9debb3" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "once_cell", "serde", "serde_derive", @@ -1995,9 +1998,9 @@ dependencies = [ [[package]] name = "rustc-hash" -version = "2.1.1" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" +checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d" [[package]] name = "rustc_version" @@ -2014,14 +2017,14 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.27", + "semver 1.0.28", ] [[package]] name = "rustversion" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] name = "scoped-tls" @@ -2059,9 +2062,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.27" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" dependencies = [ "serde", "serde_core", @@ -2075,11 +2078,11 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "sequential-storage" -version = "7.1.0" +version = "7.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4580ee0fa08cd41bee9f5b50ed309877e18735370fd4eef5766cc82863ef772" +checksum = "574e5a379bf43653079b34cb4cf32958404b5f42e0ed5b5adcdff02c2de04d4d" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-storage-async", "postcard", "serde", @@ -2103,7 +2106,7 @@ checksum = "2bf03b7a5281cfd4013bc788d057b0f09fc634397d83bc8973c955bd4f32727a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2135,14 +2138,14 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "serde_json" -version = "1.0.149" +version = "1.0.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" dependencies = [ "itoa", "memchr", @@ -2153,24 +2156,13 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "1.0.4" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" dependencies = [ "serde_core", ] -[[package]] -name = "sha2" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - [[package]] name = "sharded-slab" version = "0.1.7" @@ -2186,17 +2178,29 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "shlex" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" + [[package]] name = "siphasher" -version = "1.0.2" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" + +[[package]] +name = "slab" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] name = "smallvec" -version = "1.15.1" +version = "1.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" [[package]] name = "spin" @@ -2256,7 +2260,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2278,9 +2282,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.117" +version = "2.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" dependencies = [ "proc-macro2", "quote", @@ -2304,7 +2308,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2327,64 +2331,42 @@ dependencies = [ [[package]] name = "toml" -version = "0.9.12+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" -dependencies = [ - "serde_core", - "serde_spanned", - "toml_datetime 0.7.5+spec-1.1.0", - "toml_parser", - "winnow", -] - -[[package]] -name = "toml" -version = "1.0.3+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7614eaf19ad818347db24addfa201729cf2a9b6fdfd9eb0ab870fcacc606c0c" +checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee" dependencies = [ "indexmap", "serde_core", "serde_spanned", - "toml_datetime 1.0.0+spec-1.1.0", + "toml_datetime", "toml_parser", "toml_writer", - "winnow", + "winnow 1.0.3", ] [[package]] name = "toml_datetime" -version = "0.7.5+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" -dependencies = [ - "serde_core", -] - -[[package]] -name = "toml_datetime" -version = "1.0.0+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32c2555c699578a4f59f0cc68e5116c8d7cabbd45e1409b989d4be085b53f13e" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" dependencies = [ "serde_core", ] [[package]] name = "toml_parser" -version = "1.0.9+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ - "winnow", + "winnow 1.0.3", ] [[package]] name = "toml_writer" -version = "1.0.6+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" +checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" [[package]] name = "tracing" @@ -2405,7 +2387,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2455,13 +2437,13 @@ dependencies = [ "aes", "bt-hci", "cmac", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-futures", "embassy-sync", "embassy-time", "embedded-io 0.7.1", "futures", - "heapless 0.9.2", + "heapless 0.9.3", "p256", "rand", "rand_chacha", @@ -2481,7 +2463,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "uuid", ] @@ -2493,9 +2475,9 @@ checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" [[package]] name = "typenum" -version = "1.19.0" +version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" [[package]] name = "ucd-trie" @@ -2511,9 +2493,9 @@ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-segmentation" -version = "1.12.0" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" [[package]] name = "usb-device" @@ -2558,15 +2540,15 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.117", + "syn 2.0.118", "usbd-hid-descriptors", ] [[package]] name = "uuid" -version = "1.21.0" +version = "1.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b672338555252d43fd2240c714dc444b8c6fb0a5c5335e65a07bba7742735ddb" +checksum = "bf80a72845275afea99e7f2b434723d3bc7e38470fcd1c7ed39a599c73319a53" dependencies = [ "js-sys", "wasm-bindgen", @@ -2613,9 +2595,9 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasm-bindgen" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60722a937f594b7fde9adb894d7c092fc1bb6612897c46368d18e7a20208eff2" +checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" dependencies = [ "cfg-if", "once_cell", @@ -2626,9 +2608,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac8c6395094b6b91c4af293f4c79371c163f9a6f56184d2c9a85f5a95f3950" +checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2636,22 +2618,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab3fabce6159dc20728033842636887e4877688ae94382766e00b180abac9d60" +checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de0e091bdb824da87dc01d967388880d017a0a9bc4f3bdc0d86ee9f9336e3bb5" +checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" dependencies = [ "unicode-ident", ] @@ -2682,9 +2664,18 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.14" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" +checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" dependencies = [ "memchr", ] @@ -2700,9 +2691,9 @@ dependencies = [ [[package]] name = "yaml-rust2" -version = "0.10.4" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2462ea039c445496d8793d052e13787f2b90e750b833afee748e601c17621ed9" +checksum = "631a50d867fafb7093e709d75aaee9e0e0d5deb934021fcea25ac2fe09edc51e" dependencies = [ "arraydeque", "encoding_rs", @@ -2711,29 +2702,29 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.39" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db6d35d663eadb6c932438e763b262fe1a70987f9ae936e60158176d710cae4a" +checksum = "b7cbbc0a705a0fd05cc3676525980d2bf5a9bc4adac6d6475209a7887cf59d19" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.39" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4122cd3169e94605190e77839c9a40d40ed048d305bfdc146e7df40ab0f3e517" +checksum = "e2e817b7b52d0c7358d3246da9d69935ebb18116b2b102b4230dac079b4862f5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "zeroize" -version = "1.8.2" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" [[package]] name = "zmij" diff --git a/examples/use_config/nrf52840_ble/Cargo.toml b/examples/use_config/nrf52840_ble/Cargo.toml index 9bea3418e..5cbc7d0c3 100644 --- a/examples/use_config/nrf52840_ble/Cargo.toml +++ b/examples/use_config/nrf52840_ble/Cargo.toml @@ -10,7 +10,7 @@ edition = "2024" license = "MIT OR Apache-2.0" [dependencies] -rmk = { path = "../../../rmk", features = ["async_matrix", "nrf52840_ble", "adafruit_bl"] } +rmk = { path = "../../../rmk", default-features = false, features = ["defmt", "storage", "vial", "watchdog", "async_matrix", "nrf52840_ble", "adafruit_bl"] } nrf-sdc = { git = "https://github.com/alexmoon/nrf-sdc", rev = "abe49d22ebfc85fae134eb082fbfddf752016a55", features = [ "defmt", "peripheral", diff --git a/examples/use_config/nrf52840_ble/keyboard.toml b/examples/use_config/nrf52840_ble/keyboard.toml index f9831ebb3..d80d8583a 100644 --- a/examples/use_config/nrf52840_ble/keyboard.toml +++ b/examples/use_config/nrf52840_ble/keyboard.toml @@ -1,4 +1,5 @@ [keyboard] +# Replace with your keyboard identity. name = "RMK Keyboard" product_name = "My RMK Keyboard" vendor_id = 0x4c4b @@ -7,43 +8,47 @@ manufacturer = "haobo" chip = "nrf52840" [matrix] -# Row and col pins are mandatory +# Matrix pins are required. row_pins = ["P1_00", "P1_01", "P1_02", "P1_07", "P1_08"] col_pins = ["P1_05", "P1_06", "P1_03", "P1_04"] -# RMK uses col2row as the default matrix diode direction, if you want to use a row2col matrix, add `row2col = true` +# Default diode direction is col2row; set `row2col = true` if needed. # row2col = true [layout] rows = 5 cols = 4 -layers = 2 -matrix_map = """ -(0,0) (0,1) (0,2) (0,3) -(1,0) (1,1) (1,2) (1,3) -(2,0) (2,1) (2,2) -(3,0) (3,1) (3,2) (3,3) - (4,0) (4,1) +# The numpad uses stock `@2u_tall` and `@2u` shapes. +map = """ +(0,0) (0,1) (0,2) (0,3) +(1,0) (1,1) (1,2) (1,3,@2u_tall) +(2,0) (2,1) (2,2) +(3,0) (3,1) (3,2) (3,3,@2u_tall) +(4,0,@2u) (4,1) """ -[[layer]] +[keymap] +layers = 2 + +[[keymap.layer]] name = "base_layer" keys = """ -NumLock KpSlash KpAsterisk KpMinus -Kp7 Kp8 Kp9 KpPlus -Kp4 Kp5 Kp6 -Kp1 Kp2 Kp3 Enter - Kp0 KpDot +NumLock KpSlash KpAsterisk KpMinus +Kp7 Kp8 Kp9 KpPlus +Kp4 Kp5 Kp6 +Kp1 Kp2 Kp3 Enter +Kp0 KpDot """ # Encoder 0 - CW: AudioVolUp, CCW: AudioVolDown encoders = [["AudioVolUp", "AudioVolDown"]] -[[layer]] +[[keymap.layer]] name = "second_layer" keys = """ -TD(1) TO(0) WM(W,LShift) No -DF(0) LT(1, Space) LM(0, LShift | RGui) -OSL(0) OSM(LAlt) TH(Kp1, Kp2) SHIFTED(Kp2) - @my_copy @my_paste +TD(1) TO(0) WM(W,LShift) No +DF(0) LT(1, Space) LM(0, LShift | RGui) _ +OSL(0) OSM(LAlt) TH(Kp1, Kp2) +SHIFTED(Kp2) @my_copy @my_paste _ +_ _ """ # Encoder 0 - CW: BrightnessUp, CCW: BrightnessDown encoders = [["BrightnessUp", "BrightnessDown"]] @@ -71,7 +76,7 @@ resolution = 4 reverse = false [storage] -# Storage feature is enabled by default +# Storage is enabled by default. # enabled = false # clear_storage = true diff --git a/examples/use_config/nrf52840_ble_split/Cargo.lock b/examples/use_config/nrf52840_ble_split/Cargo.lock index abe028010..47b5dc3a1 100644 --- a/examples/use_config/nrf52840_ble_split/Cargo.lock +++ b/examples/use_config/nrf52840_ble_split/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -48,7 +54,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -62,9 +68,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "az" @@ -93,7 +99,7 @@ version = "0.72.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "cexpr", "clang-sys", "itertools", @@ -103,8 +109,8 @@ dependencies = [ "quote", "regex", "rustc-hash", - "shlex", - "syn 2.0.117", + "shlex 1.3.0", + "syn 2.0.118", ] [[package]] @@ -127,7 +133,7 @@ checksum = "3ca6739863c590881f038d033a146c51ddae239186a4327014839fd864f44ed5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -138,9 +144,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.11.0" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" +checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" dependencies = [ "serde_core", ] @@ -161,12 +167,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f3c66fd0a41a3b3a5906847b1bf5516048ce083e24fa9341a0fa31d3b4cd73d" dependencies = [ "btuuid", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-sync", "embedded-io 0.7.1", "embedded-io-async 0.7.0", "futures-intrusive", - "heapless 0.9.2", + "heapless 0.9.3", "serde", ] @@ -183,9 +189,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.20.2" +version = "3.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" [[package]] name = "bytemuck" @@ -205,19 +211,19 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa61aec073ec94791433ddf3df2323ff9d1711557c2a0eefb0f99cb4f8dca520" dependencies = [ - "semver 1.0.27", + "semver 1.0.28", "serde", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] name = "cc" -version = "1.2.56" +version = "1.2.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2" +checksum = "f5d6cac793997bd970000024b2934968efe83b382de4fdcf4fcb46b6ee4ad996" dependencies = [ "find-msvc-tools", - "shlex", + "shlex 2.0.1", ] [[package]] @@ -278,9 +284,9 @@ dependencies = [ [[package]] name = "config" -version = "0.15.19" +version = "0.15.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b30fa8254caad766fc03cb0ccae691e14bf3bd72bfff27f72802ce729551b3d6" +checksum = "b85f248a4de22d204ceabc6299d89d2c70fbd7f09fea53c06c852369652d8139" dependencies = [ "async-trait", "convert_case 0.6.0", @@ -291,8 +297,8 @@ dependencies = [ "serde-untagged", "serde_core", "serde_json", - "toml 0.9.12+spec-1.1.0", - "winnow", + "toml", + "winnow 1.0.3", "yaml-rust2", ] @@ -399,7 +405,7 @@ checksum = "e37549a379a9e0e6e576fd208ee60394ccb8be963889eebba3ffe0980364f472" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -485,7 +491,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -498,7 +504,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -509,7 +515,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -520,7 +526,7 @@ checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ "darling_core 0.23.0", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -538,14 +544,14 @@ version = "0.3.100" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0963443817029b2024136fc4dd07a5107eb8f977eaf18fcd1fdeb11306b64ad" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] name = "defmt" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "548d977b6da32fa1d1fda2876453da1e7df63ad0304c8b3dae4dbe7b96f39b78" +checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" dependencies = [ "bitflags 1.3.2", "defmt-macros", @@ -553,15 +559,14 @@ dependencies = [ [[package]] name = "defmt-macros" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d4fc12a85bcf441cfe44344c4b72d58493178ce635338a3f3b78943aceb258e" +checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" dependencies = [ "defmt-parser", - "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -575,12 +580,12 @@ dependencies = [ [[package]] name = "defmt-rtt" -version = "1.1.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d5a25c99d89c40f5676bec8cefe0614f17f0f40e916f98e345dae941807f9e" +checksum = "05144944c117db54127a8ac17a3c9a28d55e7047bfddb950bcd20b4a94c79b10" dependencies = [ "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -633,9 +638,9 @@ dependencies = [ [[package]] name = "either" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" [[package]] name = "elliptic-curve" @@ -662,7 +667,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b0641612053b2f34fc250bb63f6630ae75de46e02ade7f457268447081d709ce" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embassy-futures", "embassy-hal-internal 0.4.0", "embassy-sync", @@ -684,7 +689,7 @@ dependencies = [ "cordyceps", "cortex-m", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-executor-macros", "embassy-executor-timer-queue", @@ -699,7 +704,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -714,7 +719,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc2d050bdc5c21e0862a89256ed8029ae6c290a93aecefc73084b3002cdebb01" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -734,7 +739,7 @@ checksum = "568659fc53866d3d85c60fa33723fb751aa69e71507634fc2c19e7649432fb75" dependencies = [ "cortex-m", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "num-traits", ] @@ -761,12 +766,12 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82051f67e8a06a8faebd183f62cfade184c96be68126c5f064abb8223a591ff1" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "cfg-if", "cortex-m", "cortex-m-rt", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -799,11 +804,11 @@ checksum = "7bbd85cf5a5ae56bdf26f618364af642d1d0a4e245cdd75cd9aabda382f65a81" dependencies = [ "cfg-if", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io-async 0.7.0", "futures-core", "futures-sink", - "heapless 0.9.2", + "heapless 0.9.3", ] [[package]] @@ -814,7 +819,7 @@ checksum = "592b0c143ec626e821d4d90da51a2bd91d559d6c442b7c74a47d368c9e23d97a" dependencies = [ "cfg-if", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-time-driver", "embedded-hal 0.2.7", @@ -839,7 +844,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "168297bf80aaf114b3c9ad589bf38b01b3009b9af7f97cd18086c5bbf96f5693" dependencies = [ "embassy-executor-timer-queue", - "heapless 0.9.2", + "heapless 0.9.3", ] [[package]] @@ -848,15 +853,15 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a25746d8b152b72fbf2a217f489a083dbbe243f281f09184a1f2cfbe9bbb245f" dependencies = [ - "bitflags 2.11.0", - "defmt 1.0.1", + "bitflags 2.13.0", + "defmt 1.1.1", "embassy-futures", "embassy-net-driver-channel", "embassy-sync", "embassy-time", "embassy-usb-driver", "embedded-io-async 0.7.0", - "heapless 0.9.2", + "heapless 0.9.3", "ssmarshal", "usbd-hid", ] @@ -867,7 +872,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa675c5f4349b6aa0fcffc4bf9b241f18cd11b97c1f8323273fb9a5449937fbd" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io-async 0.6.1", "embedded-io-async 0.7.0", ] @@ -879,7 +884,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6efd0c0e0b21bcf91b475b8fa47347c1df32c9a99728ae1e1b0e6625862dfd1a" dependencies = [ "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-sync", "embassy-time", "embassy-usb-driver", @@ -915,6 +920,12 @@ dependencies = [ "embedded-hal 1.0.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -927,7 +938,7 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9eb1aa714776b75c7e67e1da744b81a129b3ff919c8712b5e1b32252c1f07cc7" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -945,7 +956,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2564b9f813c544241430e147d8bc454815ef9ac998878d30cc3055449f7fd4c0" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io 0.7.1", ] @@ -987,9 +998,9 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "erased-serde" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e8918065695684b2b0702da20382d5ae6065cf3327bc2d6436bd49a71ce9f3" +checksum = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec" dependencies = [ "serde", "serde_core", @@ -1014,9 +1025,9 @@ checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" [[package]] name = "fixed" -version = "1.30.0" +version = "1.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c566da967934c6c7ee0458a9773de9b2a685bd2ce26a3b28ddfc740e640182f5" +checksum = "9af2cbf772fa6d1c11358f92ef554cb6b386201210bcf0e91fb7fba8a907fb40" dependencies = [ "az", "bytemuck", @@ -1032,9 +1043,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foldhash" -version = "0.1.5" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" [[package]] name = "futures" @@ -1090,7 +1101,7 @@ checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1116,13 +1127,14 @@ dependencies = [ "futures-sink", "futures-task", "pin-project-lite", + "slab", ] [[package]] name = "generator" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52f04ae4152da20c76fe800fa48659201d5cf627c5149ca0b707b69d7eef6cf9" +checksum = "b3b854b0e584ead1a33f18b2fcad7cf7be18b3875c78816b753639aa501513ae" dependencies = [ "cc", "cfg-if", @@ -1218,26 +1230,26 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hashbrown" -version = "0.15.5" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" dependencies = [ "foldhash", ] [[package]] name = "hashbrown" -version = "0.16.1" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" [[package]] name = "hashlink" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" +checksum = "824e001ac4f3012dd16a264bec811403a67ca9deb6c102fc5049b32c4574b35f" dependencies = [ - "hashbrown 0.15.5", + "hashbrown 0.16.1", ] [[package]] @@ -1266,11 +1278,11 @@ dependencies = [ [[package]] name = "heapless" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af2455f757db2b292a9b1768c4b70186d443bcb3b316252d6b540aec1cd89ed" +checksum = "25ba4bd83f9415b58b4ed8dc5714c76e626a105be4646c02630ad730ad3b5aa4" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "hash32 0.3.1", "serde_core", "stable_deref_trait", @@ -1308,12 +1320,12 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "indexmap" -version = "2.13.0" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.16.1", + "hashbrown 0.17.1", ] [[package]] @@ -1336,17 +1348,18 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "js-sys" -version = "0.3.90" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14dc6f6450b3f6d4ed5b16327f38fed626d375a886159ca555bd7822c0c3a5a6" +checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ - "once_cell", + "cfg-if", + "futures-util", "wasm-bindgen", ] @@ -1375,9 +1388,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.182" +version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "libloading" @@ -1406,9 +1419,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.29" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" [[package]] name = "loom" @@ -1445,9 +1458,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.8.0" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" [[package]] name = "minimal-lexical" @@ -1455,6 +1468,15 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] + [[package]] name = "nb" version = "0.1.3" @@ -1488,7 +1510,7 @@ dependencies = [ "cfg-if", "cortex-m", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-nrf", "embassy-sync", "embedded-io 0.7.1", @@ -1523,7 +1545,7 @@ source = "git+https://github.com/alexmoon/nrf-sdc?rev=abe49d22ebfc85fae134eb082f dependencies = [ "bt-hci", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-nrf", "embassy-sync", "embedded-io 0.7.1", @@ -1541,7 +1563,7 @@ dependencies = [ "bindgen", "doxygen-rs", "nrf-mpsl-sys", - "winnow", + "winnow 0.7.15", ] [[package]] @@ -1564,9 +1586,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.21.3" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] name = "ordered-multimap" @@ -1595,7 +1617,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd402d00b0fb94c5aee000029204a46884b1262e0c443f166d86d2c0747e1a1a" dependencies = [ "cortex-m", - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -1612,9 +1634,9 @@ checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" [[package]] name = "pest" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662" +checksum = "47627dd7305c6a2d6c8c6bcd24c5a4c17dbbf425f4f9c5313e724b38fc9782e9" dependencies = [ "memchr", "ucd-trie", @@ -1622,9 +1644,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77" +checksum = "4b4254325ecad416ab689e27ba51da03ba01a9632bc6e108f5fe7c3c4ad29d58" dependencies = [ "pest", "pest_generator", @@ -1632,25 +1654,24 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f" +checksum = "6c4c0e91ead7a8f7acecbca6f003fc2e8282b1dbe2dd9c9d2f16aba42995e0a7" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "pest_meta" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220" +checksum = "f9744bc48116fee06334924bb5f2bad41eed5e89bd26e29b0b799f9a3f82c210" dependencies = [ "pest", - "sha2", ] [[package]] @@ -1683,7 +1704,7 @@ dependencies = [ "phf_shared", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1697,15 +1718,15 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pkg-config" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" [[package]] name = "portable-atomic" @@ -1720,7 +1741,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", - "defmt 1.0.1", + "defmt 1.1.1", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -1734,7 +1757,7 @@ checksum = "e0232bd009a197ceec9cc881ba46f727fcd8060a2d8d6a9dde7a69030a6fe2bb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1753,7 +1776,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1765,28 +1788,6 @@ dependencies = [ "elliptic-curve", ] -[[package]] -name = "proc-macro-error-attr2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "proc-macro-error2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" -dependencies = [ - "proc-macro-error-attr2", - "proc-macro2", - "quote", - "syn 2.0.117", -] - [[package]] name = "proc-macro2" version = "1.0.106" @@ -1798,18 +1799,18 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.44" +version = "1.0.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" +checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" dependencies = [ "proc-macro2", ] [[package]] name = "rand" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" dependencies = [ "rand_core 0.6.4", ] @@ -1844,9 +1845,9 @@ checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" [[package]] name = "regex" -version = "1.12.3" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +checksum = "2a0e75113e14dc5acb068cd0786884f214f1312650a3d36d269f5c4f3cdee8a2" dependencies = [ "aho-corasick", "memchr", @@ -1856,9 +1857,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +checksum = "1f388202e4b80542a0921078cc23b6333bcf1409c1e3f86404cae4766a6131db" dependencies = [ "aho-corasick", "memchr", @@ -1867,9 +1868,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rmk" @@ -1879,7 +1880,7 @@ dependencies = [ "byteorder", "cortex-m", "crc32fast", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -1893,7 +1894,7 @@ dependencies = [ "embedded-storage", "embedded-storage-async", "futures", - "heapless 0.9.2", + "heapless 0.9.3", "paste", "postcard", "rmk-macro", @@ -1910,13 +1911,15 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] @@ -1930,7 +1933,7 @@ dependencies = [ "rmk-config", "rmk-types", "strum", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1941,7 +1944,7 @@ dependencies = [ "const-gen", "cortex-m", "cortex-m-rt", - "defmt 1.0.1", + "defmt 1.1.1", "defmt-rtt", "embassy-executor", "embassy-nrf", @@ -1960,22 +1963,22 @@ name = "rmk-types" version = "0.2.2" dependencies = [ "bitfield-struct", - "defmt 1.0.1", - "heapless 0.9.2", + "defmt 1.1.1", + "heapless 0.9.3", "postcard", "rmk-config", "serde", "strum", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] name = "ron" -version = "0.12.0" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd490c5b18261893f14449cbd28cb9c0b637aebf161cd77900bfdedaff21ec32" +checksum = "81116b9531d61eabc41aeb228e4b6b2435bcca3233b98cf3b3077d4e6e9debb3" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "once_cell", "serde", "serde_derive", @@ -1995,9 +1998,9 @@ dependencies = [ [[package]] name = "rustc-hash" -version = "2.1.1" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" +checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d" [[package]] name = "rustc_version" @@ -2014,14 +2017,14 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.27", + "semver 1.0.28", ] [[package]] name = "rustversion" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] name = "scoped-tls" @@ -2059,9 +2062,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.27" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" dependencies = [ "serde", "serde_core", @@ -2075,11 +2078,11 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "sequential-storage" -version = "7.1.0" +version = "7.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4580ee0fa08cd41bee9f5b50ed309877e18735370fd4eef5766cc82863ef772" +checksum = "574e5a379bf43653079b34cb4cf32958404b5f42e0ed5b5adcdff02c2de04d4d" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-storage-async", "postcard", "serde", @@ -2103,7 +2106,7 @@ checksum = "2bf03b7a5281cfd4013bc788d057b0f09fc634397d83bc8973c955bd4f32727a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2135,14 +2138,14 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "serde_json" -version = "1.0.149" +version = "1.0.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" dependencies = [ "itoa", "memchr", @@ -2153,24 +2156,13 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "1.0.4" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" dependencies = [ "serde_core", ] -[[package]] -name = "sha2" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - [[package]] name = "sharded-slab" version = "0.1.7" @@ -2186,17 +2178,29 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "shlex" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" + [[package]] name = "siphasher" -version = "1.0.2" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" + +[[package]] +name = "slab" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] name = "smallvec" -version = "1.15.1" +version = "1.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" [[package]] name = "spin" @@ -2256,7 +2260,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2278,9 +2282,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.117" +version = "2.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" dependencies = [ "proc-macro2", "quote", @@ -2304,7 +2308,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2327,64 +2331,42 @@ dependencies = [ [[package]] name = "toml" -version = "0.9.12+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" -dependencies = [ - "serde_core", - "serde_spanned", - "toml_datetime 0.7.5+spec-1.1.0", - "toml_parser", - "winnow", -] - -[[package]] -name = "toml" -version = "1.0.3+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7614eaf19ad818347db24addfa201729cf2a9b6fdfd9eb0ab870fcacc606c0c" +checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee" dependencies = [ "indexmap", "serde_core", "serde_spanned", - "toml_datetime 1.0.0+spec-1.1.0", + "toml_datetime", "toml_parser", "toml_writer", - "winnow", + "winnow 1.0.3", ] [[package]] name = "toml_datetime" -version = "0.7.5+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" -dependencies = [ - "serde_core", -] - -[[package]] -name = "toml_datetime" -version = "1.0.0+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32c2555c699578a4f59f0cc68e5116c8d7cabbd45e1409b989d4be085b53f13e" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" dependencies = [ "serde_core", ] [[package]] name = "toml_parser" -version = "1.0.9+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ - "winnow", + "winnow 1.0.3", ] [[package]] name = "toml_writer" -version = "1.0.6+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" +checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" [[package]] name = "tracing" @@ -2405,7 +2387,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2455,13 +2437,13 @@ dependencies = [ "aes", "bt-hci", "cmac", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-futures", "embassy-sync", "embassy-time", "embedded-io 0.7.1", "futures", - "heapless 0.9.2", + "heapless 0.9.3", "p256", "rand", "rand_chacha", @@ -2481,7 +2463,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "uuid", ] @@ -2493,9 +2475,9 @@ checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" [[package]] name = "typenum" -version = "1.19.0" +version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" [[package]] name = "ucd-trie" @@ -2511,9 +2493,9 @@ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-segmentation" -version = "1.12.0" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" [[package]] name = "usb-device" @@ -2558,15 +2540,15 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.117", + "syn 2.0.118", "usbd-hid-descriptors", ] [[package]] name = "uuid" -version = "1.21.0" +version = "1.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b672338555252d43fd2240c714dc444b8c6fb0a5c5335e65a07bba7742735ddb" +checksum = "bf80a72845275afea99e7f2b434723d3bc7e38470fcd1c7ed39a599c73319a53" dependencies = [ "js-sys", "wasm-bindgen", @@ -2613,9 +2595,9 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasm-bindgen" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60722a937f594b7fde9adb894d7c092fc1bb6612897c46368d18e7a20208eff2" +checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" dependencies = [ "cfg-if", "once_cell", @@ -2626,9 +2608,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac8c6395094b6b91c4af293f4c79371c163f9a6f56184d2c9a85f5a95f3950" +checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2636,22 +2618,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab3fabce6159dc20728033842636887e4877688ae94382766e00b180abac9d60" +checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de0e091bdb824da87dc01d967388880d017a0a9bc4f3bdc0d86ee9f9336e3bb5" +checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" dependencies = [ "unicode-ident", ] @@ -2682,9 +2664,18 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.14" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" +checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" dependencies = [ "memchr", ] @@ -2700,9 +2691,9 @@ dependencies = [ [[package]] name = "yaml-rust2" -version = "0.10.4" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2462ea039c445496d8793d052e13787f2b90e750b833afee748e601c17621ed9" +checksum = "631a50d867fafb7093e709d75aaee9e0e0d5deb934021fcea25ac2fe09edc51e" dependencies = [ "arraydeque", "encoding_rs", @@ -2711,29 +2702,29 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.39" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db6d35d663eadb6c932438e763b262fe1a70987f9ae936e60158176d710cae4a" +checksum = "b7cbbc0a705a0fd05cc3676525980d2bf5a9bc4adac6d6475209a7887cf59d19" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.39" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4122cd3169e94605190e77839c9a40d40ed048d305bfdc146e7df40ab0f3e517" +checksum = "e2e817b7b52d0c7358d3246da9d69935ebb18116b2b102b4230dac079b4862f5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "zeroize" -version = "1.8.2" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" [[package]] name = "zmij" diff --git a/examples/use_config/nrf52840_ble_split/Cargo.toml b/examples/use_config/nrf52840_ble_split/Cargo.toml index 255210346..50cf3d2e1 100644 --- a/examples/use_config/nrf52840_ble_split/Cargo.toml +++ b/examples/use_config/nrf52840_ble_split/Cargo.toml @@ -10,12 +10,7 @@ edition = "2024" license = "MIT OR Apache-2.0" [dependencies] -rmk = { path = "../../../rmk", features = [ - "nrf52840_ble", - "split", - "async_matrix", - "adafruit_bl", -] } +rmk = { path = "../../../rmk", default-features = false, features = ["defmt", "storage", "vial", "watchdog", "nrf52840_ble", "split", "async_matrix", "adafruit_bl"] } nrf-sdc = { git = "https://github.com/alexmoon/nrf-sdc", rev = "abe49d22ebfc85fae134eb082fbfddf752016a55", features = [ "defmt", "peripheral", diff --git a/examples/use_config/nrf52840_ble_split/keyboard.toml b/examples/use_config/nrf52840_ble_split/keyboard.toml index 02a29c477..49d16ca7b 100644 --- a/examples/use_config/nrf52840_ble_split/keyboard.toml +++ b/examples/use_config/nrf52840_ble_split/keyboard.toml @@ -1,4 +1,5 @@ [keyboard] +# Replace with your keyboard identity. name = "RMK Keyboard" product_name = "RMK Keyboard" vendor_id = 0x4c4b @@ -9,21 +10,31 @@ chip = "nrf52840" [layout] rows = 4 cols = 3 -layers = 2 -keymap = [ - [ - ["A", "B", "C"], - ["Kc1", "Kc2", "Kc3"], - ["LCtrl", "MO(1)", "LShift"], - ["OSL(1)", "LT(2, Kc9)", "LM(1, LShift | LGui)"] - ], - [ - ["TD(1)", "TT(1)", "TG(2)"], - ["TD(0)", "_", "_"], - ["_", "_", "_"], - ["_", "_", "_"] - ], -] +map = """ +(0,0) (0,1) (0,2) +(1,0) (1,1) (1,2) +(2,0) (2,1) (2,2) +(3,0) (3,1) (3,2) +""" + +[keymap] +layers = 3 + +[[keymap.layer]] +keys = """ +A B C +Kc1 Kc2 Kc3 +LCtrl MO(1) LShift +OSL(1) LT(2, Kc9) LM(1, LShift | LGui) +""" + +[[keymap.layer]] +keys = """ +TD(1) TT(1) TG(2) +TD(0) _ _ +_ _ _ +_ _ _ +""" [storage] @@ -56,7 +67,7 @@ hold_timeout = "240ms" gap_timeout = "230ms" [behavior.morse.profiles] -# matrix_map may refer these to override the defaults given in [behavior.morse] for some key positions - this example is a home row mod +# Named [behavior.morse] profiles used by morse keys or tap-hold args. H1 = { permissive_hold = true, unilateral_tap = true, hold_timeout = "250ms", gap_timeout = "250ms" } H2 = { permissive_hold = true, unilateral_tap = true, hold_timeout = "200ms", gap_timeout = "200ms" } @@ -96,7 +107,7 @@ adc_divider_total = 2806 [split.central.matrix] matrix_type = "normal" -# RMK uses col2row as the default matrix diode direction, if you want to use a row2col matrix, add `row2col = true` +# Default diode direction is col2row; set `row2col = true` if needed. # row2col = true row_pins = ["P0_12", "P0_13"] col_pins = ["P0_14", "P0_15"] diff --git a/examples/use_config/nrf52840_ble_split_direct_pin/Cargo.lock b/examples/use_config/nrf52840_ble_split_direct_pin/Cargo.lock index abe028010..47b5dc3a1 100644 --- a/examples/use_config/nrf52840_ble_split_direct_pin/Cargo.lock +++ b/examples/use_config/nrf52840_ble_split_direct_pin/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -48,7 +54,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -62,9 +68,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "az" @@ -93,7 +99,7 @@ version = "0.72.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "cexpr", "clang-sys", "itertools", @@ -103,8 +109,8 @@ dependencies = [ "quote", "regex", "rustc-hash", - "shlex", - "syn 2.0.117", + "shlex 1.3.0", + "syn 2.0.118", ] [[package]] @@ -127,7 +133,7 @@ checksum = "3ca6739863c590881f038d033a146c51ddae239186a4327014839fd864f44ed5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -138,9 +144,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.11.0" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" +checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" dependencies = [ "serde_core", ] @@ -161,12 +167,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f3c66fd0a41a3b3a5906847b1bf5516048ce083e24fa9341a0fa31d3b4cd73d" dependencies = [ "btuuid", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-sync", "embedded-io 0.7.1", "embedded-io-async 0.7.0", "futures-intrusive", - "heapless 0.9.2", + "heapless 0.9.3", "serde", ] @@ -183,9 +189,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.20.2" +version = "3.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" [[package]] name = "bytemuck" @@ -205,19 +211,19 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa61aec073ec94791433ddf3df2323ff9d1711557c2a0eefb0f99cb4f8dca520" dependencies = [ - "semver 1.0.27", + "semver 1.0.28", "serde", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] name = "cc" -version = "1.2.56" +version = "1.2.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2" +checksum = "f5d6cac793997bd970000024b2934968efe83b382de4fdcf4fcb46b6ee4ad996" dependencies = [ "find-msvc-tools", - "shlex", + "shlex 2.0.1", ] [[package]] @@ -278,9 +284,9 @@ dependencies = [ [[package]] name = "config" -version = "0.15.19" +version = "0.15.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b30fa8254caad766fc03cb0ccae691e14bf3bd72bfff27f72802ce729551b3d6" +checksum = "b85f248a4de22d204ceabc6299d89d2c70fbd7f09fea53c06c852369652d8139" dependencies = [ "async-trait", "convert_case 0.6.0", @@ -291,8 +297,8 @@ dependencies = [ "serde-untagged", "serde_core", "serde_json", - "toml 0.9.12+spec-1.1.0", - "winnow", + "toml", + "winnow 1.0.3", "yaml-rust2", ] @@ -399,7 +405,7 @@ checksum = "e37549a379a9e0e6e576fd208ee60394ccb8be963889eebba3ffe0980364f472" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -485,7 +491,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -498,7 +504,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -509,7 +515,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -520,7 +526,7 @@ checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ "darling_core 0.23.0", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -538,14 +544,14 @@ version = "0.3.100" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0963443817029b2024136fc4dd07a5107eb8f977eaf18fcd1fdeb11306b64ad" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] name = "defmt" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "548d977b6da32fa1d1fda2876453da1e7df63ad0304c8b3dae4dbe7b96f39b78" +checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" dependencies = [ "bitflags 1.3.2", "defmt-macros", @@ -553,15 +559,14 @@ dependencies = [ [[package]] name = "defmt-macros" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d4fc12a85bcf441cfe44344c4b72d58493178ce635338a3f3b78943aceb258e" +checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" dependencies = [ "defmt-parser", - "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -575,12 +580,12 @@ dependencies = [ [[package]] name = "defmt-rtt" -version = "1.1.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d5a25c99d89c40f5676bec8cefe0614f17f0f40e916f98e345dae941807f9e" +checksum = "05144944c117db54127a8ac17a3c9a28d55e7047bfddb950bcd20b4a94c79b10" dependencies = [ "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -633,9 +638,9 @@ dependencies = [ [[package]] name = "either" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" [[package]] name = "elliptic-curve" @@ -662,7 +667,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b0641612053b2f34fc250bb63f6630ae75de46e02ade7f457268447081d709ce" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embassy-futures", "embassy-hal-internal 0.4.0", "embassy-sync", @@ -684,7 +689,7 @@ dependencies = [ "cordyceps", "cortex-m", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-executor-macros", "embassy-executor-timer-queue", @@ -699,7 +704,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -714,7 +719,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc2d050bdc5c21e0862a89256ed8029ae6c290a93aecefc73084b3002cdebb01" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -734,7 +739,7 @@ checksum = "568659fc53866d3d85c60fa33723fb751aa69e71507634fc2c19e7649432fb75" dependencies = [ "cortex-m", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "num-traits", ] @@ -761,12 +766,12 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82051f67e8a06a8faebd183f62cfade184c96be68126c5f064abb8223a591ff1" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "cfg-if", "cortex-m", "cortex-m-rt", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -799,11 +804,11 @@ checksum = "7bbd85cf5a5ae56bdf26f618364af642d1d0a4e245cdd75cd9aabda382f65a81" dependencies = [ "cfg-if", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io-async 0.7.0", "futures-core", "futures-sink", - "heapless 0.9.2", + "heapless 0.9.3", ] [[package]] @@ -814,7 +819,7 @@ checksum = "592b0c143ec626e821d4d90da51a2bd91d559d6c442b7c74a47d368c9e23d97a" dependencies = [ "cfg-if", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-time-driver", "embedded-hal 0.2.7", @@ -839,7 +844,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "168297bf80aaf114b3c9ad589bf38b01b3009b9af7f97cd18086c5bbf96f5693" dependencies = [ "embassy-executor-timer-queue", - "heapless 0.9.2", + "heapless 0.9.3", ] [[package]] @@ -848,15 +853,15 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a25746d8b152b72fbf2a217f489a083dbbe243f281f09184a1f2cfbe9bbb245f" dependencies = [ - "bitflags 2.11.0", - "defmt 1.0.1", + "bitflags 2.13.0", + "defmt 1.1.1", "embassy-futures", "embassy-net-driver-channel", "embassy-sync", "embassy-time", "embassy-usb-driver", "embedded-io-async 0.7.0", - "heapless 0.9.2", + "heapless 0.9.3", "ssmarshal", "usbd-hid", ] @@ -867,7 +872,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa675c5f4349b6aa0fcffc4bf9b241f18cd11b97c1f8323273fb9a5449937fbd" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io-async 0.6.1", "embedded-io-async 0.7.0", ] @@ -879,7 +884,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6efd0c0e0b21bcf91b475b8fa47347c1df32c9a99728ae1e1b0e6625862dfd1a" dependencies = [ "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-sync", "embassy-time", "embassy-usb-driver", @@ -915,6 +920,12 @@ dependencies = [ "embedded-hal 1.0.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -927,7 +938,7 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9eb1aa714776b75c7e67e1da744b81a129b3ff919c8712b5e1b32252c1f07cc7" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -945,7 +956,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2564b9f813c544241430e147d8bc454815ef9ac998878d30cc3055449f7fd4c0" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io 0.7.1", ] @@ -987,9 +998,9 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "erased-serde" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e8918065695684b2b0702da20382d5ae6065cf3327bc2d6436bd49a71ce9f3" +checksum = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec" dependencies = [ "serde", "serde_core", @@ -1014,9 +1025,9 @@ checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" [[package]] name = "fixed" -version = "1.30.0" +version = "1.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c566da967934c6c7ee0458a9773de9b2a685bd2ce26a3b28ddfc740e640182f5" +checksum = "9af2cbf772fa6d1c11358f92ef554cb6b386201210bcf0e91fb7fba8a907fb40" dependencies = [ "az", "bytemuck", @@ -1032,9 +1043,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foldhash" -version = "0.1.5" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" [[package]] name = "futures" @@ -1090,7 +1101,7 @@ checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1116,13 +1127,14 @@ dependencies = [ "futures-sink", "futures-task", "pin-project-lite", + "slab", ] [[package]] name = "generator" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52f04ae4152da20c76fe800fa48659201d5cf627c5149ca0b707b69d7eef6cf9" +checksum = "b3b854b0e584ead1a33f18b2fcad7cf7be18b3875c78816b753639aa501513ae" dependencies = [ "cc", "cfg-if", @@ -1218,26 +1230,26 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hashbrown" -version = "0.15.5" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" dependencies = [ "foldhash", ] [[package]] name = "hashbrown" -version = "0.16.1" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" [[package]] name = "hashlink" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" +checksum = "824e001ac4f3012dd16a264bec811403a67ca9deb6c102fc5049b32c4574b35f" dependencies = [ - "hashbrown 0.15.5", + "hashbrown 0.16.1", ] [[package]] @@ -1266,11 +1278,11 @@ dependencies = [ [[package]] name = "heapless" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af2455f757db2b292a9b1768c4b70186d443bcb3b316252d6b540aec1cd89ed" +checksum = "25ba4bd83f9415b58b4ed8dc5714c76e626a105be4646c02630ad730ad3b5aa4" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "hash32 0.3.1", "serde_core", "stable_deref_trait", @@ -1308,12 +1320,12 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "indexmap" -version = "2.13.0" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.16.1", + "hashbrown 0.17.1", ] [[package]] @@ -1336,17 +1348,18 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "js-sys" -version = "0.3.90" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14dc6f6450b3f6d4ed5b16327f38fed626d375a886159ca555bd7822c0c3a5a6" +checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ - "once_cell", + "cfg-if", + "futures-util", "wasm-bindgen", ] @@ -1375,9 +1388,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.182" +version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "libloading" @@ -1406,9 +1419,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.29" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" [[package]] name = "loom" @@ -1445,9 +1458,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.8.0" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" [[package]] name = "minimal-lexical" @@ -1455,6 +1468,15 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] + [[package]] name = "nb" version = "0.1.3" @@ -1488,7 +1510,7 @@ dependencies = [ "cfg-if", "cortex-m", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-nrf", "embassy-sync", "embedded-io 0.7.1", @@ -1523,7 +1545,7 @@ source = "git+https://github.com/alexmoon/nrf-sdc?rev=abe49d22ebfc85fae134eb082f dependencies = [ "bt-hci", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-nrf", "embassy-sync", "embedded-io 0.7.1", @@ -1541,7 +1563,7 @@ dependencies = [ "bindgen", "doxygen-rs", "nrf-mpsl-sys", - "winnow", + "winnow 0.7.15", ] [[package]] @@ -1564,9 +1586,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.21.3" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] name = "ordered-multimap" @@ -1595,7 +1617,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd402d00b0fb94c5aee000029204a46884b1262e0c443f166d86d2c0747e1a1a" dependencies = [ "cortex-m", - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -1612,9 +1634,9 @@ checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" [[package]] name = "pest" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662" +checksum = "47627dd7305c6a2d6c8c6bcd24c5a4c17dbbf425f4f9c5313e724b38fc9782e9" dependencies = [ "memchr", "ucd-trie", @@ -1622,9 +1644,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77" +checksum = "4b4254325ecad416ab689e27ba51da03ba01a9632bc6e108f5fe7c3c4ad29d58" dependencies = [ "pest", "pest_generator", @@ -1632,25 +1654,24 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f" +checksum = "6c4c0e91ead7a8f7acecbca6f003fc2e8282b1dbe2dd9c9d2f16aba42995e0a7" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "pest_meta" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220" +checksum = "f9744bc48116fee06334924bb5f2bad41eed5e89bd26e29b0b799f9a3f82c210" dependencies = [ "pest", - "sha2", ] [[package]] @@ -1683,7 +1704,7 @@ dependencies = [ "phf_shared", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1697,15 +1718,15 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pkg-config" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" [[package]] name = "portable-atomic" @@ -1720,7 +1741,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", - "defmt 1.0.1", + "defmt 1.1.1", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -1734,7 +1757,7 @@ checksum = "e0232bd009a197ceec9cc881ba46f727fcd8060a2d8d6a9dde7a69030a6fe2bb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1753,7 +1776,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1765,28 +1788,6 @@ dependencies = [ "elliptic-curve", ] -[[package]] -name = "proc-macro-error-attr2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "proc-macro-error2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" -dependencies = [ - "proc-macro-error-attr2", - "proc-macro2", - "quote", - "syn 2.0.117", -] - [[package]] name = "proc-macro2" version = "1.0.106" @@ -1798,18 +1799,18 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.44" +version = "1.0.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" +checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" dependencies = [ "proc-macro2", ] [[package]] name = "rand" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" dependencies = [ "rand_core 0.6.4", ] @@ -1844,9 +1845,9 @@ checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" [[package]] name = "regex" -version = "1.12.3" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +checksum = "2a0e75113e14dc5acb068cd0786884f214f1312650a3d36d269f5c4f3cdee8a2" dependencies = [ "aho-corasick", "memchr", @@ -1856,9 +1857,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +checksum = "1f388202e4b80542a0921078cc23b6333bcf1409c1e3f86404cae4766a6131db" dependencies = [ "aho-corasick", "memchr", @@ -1867,9 +1868,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rmk" @@ -1879,7 +1880,7 @@ dependencies = [ "byteorder", "cortex-m", "crc32fast", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -1893,7 +1894,7 @@ dependencies = [ "embedded-storage", "embedded-storage-async", "futures", - "heapless 0.9.2", + "heapless 0.9.3", "paste", "postcard", "rmk-macro", @@ -1910,13 +1911,15 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] @@ -1930,7 +1933,7 @@ dependencies = [ "rmk-config", "rmk-types", "strum", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1941,7 +1944,7 @@ dependencies = [ "const-gen", "cortex-m", "cortex-m-rt", - "defmt 1.0.1", + "defmt 1.1.1", "defmt-rtt", "embassy-executor", "embassy-nrf", @@ -1960,22 +1963,22 @@ name = "rmk-types" version = "0.2.2" dependencies = [ "bitfield-struct", - "defmt 1.0.1", - "heapless 0.9.2", + "defmt 1.1.1", + "heapless 0.9.3", "postcard", "rmk-config", "serde", "strum", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] name = "ron" -version = "0.12.0" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd490c5b18261893f14449cbd28cb9c0b637aebf161cd77900bfdedaff21ec32" +checksum = "81116b9531d61eabc41aeb228e4b6b2435bcca3233b98cf3b3077d4e6e9debb3" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "once_cell", "serde", "serde_derive", @@ -1995,9 +1998,9 @@ dependencies = [ [[package]] name = "rustc-hash" -version = "2.1.1" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" +checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d" [[package]] name = "rustc_version" @@ -2014,14 +2017,14 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.27", + "semver 1.0.28", ] [[package]] name = "rustversion" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] name = "scoped-tls" @@ -2059,9 +2062,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.27" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" dependencies = [ "serde", "serde_core", @@ -2075,11 +2078,11 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "sequential-storage" -version = "7.1.0" +version = "7.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4580ee0fa08cd41bee9f5b50ed309877e18735370fd4eef5766cc82863ef772" +checksum = "574e5a379bf43653079b34cb4cf32958404b5f42e0ed5b5adcdff02c2de04d4d" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-storage-async", "postcard", "serde", @@ -2103,7 +2106,7 @@ checksum = "2bf03b7a5281cfd4013bc788d057b0f09fc634397d83bc8973c955bd4f32727a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2135,14 +2138,14 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "serde_json" -version = "1.0.149" +version = "1.0.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" dependencies = [ "itoa", "memchr", @@ -2153,24 +2156,13 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "1.0.4" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" dependencies = [ "serde_core", ] -[[package]] -name = "sha2" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - [[package]] name = "sharded-slab" version = "0.1.7" @@ -2186,17 +2178,29 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "shlex" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" + [[package]] name = "siphasher" -version = "1.0.2" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" + +[[package]] +name = "slab" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] name = "smallvec" -version = "1.15.1" +version = "1.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" [[package]] name = "spin" @@ -2256,7 +2260,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2278,9 +2282,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.117" +version = "2.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" dependencies = [ "proc-macro2", "quote", @@ -2304,7 +2308,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2327,64 +2331,42 @@ dependencies = [ [[package]] name = "toml" -version = "0.9.12+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" -dependencies = [ - "serde_core", - "serde_spanned", - "toml_datetime 0.7.5+spec-1.1.0", - "toml_parser", - "winnow", -] - -[[package]] -name = "toml" -version = "1.0.3+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7614eaf19ad818347db24addfa201729cf2a9b6fdfd9eb0ab870fcacc606c0c" +checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee" dependencies = [ "indexmap", "serde_core", "serde_spanned", - "toml_datetime 1.0.0+spec-1.1.0", + "toml_datetime", "toml_parser", "toml_writer", - "winnow", + "winnow 1.0.3", ] [[package]] name = "toml_datetime" -version = "0.7.5+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" -dependencies = [ - "serde_core", -] - -[[package]] -name = "toml_datetime" -version = "1.0.0+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32c2555c699578a4f59f0cc68e5116c8d7cabbd45e1409b989d4be085b53f13e" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" dependencies = [ "serde_core", ] [[package]] name = "toml_parser" -version = "1.0.9+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ - "winnow", + "winnow 1.0.3", ] [[package]] name = "toml_writer" -version = "1.0.6+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" +checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" [[package]] name = "tracing" @@ -2405,7 +2387,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2455,13 +2437,13 @@ dependencies = [ "aes", "bt-hci", "cmac", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-futures", "embassy-sync", "embassy-time", "embedded-io 0.7.1", "futures", - "heapless 0.9.2", + "heapless 0.9.3", "p256", "rand", "rand_chacha", @@ -2481,7 +2463,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "uuid", ] @@ -2493,9 +2475,9 @@ checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" [[package]] name = "typenum" -version = "1.19.0" +version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" [[package]] name = "ucd-trie" @@ -2511,9 +2493,9 @@ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-segmentation" -version = "1.12.0" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" [[package]] name = "usb-device" @@ -2558,15 +2540,15 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.117", + "syn 2.0.118", "usbd-hid-descriptors", ] [[package]] name = "uuid" -version = "1.21.0" +version = "1.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b672338555252d43fd2240c714dc444b8c6fb0a5c5335e65a07bba7742735ddb" +checksum = "bf80a72845275afea99e7f2b434723d3bc7e38470fcd1c7ed39a599c73319a53" dependencies = [ "js-sys", "wasm-bindgen", @@ -2613,9 +2595,9 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasm-bindgen" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60722a937f594b7fde9adb894d7c092fc1bb6612897c46368d18e7a20208eff2" +checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" dependencies = [ "cfg-if", "once_cell", @@ -2626,9 +2608,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac8c6395094b6b91c4af293f4c79371c163f9a6f56184d2c9a85f5a95f3950" +checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2636,22 +2618,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab3fabce6159dc20728033842636887e4877688ae94382766e00b180abac9d60" +checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de0e091bdb824da87dc01d967388880d017a0a9bc4f3bdc0d86ee9f9336e3bb5" +checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" dependencies = [ "unicode-ident", ] @@ -2682,9 +2664,18 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.14" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" +checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" dependencies = [ "memchr", ] @@ -2700,9 +2691,9 @@ dependencies = [ [[package]] name = "yaml-rust2" -version = "0.10.4" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2462ea039c445496d8793d052e13787f2b90e750b833afee748e601c17621ed9" +checksum = "631a50d867fafb7093e709d75aaee9e0e0d5deb934021fcea25ac2fe09edc51e" dependencies = [ "arraydeque", "encoding_rs", @@ -2711,29 +2702,29 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.39" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db6d35d663eadb6c932438e763b262fe1a70987f9ae936e60158176d710cae4a" +checksum = "b7cbbc0a705a0fd05cc3676525980d2bf5a9bc4adac6d6475209a7887cf59d19" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.39" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4122cd3169e94605190e77839c9a40d40ed048d305bfdc146e7df40ab0f3e517" +checksum = "e2e817b7b52d0c7358d3246da9d69935ebb18116b2b102b4230dac079b4862f5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "zeroize" -version = "1.8.2" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" [[package]] name = "zmij" diff --git a/examples/use_config/nrf52840_ble_split_direct_pin/Cargo.toml b/examples/use_config/nrf52840_ble_split_direct_pin/Cargo.toml index 255210346..50cf3d2e1 100644 --- a/examples/use_config/nrf52840_ble_split_direct_pin/Cargo.toml +++ b/examples/use_config/nrf52840_ble_split_direct_pin/Cargo.toml @@ -10,12 +10,7 @@ edition = "2024" license = "MIT OR Apache-2.0" [dependencies] -rmk = { path = "../../../rmk", features = [ - "nrf52840_ble", - "split", - "async_matrix", - "adafruit_bl", -] } +rmk = { path = "../../../rmk", default-features = false, features = ["defmt", "storage", "vial", "watchdog", "nrf52840_ble", "split", "async_matrix", "adafruit_bl"] } nrf-sdc = { git = "https://github.com/alexmoon/nrf-sdc", rev = "abe49d22ebfc85fae134eb082fbfddf752016a55", features = [ "defmt", "peripheral", diff --git a/examples/use_config/nrf52840_ble_split_direct_pin/keyboard.toml b/examples/use_config/nrf52840_ble_split_direct_pin/keyboard.toml index da49b93e3..0c39f9d6c 100644 --- a/examples/use_config/nrf52840_ble_split_direct_pin/keyboard.toml +++ b/examples/use_config/nrf52840_ble_split_direct_pin/keyboard.toml @@ -1,4 +1,5 @@ [keyboard] +# Replace with your keyboard identity. name = "RMK Keyboard" product_name = "RMK Keyboard" vendor_id = 0x4c4b @@ -9,21 +10,31 @@ chip = "nrf52840" [layout] rows = 4 cols = 3 -layers = 2 -keymap = [ - [ - ["A", "B", "C"], - ["Kc1", "Kc2", "Kc3"], - ["LCtrl", "MO(1)", "LShift"], - ["OSL(1)", "LT(2, Kc9)", "LM(1, LShift | LGui)"] - ], - [ - ["_", "TT(1)", "TG(2)"], - ["_", "_", "_"], - ["_", "_", "_"], - ["_", "_", "_"] - ], -] +map = """ +(0,0) (0,1) (0,2) +(1,0) (1,1) (1,2) +(2,0) (2,1) (2,2) +(3,0) (3,1) (3,2) +""" + +[keymap] +layers = 3 + +[[keymap.layer]] # layer 0 +keys = """ +A B C +Kc1 Kc2 Kc3 +LCtrl MO(1) LShift +OSL(1) LT(2, Kc9) LM(1, LShift | LGui) +""" + +[[keymap.layer]] # layer 1 +keys = """ +_ TT(1) TG(2) +_ _ _ +_ _ _ +_ _ _ +""" [storage] diff --git a/examples/use_config/nrf52840_ble_split_dongle/Cargo.lock b/examples/use_config/nrf52840_ble_split_dongle/Cargo.lock index abe028010..47b5dc3a1 100644 --- a/examples/use_config/nrf52840_ble_split_dongle/Cargo.lock +++ b/examples/use_config/nrf52840_ble_split_dongle/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -48,7 +54,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -62,9 +68,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "az" @@ -93,7 +99,7 @@ version = "0.72.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "cexpr", "clang-sys", "itertools", @@ -103,8 +109,8 @@ dependencies = [ "quote", "regex", "rustc-hash", - "shlex", - "syn 2.0.117", + "shlex 1.3.0", + "syn 2.0.118", ] [[package]] @@ -127,7 +133,7 @@ checksum = "3ca6739863c590881f038d033a146c51ddae239186a4327014839fd864f44ed5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -138,9 +144,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.11.0" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" +checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" dependencies = [ "serde_core", ] @@ -161,12 +167,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f3c66fd0a41a3b3a5906847b1bf5516048ce083e24fa9341a0fa31d3b4cd73d" dependencies = [ "btuuid", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-sync", "embedded-io 0.7.1", "embedded-io-async 0.7.0", "futures-intrusive", - "heapless 0.9.2", + "heapless 0.9.3", "serde", ] @@ -183,9 +189,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.20.2" +version = "3.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" [[package]] name = "bytemuck" @@ -205,19 +211,19 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa61aec073ec94791433ddf3df2323ff9d1711557c2a0eefb0f99cb4f8dca520" dependencies = [ - "semver 1.0.27", + "semver 1.0.28", "serde", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] name = "cc" -version = "1.2.56" +version = "1.2.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2" +checksum = "f5d6cac793997bd970000024b2934968efe83b382de4fdcf4fcb46b6ee4ad996" dependencies = [ "find-msvc-tools", - "shlex", + "shlex 2.0.1", ] [[package]] @@ -278,9 +284,9 @@ dependencies = [ [[package]] name = "config" -version = "0.15.19" +version = "0.15.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b30fa8254caad766fc03cb0ccae691e14bf3bd72bfff27f72802ce729551b3d6" +checksum = "b85f248a4de22d204ceabc6299d89d2c70fbd7f09fea53c06c852369652d8139" dependencies = [ "async-trait", "convert_case 0.6.0", @@ -291,8 +297,8 @@ dependencies = [ "serde-untagged", "serde_core", "serde_json", - "toml 0.9.12+spec-1.1.0", - "winnow", + "toml", + "winnow 1.0.3", "yaml-rust2", ] @@ -399,7 +405,7 @@ checksum = "e37549a379a9e0e6e576fd208ee60394ccb8be963889eebba3ffe0980364f472" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -485,7 +491,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -498,7 +504,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -509,7 +515,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -520,7 +526,7 @@ checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ "darling_core 0.23.0", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -538,14 +544,14 @@ version = "0.3.100" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0963443817029b2024136fc4dd07a5107eb8f977eaf18fcd1fdeb11306b64ad" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] name = "defmt" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "548d977b6da32fa1d1fda2876453da1e7df63ad0304c8b3dae4dbe7b96f39b78" +checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" dependencies = [ "bitflags 1.3.2", "defmt-macros", @@ -553,15 +559,14 @@ dependencies = [ [[package]] name = "defmt-macros" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d4fc12a85bcf441cfe44344c4b72d58493178ce635338a3f3b78943aceb258e" +checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" dependencies = [ "defmt-parser", - "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -575,12 +580,12 @@ dependencies = [ [[package]] name = "defmt-rtt" -version = "1.1.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d5a25c99d89c40f5676bec8cefe0614f17f0f40e916f98e345dae941807f9e" +checksum = "05144944c117db54127a8ac17a3c9a28d55e7047bfddb950bcd20b4a94c79b10" dependencies = [ "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -633,9 +638,9 @@ dependencies = [ [[package]] name = "either" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" [[package]] name = "elliptic-curve" @@ -662,7 +667,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b0641612053b2f34fc250bb63f6630ae75de46e02ade7f457268447081d709ce" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embassy-futures", "embassy-hal-internal 0.4.0", "embassy-sync", @@ -684,7 +689,7 @@ dependencies = [ "cordyceps", "cortex-m", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-executor-macros", "embassy-executor-timer-queue", @@ -699,7 +704,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -714,7 +719,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc2d050bdc5c21e0862a89256ed8029ae6c290a93aecefc73084b3002cdebb01" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -734,7 +739,7 @@ checksum = "568659fc53866d3d85c60fa33723fb751aa69e71507634fc2c19e7649432fb75" dependencies = [ "cortex-m", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "num-traits", ] @@ -761,12 +766,12 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82051f67e8a06a8faebd183f62cfade184c96be68126c5f064abb8223a591ff1" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "cfg-if", "cortex-m", "cortex-m-rt", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -799,11 +804,11 @@ checksum = "7bbd85cf5a5ae56bdf26f618364af642d1d0a4e245cdd75cd9aabda382f65a81" dependencies = [ "cfg-if", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io-async 0.7.0", "futures-core", "futures-sink", - "heapless 0.9.2", + "heapless 0.9.3", ] [[package]] @@ -814,7 +819,7 @@ checksum = "592b0c143ec626e821d4d90da51a2bd91d559d6c442b7c74a47d368c9e23d97a" dependencies = [ "cfg-if", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-time-driver", "embedded-hal 0.2.7", @@ -839,7 +844,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "168297bf80aaf114b3c9ad589bf38b01b3009b9af7f97cd18086c5bbf96f5693" dependencies = [ "embassy-executor-timer-queue", - "heapless 0.9.2", + "heapless 0.9.3", ] [[package]] @@ -848,15 +853,15 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a25746d8b152b72fbf2a217f489a083dbbe243f281f09184a1f2cfbe9bbb245f" dependencies = [ - "bitflags 2.11.0", - "defmt 1.0.1", + "bitflags 2.13.0", + "defmt 1.1.1", "embassy-futures", "embassy-net-driver-channel", "embassy-sync", "embassy-time", "embassy-usb-driver", "embedded-io-async 0.7.0", - "heapless 0.9.2", + "heapless 0.9.3", "ssmarshal", "usbd-hid", ] @@ -867,7 +872,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa675c5f4349b6aa0fcffc4bf9b241f18cd11b97c1f8323273fb9a5449937fbd" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io-async 0.6.1", "embedded-io-async 0.7.0", ] @@ -879,7 +884,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6efd0c0e0b21bcf91b475b8fa47347c1df32c9a99728ae1e1b0e6625862dfd1a" dependencies = [ "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-sync", "embassy-time", "embassy-usb-driver", @@ -915,6 +920,12 @@ dependencies = [ "embedded-hal 1.0.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -927,7 +938,7 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9eb1aa714776b75c7e67e1da744b81a129b3ff919c8712b5e1b32252c1f07cc7" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -945,7 +956,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2564b9f813c544241430e147d8bc454815ef9ac998878d30cc3055449f7fd4c0" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io 0.7.1", ] @@ -987,9 +998,9 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "erased-serde" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e8918065695684b2b0702da20382d5ae6065cf3327bc2d6436bd49a71ce9f3" +checksum = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec" dependencies = [ "serde", "serde_core", @@ -1014,9 +1025,9 @@ checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" [[package]] name = "fixed" -version = "1.30.0" +version = "1.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c566da967934c6c7ee0458a9773de9b2a685bd2ce26a3b28ddfc740e640182f5" +checksum = "9af2cbf772fa6d1c11358f92ef554cb6b386201210bcf0e91fb7fba8a907fb40" dependencies = [ "az", "bytemuck", @@ -1032,9 +1043,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foldhash" -version = "0.1.5" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" [[package]] name = "futures" @@ -1090,7 +1101,7 @@ checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1116,13 +1127,14 @@ dependencies = [ "futures-sink", "futures-task", "pin-project-lite", + "slab", ] [[package]] name = "generator" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52f04ae4152da20c76fe800fa48659201d5cf627c5149ca0b707b69d7eef6cf9" +checksum = "b3b854b0e584ead1a33f18b2fcad7cf7be18b3875c78816b753639aa501513ae" dependencies = [ "cc", "cfg-if", @@ -1218,26 +1230,26 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hashbrown" -version = "0.15.5" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" dependencies = [ "foldhash", ] [[package]] name = "hashbrown" -version = "0.16.1" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" [[package]] name = "hashlink" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" +checksum = "824e001ac4f3012dd16a264bec811403a67ca9deb6c102fc5049b32c4574b35f" dependencies = [ - "hashbrown 0.15.5", + "hashbrown 0.16.1", ] [[package]] @@ -1266,11 +1278,11 @@ dependencies = [ [[package]] name = "heapless" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af2455f757db2b292a9b1768c4b70186d443bcb3b316252d6b540aec1cd89ed" +checksum = "25ba4bd83f9415b58b4ed8dc5714c76e626a105be4646c02630ad730ad3b5aa4" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "hash32 0.3.1", "serde_core", "stable_deref_trait", @@ -1308,12 +1320,12 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "indexmap" -version = "2.13.0" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.16.1", + "hashbrown 0.17.1", ] [[package]] @@ -1336,17 +1348,18 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "js-sys" -version = "0.3.90" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14dc6f6450b3f6d4ed5b16327f38fed626d375a886159ca555bd7822c0c3a5a6" +checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ - "once_cell", + "cfg-if", + "futures-util", "wasm-bindgen", ] @@ -1375,9 +1388,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.182" +version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "libloading" @@ -1406,9 +1419,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.29" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" [[package]] name = "loom" @@ -1445,9 +1458,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.8.0" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" [[package]] name = "minimal-lexical" @@ -1455,6 +1468,15 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] + [[package]] name = "nb" version = "0.1.3" @@ -1488,7 +1510,7 @@ dependencies = [ "cfg-if", "cortex-m", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-nrf", "embassy-sync", "embedded-io 0.7.1", @@ -1523,7 +1545,7 @@ source = "git+https://github.com/alexmoon/nrf-sdc?rev=abe49d22ebfc85fae134eb082f dependencies = [ "bt-hci", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-nrf", "embassy-sync", "embedded-io 0.7.1", @@ -1541,7 +1563,7 @@ dependencies = [ "bindgen", "doxygen-rs", "nrf-mpsl-sys", - "winnow", + "winnow 0.7.15", ] [[package]] @@ -1564,9 +1586,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.21.3" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] name = "ordered-multimap" @@ -1595,7 +1617,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd402d00b0fb94c5aee000029204a46884b1262e0c443f166d86d2c0747e1a1a" dependencies = [ "cortex-m", - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -1612,9 +1634,9 @@ checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" [[package]] name = "pest" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662" +checksum = "47627dd7305c6a2d6c8c6bcd24c5a4c17dbbf425f4f9c5313e724b38fc9782e9" dependencies = [ "memchr", "ucd-trie", @@ -1622,9 +1644,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77" +checksum = "4b4254325ecad416ab689e27ba51da03ba01a9632bc6e108f5fe7c3c4ad29d58" dependencies = [ "pest", "pest_generator", @@ -1632,25 +1654,24 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f" +checksum = "6c4c0e91ead7a8f7acecbca6f003fc2e8282b1dbe2dd9c9d2f16aba42995e0a7" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "pest_meta" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220" +checksum = "f9744bc48116fee06334924bb5f2bad41eed5e89bd26e29b0b799f9a3f82c210" dependencies = [ "pest", - "sha2", ] [[package]] @@ -1683,7 +1704,7 @@ dependencies = [ "phf_shared", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1697,15 +1718,15 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pkg-config" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" [[package]] name = "portable-atomic" @@ -1720,7 +1741,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", - "defmt 1.0.1", + "defmt 1.1.1", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -1734,7 +1757,7 @@ checksum = "e0232bd009a197ceec9cc881ba46f727fcd8060a2d8d6a9dde7a69030a6fe2bb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1753,7 +1776,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1765,28 +1788,6 @@ dependencies = [ "elliptic-curve", ] -[[package]] -name = "proc-macro-error-attr2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "proc-macro-error2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" -dependencies = [ - "proc-macro-error-attr2", - "proc-macro2", - "quote", - "syn 2.0.117", -] - [[package]] name = "proc-macro2" version = "1.0.106" @@ -1798,18 +1799,18 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.44" +version = "1.0.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" +checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" dependencies = [ "proc-macro2", ] [[package]] name = "rand" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" dependencies = [ "rand_core 0.6.4", ] @@ -1844,9 +1845,9 @@ checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" [[package]] name = "regex" -version = "1.12.3" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +checksum = "2a0e75113e14dc5acb068cd0786884f214f1312650a3d36d269f5c4f3cdee8a2" dependencies = [ "aho-corasick", "memchr", @@ -1856,9 +1857,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +checksum = "1f388202e4b80542a0921078cc23b6333bcf1409c1e3f86404cae4766a6131db" dependencies = [ "aho-corasick", "memchr", @@ -1867,9 +1868,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rmk" @@ -1879,7 +1880,7 @@ dependencies = [ "byteorder", "cortex-m", "crc32fast", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -1893,7 +1894,7 @@ dependencies = [ "embedded-storage", "embedded-storage-async", "futures", - "heapless 0.9.2", + "heapless 0.9.3", "paste", "postcard", "rmk-macro", @@ -1910,13 +1911,15 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] @@ -1930,7 +1933,7 @@ dependencies = [ "rmk-config", "rmk-types", "strum", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1941,7 +1944,7 @@ dependencies = [ "const-gen", "cortex-m", "cortex-m-rt", - "defmt 1.0.1", + "defmt 1.1.1", "defmt-rtt", "embassy-executor", "embassy-nrf", @@ -1960,22 +1963,22 @@ name = "rmk-types" version = "0.2.2" dependencies = [ "bitfield-struct", - "defmt 1.0.1", - "heapless 0.9.2", + "defmt 1.1.1", + "heapless 0.9.3", "postcard", "rmk-config", "serde", "strum", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] name = "ron" -version = "0.12.0" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd490c5b18261893f14449cbd28cb9c0b637aebf161cd77900bfdedaff21ec32" +checksum = "81116b9531d61eabc41aeb228e4b6b2435bcca3233b98cf3b3077d4e6e9debb3" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "once_cell", "serde", "serde_derive", @@ -1995,9 +1998,9 @@ dependencies = [ [[package]] name = "rustc-hash" -version = "2.1.1" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" +checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d" [[package]] name = "rustc_version" @@ -2014,14 +2017,14 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.27", + "semver 1.0.28", ] [[package]] name = "rustversion" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] name = "scoped-tls" @@ -2059,9 +2062,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.27" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" dependencies = [ "serde", "serde_core", @@ -2075,11 +2078,11 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "sequential-storage" -version = "7.1.0" +version = "7.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4580ee0fa08cd41bee9f5b50ed309877e18735370fd4eef5766cc82863ef772" +checksum = "574e5a379bf43653079b34cb4cf32958404b5f42e0ed5b5adcdff02c2de04d4d" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-storage-async", "postcard", "serde", @@ -2103,7 +2106,7 @@ checksum = "2bf03b7a5281cfd4013bc788d057b0f09fc634397d83bc8973c955bd4f32727a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2135,14 +2138,14 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "serde_json" -version = "1.0.149" +version = "1.0.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" dependencies = [ "itoa", "memchr", @@ -2153,24 +2156,13 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "1.0.4" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" dependencies = [ "serde_core", ] -[[package]] -name = "sha2" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - [[package]] name = "sharded-slab" version = "0.1.7" @@ -2186,17 +2178,29 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "shlex" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" + [[package]] name = "siphasher" -version = "1.0.2" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" + +[[package]] +name = "slab" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] name = "smallvec" -version = "1.15.1" +version = "1.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" [[package]] name = "spin" @@ -2256,7 +2260,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2278,9 +2282,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.117" +version = "2.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" dependencies = [ "proc-macro2", "quote", @@ -2304,7 +2308,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2327,64 +2331,42 @@ dependencies = [ [[package]] name = "toml" -version = "0.9.12+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" -dependencies = [ - "serde_core", - "serde_spanned", - "toml_datetime 0.7.5+spec-1.1.0", - "toml_parser", - "winnow", -] - -[[package]] -name = "toml" -version = "1.0.3+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7614eaf19ad818347db24addfa201729cf2a9b6fdfd9eb0ab870fcacc606c0c" +checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee" dependencies = [ "indexmap", "serde_core", "serde_spanned", - "toml_datetime 1.0.0+spec-1.1.0", + "toml_datetime", "toml_parser", "toml_writer", - "winnow", + "winnow 1.0.3", ] [[package]] name = "toml_datetime" -version = "0.7.5+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" -dependencies = [ - "serde_core", -] - -[[package]] -name = "toml_datetime" -version = "1.0.0+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32c2555c699578a4f59f0cc68e5116c8d7cabbd45e1409b989d4be085b53f13e" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" dependencies = [ "serde_core", ] [[package]] name = "toml_parser" -version = "1.0.9+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ - "winnow", + "winnow 1.0.3", ] [[package]] name = "toml_writer" -version = "1.0.6+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" +checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" [[package]] name = "tracing" @@ -2405,7 +2387,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2455,13 +2437,13 @@ dependencies = [ "aes", "bt-hci", "cmac", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-futures", "embassy-sync", "embassy-time", "embedded-io 0.7.1", "futures", - "heapless 0.9.2", + "heapless 0.9.3", "p256", "rand", "rand_chacha", @@ -2481,7 +2463,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "uuid", ] @@ -2493,9 +2475,9 @@ checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" [[package]] name = "typenum" -version = "1.19.0" +version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" [[package]] name = "ucd-trie" @@ -2511,9 +2493,9 @@ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-segmentation" -version = "1.12.0" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" [[package]] name = "usb-device" @@ -2558,15 +2540,15 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.117", + "syn 2.0.118", "usbd-hid-descriptors", ] [[package]] name = "uuid" -version = "1.21.0" +version = "1.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b672338555252d43fd2240c714dc444b8c6fb0a5c5335e65a07bba7742735ddb" +checksum = "bf80a72845275afea99e7f2b434723d3bc7e38470fcd1c7ed39a599c73319a53" dependencies = [ "js-sys", "wasm-bindgen", @@ -2613,9 +2595,9 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasm-bindgen" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60722a937f594b7fde9adb894d7c092fc1bb6612897c46368d18e7a20208eff2" +checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" dependencies = [ "cfg-if", "once_cell", @@ -2626,9 +2608,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac8c6395094b6b91c4af293f4c79371c163f9a6f56184d2c9a85f5a95f3950" +checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2636,22 +2618,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab3fabce6159dc20728033842636887e4877688ae94382766e00b180abac9d60" +checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de0e091bdb824da87dc01d967388880d017a0a9bc4f3bdc0d86ee9f9336e3bb5" +checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" dependencies = [ "unicode-ident", ] @@ -2682,9 +2664,18 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.14" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" +checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" dependencies = [ "memchr", ] @@ -2700,9 +2691,9 @@ dependencies = [ [[package]] name = "yaml-rust2" -version = "0.10.4" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2462ea039c445496d8793d052e13787f2b90e750b833afee748e601c17621ed9" +checksum = "631a50d867fafb7093e709d75aaee9e0e0d5deb934021fcea25ac2fe09edc51e" dependencies = [ "arraydeque", "encoding_rs", @@ -2711,29 +2702,29 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.39" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db6d35d663eadb6c932438e763b262fe1a70987f9ae936e60158176d710cae4a" +checksum = "b7cbbc0a705a0fd05cc3676525980d2bf5a9bc4adac6d6475209a7887cf59d19" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.39" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4122cd3169e94605190e77839c9a40d40ed048d305bfdc146e7df40ab0f3e517" +checksum = "e2e817b7b52d0c7358d3246da9d69935ebb18116b2b102b4230dac079b4862f5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "zeroize" -version = "1.8.2" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" [[package]] name = "zmij" diff --git a/examples/use_config/nrf52840_ble_split_dongle/Cargo.toml b/examples/use_config/nrf52840_ble_split_dongle/Cargo.toml index 8475ba3a4..e2b7dfee1 100644 --- a/examples/use_config/nrf52840_ble_split_dongle/Cargo.toml +++ b/examples/use_config/nrf52840_ble_split_dongle/Cargo.toml @@ -10,12 +10,7 @@ edition = "2024" license = "MIT OR Apache-2.0" [dependencies] -rmk = { path = "../../../rmk", features = [ - "nrf52840_ble", - "split", - "async_matrix", - "adafruit_bl", -] } +rmk = { path = "../../../rmk", default-features = false, features = ["defmt", "storage", "vial", "watchdog", "nrf52840_ble", "split", "async_matrix", "adafruit_bl"] } nrf-sdc = { git = "https://github.com/alexmoon/nrf-sdc", rev = "abe49d22ebfc85fae134eb082fbfddf752016a55", features = [ "defmt", "peripheral", diff --git a/examples/use_config/nrf52840_ble_split_dongle/keyboard.toml b/examples/use_config/nrf52840_ble_split_dongle/keyboard.toml index 97cf795a8..def6554b0 100644 --- a/examples/use_config/nrf52840_ble_split_dongle/keyboard.toml +++ b/examples/use_config/nrf52840_ble_split_dongle/keyboard.toml @@ -1,4 +1,5 @@ [keyboard] +# Replace with your keyboard identity. name = "RMK Keyboard" product_name = "RMK Keyboard" vendor_id = 0x4c4b @@ -9,21 +10,31 @@ chip = "nrf52840" [layout] rows = 4 cols = 3 -layers = 2 -keymap = [ - [ - ["A", "B", "C"], - ["Kc1", "Kc2", "Kc3"], - ["LCtrl", "MO(1)", "LShift"], - ["OSL(1)", "LT(2, Kc9)", "LM(1, LShift | LGui)"] - ], - [ - ["TD(1)", "TT(1)", "TG(2)"], - ["TD(0)", "_", "_"], - ["_", "_", "_"], - ["_", "_", "_"] - ], -] +map = """ +(0,0) (0,1) (0,2) +(1,0) (1,1) (1,2) +(2,0) (2,1) (2,2) +(3,0) (3,1) (3,2) +""" + +[keymap] +layers = 3 + +[[keymap.layer]] +keys = """ +A B C +Kc1 Kc2 Kc3 +LCtrl MO(1) LShift +OSL(1) LT(2, Kc9) LM(1, LShift | LGui) +""" + +[[keymap.layer]] +keys = """ +TD(1) TT(1) TG(2) +TD(0) _ _ +_ _ _ +_ _ _ +""" [storage] @@ -45,7 +56,7 @@ hold_timeout = "240ms" gap_timeout = "230ms" [behavior.morse.profiles] -# matrix_map may refer these to override the defaults given in [behavior.morse] for some key positions - this example is a home row mod +# Named [behavior.morse] profiles used by morse keys or tap-hold args. H1 = { permissive_hold = true, unilateral_tap = true, hold_timeout = "250ms", gap_timeout = "250ms" } H2 = { permissive_hold = true, unilateral_tap = true, hold_timeout = "200ms", gap_timeout = "200ms" } @@ -80,7 +91,7 @@ col_offset = 0 [split.central.matrix] matrix_type = "normal" -# RMK uses col2row as the default matrix diode direction, if you want to use a row2col matrix, add `row2col = true` +# Default diode direction is col2row; set `row2col = true` if needed. # row2col = true row_pins = ["P0_12", "P0_13"] col_pins = ["P0_14", "P0_15"] @@ -95,11 +106,12 @@ matrix_type = "normal" row_pins = ["P1_11", "P1_10"] col_pins = ["P0_30"] +# Each peripheral owns a distinct unified-matrix region. [[split.peripheral]] rows = 2 cols = 1 row_offset = 2 -col_offset = 2 +col_offset = 0 [split.peripheral.matrix] matrix_type = "normal" row_pins = ["P1_11", "P1_10"] diff --git a/examples/use_config/nrf52840_embassy_boot/Cargo.lock b/examples/use_config/nrf52840_embassy_boot/Cargo.lock index 2323f0e8d..4f46f03ec 100644 --- a/examples/use_config/nrf52840_embassy_boot/Cargo.lock +++ b/examples/use_config/nrf52840_embassy_boot/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -154,21 +160,6 @@ dependencies = [ "generic-array", ] -[[package]] -name = "bt-hci" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "211713d2e9fb4793ce4360a712c0764264aff6be48932ccf02ca2a331c0436a9" -dependencies = [ - "btuuid", - "defmt 1.1.0", - "embassy-sync", - "embedded-io 0.7.1", - "embedded-io-async 0.7.0", - "futures-intrusive", - "heapless 0.9.3", -] - [[package]] name = "bt-hci" version = "0.9.0" @@ -176,7 +167,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f3c66fd0a41a3b3a5906847b1bf5516048ce083e24fa9341a0fa31d3b4cd73d" dependencies = [ "btuuid", - "defmt 1.1.0", + "defmt 1.1.1", "embassy-sync", "embedded-io 0.7.1", "embedded-io-async 0.7.0", @@ -227,9 +218,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.65" +version = "1.2.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e228eec9be7c17ccb640b59b36a5cd805ea2a564a4c5e162c2f659fea30d3b96" +checksum = "f5d6cac793997bd970000024b2934968efe83b382de4fdcf4fcb46b6ee4ad996" dependencies = [ "find-msvc-tools", "shlex 2.0.1", @@ -554,14 +545,14 @@ version = "0.3.100" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0963443817029b2024136fc4dd07a5107eb8f977eaf18fcd1fdeb11306b64ad" dependencies = [ - "defmt 1.1.0", + "defmt 1.1.1", ] [[package]] name = "defmt" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6e524506490a1953d237cb87b1cfc1e46f88c18f10a22dfe0f507dc6bfc7f7f" +checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" dependencies = [ "bitflags 1.3.2", "defmt-macros", @@ -569,12 +560,11 @@ dependencies = [ [[package]] name = "defmt-macros" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0a27770e9c8f719a79d8b638281f4d828f77d8fd61e0bd94451b9b85e576a0b" +checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" dependencies = [ "defmt-parser", - "proc-macro-error2", "proc-macro2", "quote", "syn 2.0.118", @@ -591,12 +581,12 @@ dependencies = [ [[package]] name = "defmt-rtt" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0f73a4a4a91609e977ae3b7bd831ffa292edfd42ad140a3244a61d805b0e05e" +checksum = "05144944c117db54127a8ac17a3c9a28d55e7047bfddb950bcd20b4a94c79b10" dependencies = [ "critical-section", - "defmt 1.1.0", + "defmt 1.1.1", ] [[package]] @@ -693,7 +683,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b0641612053b2f34fc250bb63f6630ae75de46e02ade7f457268447081d709ce" dependencies = [ - "defmt 1.1.0", + "defmt 1.1.1", "embassy-futures", "embassy-hal-internal 0.4.0", "embassy-sync", @@ -715,7 +705,7 @@ dependencies = [ "cordyceps", "cortex-m", "critical-section", - "defmt 1.1.0", + "defmt 1.1.1", "document-features", "embassy-executor-macros", "embassy-executor-timer-queue", @@ -745,7 +735,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc2d050bdc5c21e0862a89256ed8029ae6c290a93aecefc73084b3002cdebb01" dependencies = [ - "defmt 1.1.0", + "defmt 1.1.1", ] [[package]] @@ -765,7 +755,7 @@ checksum = "568659fc53866d3d85c60fa33723fb751aa69e71507634fc2c19e7649432fb75" dependencies = [ "cortex-m", "critical-section", - "defmt 1.1.0", + "defmt 1.1.1", "num-traits", ] @@ -797,7 +787,7 @@ dependencies = [ "cortex-m", "cortex-m-rt", "critical-section", - "defmt 1.1.0", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -830,7 +820,7 @@ checksum = "7bbd85cf5a5ae56bdf26f618364af642d1d0a4e245cdd75cd9aabda382f65a81" dependencies = [ "cfg-if", "critical-section", - "defmt 1.1.0", + "defmt 1.1.1", "embedded-io-async 0.7.0", "futures-core", "futures-sink", @@ -845,7 +835,7 @@ checksum = "592b0c143ec626e821d4d90da51a2bd91d559d6c442b7c74a47d368c9e23d97a" dependencies = [ "cfg-if", "critical-section", - "defmt 1.1.0", + "defmt 1.1.1", "document-features", "embassy-time-driver", "embedded-hal 0.2.7", @@ -880,7 +870,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a25746d8b152b72fbf2a217f489a083dbbe243f281f09184a1f2cfbe9bbb245f" dependencies = [ "bitflags 2.13.0", - "defmt 1.1.0", + "defmt 1.1.1", "embassy-futures", "embassy-net-driver-channel", "embassy-sync", @@ -914,7 +904,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa675c5f4349b6aa0fcffc4bf9b241f18cd11b97c1f8323273fb9a5449937fbd" dependencies = [ - "defmt 1.1.0", + "defmt 1.1.1", "embedded-io-async 0.6.1", "embedded-io-async 0.7.0", ] @@ -926,7 +916,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6efd0c0e0b21bcf91b475b8fa47347c1df32c9a99728ae1e1b0e6625862dfd1a" dependencies = [ "critical-section", - "defmt 1.1.0", + "defmt 1.1.1", "embassy-sync", "embassy-time", "embassy-usb-driver", @@ -962,6 +952,12 @@ dependencies = [ "embedded-hal 1.0.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -974,7 +970,7 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9eb1aa714776b75c7e67e1da744b81a129b3ff919c8712b5e1b32252c1f07cc7" dependencies = [ - "defmt 1.1.0", + "defmt 1.1.1", ] [[package]] @@ -992,7 +988,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2564b9f813c544241430e147d8bc454815ef9ac998878d30cc3055449f7fd4c0" dependencies = [ - "defmt 1.1.0", + "defmt 1.1.1", "embedded-io 0.7.1", ] @@ -1318,7 +1314,7 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "25ba4bd83f9415b58b4ed8dc5714c76e626a105be4646c02630ad730ad3b5aa4" dependencies = [ - "defmt 1.1.0", + "defmt 1.1.1", "hash32 0.3.1", "serde_core", "stable_deref_trait", @@ -1494,9 +1490,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.8.2" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" [[package]] name = "minimal-lexical" @@ -1504,6 +1500,15 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] + [[package]] name = "nb" version = "0.1.3" @@ -1536,7 +1541,7 @@ source = "git+https://github.com/alexmoon/nrf-sdc?rev=abe49d22ebfc85fae134eb082f dependencies = [ "cfg-if", "cortex-m", - "defmt 1.1.0", + "defmt 1.1.1", "embassy-nrf", "embassy-sync", "embedded-io 0.7.1", @@ -1569,9 +1574,9 @@ name = "nrf-sdc" version = "0.4.0" source = "git+https://github.com/alexmoon/nrf-sdc?rev=abe49d22ebfc85fae134eb082fbfddf752016a55#abe49d22ebfc85fae134eb082fbfddf752016a55" dependencies = [ - "bt-hci 0.9.0", + "bt-hci", "critical-section", - "defmt 1.1.0", + "defmt 1.1.1", "embassy-nrf", "embassy-sync", "embedded-io 0.7.1", @@ -1643,7 +1648,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd402d00b0fb94c5aee000029204a46884b1262e0c443f166d86d2c0747e1a1a" dependencies = [ "cortex-m", - "defmt 1.1.0", + "defmt 1.1.1", ] [[package]] @@ -1660,9 +1665,9 @@ checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" [[package]] name = "pest" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662" +checksum = "47627dd7305c6a2d6c8c6bcd24c5a4c17dbbf425f4f9c5313e724b38fc9782e9" dependencies = [ "memchr", "ucd-trie", @@ -1670,9 +1675,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77" +checksum = "4b4254325ecad416ab689e27ba51da03ba01a9632bc6e108f5fe7c3c4ad29d58" dependencies = [ "pest", "pest_generator", @@ -1680,9 +1685,9 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f" +checksum = "6c4c0e91ead7a8f7acecbca6f003fc2e8282b1dbe2dd9c9d2f16aba42995e0a7" dependencies = [ "pest", "pest_meta", @@ -1693,12 +1698,11 @@ dependencies = [ [[package]] name = "pest_meta" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220" +checksum = "f9744bc48116fee06334924bb5f2bad41eed5e89bd26e29b0b799f9a3f82c210" dependencies = [ "pest", - "sha2", ] [[package]] @@ -1771,7 +1775,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", - "defmt 1.1.0", + "defmt 1.1.1", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -1816,28 +1822,6 @@ dependencies = [ "elliptic-curve", ] -[[package]] -name = "proc-macro-error-attr2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "proc-macro-error2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" -dependencies = [ - "proc-macro-error-attr2", - "proc-macro2", - "quote", - "syn 2.0.118", -] - [[package]] name = "proc-macro2" version = "1.0.106" @@ -1895,9 +1879,9 @@ checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" [[package]] name = "regex" -version = "1.12.4" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1292b7759ae1cb9ec195452d1390a074f0cd8541ab7a5a8c31cd6db45d4a6ba" +checksum = "2a0e75113e14dc5acb068cd0786884f214f1312650a3d36d269f5c4f3cdee8a2" dependencies = [ "aho-corasick", "memchr", @@ -1907,9 +1891,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +checksum = "1f388202e4b80542a0921078cc23b6333bcf1409c1e3f86404cae4766a6131db" dependencies = [ "aho-corasick", "memchr", @@ -1926,11 +1910,11 @@ checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" name = "rmk" version = "0.8.2" dependencies = [ - "bt-hci 0.9.0", + "bt-hci", "byteorder", "cortex-m", "crc32fast", - "defmt 1.1.0", + "defmt 1.1.1", "document-features", "embassy-boot", "embassy-embedded-hal", @@ -1963,10 +1947,12 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", "toml", @@ -1990,11 +1976,11 @@ dependencies = [ name = "rmk-nrf52840-embassy-boot" version = "0.2.0" dependencies = [ - "bt-hci 0.8.1", + "bt-hci", "const-gen", "cortex-m", "cortex-m-rt", - "defmt 1.1.0", + "defmt 1.1.1", "defmt-rtt", "embassy-boot", "embassy-executor", @@ -2017,7 +2003,7 @@ name = "rmk-types" version = "0.2.2" dependencies = [ "bitfield-struct", - "defmt 1.1.0", + "defmt 1.1.1", "heapless 0.9.3", "postcard", "rmk-config", @@ -2076,9 +2062,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] name = "scoped-tls" @@ -2136,7 +2122,7 @@ version = "7.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "574e5a379bf43653079b34cb4cf32958404b5f42e0ed5b5adcdff02c2de04d4d" dependencies = [ - "defmt 1.1.0", + "defmt 1.1.1", "embedded-storage-async", "postcard", "serde", @@ -2217,17 +2203,6 @@ dependencies = [ "serde_core", ] -[[package]] -name = "sha2" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - [[package]] name = "sharded-slab" version = "0.1.7" @@ -2506,9 +2481,9 @@ version = "0.7.0" source = "git+https://github.com/embassy-rs/trouble?rev=088e09c451177d5db50cf3e58c68d05512265ba0#088e09c451177d5db50cf3e58c68d05512265ba0" dependencies = [ "aes", - "bt-hci 0.9.0", + "bt-hci", "cmac", - "defmt 1.1.0", + "defmt 1.1.1", "embassy-futures", "embassy-sync", "embassy-time", @@ -2773,18 +2748,18 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.52" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce1022995ff5ff5d841ad7d994facc23098cd40152f2c1d11cd607c6f530653f" +checksum = "b7cbbc0a705a0fd05cc3676525980d2bf5a9bc4adac6d6475209a7887cf59d19" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.52" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ae7f38b72ec2a254e2b87ef277cf2cd4fb97cbebf944faa6f33354da0867930" +checksum = "e2e817b7b52d0c7358d3246da9d69935ebb18116b2b102b4230dac079b4862f5" dependencies = [ "proc-macro2", "quote", diff --git a/examples/use_config/nrf52840_embassy_boot/Cargo.toml b/examples/use_config/nrf52840_embassy_boot/Cargo.toml index 8118da2fa..b93b799e3 100644 --- a/examples/use_config/nrf52840_embassy_boot/Cargo.toml +++ b/examples/use_config/nrf52840_embassy_boot/Cargo.toml @@ -10,9 +10,13 @@ edition = "2024" license = "MIT OR Apache-2.0" [dependencies] -rmk = { path = "../../../rmk", features = [ +rmk = { path = "../../../rmk", default-features = false, features = [ + "defmt", "dfu_nrf", "nrf52840_ble", + "storage", + "vial", + "watchdog", # "dfu_lock" ] } embassy-time = { version = "0.5", features = ["tick-hz-32_768", "defmt"] } @@ -36,7 +40,7 @@ nrf-mpsl = { git = "https://github.com/alexmoon/nrf-sdc", rev = "abe49d22ebfc85f "defmt", "nrf52840", ] } -bt-hci = { version = "0.8", features = ["defmt"] } +bt-hci = { version = "0.9", features = ["defmt"] } embassy-executor = { version = "0.10", features = [ "defmt", "platform-cortex-m", diff --git a/examples/use_config/nrf52840_embassy_boot/keyboard.toml b/examples/use_config/nrf52840_embassy_boot/keyboard.toml index f169806d5..0e48aefd7 100644 --- a/examples/use_config/nrf52840_embassy_boot/keyboard.toml +++ b/examples/use_config/nrf52840_embassy_boot/keyboard.toml @@ -5,6 +5,7 @@ vendor_id = 0x4c4b product_id = 0x4643 manufacturer = "Haobo" chip = "nrf52840" +usb_enable = true [matrix] row_pins = ["P0_07", "P0_22", "P0_11", "P0_12"] @@ -13,26 +14,25 @@ col_pins = ["P0_13", "P0_17", "P0_20"] [layout] rows = 4 cols = 3 -layers = 1 -matrix_map = """ +map = """ (0,0) (0,1) (0,2) (1,0) (1,1) (1,2) (2,0) (2,1) (2,2) (3,0) (3,1) (3,2) """ -[[layer]] +[keymap] +layers = 1 + +[[keymap.layer]] name = "base_layer" keys = """ Kp7 Kp8 Kp9 Kp4 Kp5 Kp6 Kp1 Kp2 Kp3 - Kp0 +_ Kp0 _ """ -[usb] -enabled = true - [ble] enabled = true @@ -60,4 +60,4 @@ enabled = true led = "P0_15" # default P0_15, to not use set to "none" # Optional DFU lock — physical keys to press simultaneously to unlock DFU firmware download. # Requires the `dfu_lock` Cargo feature (not enabled by default). -# unlock_keys = [[0, 0], [1, 1]] \ No newline at end of file +# unlock_keys = [[0, 0], [1, 1]] diff --git a/examples/use_config/pi_pico_w_ble/Cargo.lock b/examples/use_config/pi_pico_w_ble/Cargo.lock index 94ef6054c..a9e261c78 100644 --- a/examples/use_config/pi_pico_w_ble/Cargo.lock +++ b/examples/use_config/pi_pico_w_ble/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -10,7 +16,7 @@ checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" dependencies = [ "cfg-if", "cipher", - "cpufeatures", + "cpufeatures 0.2.17", ] [[package]] @@ -51,9 +57,9 @@ checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236" [[package]] name = "arrayvec" -version = "0.7.6" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" [[package]] name = "as-slice" @@ -81,7 +87,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -101,15 +107,15 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "autocfg" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "aws-lc-rs" -version = "1.16.2" +version = "1.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a054912289d18629dc78375ba2c3726a3afe3ff71b4edba9dedfca0e3446d1fc" +checksum = "4342d8937fc7e5dd9b1c60292261c0670c882a2cd1719cfc11b1af41731e32ad" dependencies = [ "aws-lc-sys", "zeroize", @@ -117,14 +123,15 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.39.0" +version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fa7e52a4c5c547c741610a2c6f123f3881e409b714cd27e6798ef020c514f0a" +checksum = "6d9ceb1da931507a12f4fccea479dccd00da1943e1b4ae72d8e502d707361444" dependencies = [ "cc", "cmake", "dunce", "fs_extra", + "pkg-config", ] [[package]] @@ -189,7 +196,7 @@ checksum = "3ca6739863c590881f038d033a146c51ddae239186a4327014839fd864f44ed5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -200,9 +207,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.11.0" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" +checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" dependencies = [ "serde_core", ] @@ -232,12 +239,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f3c66fd0a41a3b3a5906847b1bf5516048ce083e24fa9341a0fa31d3b4cd73d" dependencies = [ "btuuid", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-sync", "embedded-io 0.7.1", "embedded-io-async 0.7.0", "futures-intrusive", - "heapless 0.9.2", + "heapless 0.9.3", "serde", ] @@ -254,9 +261,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.20.2" +version = "3.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" [[package]] name = "bytemuck" @@ -272,9 +279,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.11.1" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" +checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04" [[package]] name = "cargo_toml" @@ -282,16 +289,16 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa61aec073ec94791433ddf3df2323ff9d1711557c2a0eefb0f99cb4f8dca520" dependencies = [ - "semver 1.0.27", + "semver 1.0.28", "serde", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] name = "cc" -version = "1.2.56" +version = "1.2.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2" +checksum = "f5d6cac793997bd970000024b2934968efe83b382de4fdcf4fcb46b6ee4ad996" dependencies = [ "find-msvc-tools", "jobserver", @@ -299,12 +306,6 @@ dependencies = [ "shlex", ] -[[package]] -name = "cesu8" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" - [[package]] name = "cfg-if" version = "1.0.4" @@ -317,13 +318,24 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" +[[package]] +name = "chacha20" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81" +dependencies = [ + "cfg-if", + "cpufeatures 0.3.0", + "rand_core 0.10.1", +] + [[package]] name = "chrono" -version = "0.4.44" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" +checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "num-traits", "pure-rust-locales", ] @@ -351,9 +363,9 @@ dependencies = [ [[package]] name = "cmake" -version = "0.1.57" +version = "0.1.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75443c44cd6b379beb8c5b45d85d0773baf31cce901fe7bb252f4eff3008ef7d" +checksum = "c0f78a02292a74a88ac736019ab962ece0bc380e3f977bf72e376c5d78ff0678" dependencies = [ "cc", ] @@ -364,7 +376,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1" dependencies = [ - "thiserror 2.0.18", + "thiserror", ] [[package]] @@ -389,9 +401,9 @@ dependencies = [ [[package]] name = "config" -version = "0.15.19" +version = "0.15.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b30fa8254caad766fc03cb0ccae691e14bf3bd72bfff27f72802ce729551b3d6" +checksum = "b85f248a4de22d204ceabc6299d89d2c70fbd7f09fea53c06c852369652d8139" dependencies = [ "async-trait", "convert_case 0.6.0", @@ -402,7 +414,7 @@ dependencies = [ "serde-untagged", "serde_core", "serde_json", - "toml 0.9.12+spec-1.1.0", + "toml", "winnow", "yaml-rust2", ] @@ -536,7 +548,7 @@ checksum = "e37549a379a9e0e6e576fd208ee60394ccb8be963889eebba3ffe0980364f472" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -548,11 +560,20 @@ dependencies = [ "libc", ] +[[package]] +name = "cpufeatures" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201" +dependencies = [ + "libc", +] + [[package]] name = "crc-any" -version = "2.5.0" +version = "2.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62ec9ff5f7965e4d7280bd5482acd20aadb50d632cf6c1d74493856b011fa73" +checksum = "46db9f663dfb869b80fcf59e32d7a80fc6c464a4f6328f3f06a00f5e36d05f8c" dependencies = [ "debug-helper", ] @@ -609,7 +630,7 @@ dependencies = [ "bt-hci", "cortex-m", "cortex-m-rt", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-futures", "embassy-hal-internal", "embassy-net-driver-channel", @@ -619,7 +640,7 @@ dependencies = [ "embedded-hal-async", "embedded-io-async 0.7.0", "futures", - "heapless 0.9.2", + "heapless 0.9.3", "sdio", "trait-set", ] @@ -630,7 +651,7 @@ version = "0.10.0" source = "git+https://github.com/embassy-rs/embassy?rev=e372d1e1e624032ddc5ea932ac4c368b28ccb0dd#e372d1e1e624032ddc5ea932ac4c368b28ccb0dd" dependencies = [ "cyw43", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-futures", "embassy-rp", "fixed", @@ -667,7 +688,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -680,7 +701,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -691,7 +712,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -702,7 +723,7 @@ checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ "darling_core 0.23.0", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -716,9 +737,9 @@ dependencies = [ [[package]] name = "debug-helper" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f578e8e2c440e7297e008bb5486a3a8a194775224bbc23729b0dbdfaeebf162e" +checksum = "80a4af69c60438a1a82af89d362f4729fd38db7b73f305a237636fad31ceb2bf" [[package]] name = "defmt" @@ -726,14 +747,14 @@ version = "0.3.100" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0963443817029b2024136fc4dd07a5107eb8f977eaf18fcd1fdeb11306b64ad" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] name = "defmt" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "548d977b6da32fa1d1fda2876453da1e7df63ad0304c8b3dae4dbe7b96f39b78" +checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" dependencies = [ "bitflags 1.3.2", "defmt-macros", @@ -741,15 +762,14 @@ dependencies = [ [[package]] name = "defmt-macros" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d4fc12a85bcf441cfe44344c4b72d58493178ce635338a3f3b78943aceb258e" +checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" dependencies = [ "defmt-parser", - "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -758,17 +778,17 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "10d60334b3b2e7c9d91ef8150abfb6fa4c1c39ebbcf4a81c2e346aad939fee3e" dependencies = [ - "thiserror 2.0.18", + "thiserror", ] [[package]] name = "defmt-rtt" -version = "1.1.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d5a25c99d89c40f5676bec8cefe0614f17f0f40e916f98e345dae941807f9e" +checksum = "05144944c117db54127a8ac17a3c9a28d55e7047bfddb950bcd20b4a94c79b10" dependencies = [ "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -794,13 +814,13 @@ dependencies = [ [[package]] name = "displaydoc" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -829,9 +849,9 @@ checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" [[package]] name = "either" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" [[package]] name = "elliptic-curve" @@ -857,7 +877,7 @@ name = "embassy-embedded-hal" version = "0.6.0" source = "git+https://github.com/embassy-rs/embassy?rev=e372d1e1e624032ddc5ea932ac4c368b28ccb0dd#e372d1e1e624032ddc5ea932ac4c368b28ccb0dd" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embassy-futures", "embassy-hal-internal", "embassy-sync", @@ -878,7 +898,7 @@ dependencies = [ "cordyceps", "cortex-m", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-executor-macros", "embassy-executor-timer-queue", @@ -892,7 +912,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -905,7 +925,7 @@ name = "embassy-futures" version = "0.1.2" source = "git+https://github.com/embassy-rs/embassy?rev=e372d1e1e624032ddc5ea932ac4c368b28ccb0dd#e372d1e1e624032ddc5ea932ac4c368b28ccb0dd" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -917,7 +937,7 @@ dependencies = [ "as-slice", "cortex-m", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "num-traits", ] @@ -942,12 +962,12 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82051f67e8a06a8faebd183f62cfade184c96be68126c5f064abb8223a591ff1" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "cfg-if", "cortex-m", "cortex-m-rt", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -980,7 +1000,7 @@ dependencies = [ "cortex-m", "cortex-m-rt", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -1017,11 +1037,11 @@ source = "git+https://github.com/embassy-rs/embassy?rev=e372d1e1e624032ddc5ea932 dependencies = [ "cfg-if", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io-async 0.7.0", "futures-core", "futures-sink", - "heapless 0.9.2", + "heapless 0.9.3", ] [[package]] @@ -1031,7 +1051,7 @@ source = "git+https://github.com/embassy-rs/embassy?rev=e372d1e1e624032ddc5ea932 dependencies = [ "cfg-if", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-time-driver", "embedded-hal 0.2.7", @@ -1054,7 +1074,7 @@ version = "0.3.2" source = "git+https://github.com/embassy-rs/embassy?rev=e372d1e1e624032ddc5ea932ac4c368b28ccb0dd#e372d1e1e624032ddc5ea932ac4c368b28ccb0dd" dependencies = [ "embassy-executor-timer-queue", - "heapless 0.9.2", + "heapless 0.9.3", ] [[package]] @@ -1062,15 +1082,15 @@ name = "embassy-usb" version = "0.6.0" source = "git+https://github.com/embassy-rs/embassy?rev=e372d1e1e624032ddc5ea932ac4c368b28ccb0dd#e372d1e1e624032ddc5ea932ac4c368b28ccb0dd" dependencies = [ - "bitflags 2.11.0", - "defmt 1.0.1", + "bitflags 2.13.0", + "defmt 1.1.1", "embassy-futures", "embassy-net-driver-channel", "embassy-sync", "embassy-time", "embassy-usb-driver", "embedded-io-async 0.7.0", - "heapless 0.9.2", + "heapless 0.9.3", "ssmarshal", "usbd-hid", ] @@ -1080,7 +1100,7 @@ name = "embassy-usb-driver" version = "0.2.2" source = "git+https://github.com/embassy-rs/embassy?rev=e372d1e1e624032ddc5ea932ac4c368b28ccb0dd#e372d1e1e624032ddc5ea932ac4c368b28ccb0dd" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io-async 0.6.1", "embedded-io-async 0.7.0", ] @@ -1092,7 +1112,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6efd0c0e0b21bcf91b475b8fa47347c1df32c9a99728ae1e1b0e6625862dfd1a" dependencies = [ "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-sync", "embassy-time", "embassy-usb-driver", @@ -1138,6 +1158,12 @@ dependencies = [ "nb 1.1.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -1150,7 +1176,7 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9eb1aa714776b75c7e67e1da744b81a129b3ff919c8712b5e1b32252c1f07cc7" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -1168,7 +1194,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2564b9f813c544241430e147d8bc454815ef9ac998878d30cc3055449f7fd4c0" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io 0.7.1", ] @@ -1219,9 +1245,9 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "erased-serde" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e8918065695684b2b0702da20382d5ae6065cf3327bc2d6436bd49a71ce9f3" +checksum = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec" dependencies = [ "serde", "serde_core", @@ -1246,9 +1272,9 @@ checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" [[package]] name = "fixed" -version = "1.30.0" +version = "1.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c566da967934c6c7ee0458a9773de9b2a685bd2ce26a3b28ddfc740e640182f5" +checksum = "9af2cbf772fa6d1c11358f92ef554cb6b386201210bcf0e91fb7fba8a907fb40" dependencies = [ "az", "bytemuck", @@ -1270,9 +1296,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foldhash" -version = "0.1.5" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" [[package]] name = "form_urlencoded" @@ -1343,7 +1369,7 @@ checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1376,9 +1402,9 @@ dependencies = [ [[package]] name = "generator" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52f04ae4152da20c76fe800fa48659201d5cf627c5149ca0b707b69d7eef6cf9" +checksum = "b3b854b0e584ead1a33f18b2fcad7cf7be18b3875c78816b753639aa501513ae" dependencies = [ "cc", "cfg-if", @@ -1415,15 +1441,15 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.3.4" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" dependencies = [ "cfg-if", "js-sys", "libc", "r-efi", - "wasip2", + "rand_core 0.10.1", "wasm-bindgen", ] @@ -1440,9 +1466,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.13" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54" +checksum = "6cb093c84e8bd9b188d4c4a8cb6579fc016968d14c99882163cd3ff402a4f155" dependencies = [ "atomic-waker", "bytes", @@ -1503,26 +1529,26 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hashbrown" -version = "0.15.5" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" dependencies = [ "foldhash", ] [[package]] name = "hashbrown" -version = "0.16.1" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" [[package]] name = "hashlink" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" +checksum = "824e001ac4f3012dd16a264bec811403a67ca9deb6c102fc5049b32c4574b35f" dependencies = [ - "hashbrown 0.15.5", + "hashbrown 0.16.1", ] [[package]] @@ -1551,11 +1577,11 @@ dependencies = [ [[package]] name = "heapless" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af2455f757db2b292a9b1768c4b70186d443bcb3b316252d6b540aec1cd89ed" +checksum = "25ba4bd83f9415b58b4ed8dc5714c76e626a105be4646c02630ad730ad3b5aa4" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "hash32 0.3.1", "serde_core", "stable_deref_trait", @@ -1587,9 +1613,9 @@ dependencies = [ [[package]] name = "http" -version = "1.4.0" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" +checksum = "6970f50e31d6fc17d3fa27329444bfa74e196cf62e95052a3f6fee181dba6425" dependencies = [ "bytes", "itoa", @@ -1626,9 +1652,9 @@ checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" [[package]] name = "hyper" -version = "1.8.1" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" +checksum = "55281c53a1894c864990125767da440a4e630446785086f52523b20033b74498" dependencies = [ "atomic-waker", "bytes", @@ -1640,7 +1666,6 @@ dependencies = [ "httparse", "itoa", "pin-project-lite", - "pin-utils", "smallvec", "tokio", "want", @@ -1648,15 +1673,14 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.7" +version = "0.27.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" +checksum = "33ca68d021ef39cf6463ab54c1d0f5daf03377b70561305bb89a8f83aab66e0f" dependencies = [ "http", "hyper", "hyper-util", "rustls", - "rustls-pki-types", "tokio", "tokio-rustls", "tower-service", @@ -1689,12 +1713,13 @@ dependencies = [ [[package]] name = "icu_collections" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" +checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c" dependencies = [ "displaydoc", "potential_utf", + "utf8_iter", "yoke", "zerofrom", "zerovec", @@ -1702,9 +1727,9 @@ dependencies = [ [[package]] name = "icu_locale_core" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" +checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29" dependencies = [ "displaydoc", "litemap", @@ -1715,9 +1740,9 @@ dependencies = [ [[package]] name = "icu_normalizer" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" +checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4" dependencies = [ "icu_collections", "icu_normalizer_data", @@ -1729,15 +1754,15 @@ dependencies = [ [[package]] name = "icu_normalizer_data" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" +checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38" [[package]] name = "icu_properties" -version = "2.1.2" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" +checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de" dependencies = [ "icu_collections", "icu_locale_core", @@ -1749,15 +1774,15 @@ dependencies = [ [[package]] name = "icu_properties_data" -version = "2.1.2" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" +checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14" [[package]] name = "icu_provider" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" +checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421" dependencies = [ "displaydoc", "icu_locale_core", @@ -1787,9 +1812,9 @@ dependencies = [ [[package]] name = "idna_adapter" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714" dependencies = [ "icu_normalizer", "icu_properties", @@ -1797,12 +1822,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.13.0" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.16.1", + "hashbrown 0.17.1", ] [[package]] @@ -1816,19 +1841,9 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" - -[[package]] -name = "iri-string" -version = "0.7.10" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c91338f0783edbd6195decb37bae672fd3b165faffb89bf7b9e6942f8b1a731a" -dependencies = [ - "memchr", - "serde", -] +checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2" [[package]] name = "itertools" @@ -1841,49 +1856,77 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "jni" -version = "0.21.1" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +checksum = "5efd9a482cf3a427f00d6b35f14332adc7902ce91efb778580e180ff90fa3498" dependencies = [ - "cesu8", "cfg-if", "combine", + "jni-macros", "jni-sys", "log", - "thiserror 1.0.69", + "simd_cesu8", + "thiserror", "walkdir", - "windows-sys 0.45.0", + "windows-link", +] + +[[package]] +name = "jni-macros" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a00109accc170f0bdb141fed3e393c565b6f5e072365c3bd58f5b062591560a3" +dependencies = [ + "proc-macro2", + "quote", + "rustc_version 0.4.1", + "simd_cesu8", + "syn 2.0.118", ] [[package]] name = "jni-sys" -version = "0.3.0" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2" +dependencies = [ + "jni-sys-macros", +] + +[[package]] +name = "jni-sys-macros" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" +checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" +dependencies = [ + "quote", + "syn 2.0.118", +] [[package]] name = "jobserver" -version = "0.1.34" +version = "0.1.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +checksum = "1c00acbd29eabad4a2392fa0e921c874934dbbf4194312ad20f04a0ed67a3cb3" dependencies = [ - "getrandom 0.3.4", + "getrandom 0.4.3", "libc", ] [[package]] name = "js-sys" -version = "0.3.90" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14dc6f6450b3f6d4ed5b16327f38fed626d375a886159ca555bd7822c0c3a5a6" +checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ - "once_cell", + "cfg-if", + "futures-util", "wasm-bindgen", ] @@ -1910,7 +1953,7 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb26cec98cce3a3d96cbb7bced3c4b16e3d13f27ec56dbd62cbc8f39cfb9d653" dependencies = [ - "cpufeatures", + "cpufeatures 0.2.17", ] [[package]] @@ -1953,15 +1996,15 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.182" +version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "litemap" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" +checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0" [[package]] name = "litrs" @@ -1980,9 +2023,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.29" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" [[package]] name = "loom" @@ -2025,9 +2068,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.8.0" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" [[package]] name = "mime" @@ -2035,11 +2078,20 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] + [[package]] name = "mio" -version = "1.1.1" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" +checksum = "02bd0af71c67b473010cbbc60715ee815645a4dc942899111f494b4b737d6fda" dependencies = [ "libc", "wasi", @@ -2097,9 +2149,9 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" +checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26" dependencies = [ "num_enum_derive", "rustversion", @@ -2107,20 +2159,20 @@ dependencies = [ [[package]] name = "num_enum_derive" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" +checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "once_cell" -version = "1.21.3" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] name = "openssl-probe" @@ -2155,7 +2207,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd402d00b0fb94c5aee000029204a46884b1262e0c443f166d86d2c0747e1a1a" dependencies = [ "cortex-m", - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -2201,9 +2253,9 @@ checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "pest" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662" +checksum = "47627dd7305c6a2d6c8c6bcd24c5a4c17dbbf425f4f9c5313e724b38fc9782e9" dependencies = [ "memchr", "ucd-trie", @@ -2211,9 +2263,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77" +checksum = "4b4254325ecad416ab689e27ba51da03ba01a9632bc6e108f5fe7c3c4ad29d58" dependencies = [ "pest", "pest_generator", @@ -2221,25 +2273,24 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f" +checksum = "6c4c0e91ead7a8f7acecbca6f003fc2e8282b1dbe2dd9c9d2f16aba42995e0a7" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "pest_meta" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220" +checksum = "f9744bc48116fee06334924bb5f2bad41eed5e89bd26e29b0b799f9a3f82c210" dependencies = [ "pest", - "sha2", ] [[package]] @@ -2269,15 +2320,9 @@ checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" [[package]] name = "pin-project-lite" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" - -[[package]] -name = "pin-utils" -version = "0.1.0" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pio" @@ -2324,14 +2369,14 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "pkg-config" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" [[package]] name = "portable-atomic" @@ -2349,7 +2394,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", - "defmt 1.0.1", + "defmt 1.1.1", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -2363,14 +2410,14 @@ checksum = "e0232bd009a197ceec9cc881ba46f727fcd8060a2d8d6a9dde7a69030a6fe2bb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "potential_utf" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" +checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564" dependencies = [ "zerovec", ] @@ -2418,7 +2465,7 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2436,14 +2483,14 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "869675ad2d7541aea90c6d88c81f46a7f4ea9af8cd0395d38f11a95126998a0d" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] name = "quinn" -version = "0.11.9" +version = "0.11.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" +checksum = "0c1a41e437b6bbd489372cd4971de128e85c855f56c57f283d20ff016cf7c0a8" dependencies = [ "bytes", "cfg_aliases", @@ -2453,7 +2500,7 @@ dependencies = [ "rustc-hash", "rustls", "socket2", - "thiserror 2.0.18", + "thiserror", "tokio", "tracing", "web-time", @@ -2461,21 +2508,22 @@ dependencies = [ [[package]] name = "quinn-proto" -version = "0.11.14" +version = "0.11.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "434b42fec591c96ef50e21e886936e66d3cc3f737104fdb9b737c40ffb94c098" +checksum = "2f4bfc015262b9df63c8845072ce59068853ff5872180c2ce2f13038b970e560" dependencies = [ "aws-lc-rs", "bytes", - "getrandom 0.3.4", + "getrandom 0.4.3", "lru-slab", - "rand 0.9.2", + "rand 0.10.2", + "rand_pcg", "ring", "rustc-hash", "rustls", "rustls-pki-types", "slab", - "thiserror 2.0.18", + "thiserror", "tinyvec", "tracing", "web-time", @@ -2483,50 +2531,51 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.14" +version = "0.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" +checksum = "35a133f956daabe89a61a685c2649f13d82d5aa4bd5d12d1277e1072a21c0694" dependencies = [ "cfg_aliases", "libc", "once_cell", "socket2", "tracing", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] name = "quote" -version = "1.0.44" +version = "1.0.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" +checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" dependencies = [ "proc-macro2", ] [[package]] name = "r-efi" -version = "5.3.0" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" [[package]] name = "rand" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" dependencies = [ "rand_core 0.6.4", ] [[package]] name = "rand" -version = "0.9.2" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80" dependencies = [ - "rand_chacha 0.9.0", - "rand_core 0.9.5", + "chacha20", + "getrandom 0.4.3", + "rand_core 0.10.1", ] [[package]] @@ -2539,16 +2588,6 @@ dependencies = [ "rand_core 0.6.4", ] -[[package]] -name = "rand_chacha" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" -dependencies = [ - "ppv-lite86", - "rand_core 0.9.5", -] - [[package]] name = "rand_core" version = "0.6.4" @@ -2560,9 +2599,6 @@ name = "rand_core" version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" -dependencies = [ - "getrandom 0.3.4", -] [[package]] name = "rand_core" @@ -2570,20 +2606,29 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" +[[package]] +name = "rand_pcg" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "caa0f4137e1c0a72f4c651489402276c8e8e1cf081f3b0ba156d2cbeef09e86a" +dependencies = [ + "rand_core 0.10.1", +] + [[package]] name = "redox_syscall" version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", ] [[package]] name = "regex" -version = "1.12.3" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +checksum = "2a0e75113e14dc5acb068cd0786884f214f1312650a3d36d269f5c4f3cdee8a2" dependencies = [ "aho-corasick", "memchr", @@ -2593,9 +2638,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +checksum = "1f388202e4b80542a0921078cc23b6333bcf1409c1e3f86404cae4766a6131db" dependencies = [ "aho-corasick", "memchr", @@ -2604,15 +2649,15 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "reqwest" -version = "0.13.2" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab3f43e3283ab1488b624b44b0e988d0acea0b3214e694730a055cb6b2efa801" +checksum = "219c5811de6525e5416c7d5d53bb656d3afdbc6c5af816e0802bcfa42dbdc1c3" dependencies = [ "base64", "bytes", @@ -2650,9 +2695,9 @@ dependencies = [ [[package]] name = "rgb" -version = "0.8.52" +version = "0.8.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c6a884d2998352bb4daf0183589aec883f16a6da1f4dde84d8e2e9a5409a1ce" +checksum = "47b34b781b31e5d73e9fbc8689c70551fd1ade9a19e3e28cfec8580a79290cc4" [[package]] name = "ring" @@ -2676,7 +2721,7 @@ dependencies = [ "byteorder", "cortex-m", "crc32fast", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -2693,7 +2738,7 @@ dependencies = [ "embedded-storage-async", "fixed", "futures", - "heapless 0.9.2", + "heapless 0.9.3", "paste", "pio", "postcard", @@ -2711,13 +2756,15 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] @@ -2731,7 +2778,7 @@ dependencies = [ "rmk-config", "rmk-types", "strum", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2743,7 +2790,7 @@ dependencies = [ "cortex-m-rt", "cyw43", "cyw43-pio", - "defmt 1.0.1", + "defmt 1.1.1", "defmt-rtt", "embassy-executor", "embassy-rp", @@ -2762,22 +2809,22 @@ name = "rmk-types" version = "0.2.2" dependencies = [ "bitfield-struct", - "defmt 1.0.1", - "heapless 0.9.2", + "defmt 1.1.1", + "heapless 0.9.3", "postcard", "rmk-config", "serde", "strum", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] name = "ron" -version = "0.12.0" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd490c5b18261893f14449cbd28cb9c0b637aebf161cd77900bfdedaff21ec32" +checksum = "81116b9531d61eabc41aeb228e4b6b2435bcca3233b98cf3b3077d4e6e9debb3" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "once_cell", "serde", "serde_derive", @@ -2815,9 +2862,9 @@ dependencies = [ [[package]] name = "rustc-hash" -version = "2.1.1" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" +checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d" [[package]] name = "rustc_version" @@ -2834,14 +2881,14 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.27", + "semver 1.0.28", ] [[package]] name = "rustls" -version = "0.23.37" +version = "0.23.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "758025cb5fccfd3bc2fd74708fd4682be41d99e5dff73c377c0646c6012c73a4" +checksum = "6b92b125634d9b795e7beca796cc790df15a7fb38323bf3196fda83292d06b1f" dependencies = [ "aws-lc-rs", "once_cell", @@ -2853,9 +2900,9 @@ dependencies = [ [[package]] name = "rustls-native-certs" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "612460d5f7bea540c490b2b6395d8e34a953e52b491accd6c86c8164c5932a63" +checksum = "dab5152771c58876a2146916e53e35057e1a4dfa2b9df0f0305b07f611fdea4d" dependencies = [ "openssl-probe", "rustls-pki-types", @@ -2865,9 +2912,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.14.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd" +checksum = "764899a24af3980067ee14bc143654f297b22eaebfe3c7b6b211920a5a59b046" dependencies = [ "web-time", "zeroize", @@ -2875,9 +2922,9 @@ dependencies = [ [[package]] name = "rustls-platform-verifier" -version = "0.6.2" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d99feebc72bae7ab76ba994bb5e121b8d83d910ca40b36e0921f53becc41784" +checksum = "26d1e2536ce4f35f4846aa13bff16bd0ff40157cdb14cc056c7b14ba41233ba0" dependencies = [ "core-foundation 0.10.1", "core-foundation-sys", @@ -2902,9 +2949,9 @@ checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" [[package]] name = "rustls-webpki" -version = "0.103.9" +version = "0.103.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7df23109aa6c1567d1c575b9952556388da57401e4ace1d15f79eedad0d8f53" +checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e" dependencies = [ "aws-lc-rs", "ring", @@ -2914,9 +2961,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] name = "same-file" @@ -2929,9 +2976,9 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.28" +version = "0.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" +checksum = "91c1b7e4904c873ef0710c1f407dde2e6287de2bebc1bbbf7d430bb7cbffd939" dependencies = [ "windows-sys 0.61.2", ] @@ -2978,7 +3025,7 @@ version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "core-foundation 0.10.1", "core-foundation-sys", "libc", @@ -3006,9 +3053,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.27" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" dependencies = [ "serde", "serde_core", @@ -3022,11 +3069,11 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "sequential-storage" -version = "7.1.0" +version = "7.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4580ee0fa08cd41bee9f5b50ed309877e18735370fd4eef5766cc82863ef772" +checksum = "574e5a379bf43653079b34cb4cf32958404b5f42e0ed5b5adcdff02c2de04d4d" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-storage-async", "postcard", "serde", @@ -3050,7 +3097,7 @@ checksum = "2bf03b7a5281cfd4013bc788d057b0f09fc634397d83bc8973c955bd4f32727a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -3082,14 +3129,14 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "serde_json" -version = "1.0.149" +version = "1.0.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" dependencies = [ "itoa", "memchr", @@ -3100,24 +3147,13 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "1.0.4" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" dependencies = [ "serde_core", ] -[[package]] -name = "sha2" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - [[package]] name = "sha2-const-stable" version = "0.1.0" @@ -3126,9 +3162,9 @@ checksum = "5f179d4e11094a893b82fff208f74d448a7512f99f5a0acbd5c679b705f83ed9" [[package]] name = "sha3" -version = "0.10.8" +version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +checksum = "77fd7028345d415a4034cf8777cd4f8ab1851274233b45f84e3d955502d93874" dependencies = [ "digest", "keccak", @@ -3145,15 +3181,31 @@ dependencies = [ [[package]] name = "shlex" -version = "1.3.0" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" + +[[package]] +name = "simd_cesu8" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94f90157bb87cddf702797c5dadfa0be7d266cdf49e22da2fcaa32eff75b2c33" +dependencies = [ + "rustc_version 0.4.1", + "simdutf8", +] + +[[package]] +name = "simdutf8" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" [[package]] name = "siphasher" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e" +checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" [[package]] name = "slab" @@ -3163,9 +3215,9 @@ checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] name = "smallvec" -version = "1.15.1" +version = "1.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" [[package]] name = "smart-leds-trait" @@ -3178,12 +3230,12 @@ dependencies = [ [[package]] name = "socket2" -version = "0.6.2" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86f4aa3ad99f2088c990dfa82d367e19cb29268ed67c574d10d0a4bfe71f07e0" +checksum = "52d1cfed4120b4d927bf7c0f86d2087a4a7d6027c906d9f9d525a80573b9be51" dependencies = [ "libc", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -3256,7 +3308,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -3278,9 +3330,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.117" +version = "2.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" dependencies = [ "proc-macro2", "quote", @@ -3304,7 +3356,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -3313,7 +3365,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a13f3d0daba03132c0aa9767f98351b3488edc2c100cda2d2ec2b04f3d8d3c8b" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "core-foundation 0.9.4", "system-configuration-sys", ] @@ -3346,33 +3398,13 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "thiserror" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" -dependencies = [ - "thiserror-impl 1.0.69", -] - [[package]] name = "thiserror" version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" dependencies = [ - "thiserror-impl 2.0.18", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", + "thiserror-impl", ] [[package]] @@ -3383,7 +3415,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -3406,9 +3438,9 @@ dependencies = [ [[package]] name = "tinystr" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" +checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d" dependencies = [ "displaydoc", "zerovec", @@ -3431,9 +3463,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.49.0" +version = "1.52.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86" +checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe" dependencies = [ "bytes", "libc", @@ -3468,27 +3500,14 @@ dependencies = [ [[package]] name = "toml" -version = "0.9.12+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" -dependencies = [ - "serde_core", - "serde_spanned", - "toml_datetime 0.7.5+spec-1.1.0", - "toml_parser", - "winnow", -] - -[[package]] -name = "toml" -version = "1.0.3+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7614eaf19ad818347db24addfa201729cf2a9b6fdfd9eb0ab870fcacc606c0c" +checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee" dependencies = [ "indexmap", "serde_core", "serde_spanned", - "toml_datetime 1.0.0+spec-1.1.0", + "toml_datetime", "toml_parser", "toml_writer", "winnow", @@ -3496,36 +3515,27 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.7.5+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" -dependencies = [ - "serde_core", -] - -[[package]] -name = "toml_datetime" -version = "1.0.0+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32c2555c699578a4f59f0cc68e5116c8d7cabbd45e1409b989d4be085b53f13e" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" dependencies = [ "serde_core", ] [[package]] name = "toml_parser" -version = "1.0.9+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ "winnow", ] [[package]] name = "toml_writer" -version = "1.0.6+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" +checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" [[package]] name = "tower" @@ -3544,20 +3554,20 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.6.8" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" +checksum = "4cfcf7e2740e6fc6d4d688b4ef00650406bb94adf4731e43c096c3a19fe40840" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "bytes", "futures-util", "http", "http-body", - "iri-string", "pin-project-lite", "tower", "tower-layer", "tower-service", + "url", ] [[package]] @@ -3591,7 +3601,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -3652,16 +3662,16 @@ dependencies = [ "aes", "bt-hci", "cmac", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-futures", "embassy-sync", "embassy-time", "embedded-io 0.7.1", "futures", - "heapless 0.9.2", + "heapless 0.9.3", "p256", - "rand 0.8.5", - "rand_chacha 0.3.1", + "rand 0.8.6", + "rand_chacha", "rand_core 0.6.4", "serde", "static_cell", @@ -3678,7 +3688,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "uuid", ] @@ -3696,9 +3706,9 @@ checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" [[package]] name = "typenum" -version = "1.19.0" +version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" [[package]] name = "ucd-trie" @@ -3714,9 +3724,9 @@ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-segmentation" -version = "1.12.0" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" [[package]] name = "unicode-width" @@ -3791,7 +3801,7 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.117", + "syn 2.0.118", "usbd-hid-descriptors", ] @@ -3803,9 +3813,9 @@ checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" [[package]] name = "uuid" -version = "1.21.0" +version = "1.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b672338555252d43fd2240c714dc444b8c6fb0a5c5335e65a07bba7742735ddb" +checksum = "bf80a72845275afea99e7f2b434723d3bc7e38470fcd1c7ed39a599c73319a53" dependencies = [ "js-sys", "wasm-bindgen", @@ -3869,20 +3879,11 @@ version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" -[[package]] -name = "wasip2" -version = "1.0.2+wasi-0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" -dependencies = [ - "wit-bindgen", -] - [[package]] name = "wasm-bindgen" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60722a937f594b7fde9adb894d7c092fc1bb6612897c46368d18e7a20208eff2" +checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" dependencies = [ "cfg-if", "once_cell", @@ -3893,23 +3894,19 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.63" +version = "0.4.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a89f4650b770e4521aa6573724e2aed4704372151bd0de9d16a3bbabb87441a" +checksum = "c62df1340f32221cb9c54d6a27b030e3dba64361d4a95bed55f9aacb44da291d" dependencies = [ - "cfg-if", - "futures-util", "js-sys", - "once_cell", "wasm-bindgen", - "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac8c6395094b6b91c4af293f4c79371c163f9a6f56184d2c9a85f5a95f3950" +checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3917,31 +3914,31 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab3fabce6159dc20728033842636887e4877688ae94382766e00b180abac9d60" +checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de0e091bdb824da87dc01d967388880d017a0a9bc4f3bdc0d86ee9f9336e3bb5" +checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" dependencies = [ "unicode-ident", ] [[package]] name = "web-sys" -version = "0.3.90" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "705eceb4ce901230f8625bd1d665128056ccbe4b7408faa625eec1ba80f59a97" +checksum = "8622dcb61c0bcc9fffa6938bed81210af2da9a7e4a1a834b2e37a59b6dfb6141" dependencies = [ "js-sys", "wasm-bindgen", @@ -3959,9 +3956,9 @@ dependencies = [ [[package]] name = "webpki-root-certs" -version = "1.0.6" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "804f18a4ac2676ffb4e8b5b5fa9ae38af06df08162314f96a68d2a363e21a8ca" +checksum = "0d46a5a140e6f7afeccd8eae97eff335163939eac8b929834875168b29b3d267" dependencies = [ "rustls-pki-types", ] @@ -4010,31 +4007,13 @@ dependencies = [ "windows-link", ] -[[package]] -name = "windows-sys" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" -dependencies = [ - "windows-targets 0.42.2", -] - [[package]] name = "windows-sys" version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-sys" -version = "0.60.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" -dependencies = [ - "windows-targets 0.53.5", + "windows-targets", ] [[package]] @@ -4046,212 +4025,84 @@ dependencies = [ "windows-link", ] -[[package]] -name = "windows-targets" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" -dependencies = [ - "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.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.6", - "windows_aarch64_msvc 0.52.6", - "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm 0.52.6", - "windows_i686_msvc 0.52.6", - "windows_x86_64_gnu 0.52.6", - "windows_x86_64_gnullvm 0.52.6", - "windows_x86_64_msvc 0.52.6", -] - -[[package]] -name = "windows-targets" -version = "0.53.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" -dependencies = [ - "windows-link", - "windows_aarch64_gnullvm 0.53.1", - "windows_aarch64_msvc 0.53.1", - "windows_i686_gnu 0.53.1", - "windows_i686_gnullvm 0.53.1", - "windows_i686_msvc 0.53.1", - "windows_x86_64_gnu 0.53.1", - "windows_x86_64_gnullvm 0.53.1", - "windows_x86_64_msvc 0.53.1", + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", ] -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" - [[package]] name = "windows_aarch64_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" - -[[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.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" -[[package]] -name = "windows_aarch64_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" - -[[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.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" -[[package]] -name = "windows_i686_gnu" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" - [[package]] name = "windows_i686_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" -[[package]] -name = "windows_i686_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" - -[[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.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" -[[package]] -name = "windows_i686_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" - -[[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.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" -[[package]] -name = "windows_x86_64_gnu" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" - -[[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.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" - -[[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.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" -[[package]] -name = "windows_x86_64_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" - [[package]] name = "winnow" -version = "0.7.14" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" +checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" dependencies = [ "memchr", ] -[[package]] -name = "wit-bindgen" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" - [[package]] name = "writeable" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" +checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4" [[package]] name = "xz2" @@ -4264,9 +4115,9 @@ dependencies = [ [[package]] name = "yaml-rust2" -version = "0.10.4" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2462ea039c445496d8793d052e13787f2b90e750b833afee748e601c17621ed9" +checksum = "631a50d867fafb7093e709d75aaee9e0e0d5deb934021fcea25ac2fe09edc51e" dependencies = [ "arraydeque", "encoding_rs", @@ -4275,9 +4126,9 @@ dependencies = [ [[package]] name = "yoke" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" +checksum = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5" dependencies = [ "stable_deref_trait", "yoke-derive", @@ -4286,68 +4137,68 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" +checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "synstructure", ] [[package]] name = "zerocopy" -version = "0.8.39" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db6d35d663eadb6c932438e763b262fe1a70987f9ae936e60158176d710cae4a" +checksum = "b7cbbc0a705a0fd05cc3676525980d2bf5a9bc4adac6d6475209a7887cf59d19" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.39" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4122cd3169e94605190e77839c9a40d40ed048d305bfdc146e7df40ab0f3e517" +checksum = "e2e817b7b52d0c7358d3246da9d69935ebb18116b2b102b4230dac079b4862f5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "zerofrom" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272" dependencies = [ "zerofrom-derive", ] [[package]] name = "zerofrom-derive" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "synstructure", ] [[package]] name = "zeroize" -version = "1.8.2" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" [[package]] name = "zerotrie" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" +checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf" dependencies = [ "displaydoc", "yoke", @@ -4356,9 +4207,9 @@ dependencies = [ [[package]] name = "zerovec" -version = "0.11.5" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" +checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239" dependencies = [ "yoke", "zerofrom", @@ -4367,13 +4218,13 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" +checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] diff --git a/examples/use_config/pi_pico_w_ble/Cargo.toml b/examples/use_config/pi_pico_w_ble/Cargo.toml index b98323f49..ea7d0aada 100644 --- a/examples/use_config/pi_pico_w_ble/Cargo.toml +++ b/examples/use_config/pi_pico_w_ble/Cargo.toml @@ -10,7 +10,7 @@ edition = "2024" license = "MIT OR Apache-2.0" [dependencies] -rmk = { path = "../../../rmk", features = ["pico_w_ble", "rp2040"] } +rmk = { path = "../../../rmk", default-features = false, features = ["defmt", "storage", "vial", "watchdog", "pico_w_ble", "rp2040"] } embassy-time = { version = "0.5", features = ["defmt"] } embassy-rp = { version = "0.10", features = [ "rp2040", @@ -28,7 +28,7 @@ portable-atomic = { version = "1", features = ["critical-section"] } defmt = "1" defmt-rtt = "1" panic-probe = { version = "1", features = ["print-defmt"] } -cyw43 = { version = "0.7.0", features = ["defmt", "firmware-logs", "bluetooth"] } +cyw43 = { version = "0.7", features = ["defmt", "firmware-logs", "bluetooth"] } cyw43-pio = { version = "0.10.0", features = ["defmt"] } static_cell = "2" bt-hci = { version = "0.9", features = ["defmt"] } @@ -83,4 +83,4 @@ embassy-futures = { git = "https://github.com/embassy-rs/embassy", rev = "e372d1 embassy-usb = { git = "https://github.com/embassy-rs/embassy", rev = "e372d1e1e624032ddc5ea932ac4c368b28ccb0dd" } embassy-usb-driver = { git = "https://github.com/embassy-rs/embassy", rev = "e372d1e1e624032ddc5ea932ac4c368b28ccb0dd" } embassy-embedded-hal = { git = "https://github.com/embassy-rs/embassy", rev = "e372d1e1e624032ddc5ea932ac4c368b28ccb0dd" } -embassy-hal-internal = { git = "https://github.com/embassy-rs/embassy", rev = "e372d1e1e624032ddc5ea932ac4c368b28ccb0dd" } \ No newline at end of file +embassy-hal-internal = { git = "https://github.com/embassy-rs/embassy", rev = "e372d1e1e624032ddc5ea932ac4c368b28ccb0dd" } diff --git a/examples/use_config/pi_pico_w_ble/keyboard.toml b/examples/use_config/pi_pico_w_ble/keyboard.toml index 5cf21bddb..2434ad1e4 100644 --- a/examples/use_config/pi_pico_w_ble/keyboard.toml +++ b/examples/use_config/pi_pico_w_ble/keyboard.toml @@ -1,4 +1,5 @@ [keyboard] +# Replace with your keyboard identity. name = "RMK Keyboard" product_name = "RMK Keyboard" vendor_id = 0x4c4b @@ -7,30 +8,40 @@ manufacturer = "haobo" board = "pi_pico_w" [matrix] -# Row and col pins are mandatory +# Matrix pins are required. row_pins = ["PIN_6", "PIN_7", "PIN_8", "PIN_9"] col_pins = ["PIN_19", "PIN_20", "PIN_21"] -# RMK uses col2row as the default matrix diode direction, if you want to use a row2col matrix, add `row2col = true` +# Default diode direction is col2row; set `row2col = true` if needed. # row2col = true [layout] rows = 4 cols = 3 -layers = 2 -keymap = [ - [ - ["A", "B", "C"], - ["Kc1", "Kc2", "Kc3"], - ["LCtrl", "MO(1)", "LShift"], - ["OSL(1)", "LT(2, Kc9)", "LM(1, LShift | LGui)"] - ], - [ - ["_", "TT(1)", "TG(2)"], - ["_", "_", "_"], - ["_", "_", "_"], - ["_", "_", "_"] - ], -] +map = """ +(0,0) (0,1) (0,2) +(1,0) (1,1) (1,2) +(2,0) (2,1) (2,2) +(3,0) (3,1) (3,2) +""" + +[keymap] +layers = 3 + +[[keymap.layer]] # layer 0 +keys = """ +A B C +Kc1 Kc2 Kc3 +LCtrl MO(1) LShift +OSL(1) LT(2, Kc9) LM(1, LShift | LGui) +""" + +[[keymap.layer]] # layer 1 +keys = """ +_ TT(1) TG(2) +_ _ _ +_ _ _ +_ _ _ +""" [ble] enabled = true diff --git a/examples/use_config/pi_pico_w_ble_split/Cargo.lock b/examples/use_config/pi_pico_w_ble_split/Cargo.lock index 94ef6054c..a9e261c78 100644 --- a/examples/use_config/pi_pico_w_ble_split/Cargo.lock +++ b/examples/use_config/pi_pico_w_ble_split/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -10,7 +16,7 @@ checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" dependencies = [ "cfg-if", "cipher", - "cpufeatures", + "cpufeatures 0.2.17", ] [[package]] @@ -51,9 +57,9 @@ checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236" [[package]] name = "arrayvec" -version = "0.7.6" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" [[package]] name = "as-slice" @@ -81,7 +87,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -101,15 +107,15 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "autocfg" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "aws-lc-rs" -version = "1.16.2" +version = "1.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a054912289d18629dc78375ba2c3726a3afe3ff71b4edba9dedfca0e3446d1fc" +checksum = "4342d8937fc7e5dd9b1c60292261c0670c882a2cd1719cfc11b1af41731e32ad" dependencies = [ "aws-lc-sys", "zeroize", @@ -117,14 +123,15 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.39.0" +version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fa7e52a4c5c547c741610a2c6f123f3881e409b714cd27e6798ef020c514f0a" +checksum = "6d9ceb1da931507a12f4fccea479dccd00da1943e1b4ae72d8e502d707361444" dependencies = [ "cc", "cmake", "dunce", "fs_extra", + "pkg-config", ] [[package]] @@ -189,7 +196,7 @@ checksum = "3ca6739863c590881f038d033a146c51ddae239186a4327014839fd864f44ed5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -200,9 +207,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.11.0" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" +checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" dependencies = [ "serde_core", ] @@ -232,12 +239,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f3c66fd0a41a3b3a5906847b1bf5516048ce083e24fa9341a0fa31d3b4cd73d" dependencies = [ "btuuid", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-sync", "embedded-io 0.7.1", "embedded-io-async 0.7.0", "futures-intrusive", - "heapless 0.9.2", + "heapless 0.9.3", "serde", ] @@ -254,9 +261,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.20.2" +version = "3.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" [[package]] name = "bytemuck" @@ -272,9 +279,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.11.1" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" +checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04" [[package]] name = "cargo_toml" @@ -282,16 +289,16 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa61aec073ec94791433ddf3df2323ff9d1711557c2a0eefb0f99cb4f8dca520" dependencies = [ - "semver 1.0.27", + "semver 1.0.28", "serde", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] name = "cc" -version = "1.2.56" +version = "1.2.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2" +checksum = "f5d6cac793997bd970000024b2934968efe83b382de4fdcf4fcb46b6ee4ad996" dependencies = [ "find-msvc-tools", "jobserver", @@ -299,12 +306,6 @@ dependencies = [ "shlex", ] -[[package]] -name = "cesu8" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" - [[package]] name = "cfg-if" version = "1.0.4" @@ -317,13 +318,24 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" +[[package]] +name = "chacha20" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81" +dependencies = [ + "cfg-if", + "cpufeatures 0.3.0", + "rand_core 0.10.1", +] + [[package]] name = "chrono" -version = "0.4.44" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" +checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "num-traits", "pure-rust-locales", ] @@ -351,9 +363,9 @@ dependencies = [ [[package]] name = "cmake" -version = "0.1.57" +version = "0.1.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75443c44cd6b379beb8c5b45d85d0773baf31cce901fe7bb252f4eff3008ef7d" +checksum = "c0f78a02292a74a88ac736019ab962ece0bc380e3f977bf72e376c5d78ff0678" dependencies = [ "cc", ] @@ -364,7 +376,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1" dependencies = [ - "thiserror 2.0.18", + "thiserror", ] [[package]] @@ -389,9 +401,9 @@ dependencies = [ [[package]] name = "config" -version = "0.15.19" +version = "0.15.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b30fa8254caad766fc03cb0ccae691e14bf3bd72bfff27f72802ce729551b3d6" +checksum = "b85f248a4de22d204ceabc6299d89d2c70fbd7f09fea53c06c852369652d8139" dependencies = [ "async-trait", "convert_case 0.6.0", @@ -402,7 +414,7 @@ dependencies = [ "serde-untagged", "serde_core", "serde_json", - "toml 0.9.12+spec-1.1.0", + "toml", "winnow", "yaml-rust2", ] @@ -536,7 +548,7 @@ checksum = "e37549a379a9e0e6e576fd208ee60394ccb8be963889eebba3ffe0980364f472" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -548,11 +560,20 @@ dependencies = [ "libc", ] +[[package]] +name = "cpufeatures" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201" +dependencies = [ + "libc", +] + [[package]] name = "crc-any" -version = "2.5.0" +version = "2.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62ec9ff5f7965e4d7280bd5482acd20aadb50d632cf6c1d74493856b011fa73" +checksum = "46db9f663dfb869b80fcf59e32d7a80fc6c464a4f6328f3f06a00f5e36d05f8c" dependencies = [ "debug-helper", ] @@ -609,7 +630,7 @@ dependencies = [ "bt-hci", "cortex-m", "cortex-m-rt", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-futures", "embassy-hal-internal", "embassy-net-driver-channel", @@ -619,7 +640,7 @@ dependencies = [ "embedded-hal-async", "embedded-io-async 0.7.0", "futures", - "heapless 0.9.2", + "heapless 0.9.3", "sdio", "trait-set", ] @@ -630,7 +651,7 @@ version = "0.10.0" source = "git+https://github.com/embassy-rs/embassy?rev=e372d1e1e624032ddc5ea932ac4c368b28ccb0dd#e372d1e1e624032ddc5ea932ac4c368b28ccb0dd" dependencies = [ "cyw43", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-futures", "embassy-rp", "fixed", @@ -667,7 +688,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -680,7 +701,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -691,7 +712,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -702,7 +723,7 @@ checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ "darling_core 0.23.0", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -716,9 +737,9 @@ dependencies = [ [[package]] name = "debug-helper" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f578e8e2c440e7297e008bb5486a3a8a194775224bbc23729b0dbdfaeebf162e" +checksum = "80a4af69c60438a1a82af89d362f4729fd38db7b73f305a237636fad31ceb2bf" [[package]] name = "defmt" @@ -726,14 +747,14 @@ version = "0.3.100" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0963443817029b2024136fc4dd07a5107eb8f977eaf18fcd1fdeb11306b64ad" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] name = "defmt" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "548d977b6da32fa1d1fda2876453da1e7df63ad0304c8b3dae4dbe7b96f39b78" +checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" dependencies = [ "bitflags 1.3.2", "defmt-macros", @@ -741,15 +762,14 @@ dependencies = [ [[package]] name = "defmt-macros" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d4fc12a85bcf441cfe44344c4b72d58493178ce635338a3f3b78943aceb258e" +checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" dependencies = [ "defmt-parser", - "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -758,17 +778,17 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "10d60334b3b2e7c9d91ef8150abfb6fa4c1c39ebbcf4a81c2e346aad939fee3e" dependencies = [ - "thiserror 2.0.18", + "thiserror", ] [[package]] name = "defmt-rtt" -version = "1.1.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d5a25c99d89c40f5676bec8cefe0614f17f0f40e916f98e345dae941807f9e" +checksum = "05144944c117db54127a8ac17a3c9a28d55e7047bfddb950bcd20b4a94c79b10" dependencies = [ "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -794,13 +814,13 @@ dependencies = [ [[package]] name = "displaydoc" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -829,9 +849,9 @@ checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" [[package]] name = "either" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" [[package]] name = "elliptic-curve" @@ -857,7 +877,7 @@ name = "embassy-embedded-hal" version = "0.6.0" source = "git+https://github.com/embassy-rs/embassy?rev=e372d1e1e624032ddc5ea932ac4c368b28ccb0dd#e372d1e1e624032ddc5ea932ac4c368b28ccb0dd" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embassy-futures", "embassy-hal-internal", "embassy-sync", @@ -878,7 +898,7 @@ dependencies = [ "cordyceps", "cortex-m", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-executor-macros", "embassy-executor-timer-queue", @@ -892,7 +912,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -905,7 +925,7 @@ name = "embassy-futures" version = "0.1.2" source = "git+https://github.com/embassy-rs/embassy?rev=e372d1e1e624032ddc5ea932ac4c368b28ccb0dd#e372d1e1e624032ddc5ea932ac4c368b28ccb0dd" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -917,7 +937,7 @@ dependencies = [ "as-slice", "cortex-m", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "num-traits", ] @@ -942,12 +962,12 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82051f67e8a06a8faebd183f62cfade184c96be68126c5f064abb8223a591ff1" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "cfg-if", "cortex-m", "cortex-m-rt", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -980,7 +1000,7 @@ dependencies = [ "cortex-m", "cortex-m-rt", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -1017,11 +1037,11 @@ source = "git+https://github.com/embassy-rs/embassy?rev=e372d1e1e624032ddc5ea932 dependencies = [ "cfg-if", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io-async 0.7.0", "futures-core", "futures-sink", - "heapless 0.9.2", + "heapless 0.9.3", ] [[package]] @@ -1031,7 +1051,7 @@ source = "git+https://github.com/embassy-rs/embassy?rev=e372d1e1e624032ddc5ea932 dependencies = [ "cfg-if", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-time-driver", "embedded-hal 0.2.7", @@ -1054,7 +1074,7 @@ version = "0.3.2" source = "git+https://github.com/embassy-rs/embassy?rev=e372d1e1e624032ddc5ea932ac4c368b28ccb0dd#e372d1e1e624032ddc5ea932ac4c368b28ccb0dd" dependencies = [ "embassy-executor-timer-queue", - "heapless 0.9.2", + "heapless 0.9.3", ] [[package]] @@ -1062,15 +1082,15 @@ name = "embassy-usb" version = "0.6.0" source = "git+https://github.com/embassy-rs/embassy?rev=e372d1e1e624032ddc5ea932ac4c368b28ccb0dd#e372d1e1e624032ddc5ea932ac4c368b28ccb0dd" dependencies = [ - "bitflags 2.11.0", - "defmt 1.0.1", + "bitflags 2.13.0", + "defmt 1.1.1", "embassy-futures", "embassy-net-driver-channel", "embassy-sync", "embassy-time", "embassy-usb-driver", "embedded-io-async 0.7.0", - "heapless 0.9.2", + "heapless 0.9.3", "ssmarshal", "usbd-hid", ] @@ -1080,7 +1100,7 @@ name = "embassy-usb-driver" version = "0.2.2" source = "git+https://github.com/embassy-rs/embassy?rev=e372d1e1e624032ddc5ea932ac4c368b28ccb0dd#e372d1e1e624032ddc5ea932ac4c368b28ccb0dd" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io-async 0.6.1", "embedded-io-async 0.7.0", ] @@ -1092,7 +1112,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6efd0c0e0b21bcf91b475b8fa47347c1df32c9a99728ae1e1b0e6625862dfd1a" dependencies = [ "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-sync", "embassy-time", "embassy-usb-driver", @@ -1138,6 +1158,12 @@ dependencies = [ "nb 1.1.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -1150,7 +1176,7 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9eb1aa714776b75c7e67e1da744b81a129b3ff919c8712b5e1b32252c1f07cc7" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -1168,7 +1194,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2564b9f813c544241430e147d8bc454815ef9ac998878d30cc3055449f7fd4c0" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io 0.7.1", ] @@ -1219,9 +1245,9 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "erased-serde" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e8918065695684b2b0702da20382d5ae6065cf3327bc2d6436bd49a71ce9f3" +checksum = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec" dependencies = [ "serde", "serde_core", @@ -1246,9 +1272,9 @@ checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" [[package]] name = "fixed" -version = "1.30.0" +version = "1.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c566da967934c6c7ee0458a9773de9b2a685bd2ce26a3b28ddfc740e640182f5" +checksum = "9af2cbf772fa6d1c11358f92ef554cb6b386201210bcf0e91fb7fba8a907fb40" dependencies = [ "az", "bytemuck", @@ -1270,9 +1296,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foldhash" -version = "0.1.5" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" [[package]] name = "form_urlencoded" @@ -1343,7 +1369,7 @@ checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1376,9 +1402,9 @@ dependencies = [ [[package]] name = "generator" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52f04ae4152da20c76fe800fa48659201d5cf627c5149ca0b707b69d7eef6cf9" +checksum = "b3b854b0e584ead1a33f18b2fcad7cf7be18b3875c78816b753639aa501513ae" dependencies = [ "cc", "cfg-if", @@ -1415,15 +1441,15 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.3.4" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" dependencies = [ "cfg-if", "js-sys", "libc", "r-efi", - "wasip2", + "rand_core 0.10.1", "wasm-bindgen", ] @@ -1440,9 +1466,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.13" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54" +checksum = "6cb093c84e8bd9b188d4c4a8cb6579fc016968d14c99882163cd3ff402a4f155" dependencies = [ "atomic-waker", "bytes", @@ -1503,26 +1529,26 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hashbrown" -version = "0.15.5" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" dependencies = [ "foldhash", ] [[package]] name = "hashbrown" -version = "0.16.1" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" [[package]] name = "hashlink" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" +checksum = "824e001ac4f3012dd16a264bec811403a67ca9deb6c102fc5049b32c4574b35f" dependencies = [ - "hashbrown 0.15.5", + "hashbrown 0.16.1", ] [[package]] @@ -1551,11 +1577,11 @@ dependencies = [ [[package]] name = "heapless" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af2455f757db2b292a9b1768c4b70186d443bcb3b316252d6b540aec1cd89ed" +checksum = "25ba4bd83f9415b58b4ed8dc5714c76e626a105be4646c02630ad730ad3b5aa4" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "hash32 0.3.1", "serde_core", "stable_deref_trait", @@ -1587,9 +1613,9 @@ dependencies = [ [[package]] name = "http" -version = "1.4.0" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" +checksum = "6970f50e31d6fc17d3fa27329444bfa74e196cf62e95052a3f6fee181dba6425" dependencies = [ "bytes", "itoa", @@ -1626,9 +1652,9 @@ checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" [[package]] name = "hyper" -version = "1.8.1" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" +checksum = "55281c53a1894c864990125767da440a4e630446785086f52523b20033b74498" dependencies = [ "atomic-waker", "bytes", @@ -1640,7 +1666,6 @@ dependencies = [ "httparse", "itoa", "pin-project-lite", - "pin-utils", "smallvec", "tokio", "want", @@ -1648,15 +1673,14 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.7" +version = "0.27.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" +checksum = "33ca68d021ef39cf6463ab54c1d0f5daf03377b70561305bb89a8f83aab66e0f" dependencies = [ "http", "hyper", "hyper-util", "rustls", - "rustls-pki-types", "tokio", "tokio-rustls", "tower-service", @@ -1689,12 +1713,13 @@ dependencies = [ [[package]] name = "icu_collections" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" +checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c" dependencies = [ "displaydoc", "potential_utf", + "utf8_iter", "yoke", "zerofrom", "zerovec", @@ -1702,9 +1727,9 @@ dependencies = [ [[package]] name = "icu_locale_core" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" +checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29" dependencies = [ "displaydoc", "litemap", @@ -1715,9 +1740,9 @@ dependencies = [ [[package]] name = "icu_normalizer" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" +checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4" dependencies = [ "icu_collections", "icu_normalizer_data", @@ -1729,15 +1754,15 @@ dependencies = [ [[package]] name = "icu_normalizer_data" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" +checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38" [[package]] name = "icu_properties" -version = "2.1.2" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" +checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de" dependencies = [ "icu_collections", "icu_locale_core", @@ -1749,15 +1774,15 @@ dependencies = [ [[package]] name = "icu_properties_data" -version = "2.1.2" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" +checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14" [[package]] name = "icu_provider" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" +checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421" dependencies = [ "displaydoc", "icu_locale_core", @@ -1787,9 +1812,9 @@ dependencies = [ [[package]] name = "idna_adapter" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714" dependencies = [ "icu_normalizer", "icu_properties", @@ -1797,12 +1822,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.13.0" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.16.1", + "hashbrown 0.17.1", ] [[package]] @@ -1816,19 +1841,9 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" - -[[package]] -name = "iri-string" -version = "0.7.10" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c91338f0783edbd6195decb37bae672fd3b165faffb89bf7b9e6942f8b1a731a" -dependencies = [ - "memchr", - "serde", -] +checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2" [[package]] name = "itertools" @@ -1841,49 +1856,77 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "jni" -version = "0.21.1" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +checksum = "5efd9a482cf3a427f00d6b35f14332adc7902ce91efb778580e180ff90fa3498" dependencies = [ - "cesu8", "cfg-if", "combine", + "jni-macros", "jni-sys", "log", - "thiserror 1.0.69", + "simd_cesu8", + "thiserror", "walkdir", - "windows-sys 0.45.0", + "windows-link", +] + +[[package]] +name = "jni-macros" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a00109accc170f0bdb141fed3e393c565b6f5e072365c3bd58f5b062591560a3" +dependencies = [ + "proc-macro2", + "quote", + "rustc_version 0.4.1", + "simd_cesu8", + "syn 2.0.118", ] [[package]] name = "jni-sys" -version = "0.3.0" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2" +dependencies = [ + "jni-sys-macros", +] + +[[package]] +name = "jni-sys-macros" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" +checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" +dependencies = [ + "quote", + "syn 2.0.118", +] [[package]] name = "jobserver" -version = "0.1.34" +version = "0.1.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +checksum = "1c00acbd29eabad4a2392fa0e921c874934dbbf4194312ad20f04a0ed67a3cb3" dependencies = [ - "getrandom 0.3.4", + "getrandom 0.4.3", "libc", ] [[package]] name = "js-sys" -version = "0.3.90" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14dc6f6450b3f6d4ed5b16327f38fed626d375a886159ca555bd7822c0c3a5a6" +checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ - "once_cell", + "cfg-if", + "futures-util", "wasm-bindgen", ] @@ -1910,7 +1953,7 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb26cec98cce3a3d96cbb7bced3c4b16e3d13f27ec56dbd62cbc8f39cfb9d653" dependencies = [ - "cpufeatures", + "cpufeatures 0.2.17", ] [[package]] @@ -1953,15 +1996,15 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.182" +version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "litemap" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" +checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0" [[package]] name = "litrs" @@ -1980,9 +2023,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.29" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" [[package]] name = "loom" @@ -2025,9 +2068,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.8.0" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" [[package]] name = "mime" @@ -2035,11 +2078,20 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] + [[package]] name = "mio" -version = "1.1.1" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" +checksum = "02bd0af71c67b473010cbbc60715ee815645a4dc942899111f494b4b737d6fda" dependencies = [ "libc", "wasi", @@ -2097,9 +2149,9 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" +checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26" dependencies = [ "num_enum_derive", "rustversion", @@ -2107,20 +2159,20 @@ dependencies = [ [[package]] name = "num_enum_derive" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" +checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "once_cell" -version = "1.21.3" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] name = "openssl-probe" @@ -2155,7 +2207,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd402d00b0fb94c5aee000029204a46884b1262e0c443f166d86d2c0747e1a1a" dependencies = [ "cortex-m", - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -2201,9 +2253,9 @@ checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "pest" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662" +checksum = "47627dd7305c6a2d6c8c6bcd24c5a4c17dbbf425f4f9c5313e724b38fc9782e9" dependencies = [ "memchr", "ucd-trie", @@ -2211,9 +2263,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77" +checksum = "4b4254325ecad416ab689e27ba51da03ba01a9632bc6e108f5fe7c3c4ad29d58" dependencies = [ "pest", "pest_generator", @@ -2221,25 +2273,24 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f" +checksum = "6c4c0e91ead7a8f7acecbca6f003fc2e8282b1dbe2dd9c9d2f16aba42995e0a7" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "pest_meta" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220" +checksum = "f9744bc48116fee06334924bb5f2bad41eed5e89bd26e29b0b799f9a3f82c210" dependencies = [ "pest", - "sha2", ] [[package]] @@ -2269,15 +2320,9 @@ checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" [[package]] name = "pin-project-lite" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" - -[[package]] -name = "pin-utils" -version = "0.1.0" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pio" @@ -2324,14 +2369,14 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "pkg-config" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" [[package]] name = "portable-atomic" @@ -2349,7 +2394,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", - "defmt 1.0.1", + "defmt 1.1.1", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -2363,14 +2410,14 @@ checksum = "e0232bd009a197ceec9cc881ba46f727fcd8060a2d8d6a9dde7a69030a6fe2bb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "potential_utf" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" +checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564" dependencies = [ "zerovec", ] @@ -2418,7 +2465,7 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2436,14 +2483,14 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "869675ad2d7541aea90c6d88c81f46a7f4ea9af8cd0395d38f11a95126998a0d" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] name = "quinn" -version = "0.11.9" +version = "0.11.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" +checksum = "0c1a41e437b6bbd489372cd4971de128e85c855f56c57f283d20ff016cf7c0a8" dependencies = [ "bytes", "cfg_aliases", @@ -2453,7 +2500,7 @@ dependencies = [ "rustc-hash", "rustls", "socket2", - "thiserror 2.0.18", + "thiserror", "tokio", "tracing", "web-time", @@ -2461,21 +2508,22 @@ dependencies = [ [[package]] name = "quinn-proto" -version = "0.11.14" +version = "0.11.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "434b42fec591c96ef50e21e886936e66d3cc3f737104fdb9b737c40ffb94c098" +checksum = "2f4bfc015262b9df63c8845072ce59068853ff5872180c2ce2f13038b970e560" dependencies = [ "aws-lc-rs", "bytes", - "getrandom 0.3.4", + "getrandom 0.4.3", "lru-slab", - "rand 0.9.2", + "rand 0.10.2", + "rand_pcg", "ring", "rustc-hash", "rustls", "rustls-pki-types", "slab", - "thiserror 2.0.18", + "thiserror", "tinyvec", "tracing", "web-time", @@ -2483,50 +2531,51 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.14" +version = "0.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" +checksum = "35a133f956daabe89a61a685c2649f13d82d5aa4bd5d12d1277e1072a21c0694" dependencies = [ "cfg_aliases", "libc", "once_cell", "socket2", "tracing", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] name = "quote" -version = "1.0.44" +version = "1.0.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" +checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" dependencies = [ "proc-macro2", ] [[package]] name = "r-efi" -version = "5.3.0" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" [[package]] name = "rand" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" dependencies = [ "rand_core 0.6.4", ] [[package]] name = "rand" -version = "0.9.2" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80" dependencies = [ - "rand_chacha 0.9.0", - "rand_core 0.9.5", + "chacha20", + "getrandom 0.4.3", + "rand_core 0.10.1", ] [[package]] @@ -2539,16 +2588,6 @@ dependencies = [ "rand_core 0.6.4", ] -[[package]] -name = "rand_chacha" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" -dependencies = [ - "ppv-lite86", - "rand_core 0.9.5", -] - [[package]] name = "rand_core" version = "0.6.4" @@ -2560,9 +2599,6 @@ name = "rand_core" version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" -dependencies = [ - "getrandom 0.3.4", -] [[package]] name = "rand_core" @@ -2570,20 +2606,29 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" +[[package]] +name = "rand_pcg" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "caa0f4137e1c0a72f4c651489402276c8e8e1cf081f3b0ba156d2cbeef09e86a" +dependencies = [ + "rand_core 0.10.1", +] + [[package]] name = "redox_syscall" version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", ] [[package]] name = "regex" -version = "1.12.3" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +checksum = "2a0e75113e14dc5acb068cd0786884f214f1312650a3d36d269f5c4f3cdee8a2" dependencies = [ "aho-corasick", "memchr", @@ -2593,9 +2638,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +checksum = "1f388202e4b80542a0921078cc23b6333bcf1409c1e3f86404cae4766a6131db" dependencies = [ "aho-corasick", "memchr", @@ -2604,15 +2649,15 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "reqwest" -version = "0.13.2" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab3f43e3283ab1488b624b44b0e988d0acea0b3214e694730a055cb6b2efa801" +checksum = "219c5811de6525e5416c7d5d53bb656d3afdbc6c5af816e0802bcfa42dbdc1c3" dependencies = [ "base64", "bytes", @@ -2650,9 +2695,9 @@ dependencies = [ [[package]] name = "rgb" -version = "0.8.52" +version = "0.8.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c6a884d2998352bb4daf0183589aec883f16a6da1f4dde84d8e2e9a5409a1ce" +checksum = "47b34b781b31e5d73e9fbc8689c70551fd1ade9a19e3e28cfec8580a79290cc4" [[package]] name = "ring" @@ -2676,7 +2721,7 @@ dependencies = [ "byteorder", "cortex-m", "crc32fast", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -2693,7 +2738,7 @@ dependencies = [ "embedded-storage-async", "fixed", "futures", - "heapless 0.9.2", + "heapless 0.9.3", "paste", "pio", "postcard", @@ -2711,13 +2756,15 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] @@ -2731,7 +2778,7 @@ dependencies = [ "rmk-config", "rmk-types", "strum", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2743,7 +2790,7 @@ dependencies = [ "cortex-m-rt", "cyw43", "cyw43-pio", - "defmt 1.0.1", + "defmt 1.1.1", "defmt-rtt", "embassy-executor", "embassy-rp", @@ -2762,22 +2809,22 @@ name = "rmk-types" version = "0.2.2" dependencies = [ "bitfield-struct", - "defmt 1.0.1", - "heapless 0.9.2", + "defmt 1.1.1", + "heapless 0.9.3", "postcard", "rmk-config", "serde", "strum", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] name = "ron" -version = "0.12.0" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd490c5b18261893f14449cbd28cb9c0b637aebf161cd77900bfdedaff21ec32" +checksum = "81116b9531d61eabc41aeb228e4b6b2435bcca3233b98cf3b3077d4e6e9debb3" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "once_cell", "serde", "serde_derive", @@ -2815,9 +2862,9 @@ dependencies = [ [[package]] name = "rustc-hash" -version = "2.1.1" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" +checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d" [[package]] name = "rustc_version" @@ -2834,14 +2881,14 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.27", + "semver 1.0.28", ] [[package]] name = "rustls" -version = "0.23.37" +version = "0.23.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "758025cb5fccfd3bc2fd74708fd4682be41d99e5dff73c377c0646c6012c73a4" +checksum = "6b92b125634d9b795e7beca796cc790df15a7fb38323bf3196fda83292d06b1f" dependencies = [ "aws-lc-rs", "once_cell", @@ -2853,9 +2900,9 @@ dependencies = [ [[package]] name = "rustls-native-certs" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "612460d5f7bea540c490b2b6395d8e34a953e52b491accd6c86c8164c5932a63" +checksum = "dab5152771c58876a2146916e53e35057e1a4dfa2b9df0f0305b07f611fdea4d" dependencies = [ "openssl-probe", "rustls-pki-types", @@ -2865,9 +2912,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.14.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd" +checksum = "764899a24af3980067ee14bc143654f297b22eaebfe3c7b6b211920a5a59b046" dependencies = [ "web-time", "zeroize", @@ -2875,9 +2922,9 @@ dependencies = [ [[package]] name = "rustls-platform-verifier" -version = "0.6.2" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d99feebc72bae7ab76ba994bb5e121b8d83d910ca40b36e0921f53becc41784" +checksum = "26d1e2536ce4f35f4846aa13bff16bd0ff40157cdb14cc056c7b14ba41233ba0" dependencies = [ "core-foundation 0.10.1", "core-foundation-sys", @@ -2902,9 +2949,9 @@ checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" [[package]] name = "rustls-webpki" -version = "0.103.9" +version = "0.103.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7df23109aa6c1567d1c575b9952556388da57401e4ace1d15f79eedad0d8f53" +checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e" dependencies = [ "aws-lc-rs", "ring", @@ -2914,9 +2961,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] name = "same-file" @@ -2929,9 +2976,9 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.28" +version = "0.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" +checksum = "91c1b7e4904c873ef0710c1f407dde2e6287de2bebc1bbbf7d430bb7cbffd939" dependencies = [ "windows-sys 0.61.2", ] @@ -2978,7 +3025,7 @@ version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "core-foundation 0.10.1", "core-foundation-sys", "libc", @@ -3006,9 +3053,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.27" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" dependencies = [ "serde", "serde_core", @@ -3022,11 +3069,11 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "sequential-storage" -version = "7.1.0" +version = "7.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4580ee0fa08cd41bee9f5b50ed309877e18735370fd4eef5766cc82863ef772" +checksum = "574e5a379bf43653079b34cb4cf32958404b5f42e0ed5b5adcdff02c2de04d4d" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-storage-async", "postcard", "serde", @@ -3050,7 +3097,7 @@ checksum = "2bf03b7a5281cfd4013bc788d057b0f09fc634397d83bc8973c955bd4f32727a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -3082,14 +3129,14 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "serde_json" -version = "1.0.149" +version = "1.0.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" dependencies = [ "itoa", "memchr", @@ -3100,24 +3147,13 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "1.0.4" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" dependencies = [ "serde_core", ] -[[package]] -name = "sha2" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - [[package]] name = "sha2-const-stable" version = "0.1.0" @@ -3126,9 +3162,9 @@ checksum = "5f179d4e11094a893b82fff208f74d448a7512f99f5a0acbd5c679b705f83ed9" [[package]] name = "sha3" -version = "0.10.8" +version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +checksum = "77fd7028345d415a4034cf8777cd4f8ab1851274233b45f84e3d955502d93874" dependencies = [ "digest", "keccak", @@ -3145,15 +3181,31 @@ dependencies = [ [[package]] name = "shlex" -version = "1.3.0" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" + +[[package]] +name = "simd_cesu8" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94f90157bb87cddf702797c5dadfa0be7d266cdf49e22da2fcaa32eff75b2c33" +dependencies = [ + "rustc_version 0.4.1", + "simdutf8", +] + +[[package]] +name = "simdutf8" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" [[package]] name = "siphasher" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e" +checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" [[package]] name = "slab" @@ -3163,9 +3215,9 @@ checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] name = "smallvec" -version = "1.15.1" +version = "1.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" [[package]] name = "smart-leds-trait" @@ -3178,12 +3230,12 @@ dependencies = [ [[package]] name = "socket2" -version = "0.6.2" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86f4aa3ad99f2088c990dfa82d367e19cb29268ed67c574d10d0a4bfe71f07e0" +checksum = "52d1cfed4120b4d927bf7c0f86d2087a4a7d6027c906d9f9d525a80573b9be51" dependencies = [ "libc", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -3256,7 +3308,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -3278,9 +3330,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.117" +version = "2.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" dependencies = [ "proc-macro2", "quote", @@ -3304,7 +3356,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -3313,7 +3365,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a13f3d0daba03132c0aa9767f98351b3488edc2c100cda2d2ec2b04f3d8d3c8b" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "core-foundation 0.9.4", "system-configuration-sys", ] @@ -3346,33 +3398,13 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "thiserror" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" -dependencies = [ - "thiserror-impl 1.0.69", -] - [[package]] name = "thiserror" version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" dependencies = [ - "thiserror-impl 2.0.18", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", + "thiserror-impl", ] [[package]] @@ -3383,7 +3415,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -3406,9 +3438,9 @@ dependencies = [ [[package]] name = "tinystr" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" +checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d" dependencies = [ "displaydoc", "zerovec", @@ -3431,9 +3463,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.49.0" +version = "1.52.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86" +checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe" dependencies = [ "bytes", "libc", @@ -3468,27 +3500,14 @@ dependencies = [ [[package]] name = "toml" -version = "0.9.12+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" -dependencies = [ - "serde_core", - "serde_spanned", - "toml_datetime 0.7.5+spec-1.1.0", - "toml_parser", - "winnow", -] - -[[package]] -name = "toml" -version = "1.0.3+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7614eaf19ad818347db24addfa201729cf2a9b6fdfd9eb0ab870fcacc606c0c" +checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee" dependencies = [ "indexmap", "serde_core", "serde_spanned", - "toml_datetime 1.0.0+spec-1.1.0", + "toml_datetime", "toml_parser", "toml_writer", "winnow", @@ -3496,36 +3515,27 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.7.5+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" -dependencies = [ - "serde_core", -] - -[[package]] -name = "toml_datetime" -version = "1.0.0+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32c2555c699578a4f59f0cc68e5116c8d7cabbd45e1409b989d4be085b53f13e" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" dependencies = [ "serde_core", ] [[package]] name = "toml_parser" -version = "1.0.9+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ "winnow", ] [[package]] name = "toml_writer" -version = "1.0.6+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" +checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" [[package]] name = "tower" @@ -3544,20 +3554,20 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.6.8" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" +checksum = "4cfcf7e2740e6fc6d4d688b4ef00650406bb94adf4731e43c096c3a19fe40840" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "bytes", "futures-util", "http", "http-body", - "iri-string", "pin-project-lite", "tower", "tower-layer", "tower-service", + "url", ] [[package]] @@ -3591,7 +3601,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -3652,16 +3662,16 @@ dependencies = [ "aes", "bt-hci", "cmac", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-futures", "embassy-sync", "embassy-time", "embedded-io 0.7.1", "futures", - "heapless 0.9.2", + "heapless 0.9.3", "p256", - "rand 0.8.5", - "rand_chacha 0.3.1", + "rand 0.8.6", + "rand_chacha", "rand_core 0.6.4", "serde", "static_cell", @@ -3678,7 +3688,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "uuid", ] @@ -3696,9 +3706,9 @@ checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" [[package]] name = "typenum" -version = "1.19.0" +version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" [[package]] name = "ucd-trie" @@ -3714,9 +3724,9 @@ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-segmentation" -version = "1.12.0" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" [[package]] name = "unicode-width" @@ -3791,7 +3801,7 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.117", + "syn 2.0.118", "usbd-hid-descriptors", ] @@ -3803,9 +3813,9 @@ checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" [[package]] name = "uuid" -version = "1.21.0" +version = "1.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b672338555252d43fd2240c714dc444b8c6fb0a5c5335e65a07bba7742735ddb" +checksum = "bf80a72845275afea99e7f2b434723d3bc7e38470fcd1c7ed39a599c73319a53" dependencies = [ "js-sys", "wasm-bindgen", @@ -3869,20 +3879,11 @@ version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" -[[package]] -name = "wasip2" -version = "1.0.2+wasi-0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" -dependencies = [ - "wit-bindgen", -] - [[package]] name = "wasm-bindgen" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60722a937f594b7fde9adb894d7c092fc1bb6612897c46368d18e7a20208eff2" +checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" dependencies = [ "cfg-if", "once_cell", @@ -3893,23 +3894,19 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.63" +version = "0.4.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a89f4650b770e4521aa6573724e2aed4704372151bd0de9d16a3bbabb87441a" +checksum = "c62df1340f32221cb9c54d6a27b030e3dba64361d4a95bed55f9aacb44da291d" dependencies = [ - "cfg-if", - "futures-util", "js-sys", - "once_cell", "wasm-bindgen", - "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac8c6395094b6b91c4af293f4c79371c163f9a6f56184d2c9a85f5a95f3950" +checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3917,31 +3914,31 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab3fabce6159dc20728033842636887e4877688ae94382766e00b180abac9d60" +checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de0e091bdb824da87dc01d967388880d017a0a9bc4f3bdc0d86ee9f9336e3bb5" +checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" dependencies = [ "unicode-ident", ] [[package]] name = "web-sys" -version = "0.3.90" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "705eceb4ce901230f8625bd1d665128056ccbe4b7408faa625eec1ba80f59a97" +checksum = "8622dcb61c0bcc9fffa6938bed81210af2da9a7e4a1a834b2e37a59b6dfb6141" dependencies = [ "js-sys", "wasm-bindgen", @@ -3959,9 +3956,9 @@ dependencies = [ [[package]] name = "webpki-root-certs" -version = "1.0.6" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "804f18a4ac2676ffb4e8b5b5fa9ae38af06df08162314f96a68d2a363e21a8ca" +checksum = "0d46a5a140e6f7afeccd8eae97eff335163939eac8b929834875168b29b3d267" dependencies = [ "rustls-pki-types", ] @@ -4010,31 +4007,13 @@ dependencies = [ "windows-link", ] -[[package]] -name = "windows-sys" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" -dependencies = [ - "windows-targets 0.42.2", -] - [[package]] name = "windows-sys" version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-sys" -version = "0.60.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" -dependencies = [ - "windows-targets 0.53.5", + "windows-targets", ] [[package]] @@ -4046,212 +4025,84 @@ dependencies = [ "windows-link", ] -[[package]] -name = "windows-targets" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" -dependencies = [ - "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.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.6", - "windows_aarch64_msvc 0.52.6", - "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm 0.52.6", - "windows_i686_msvc 0.52.6", - "windows_x86_64_gnu 0.52.6", - "windows_x86_64_gnullvm 0.52.6", - "windows_x86_64_msvc 0.52.6", -] - -[[package]] -name = "windows-targets" -version = "0.53.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" -dependencies = [ - "windows-link", - "windows_aarch64_gnullvm 0.53.1", - "windows_aarch64_msvc 0.53.1", - "windows_i686_gnu 0.53.1", - "windows_i686_gnullvm 0.53.1", - "windows_i686_msvc 0.53.1", - "windows_x86_64_gnu 0.53.1", - "windows_x86_64_gnullvm 0.53.1", - "windows_x86_64_msvc 0.53.1", + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", ] -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" - [[package]] name = "windows_aarch64_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" - -[[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.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" -[[package]] -name = "windows_aarch64_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" - -[[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.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" -[[package]] -name = "windows_i686_gnu" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" - [[package]] name = "windows_i686_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" -[[package]] -name = "windows_i686_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" - -[[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.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" -[[package]] -name = "windows_i686_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" - -[[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.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" -[[package]] -name = "windows_x86_64_gnu" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" - -[[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.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" - -[[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.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" -[[package]] -name = "windows_x86_64_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" - [[package]] name = "winnow" -version = "0.7.14" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" +checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" dependencies = [ "memchr", ] -[[package]] -name = "wit-bindgen" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" - [[package]] name = "writeable" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" +checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4" [[package]] name = "xz2" @@ -4264,9 +4115,9 @@ dependencies = [ [[package]] name = "yaml-rust2" -version = "0.10.4" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2462ea039c445496d8793d052e13787f2b90e750b833afee748e601c17621ed9" +checksum = "631a50d867fafb7093e709d75aaee9e0e0d5deb934021fcea25ac2fe09edc51e" dependencies = [ "arraydeque", "encoding_rs", @@ -4275,9 +4126,9 @@ dependencies = [ [[package]] name = "yoke" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" +checksum = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5" dependencies = [ "stable_deref_trait", "yoke-derive", @@ -4286,68 +4137,68 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" +checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "synstructure", ] [[package]] name = "zerocopy" -version = "0.8.39" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db6d35d663eadb6c932438e763b262fe1a70987f9ae936e60158176d710cae4a" +checksum = "b7cbbc0a705a0fd05cc3676525980d2bf5a9bc4adac6d6475209a7887cf59d19" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.39" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4122cd3169e94605190e77839c9a40d40ed048d305bfdc146e7df40ab0f3e517" +checksum = "e2e817b7b52d0c7358d3246da9d69935ebb18116b2b102b4230dac079b4862f5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "zerofrom" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272" dependencies = [ "zerofrom-derive", ] [[package]] name = "zerofrom-derive" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "synstructure", ] [[package]] name = "zeroize" -version = "1.8.2" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" [[package]] name = "zerotrie" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" +checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf" dependencies = [ "displaydoc", "yoke", @@ -4356,9 +4207,9 @@ dependencies = [ [[package]] name = "zerovec" -version = "0.11.5" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" +checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239" dependencies = [ "yoke", "zerofrom", @@ -4367,13 +4218,13 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" +checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] diff --git a/examples/use_config/pi_pico_w_ble_split/Cargo.toml b/examples/use_config/pi_pico_w_ble_split/Cargo.toml index 97d3df87e..b38fba8e0 100644 --- a/examples/use_config/pi_pico_w_ble_split/Cargo.toml +++ b/examples/use_config/pi_pico_w_ble_split/Cargo.toml @@ -10,7 +10,7 @@ edition = "2024" license = "MIT OR Apache-2.0" [dependencies] -rmk = { path = "../../../rmk", features = ["pico_w_ble", "rp2040", "split"] } +rmk = { path = "../../../rmk", default-features = false, features = ["defmt", "storage", "vial", "watchdog", "pico_w_ble", "rp2040", "split"] } embassy-time = { version = "0.5", features = ["defmt"] } embassy-rp = { version = "0.10", features = [ "rp2040", @@ -28,7 +28,7 @@ portable-atomic = { version = "1", features = ["critical-section"] } defmt = "1" defmt-rtt = "1" panic-probe = { version = "1", features = ["print-defmt"] } -cyw43 = { version = "0.7.0", features = ["defmt", "firmware-logs", "bluetooth"] } +cyw43 = { version = "0.7", features = ["defmt", "firmware-logs", "bluetooth"] } cyw43-pio = { version = "0.10.0", features = ["defmt"] } static_cell = "2" bt-hci = { version = "0.9", features = ["defmt"] } @@ -88,4 +88,3 @@ embassy-usb = { git = "https://github.com/embassy-rs/embassy", rev = "e372d1e1e6 embassy-usb-driver = { git = "https://github.com/embassy-rs/embassy", rev = "e372d1e1e624032ddc5ea932ac4c368b28ccb0dd" } embassy-embedded-hal = { git = "https://github.com/embassy-rs/embassy", rev = "e372d1e1e624032ddc5ea932ac4c368b28ccb0dd" } embassy-hal-internal = { git = "https://github.com/embassy-rs/embassy", rev = "e372d1e1e624032ddc5ea932ac4c368b28ccb0dd" } - diff --git a/examples/use_config/pi_pico_w_ble_split/keyboard.toml b/examples/use_config/pi_pico_w_ble_split/keyboard.toml index 966106f1f..d9c170cf7 100644 --- a/examples/use_config/pi_pico_w_ble_split/keyboard.toml +++ b/examples/use_config/pi_pico_w_ble_split/keyboard.toml @@ -1,4 +1,5 @@ [keyboard] +# Replace with your keyboard identity. name = "RMK Keyboard" product_name = "RMK Keyboard" vendor_id = 0x4c4b @@ -9,21 +10,31 @@ board = "pi_pico_w" [layout] rows = 4 cols = 3 -layers = 2 -keymap = [ - [ - ["A", "B", "C"], - ["Kc1", "Kc2", "Kc3"], - ["LCtrl", "MO(1)", "LShift"], - ["OSL(1)", "LT(2, Kc9)", "LM(1, LShift | LGui)"] - ], - [ - ["_", "TT(1)", "TG(2)"], - ["_", "_", "_"], - ["_", "_", "_"], - ["_", "_", "_"] - ], -] +map = """ +(0,0) (0,1) (0,2) +(1,0) (1,1) (1,2) +(2,0) (2,1) (2,2) +(3,0) (3,1) (3,2) +""" + +[keymap] +layers = 3 + +[[keymap.layer]] # layer 0 +keys = """ +A B C +Kc1 Kc2 Kc3 +LCtrl MO(1) LShift +OSL(1) LT(2, Kc9) LM(1, LShift | LGui) +""" + +[[keymap.layer]] # layer 1 +keys = """ +_ TT(1) TG(2) +_ _ _ +_ _ _ +_ _ _ +""" [ble] enabled = true @@ -41,7 +52,7 @@ ble_addr = [0x18, 0xe2, 0x21, 0x80, 0xc0, 0xc7] [split.central.matrix] matrix_type = "normal" -# RMK uses col2row as the default matrix diode direction, if you want to use a row2col matrix, add `row2col = true` +# Default diode direction is col2row; set `row2col = true` if needed. # row2col = true row_pins = ["PIN_6", "PIN_7"] col_pins = ["PIN_19", "PIN_20"] diff --git a/examples/use_config/rp2040/Cargo.lock b/examples/use_config/rp2040/Cargo.lock index 7cb8b6372..152b62ade 100644 --- a/examples/use_config/rp2040/Cargo.lock +++ b/examples/use_config/rp2040/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -42,9 +48,9 @@ checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236" [[package]] name = "arrayvec" -version = "0.7.6" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" [[package]] name = "ascii-canvas" @@ -63,7 +69,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -77,9 +83,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "az" @@ -137,7 +143,7 @@ checksum = "3ca6739863c590881f038d033a146c51ddae239186a4327014839fd864f44ed5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -148,9 +154,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.11.0" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" +checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" dependencies = [ "serde_core", ] @@ -171,12 +177,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f3c66fd0a41a3b3a5906847b1bf5516048ce083e24fa9341a0fa31d3b4cd73d" dependencies = [ "btuuid", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-sync", "embedded-io 0.7.1", "embedded-io-async 0.7.0", "futures-intrusive", - "heapless 0.9.2", + "heapless 0.9.3", "serde", ] @@ -193,9 +199,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.20.2" +version = "3.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" [[package]] name = "bytemuck" @@ -215,16 +221,16 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa61aec073ec94791433ddf3df2323ff9d1711557c2a0eefb0f99cb4f8dca520" dependencies = [ - "semver 1.0.27", + "semver 1.0.28", "serde", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] name = "cc" -version = "1.2.56" +version = "1.2.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2" +checksum = "f5d6cac793997bd970000024b2934968efe83b382de4fdcf4fcb46b6ee4ad996" dependencies = [ "find-msvc-tools", "shlex", @@ -238,11 +244,11 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "chrono" -version = "0.4.44" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" +checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "num-traits", "pure-rust-locales", ] @@ -289,9 +295,9 @@ dependencies = [ [[package]] name = "config" -version = "0.15.19" +version = "0.15.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b30fa8254caad766fc03cb0ccae691e14bf3bd72bfff27f72802ce729551b3d6" +checksum = "b85f248a4de22d204ceabc6299d89d2c70fbd7f09fea53c06c852369652d8139" dependencies = [ "async-trait", "convert_case 0.6.0", @@ -302,7 +308,7 @@ dependencies = [ "serde-untagged", "serde_core", "serde_json", - "toml 0.9.12+spec-1.1.0", + "toml", "winnow", "yaml-rust2", ] @@ -410,7 +416,7 @@ checksum = "e37549a379a9e0e6e576fd208ee60394ccb8be963889eebba3ffe0980364f472" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -424,9 +430,9 @@ dependencies = [ [[package]] name = "crc-any" -version = "2.5.0" +version = "2.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62ec9ff5f7965e4d7280bd5482acd20aadb50d632cf6c1d74493856b011fa73" +checksum = "46db9f663dfb869b80fcf59e32d7a80fc6c464a4f6328f3f06a00f5e36d05f8c" dependencies = [ "debug-helper", ] @@ -505,7 +511,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -518,7 +524,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -529,7 +535,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -540,7 +546,7 @@ checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ "darling_core 0.23.0", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -554,9 +560,9 @@ dependencies = [ [[package]] name = "debug-helper" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f578e8e2c440e7297e008bb5486a3a8a194775224bbc23729b0dbdfaeebf162e" +checksum = "80a4af69c60438a1a82af89d362f4729fd38db7b73f305a237636fad31ceb2bf" [[package]] name = "defmt" @@ -564,14 +570,14 @@ version = "0.3.100" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0963443817029b2024136fc4dd07a5107eb8f977eaf18fcd1fdeb11306b64ad" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] name = "defmt" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "548d977b6da32fa1d1fda2876453da1e7df63ad0304c8b3dae4dbe7b96f39b78" +checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" dependencies = [ "bitflags 1.3.2", "defmt-macros", @@ -579,15 +585,14 @@ dependencies = [ [[package]] name = "defmt-macros" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d4fc12a85bcf441cfe44344c4b72d58493178ce635338a3f3b78943aceb258e" +checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" dependencies = [ "defmt-parser", - "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -601,12 +606,12 @@ dependencies = [ [[package]] name = "defmt-rtt" -version = "1.1.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d5a25c99d89c40f5676bec8cefe0614f17f0f40e916f98e345dae941807f9e" +checksum = "05144944c117db54127a8ac17a3c9a28d55e7047bfddb950bcd20b4a94c79b10" dependencies = [ "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -650,9 +655,9 @@ dependencies = [ [[package]] name = "either" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" [[package]] name = "elliptic-curve" @@ -679,7 +684,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b0641612053b2f34fc250bb63f6630ae75de46e02ade7f457268447081d709ce" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embassy-futures", "embassy-hal-internal 0.4.0", "embassy-sync", @@ -701,7 +706,7 @@ dependencies = [ "cordyceps", "cortex-m", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-executor-macros", "embassy-executor-timer-queue", @@ -716,7 +721,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -731,7 +736,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc2d050bdc5c21e0862a89256ed8029ae6c290a93aecefc73084b3002cdebb01" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -751,7 +756,7 @@ checksum = "568659fc53866d3d85c60fa33723fb751aa69e71507634fc2c19e7649432fb75" dependencies = [ "cortex-m", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "num-traits", ] @@ -778,12 +783,12 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82051f67e8a06a8faebd183f62cfade184c96be68126c5f064abb8223a591ff1" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "cfg-if", "cortex-m", "cortex-m-rt", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -817,7 +822,7 @@ dependencies = [ "cortex-m", "cortex-m-rt", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -854,11 +859,11 @@ checksum = "7bbd85cf5a5ae56bdf26f618364af642d1d0a4e245cdd75cd9aabda382f65a81" dependencies = [ "cfg-if", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io-async 0.7.0", "futures-core", "futures-sink", - "heapless 0.9.2", + "heapless 0.9.3", ] [[package]] @@ -869,7 +874,7 @@ checksum = "592b0c143ec626e821d4d90da51a2bd91d559d6c442b7c74a47d368c9e23d97a" dependencies = [ "cfg-if", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-time-driver", "embedded-hal 0.2.7", @@ -889,12 +894,12 @@ dependencies = [ [[package]] name = "embassy-time-queue-utils" -version = "0.3.0" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e2ee86063bd028a420a5fb5898c18c87a8898026da1d4c852af2c443d0a454" +checksum = "168297bf80aaf114b3c9ad589bf38b01b3009b9af7f97cd18086c5bbf96f5693" dependencies = [ "embassy-executor-timer-queue", - "heapless 0.8.0", + "heapless 0.9.3", ] [[package]] @@ -903,15 +908,15 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a25746d8b152b72fbf2a217f489a083dbbe243f281f09184a1f2cfbe9bbb245f" dependencies = [ - "bitflags 2.11.0", - "defmt 1.0.1", + "bitflags 2.13.0", + "defmt 1.1.1", "embassy-futures", "embassy-net-driver-channel", "embassy-sync", "embassy-time", "embassy-usb-driver", "embedded-io-async 0.7.0", - "heapless 0.9.2", + "heapless 0.9.3", "ssmarshal", "usbd-hid", ] @@ -922,7 +927,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa675c5f4349b6aa0fcffc4bf9b241f18cd11b97c1f8323273fb9a5449937fbd" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io-async 0.6.1", "embedded-io-async 0.7.0", ] @@ -934,7 +939,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6efd0c0e0b21bcf91b475b8fa47347c1df32c9a99728ae1e1b0e6625862dfd1a" dependencies = [ "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-sync", "embassy-time", "embassy-usb-driver", @@ -980,6 +985,12 @@ dependencies = [ "nb 1.1.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -992,7 +1003,7 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9eb1aa714776b75c7e67e1da744b81a129b3ff919c8712b5e1b32252c1f07cc7" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -1010,7 +1021,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2564b9f813c544241430e147d8bc454815ef9ac998878d30cc3055449f7fd4c0" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io 0.7.1", ] @@ -1061,9 +1072,9 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "erased-serde" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e8918065695684b2b0702da20382d5ae6065cf3327bc2d6436bd49a71ce9f3" +checksum = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec" dependencies = [ "serde", "serde_core", @@ -1088,9 +1099,9 @@ checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" [[package]] name = "fixed" -version = "1.30.0" +version = "1.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c566da967934c6c7ee0458a9773de9b2a685bd2ce26a3b28ddfc740e640182f5" +checksum = "9af2cbf772fa6d1c11358f92ef554cb6b386201210bcf0e91fb7fba8a907fb40" dependencies = [ "az", "bytemuck", @@ -1112,9 +1123,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foldhash" -version = "0.1.5" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" [[package]] name = "futures" @@ -1170,7 +1181,7 @@ checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1196,13 +1207,14 @@ dependencies = [ "futures-sink", "futures-task", "pin-project-lite", + "slab", ] [[package]] name = "generator" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52f04ae4152da20c76fe800fa48659201d5cf627c5149ca0b707b69d7eef6cf9" +checksum = "b3b854b0e584ead1a33f18b2fcad7cf7be18b3875c78816b753639aa501513ae" dependencies = [ "cc", "cfg-if", @@ -1292,26 +1304,26 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hashbrown" -version = "0.15.5" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" dependencies = [ "foldhash", ] [[package]] name = "hashbrown" -version = "0.16.1" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" [[package]] name = "hashlink" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" +checksum = "824e001ac4f3012dd16a264bec811403a67ca9deb6c102fc5049b32c4574b35f" dependencies = [ - "hashbrown 0.15.5", + "hashbrown 0.16.1", ] [[package]] @@ -1340,11 +1352,11 @@ dependencies = [ [[package]] name = "heapless" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af2455f757db2b292a9b1768c4b70186d443bcb3b316252d6b540aec1cd89ed" +checksum = "25ba4bd83f9415b58b4ed8dc5714c76e626a105be4646c02630ad730ad3b5aa4" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "hash32 0.3.1", "serde_core", "stable_deref_trait", @@ -1382,12 +1394,12 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "indexmap" -version = "2.13.0" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.16.1", + "hashbrown 0.17.1", ] [[package]] @@ -1410,17 +1422,18 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "js-sys" -version = "0.3.90" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14dc6f6450b3f6d4ed5b16327f38fed626d375a886159ca555bd7822c0c3a5a6" +checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ - "once_cell", + "cfg-if", + "futures-util", "wasm-bindgen", ] @@ -1490,9 +1503,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.182" +version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "litrs" @@ -1511,9 +1524,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.29" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" [[package]] name = "loom" @@ -1550,9 +1563,18 @@ dependencies = [ [[package]] name = "memchr" -version = "2.8.0" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" + +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] [[package]] name = "nb" @@ -1605,9 +1627,9 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" +checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26" dependencies = [ "num_enum_derive", "rustversion", @@ -1615,20 +1637,20 @@ dependencies = [ [[package]] name = "num_enum_derive" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" +checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "once_cell" -version = "1.21.3" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] name = "ordered-multimap" @@ -1657,7 +1679,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd402d00b0fb94c5aee000029204a46884b1262e0c443f166d86d2c0747e1a1a" dependencies = [ "cortex-m", - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -1697,9 +1719,9 @@ checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" [[package]] name = "pest" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662" +checksum = "47627dd7305c6a2d6c8c6bcd24c5a4c17dbbf425f4f9c5313e724b38fc9782e9" dependencies = [ "memchr", "ucd-trie", @@ -1707,9 +1729,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77" +checksum = "4b4254325ecad416ab689e27ba51da03ba01a9632bc6e108f5fe7c3c4ad29d58" dependencies = [ "pest", "pest_generator", @@ -1717,25 +1739,24 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f" +checksum = "6c4c0e91ead7a8f7acecbca6f003fc2e8282b1dbe2dd9c9d2f16aba42995e0a7" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "pest_meta" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220" +checksum = "f9744bc48116fee06334924bb5f2bad41eed5e89bd26e29b0b799f9a3f82c210" dependencies = [ "pest", - "sha2", ] [[package]] @@ -1765,9 +1786,9 @@ checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" [[package]] name = "pin-project-lite" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pio" @@ -1814,14 +1835,14 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "pkg-config" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" [[package]] name = "portable-atomic" @@ -1839,7 +1860,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", - "defmt 1.0.1", + "defmt 1.1.1", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -1853,7 +1876,7 @@ checksum = "e0232bd009a197ceec9cc881ba46f727fcd8060a2d8d6a9dde7a69030a6fe2bb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1899,7 +1922,7 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1917,23 +1940,23 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "869675ad2d7541aea90c6d88c81f46a7f4ea9af8cd0395d38f11a95126998a0d" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] name = "quote" -version = "1.0.44" +version = "1.0.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" +checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" dependencies = [ "proc-macro2", ] [[package]] name = "rand" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" dependencies = [ "rand_core 0.6.4", ] @@ -1972,14 +1995,14 @@ version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", ] [[package]] name = "regex" -version = "1.12.3" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +checksum = "2a0e75113e14dc5acb068cd0786884f214f1312650a3d36d269f5c4f3cdee8a2" dependencies = [ "aho-corasick", "memchr", @@ -1989,9 +2012,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +checksum = "1f388202e4b80542a0921078cc23b6333bcf1409c1e3f86404cae4766a6131db" dependencies = [ "aho-corasick", "memchr", @@ -2000,15 +2023,15 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rgb" -version = "0.8.52" +version = "0.8.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c6a884d2998352bb4daf0183589aec883f16a6da1f4dde84d8e2e9a5409a1ce" +checksum = "47b34b781b31e5d73e9fbc8689c70551fd1ade9a19e3e28cfec8580a79290cc4" [[package]] name = "rmk" @@ -2018,7 +2041,7 @@ dependencies = [ "byteorder", "cortex-m", "crc32fast", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -2035,7 +2058,7 @@ dependencies = [ "embedded-storage-async", "fixed", "futures", - "heapless 0.9.2", + "heapless 0.9.3", "paste", "pio", "postcard", @@ -2053,13 +2076,15 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] @@ -2073,7 +2098,7 @@ dependencies = [ "rmk-config", "rmk-types", "strum", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2082,7 +2107,7 @@ version = "0.2.0" dependencies = [ "const-gen", "cortex-m-rt", - "defmt 1.0.1", + "defmt 1.1.1", "defmt-rtt", "embassy-executor", "embassy-rp", @@ -2099,22 +2124,22 @@ name = "rmk-types" version = "0.2.2" dependencies = [ "bitfield-struct", - "defmt 1.0.1", - "heapless 0.9.2", + "defmt 1.1.1", + "heapless 0.9.3", "postcard", "rmk-config", "serde", "strum", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] name = "ron" -version = "0.12.0" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd490c5b18261893f14449cbd28cb9c0b637aebf161cd77900bfdedaff21ec32" +checksum = "81116b9531d61eabc41aeb228e4b6b2435bcca3233b98cf3b3077d4e6e9debb3" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "once_cell", "serde", "serde_derive", @@ -2166,14 +2191,14 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.27", + "semver 1.0.28", ] [[package]] name = "rustversion" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] name = "same-file" @@ -2220,9 +2245,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.27" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" dependencies = [ "serde", "serde_core", @@ -2236,11 +2261,11 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "sequential-storage" -version = "7.1.0" +version = "7.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4580ee0fa08cd41bee9f5b50ed309877e18735370fd4eef5766cc82863ef772" +checksum = "574e5a379bf43653079b34cb4cf32958404b5f42e0ed5b5adcdff02c2de04d4d" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-storage-async", "postcard", "serde", @@ -2264,7 +2289,7 @@ checksum = "2bf03b7a5281cfd4013bc788d057b0f09fc634397d83bc8973c955bd4f32727a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2296,14 +2321,14 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "serde_json" -version = "1.0.149" +version = "1.0.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" dependencies = [ "itoa", "memchr", @@ -2314,24 +2339,13 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "1.0.4" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" dependencies = [ "serde_core", ] -[[package]] -name = "sha2" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - [[package]] name = "sha2-const-stable" version = "0.1.0" @@ -2340,9 +2354,9 @@ checksum = "5f179d4e11094a893b82fff208f74d448a7512f99f5a0acbd5c679b705f83ed9" [[package]] name = "sha3" -version = "0.10.8" +version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +checksum = "77fd7028345d415a4034cf8777cd4f8ab1851274233b45f84e3d955502d93874" dependencies = [ "digest", "keccak", @@ -2359,21 +2373,27 @@ dependencies = [ [[package]] name = "shlex" -version = "1.3.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" [[package]] name = "siphasher" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e" +checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" + +[[package]] +name = "slab" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] name = "smallvec" -version = "1.15.1" +version = "1.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" [[package]] name = "smart-leds" @@ -2463,7 +2483,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2485,9 +2505,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.117" +version = "2.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" dependencies = [ "proc-macro2", "quote", @@ -2529,7 +2549,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2552,27 +2572,14 @@ dependencies = [ [[package]] name = "toml" -version = "0.9.12+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" -dependencies = [ - "serde_core", - "serde_spanned", - "toml_datetime 0.7.5+spec-1.1.0", - "toml_parser", - "winnow", -] - -[[package]] -name = "toml" -version = "1.0.3+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7614eaf19ad818347db24addfa201729cf2a9b6fdfd9eb0ab870fcacc606c0c" +checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee" dependencies = [ "indexmap", "serde_core", "serde_spanned", - "toml_datetime 1.0.0+spec-1.1.0", + "toml_datetime", "toml_parser", "toml_writer", "winnow", @@ -2580,36 +2587,27 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.7.5+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" -dependencies = [ - "serde_core", -] - -[[package]] -name = "toml_datetime" -version = "1.0.0+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32c2555c699578a4f59f0cc68e5116c8d7cabbd45e1409b989d4be085b53f13e" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" dependencies = [ "serde_core", ] [[package]] name = "toml_parser" -version = "1.0.9+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ "winnow", ] [[package]] name = "toml_writer" -version = "1.0.6+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" +checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" [[package]] name = "tracing" @@ -2630,7 +2628,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2680,13 +2678,13 @@ dependencies = [ "aes", "bt-hci", "cmac", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-futures", "embassy-sync", "embassy-time", "embedded-io 0.7.1", "futures", - "heapless 0.9.2", + "heapless 0.9.3", "p256", "rand", "rand_chacha", @@ -2706,7 +2704,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "uuid", ] @@ -2718,9 +2716,9 @@ checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" [[package]] name = "typenum" -version = "1.19.0" +version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" [[package]] name = "ucd-trie" @@ -2736,9 +2734,9 @@ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-segmentation" -version = "1.12.0" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" [[package]] name = "unicode-width" @@ -2795,15 +2793,15 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.117", + "syn 2.0.118", "usbd-hid-descriptors", ] [[package]] name = "uuid" -version = "1.21.0" +version = "1.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b672338555252d43fd2240c714dc444b8c6fb0a5c5335e65a07bba7742735ddb" +checksum = "bf80a72845275afea99e7f2b434723d3bc7e38470fcd1c7ed39a599c73319a53" dependencies = [ "js-sys", "wasm-bindgen", @@ -2860,9 +2858,9 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasm-bindgen" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60722a937f594b7fde9adb894d7c092fc1bb6612897c46368d18e7a20208eff2" +checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" dependencies = [ "cfg-if", "once_cell", @@ -2873,9 +2871,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac8c6395094b6b91c4af293f4c79371c163f9a6f56184d2c9a85f5a95f3950" +checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2883,22 +2881,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab3fabce6159dc20728033842636887e4877688ae94382766e00b180abac9d60" +checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de0e091bdb824da87dc01d967388880d017a0a9bc4f3bdc0d86ee9f9336e3bb5" +checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" dependencies = [ "unicode-ident", ] @@ -2938,9 +2936,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.14" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" +checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" dependencies = [ "memchr", ] @@ -2956,9 +2954,9 @@ dependencies = [ [[package]] name = "yaml-rust2" -version = "0.10.4" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2462ea039c445496d8793d052e13787f2b90e750b833afee748e601c17621ed9" +checksum = "631a50d867fafb7093e709d75aaee9e0e0d5deb934021fcea25ac2fe09edc51e" dependencies = [ "arraydeque", "encoding_rs", @@ -2967,29 +2965,29 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.39" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db6d35d663eadb6c932438e763b262fe1a70987f9ae936e60158176d710cae4a" +checksum = "b7cbbc0a705a0fd05cc3676525980d2bf5a9bc4adac6d6475209a7887cf59d19" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.39" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4122cd3169e94605190e77839c9a40d40ed048d305bfdc146e7df40ab0f3e517" +checksum = "e2e817b7b52d0c7358d3246da9d69935ebb18116b2b102b4230dac079b4862f5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "zeroize" -version = "1.8.2" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" [[package]] name = "zmij" diff --git a/examples/use_config/rp2040/Cargo.toml b/examples/use_config/rp2040/Cargo.toml index b9819536d..724515c00 100644 --- a/examples/use_config/rp2040/Cargo.toml +++ b/examples/use_config/rp2040/Cargo.toml @@ -10,7 +10,7 @@ edition = "2024" license = "MIT OR Apache-2.0" [dependencies] -rmk = { path = "../../../rmk", features = ["rp2040"]} +rmk = { path = "../../../rmk", default-features = false, features = ["defmt", "storage", "vial", "watchdog", "rp2040"] } embassy-time = { version = "0.5", features = ["defmt"] } embassy-rp = { version = "0.10", features = [ "rp2040", diff --git a/examples/use_config/rp2040/keyboard.toml b/examples/use_config/rp2040/keyboard.toml index d24fb13ca..8b33eb72d 100644 --- a/examples/use_config/rp2040/keyboard.toml +++ b/examples/use_config/rp2040/keyboard.toml @@ -1,4 +1,5 @@ [keyboard] +# Replace with your keyboard identity. name = "RMK Keyboard" product_name = "RMK Keyboard" vendor_id = 0x4c4b @@ -7,75 +8,53 @@ manufacturer = "haobo" chip = "rp2040" [matrix] -# Row and col pins are mandatory +# Matrix pins are required. row_pins = ["PIN_6", "PIN_7", "PIN_8", "PIN_9"] col_pins = ["PIN_19", "PIN_20", "PIN_21"] -# RMK uses col2row as the default matrix diode direction, if you want to use a row2col matrix, add `row2col = true` +# Default diode direction is col2row; set `row2col = true` if needed. # row2col = true [layout] rows = 4 cols = 3 -layers = 2 -keymap = [ - [ - [ - "A", - "B", - "C", - ], - [ - "Kc1", - "Kc2", - "Kc3", - ], - [ - "LCtrl", - "MO(1)", - "LShift", - ], - [ - "OSL(1)", - "LT(2, Kc9)", - "LM(1, LShift | LGui)", - ], - ], - [ - [ - "_", - "TT(1)", - "TG(2)", - ], - [ - "_", - "_", - "_", - ], - [ - "_", - "_", - "_", - ], - [ - "_", - "_", - "_", - ], - ], -] +map = """ +(0,0) (0,1) (0,2) +(1,0) (1,1) (1,2) +(2,0) (2,1) (2,2) +(3,0) (3,1) (3,2) +""" + +[keymap] +layers = 3 + +[[keymap.layer]] # layer 0 +keys = """ +A B C +Kc1 Kc2 Kc3 +LCtrl MO(1) LShift +OSL(1) LT(2, Kc9) LM(1, LShift | LGui) +""" + +[[keymap.layer]] # layer 1 +keys = """ +_ TT(1) TG(2) +_ _ _ +_ _ _ +_ _ _ +""" [light] # All light pins are high-active by default, uncomment if you want it to be low-active -# capslock.pin = "PB2" +# capslock.pin = "PIN_16" # capslock.low_active = true -# scrolllock.pin = "PA3" +# scrolllock.pin = "PIN_17" # scrolllock.low_active = true # Just ignore if no light pin is used for it -# numslock.pin = "PA5" +# numslock.pin = "PIN_18" # numslock.low_active = true [storage] -# Storage feature is enabled by default +# Storage is enabled by default. # enabled = false [rmk] diff --git a/examples/use_config/rp2040_dfu_split/Cargo.lock b/examples/use_config/rp2040_dfu_split/Cargo.lock index c9b89b6b9..504ab0eb0 100644 --- a/examples/use_config/rp2040_dfu_split/Cargo.lock +++ b/examples/use_config/rp2040_dfu_split/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -1028,6 +1034,12 @@ dependencies = [ "nb 1.1.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -1604,6 +1616,15 @@ version = "2.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4" +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] + [[package]] name = "nb" version = "0.1.3" @@ -1890,6 +1911,8 @@ checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", "defmt 1.1.0", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -2106,10 +2129,12 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", "toml", diff --git a/examples/use_config/rp2040_dfu_split/Cargo.toml b/examples/use_config/rp2040_dfu_split/Cargo.toml index 820b7fcf2..9a3fdf2a3 100644 --- a/examples/use_config/rp2040_dfu_split/Cargo.toml +++ b/examples/use_config/rp2040_dfu_split/Cargo.toml @@ -11,10 +11,10 @@ embassy-rp = { version = "0.10", features = ["rp2040", "defmt", "time-driver", " embassy-executor = { version = "0.10", features = ["defmt", "platform-cortex-m", "executor-thread"] } cortex-m-rt = { version = "0.7.5", features = ["set-vtor"] } static_cell = "2" -portable-atomic = { version = "1.11", features = ["critical-section"] } -defmt = "1.0" -defmt-rtt = "1.0" -panic-probe = { version = "1.0", features = ["print-defmt"] } +portable-atomic = { version = "1", features = ["critical-section"] } +defmt = "1" +defmt-rtt = "1" +panic-probe = { version = "1", features = ["print-defmt"] } [build-dependencies] const-gen = "1.6" diff --git a/examples/use_config/rp2040_dfu_split/keyboard.toml b/examples/use_config/rp2040_dfu_split/keyboard.toml index 4e8f201a7..952bc8c4e 100644 --- a/examples/use_config/rp2040_dfu_split/keyboard.toml +++ b/examples/use_config/rp2040_dfu_split/keyboard.toml @@ -40,21 +40,31 @@ col_pins = ["PIN_10"] [layout] rows = 4 cols = 3 -layers = 2 -keymap = [ - [ - ["A", "B", "C"], - ["Kc1", "Kc2", "Kc3"], - ["LCtrl", "MO(1)", "LShift"], - ["OSL(1)", "LT(2, Kc9)", "LM(1, LShift | LGui)"] - ], - [ - ["_", "TT(1)", "TG(2)"], - ["_", "_", "_"], - ["_", "_", "_"], - ["_", "_", "_"], - ], -] +map = """ +(0,0) (0,1) (0,2) +(1,0) (1,1) (1,2) +(2,0) (2,1) (2,2) +(3,0) (3,1) (3,2) +""" + +[keymap] +layers = 3 + +[[keymap.layer]] +keys = """ +A B C +Kc1 Kc2 Kc3 +LCtrl MO(1) LShift +OSL(1) LT(2, Kc9) LM(1, LShift | LGui) +""" + +[[keymap.layer]] +keys = """ +_ TT(1) TG(2) +_ _ _ +_ _ _ +_ _ _ +""" [dfu] led = "PIN_25" diff --git a/examples/use_config/rp2040_direct_pin/Cargo.lock b/examples/use_config/rp2040_direct_pin/Cargo.lock index 7cb8b6372..152b62ade 100644 --- a/examples/use_config/rp2040_direct_pin/Cargo.lock +++ b/examples/use_config/rp2040_direct_pin/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -42,9 +48,9 @@ checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236" [[package]] name = "arrayvec" -version = "0.7.6" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" [[package]] name = "ascii-canvas" @@ -63,7 +69,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -77,9 +83,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "az" @@ -137,7 +143,7 @@ checksum = "3ca6739863c590881f038d033a146c51ddae239186a4327014839fd864f44ed5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -148,9 +154,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.11.0" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" +checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" dependencies = [ "serde_core", ] @@ -171,12 +177,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f3c66fd0a41a3b3a5906847b1bf5516048ce083e24fa9341a0fa31d3b4cd73d" dependencies = [ "btuuid", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-sync", "embedded-io 0.7.1", "embedded-io-async 0.7.0", "futures-intrusive", - "heapless 0.9.2", + "heapless 0.9.3", "serde", ] @@ -193,9 +199,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.20.2" +version = "3.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" [[package]] name = "bytemuck" @@ -215,16 +221,16 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa61aec073ec94791433ddf3df2323ff9d1711557c2a0eefb0f99cb4f8dca520" dependencies = [ - "semver 1.0.27", + "semver 1.0.28", "serde", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] name = "cc" -version = "1.2.56" +version = "1.2.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2" +checksum = "f5d6cac793997bd970000024b2934968efe83b382de4fdcf4fcb46b6ee4ad996" dependencies = [ "find-msvc-tools", "shlex", @@ -238,11 +244,11 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "chrono" -version = "0.4.44" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" +checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "num-traits", "pure-rust-locales", ] @@ -289,9 +295,9 @@ dependencies = [ [[package]] name = "config" -version = "0.15.19" +version = "0.15.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b30fa8254caad766fc03cb0ccae691e14bf3bd72bfff27f72802ce729551b3d6" +checksum = "b85f248a4de22d204ceabc6299d89d2c70fbd7f09fea53c06c852369652d8139" dependencies = [ "async-trait", "convert_case 0.6.0", @@ -302,7 +308,7 @@ dependencies = [ "serde-untagged", "serde_core", "serde_json", - "toml 0.9.12+spec-1.1.0", + "toml", "winnow", "yaml-rust2", ] @@ -410,7 +416,7 @@ checksum = "e37549a379a9e0e6e576fd208ee60394ccb8be963889eebba3ffe0980364f472" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -424,9 +430,9 @@ dependencies = [ [[package]] name = "crc-any" -version = "2.5.0" +version = "2.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62ec9ff5f7965e4d7280bd5482acd20aadb50d632cf6c1d74493856b011fa73" +checksum = "46db9f663dfb869b80fcf59e32d7a80fc6c464a4f6328f3f06a00f5e36d05f8c" dependencies = [ "debug-helper", ] @@ -505,7 +511,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -518,7 +524,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -529,7 +535,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -540,7 +546,7 @@ checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ "darling_core 0.23.0", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -554,9 +560,9 @@ dependencies = [ [[package]] name = "debug-helper" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f578e8e2c440e7297e008bb5486a3a8a194775224bbc23729b0dbdfaeebf162e" +checksum = "80a4af69c60438a1a82af89d362f4729fd38db7b73f305a237636fad31ceb2bf" [[package]] name = "defmt" @@ -564,14 +570,14 @@ version = "0.3.100" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0963443817029b2024136fc4dd07a5107eb8f977eaf18fcd1fdeb11306b64ad" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] name = "defmt" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "548d977b6da32fa1d1fda2876453da1e7df63ad0304c8b3dae4dbe7b96f39b78" +checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" dependencies = [ "bitflags 1.3.2", "defmt-macros", @@ -579,15 +585,14 @@ dependencies = [ [[package]] name = "defmt-macros" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d4fc12a85bcf441cfe44344c4b72d58493178ce635338a3f3b78943aceb258e" +checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" dependencies = [ "defmt-parser", - "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -601,12 +606,12 @@ dependencies = [ [[package]] name = "defmt-rtt" -version = "1.1.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d5a25c99d89c40f5676bec8cefe0614f17f0f40e916f98e345dae941807f9e" +checksum = "05144944c117db54127a8ac17a3c9a28d55e7047bfddb950bcd20b4a94c79b10" dependencies = [ "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -650,9 +655,9 @@ dependencies = [ [[package]] name = "either" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" [[package]] name = "elliptic-curve" @@ -679,7 +684,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b0641612053b2f34fc250bb63f6630ae75de46e02ade7f457268447081d709ce" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embassy-futures", "embassy-hal-internal 0.4.0", "embassy-sync", @@ -701,7 +706,7 @@ dependencies = [ "cordyceps", "cortex-m", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-executor-macros", "embassy-executor-timer-queue", @@ -716,7 +721,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -731,7 +736,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc2d050bdc5c21e0862a89256ed8029ae6c290a93aecefc73084b3002cdebb01" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -751,7 +756,7 @@ checksum = "568659fc53866d3d85c60fa33723fb751aa69e71507634fc2c19e7649432fb75" dependencies = [ "cortex-m", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "num-traits", ] @@ -778,12 +783,12 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82051f67e8a06a8faebd183f62cfade184c96be68126c5f064abb8223a591ff1" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "cfg-if", "cortex-m", "cortex-m-rt", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -817,7 +822,7 @@ dependencies = [ "cortex-m", "cortex-m-rt", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -854,11 +859,11 @@ checksum = "7bbd85cf5a5ae56bdf26f618364af642d1d0a4e245cdd75cd9aabda382f65a81" dependencies = [ "cfg-if", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io-async 0.7.0", "futures-core", "futures-sink", - "heapless 0.9.2", + "heapless 0.9.3", ] [[package]] @@ -869,7 +874,7 @@ checksum = "592b0c143ec626e821d4d90da51a2bd91d559d6c442b7c74a47d368c9e23d97a" dependencies = [ "cfg-if", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-time-driver", "embedded-hal 0.2.7", @@ -889,12 +894,12 @@ dependencies = [ [[package]] name = "embassy-time-queue-utils" -version = "0.3.0" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e2ee86063bd028a420a5fb5898c18c87a8898026da1d4c852af2c443d0a454" +checksum = "168297bf80aaf114b3c9ad589bf38b01b3009b9af7f97cd18086c5bbf96f5693" dependencies = [ "embassy-executor-timer-queue", - "heapless 0.8.0", + "heapless 0.9.3", ] [[package]] @@ -903,15 +908,15 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a25746d8b152b72fbf2a217f489a083dbbe243f281f09184a1f2cfbe9bbb245f" dependencies = [ - "bitflags 2.11.0", - "defmt 1.0.1", + "bitflags 2.13.0", + "defmt 1.1.1", "embassy-futures", "embassy-net-driver-channel", "embassy-sync", "embassy-time", "embassy-usb-driver", "embedded-io-async 0.7.0", - "heapless 0.9.2", + "heapless 0.9.3", "ssmarshal", "usbd-hid", ] @@ -922,7 +927,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa675c5f4349b6aa0fcffc4bf9b241f18cd11b97c1f8323273fb9a5449937fbd" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io-async 0.6.1", "embedded-io-async 0.7.0", ] @@ -934,7 +939,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6efd0c0e0b21bcf91b475b8fa47347c1df32c9a99728ae1e1b0e6625862dfd1a" dependencies = [ "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-sync", "embassy-time", "embassy-usb-driver", @@ -980,6 +985,12 @@ dependencies = [ "nb 1.1.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -992,7 +1003,7 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9eb1aa714776b75c7e67e1da744b81a129b3ff919c8712b5e1b32252c1f07cc7" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -1010,7 +1021,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2564b9f813c544241430e147d8bc454815ef9ac998878d30cc3055449f7fd4c0" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io 0.7.1", ] @@ -1061,9 +1072,9 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "erased-serde" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e8918065695684b2b0702da20382d5ae6065cf3327bc2d6436bd49a71ce9f3" +checksum = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec" dependencies = [ "serde", "serde_core", @@ -1088,9 +1099,9 @@ checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" [[package]] name = "fixed" -version = "1.30.0" +version = "1.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c566da967934c6c7ee0458a9773de9b2a685bd2ce26a3b28ddfc740e640182f5" +checksum = "9af2cbf772fa6d1c11358f92ef554cb6b386201210bcf0e91fb7fba8a907fb40" dependencies = [ "az", "bytemuck", @@ -1112,9 +1123,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foldhash" -version = "0.1.5" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" [[package]] name = "futures" @@ -1170,7 +1181,7 @@ checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1196,13 +1207,14 @@ dependencies = [ "futures-sink", "futures-task", "pin-project-lite", + "slab", ] [[package]] name = "generator" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52f04ae4152da20c76fe800fa48659201d5cf627c5149ca0b707b69d7eef6cf9" +checksum = "b3b854b0e584ead1a33f18b2fcad7cf7be18b3875c78816b753639aa501513ae" dependencies = [ "cc", "cfg-if", @@ -1292,26 +1304,26 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hashbrown" -version = "0.15.5" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" dependencies = [ "foldhash", ] [[package]] name = "hashbrown" -version = "0.16.1" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" [[package]] name = "hashlink" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" +checksum = "824e001ac4f3012dd16a264bec811403a67ca9deb6c102fc5049b32c4574b35f" dependencies = [ - "hashbrown 0.15.5", + "hashbrown 0.16.1", ] [[package]] @@ -1340,11 +1352,11 @@ dependencies = [ [[package]] name = "heapless" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af2455f757db2b292a9b1768c4b70186d443bcb3b316252d6b540aec1cd89ed" +checksum = "25ba4bd83f9415b58b4ed8dc5714c76e626a105be4646c02630ad730ad3b5aa4" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "hash32 0.3.1", "serde_core", "stable_deref_trait", @@ -1382,12 +1394,12 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "indexmap" -version = "2.13.0" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.16.1", + "hashbrown 0.17.1", ] [[package]] @@ -1410,17 +1422,18 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "js-sys" -version = "0.3.90" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14dc6f6450b3f6d4ed5b16327f38fed626d375a886159ca555bd7822c0c3a5a6" +checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ - "once_cell", + "cfg-if", + "futures-util", "wasm-bindgen", ] @@ -1490,9 +1503,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.182" +version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "litrs" @@ -1511,9 +1524,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.29" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" [[package]] name = "loom" @@ -1550,9 +1563,18 @@ dependencies = [ [[package]] name = "memchr" -version = "2.8.0" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" + +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] [[package]] name = "nb" @@ -1605,9 +1627,9 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" +checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26" dependencies = [ "num_enum_derive", "rustversion", @@ -1615,20 +1637,20 @@ dependencies = [ [[package]] name = "num_enum_derive" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" +checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "once_cell" -version = "1.21.3" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] name = "ordered-multimap" @@ -1657,7 +1679,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd402d00b0fb94c5aee000029204a46884b1262e0c443f166d86d2c0747e1a1a" dependencies = [ "cortex-m", - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -1697,9 +1719,9 @@ checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" [[package]] name = "pest" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662" +checksum = "47627dd7305c6a2d6c8c6bcd24c5a4c17dbbf425f4f9c5313e724b38fc9782e9" dependencies = [ "memchr", "ucd-trie", @@ -1707,9 +1729,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77" +checksum = "4b4254325ecad416ab689e27ba51da03ba01a9632bc6e108f5fe7c3c4ad29d58" dependencies = [ "pest", "pest_generator", @@ -1717,25 +1739,24 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f" +checksum = "6c4c0e91ead7a8f7acecbca6f003fc2e8282b1dbe2dd9c9d2f16aba42995e0a7" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "pest_meta" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220" +checksum = "f9744bc48116fee06334924bb5f2bad41eed5e89bd26e29b0b799f9a3f82c210" dependencies = [ "pest", - "sha2", ] [[package]] @@ -1765,9 +1786,9 @@ checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" [[package]] name = "pin-project-lite" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pio" @@ -1814,14 +1835,14 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "pkg-config" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" [[package]] name = "portable-atomic" @@ -1839,7 +1860,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", - "defmt 1.0.1", + "defmt 1.1.1", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -1853,7 +1876,7 @@ checksum = "e0232bd009a197ceec9cc881ba46f727fcd8060a2d8d6a9dde7a69030a6fe2bb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1899,7 +1922,7 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1917,23 +1940,23 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "869675ad2d7541aea90c6d88c81f46a7f4ea9af8cd0395d38f11a95126998a0d" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] name = "quote" -version = "1.0.44" +version = "1.0.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" +checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" dependencies = [ "proc-macro2", ] [[package]] name = "rand" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" dependencies = [ "rand_core 0.6.4", ] @@ -1972,14 +1995,14 @@ version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", ] [[package]] name = "regex" -version = "1.12.3" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +checksum = "2a0e75113e14dc5acb068cd0786884f214f1312650a3d36d269f5c4f3cdee8a2" dependencies = [ "aho-corasick", "memchr", @@ -1989,9 +2012,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +checksum = "1f388202e4b80542a0921078cc23b6333bcf1409c1e3f86404cae4766a6131db" dependencies = [ "aho-corasick", "memchr", @@ -2000,15 +2023,15 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rgb" -version = "0.8.52" +version = "0.8.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c6a884d2998352bb4daf0183589aec883f16a6da1f4dde84d8e2e9a5409a1ce" +checksum = "47b34b781b31e5d73e9fbc8689c70551fd1ade9a19e3e28cfec8580a79290cc4" [[package]] name = "rmk" @@ -2018,7 +2041,7 @@ dependencies = [ "byteorder", "cortex-m", "crc32fast", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -2035,7 +2058,7 @@ dependencies = [ "embedded-storage-async", "fixed", "futures", - "heapless 0.9.2", + "heapless 0.9.3", "paste", "pio", "postcard", @@ -2053,13 +2076,15 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] @@ -2073,7 +2098,7 @@ dependencies = [ "rmk-config", "rmk-types", "strum", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2082,7 +2107,7 @@ version = "0.2.0" dependencies = [ "const-gen", "cortex-m-rt", - "defmt 1.0.1", + "defmt 1.1.1", "defmt-rtt", "embassy-executor", "embassy-rp", @@ -2099,22 +2124,22 @@ name = "rmk-types" version = "0.2.2" dependencies = [ "bitfield-struct", - "defmt 1.0.1", - "heapless 0.9.2", + "defmt 1.1.1", + "heapless 0.9.3", "postcard", "rmk-config", "serde", "strum", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] name = "ron" -version = "0.12.0" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd490c5b18261893f14449cbd28cb9c0b637aebf161cd77900bfdedaff21ec32" +checksum = "81116b9531d61eabc41aeb228e4b6b2435bcca3233b98cf3b3077d4e6e9debb3" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "once_cell", "serde", "serde_derive", @@ -2166,14 +2191,14 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.27", + "semver 1.0.28", ] [[package]] name = "rustversion" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] name = "same-file" @@ -2220,9 +2245,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.27" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" dependencies = [ "serde", "serde_core", @@ -2236,11 +2261,11 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "sequential-storage" -version = "7.1.0" +version = "7.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4580ee0fa08cd41bee9f5b50ed309877e18735370fd4eef5766cc82863ef772" +checksum = "574e5a379bf43653079b34cb4cf32958404b5f42e0ed5b5adcdff02c2de04d4d" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-storage-async", "postcard", "serde", @@ -2264,7 +2289,7 @@ checksum = "2bf03b7a5281cfd4013bc788d057b0f09fc634397d83bc8973c955bd4f32727a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2296,14 +2321,14 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "serde_json" -version = "1.0.149" +version = "1.0.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" dependencies = [ "itoa", "memchr", @@ -2314,24 +2339,13 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "1.0.4" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" dependencies = [ "serde_core", ] -[[package]] -name = "sha2" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - [[package]] name = "sha2-const-stable" version = "0.1.0" @@ -2340,9 +2354,9 @@ checksum = "5f179d4e11094a893b82fff208f74d448a7512f99f5a0acbd5c679b705f83ed9" [[package]] name = "sha3" -version = "0.10.8" +version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +checksum = "77fd7028345d415a4034cf8777cd4f8ab1851274233b45f84e3d955502d93874" dependencies = [ "digest", "keccak", @@ -2359,21 +2373,27 @@ dependencies = [ [[package]] name = "shlex" -version = "1.3.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" [[package]] name = "siphasher" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e" +checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" + +[[package]] +name = "slab" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] name = "smallvec" -version = "1.15.1" +version = "1.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" [[package]] name = "smart-leds" @@ -2463,7 +2483,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2485,9 +2505,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.117" +version = "2.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" dependencies = [ "proc-macro2", "quote", @@ -2529,7 +2549,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2552,27 +2572,14 @@ dependencies = [ [[package]] name = "toml" -version = "0.9.12+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" -dependencies = [ - "serde_core", - "serde_spanned", - "toml_datetime 0.7.5+spec-1.1.0", - "toml_parser", - "winnow", -] - -[[package]] -name = "toml" -version = "1.0.3+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7614eaf19ad818347db24addfa201729cf2a9b6fdfd9eb0ab870fcacc606c0c" +checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee" dependencies = [ "indexmap", "serde_core", "serde_spanned", - "toml_datetime 1.0.0+spec-1.1.0", + "toml_datetime", "toml_parser", "toml_writer", "winnow", @@ -2580,36 +2587,27 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.7.5+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" -dependencies = [ - "serde_core", -] - -[[package]] -name = "toml_datetime" -version = "1.0.0+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32c2555c699578a4f59f0cc68e5116c8d7cabbd45e1409b989d4be085b53f13e" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" dependencies = [ "serde_core", ] [[package]] name = "toml_parser" -version = "1.0.9+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ "winnow", ] [[package]] name = "toml_writer" -version = "1.0.6+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" +checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" [[package]] name = "tracing" @@ -2630,7 +2628,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2680,13 +2678,13 @@ dependencies = [ "aes", "bt-hci", "cmac", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-futures", "embassy-sync", "embassy-time", "embedded-io 0.7.1", "futures", - "heapless 0.9.2", + "heapless 0.9.3", "p256", "rand", "rand_chacha", @@ -2706,7 +2704,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "uuid", ] @@ -2718,9 +2716,9 @@ checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" [[package]] name = "typenum" -version = "1.19.0" +version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" [[package]] name = "ucd-trie" @@ -2736,9 +2734,9 @@ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-segmentation" -version = "1.12.0" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" [[package]] name = "unicode-width" @@ -2795,15 +2793,15 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.117", + "syn 2.0.118", "usbd-hid-descriptors", ] [[package]] name = "uuid" -version = "1.21.0" +version = "1.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b672338555252d43fd2240c714dc444b8c6fb0a5c5335e65a07bba7742735ddb" +checksum = "bf80a72845275afea99e7f2b434723d3bc7e38470fcd1c7ed39a599c73319a53" dependencies = [ "js-sys", "wasm-bindgen", @@ -2860,9 +2858,9 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasm-bindgen" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60722a937f594b7fde9adb894d7c092fc1bb6612897c46368d18e7a20208eff2" +checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" dependencies = [ "cfg-if", "once_cell", @@ -2873,9 +2871,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac8c6395094b6b91c4af293f4c79371c163f9a6f56184d2c9a85f5a95f3950" +checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2883,22 +2881,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab3fabce6159dc20728033842636887e4877688ae94382766e00b180abac9d60" +checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de0e091bdb824da87dc01d967388880d017a0a9bc4f3bdc0d86ee9f9336e3bb5" +checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" dependencies = [ "unicode-ident", ] @@ -2938,9 +2936,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.14" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" +checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" dependencies = [ "memchr", ] @@ -2956,9 +2954,9 @@ dependencies = [ [[package]] name = "yaml-rust2" -version = "0.10.4" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2462ea039c445496d8793d052e13787f2b90e750b833afee748e601c17621ed9" +checksum = "631a50d867fafb7093e709d75aaee9e0e0d5deb934021fcea25ac2fe09edc51e" dependencies = [ "arraydeque", "encoding_rs", @@ -2967,29 +2965,29 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.39" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db6d35d663eadb6c932438e763b262fe1a70987f9ae936e60158176d710cae4a" +checksum = "b7cbbc0a705a0fd05cc3676525980d2bf5a9bc4adac6d6475209a7887cf59d19" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.39" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4122cd3169e94605190e77839c9a40d40ed048d305bfdc146e7df40ab0f3e517" +checksum = "e2e817b7b52d0c7358d3246da9d69935ebb18116b2b102b4230dac079b4862f5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "zeroize" -version = "1.8.2" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" [[package]] name = "zmij" diff --git a/examples/use_config/rp2040_direct_pin/Cargo.toml b/examples/use_config/rp2040_direct_pin/Cargo.toml index 245eecb32..724515c00 100644 --- a/examples/use_config/rp2040_direct_pin/Cargo.toml +++ b/examples/use_config/rp2040_direct_pin/Cargo.toml @@ -10,7 +10,7 @@ edition = "2024" license = "MIT OR Apache-2.0" [dependencies] -rmk = { path = "../../../rmk", features = ["rp2040"] } +rmk = { path = "../../../rmk", default-features = false, features = ["defmt", "storage", "vial", "watchdog", "rp2040"] } embassy-time = { version = "0.5", features = ["defmt"] } embassy-rp = { version = "0.10", features = [ "rp2040", diff --git a/examples/use_config/rp2040_direct_pin/keyboard.toml b/examples/use_config/rp2040_direct_pin/keyboard.toml index 88196dbfb..722dc3e6a 100644 --- a/examples/use_config/rp2040_direct_pin/keyboard.toml +++ b/examples/use_config/rp2040_direct_pin/keyboard.toml @@ -1,4 +1,5 @@ [keyboard] +# Replace with your keyboard identity. name = "RMK Keyboard" product_name = "RMK Keyboard" vendor_id = 0x4c4b @@ -19,34 +20,44 @@ direct_pins = [ [layout] rows = 4 cols = 3 -layers = 2 -keymap = [ - [ - ["A", "B", "C"], - ["Kc1", "Kc2", "Kc3"], - ["LCtrl", "_", "_"], - ["OSL(1)", "LT(2, Kc9)", "_"] - ], - [ - ["_", "TT(1)", "TG(2)"], - ["_", "_", "_"], - ["_", "_", "_"], - ["_", "_", "_"] - ], -] +map = """ +(0,0) (0,1) (0,2) +(1,0) (1,1) (1,2) +(2,0) (2,1) (2,2) +(3,0) (3,1) (3,2) +""" + +[keymap] +layers = 3 + +[[keymap.layer]] +keys = """ +A B C +Kc1 Kc2 Kc3 +LCtrl _ _ +OSL(1) LT(2, Kc9) _ +""" + +[[keymap.layer]] +keys = """ +_ TT(1) TG(2) +_ _ _ +_ _ _ +_ _ _ +""" [light] # All light pins are high-active by default, uncomment if you want it to be low-active -# capslock.pin = "PB2" +# capslock.pin = "PIN_16" # capslock.low_active = true -# scrolllock.pin = "PA3" +# scrolllock.pin = "PIN_17" # scrolllock.low_active = true # Just ignore if no light pin is used for it -# numslock.pin = "PA5" +# numslock.pin = "PIN_18" # numslock.low_active = true [storage] -# Storage feature is enabled by default +# Storage is enabled by default. # enabled = false \ No newline at end of file diff --git a/examples/use_config/rp2040_embassy_boot/Cargo.lock b/examples/use_config/rp2040_embassy_boot/Cargo.lock index 6c2091cb8..b9f828dcb 100644 --- a/examples/use_config/rp2040_embassy_boot/Cargo.lock +++ b/examples/use_config/rp2040_embassy_boot/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -42,9 +48,9 @@ checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236" [[package]] name = "arrayvec" -version = "0.7.6" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" [[package]] name = "ascii-canvas" @@ -63,7 +69,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -137,7 +143,7 @@ checksum = "3ca6739863c590881f038d033a146c51ddae239186a4327014839fd864f44ed5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -171,7 +177,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f3c66fd0a41a3b3a5906847b1bf5516048ce083e24fa9341a0fa31d3b4cd73d" dependencies = [ "btuuid", - "defmt 1.1.0", + "defmt 1.1.1", "embassy-sync", "embedded-io 0.7.1", "embedded-io-async 0.7.0", @@ -222,9 +228,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.63" +version = "1.2.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "556e016178bb5662a08681bbe0f00f8e17631781a4dfc8c45e466e4b185ec27f" +checksum = "f5d6cac793997bd970000024b2934968efe83b382de4fdcf4fcb46b6ee4ad996" dependencies = [ "find-msvc-tools", "shlex", @@ -242,7 +248,7 @@ version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327" dependencies = [ - "defmt 1.1.0", + "defmt 1.1.1", "num-traits", "pure-rust-locales", ] @@ -289,9 +295,9 @@ dependencies = [ [[package]] name = "config" -version = "0.15.23" +version = "0.15.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f316c6237b2d38be61949ecd15268a4c6ca32570079394a2444d9ce2c72a72d8" +checksum = "b85f248a4de22d204ceabc6299d89d2c70fbd7f09fea53c06c852369652d8139" dependencies = [ "async-trait", "convert_case 0.6.0", @@ -410,7 +416,7 @@ checksum = "e37549a379a9e0e6e576fd208ee60394ccb8be963889eebba3ffe0980364f472" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -424,9 +430,9 @@ dependencies = [ [[package]] name = "crc-any" -version = "2.5.0" +version = "2.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62ec9ff5f7965e4d7280bd5482acd20aadb50d632cf6c1d74493856b011fa73" +checksum = "46db9f663dfb869b80fcf59e32d7a80fc6c464a4f6328f3f06a00f5e36d05f8c" dependencies = [ "debug-helper", ] @@ -505,7 +511,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -518,7 +524,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -529,7 +535,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -540,7 +546,7 @@ checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ "darling_core 0.23.0", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -554,9 +560,9 @@ dependencies = [ [[package]] name = "debug-helper" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f578e8e2c440e7297e008bb5486a3a8a194775224bbc23729b0dbdfaeebf162e" +checksum = "80a4af69c60438a1a82af89d362f4729fd38db7b73f305a237636fad31ceb2bf" [[package]] name = "defmt" @@ -564,14 +570,14 @@ version = "0.3.100" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0963443817029b2024136fc4dd07a5107eb8f977eaf18fcd1fdeb11306b64ad" dependencies = [ - "defmt 1.1.0", + "defmt 1.1.1", ] [[package]] name = "defmt" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6e524506490a1953d237cb87b1cfc1e46f88c18f10a22dfe0f507dc6bfc7f7f" +checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" dependencies = [ "bitflags 1.3.2", "defmt-macros", @@ -579,15 +585,14 @@ dependencies = [ [[package]] name = "defmt-macros" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0a27770e9c8f719a79d8b638281f4d828f77d8fd61e0bd94451b9b85e576a0b" +checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" dependencies = [ "defmt-parser", - "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -601,12 +606,12 @@ dependencies = [ [[package]] name = "defmt-rtt" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0f73a4a4a91609e977ae3b7bd831ffa292edfd42ad140a3244a61d805b0e05e" +checksum = "05144944c117db54127a8ac17a3c9a28d55e7047bfddb950bcd20b4a94c79b10" dependencies = [ "critical-section", - "defmt 1.1.0", + "defmt 1.1.1", ] [[package]] @@ -711,7 +716,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b0641612053b2f34fc250bb63f6630ae75de46e02ade7f457268447081d709ce" dependencies = [ - "defmt 1.1.0", + "defmt 1.1.1", "embassy-futures", "embassy-hal-internal 0.4.0", "embassy-sync", @@ -733,7 +738,7 @@ dependencies = [ "cordyceps", "cortex-m", "critical-section", - "defmt 1.1.0", + "defmt 1.1.1", "document-features", "embassy-executor-macros", "embassy-executor-timer-queue", @@ -748,7 +753,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -763,7 +768,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc2d050bdc5c21e0862a89256ed8029ae6c290a93aecefc73084b3002cdebb01" dependencies = [ - "defmt 1.1.0", + "defmt 1.1.1", ] [[package]] @@ -783,7 +788,7 @@ checksum = "568659fc53866d3d85c60fa33723fb751aa69e71507634fc2c19e7649432fb75" dependencies = [ "cortex-m", "critical-section", - "defmt 1.1.0", + "defmt 1.1.1", "num-traits", ] @@ -815,7 +820,7 @@ dependencies = [ "cortex-m", "cortex-m-rt", "critical-section", - "defmt 1.1.0", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -849,7 +854,7 @@ dependencies = [ "cortex-m", "cortex-m-rt", "critical-section", - "defmt 1.1.0", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -886,7 +891,7 @@ checksum = "7bbd85cf5a5ae56bdf26f618364af642d1d0a4e245cdd75cd9aabda382f65a81" dependencies = [ "cfg-if", "critical-section", - "defmt 1.1.0", + "defmt 1.1.1", "embedded-io-async 0.7.0", "futures-core", "futures-sink", @@ -901,7 +906,7 @@ checksum = "592b0c143ec626e821d4d90da51a2bd91d559d6c442b7c74a47d368c9e23d97a" dependencies = [ "cfg-if", "critical-section", - "defmt 1.1.0", + "defmt 1.1.1", "document-features", "embassy-time-driver", "embedded-hal 0.2.7", @@ -936,7 +941,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a25746d8b152b72fbf2a217f489a083dbbe243f281f09184a1f2cfbe9bbb245f" dependencies = [ "bitflags 2.13.0", - "defmt 1.1.0", + "defmt 1.1.1", "embassy-futures", "embassy-net-driver-channel", "embassy-sync", @@ -970,7 +975,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa675c5f4349b6aa0fcffc4bf9b241f18cd11b97c1f8323273fb9a5449937fbd" dependencies = [ - "defmt 1.1.0", + "defmt 1.1.1", "embedded-io-async 0.6.1", "embedded-io-async 0.7.0", ] @@ -982,7 +987,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6efd0c0e0b21bcf91b475b8fa47347c1df32c9a99728ae1e1b0e6625862dfd1a" dependencies = [ "critical-section", - "defmt 1.1.0", + "defmt 1.1.1", "embassy-sync", "embassy-time", "embassy-usb-driver", @@ -1028,6 +1033,12 @@ dependencies = [ "nb 1.1.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -1040,7 +1051,7 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9eb1aa714776b75c7e67e1da744b81a129b3ff919c8712b5e1b32252c1f07cc7" dependencies = [ - "defmt 1.1.0", + "defmt 1.1.1", ] [[package]] @@ -1058,7 +1069,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2564b9f813c544241430e147d8bc454815ef9ac998878d30cc3055449f7fd4c0" dependencies = [ - "defmt 1.1.0", + "defmt 1.1.1", "embedded-io 0.7.1", ] @@ -1218,7 +1229,7 @@ checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1393,7 +1404,7 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "25ba4bd83f9415b58b4ed8dc5714c76e626a105be4646c02630ad730ad3b5aa4" dependencies = [ - "defmt 1.1.0", + "defmt 1.1.1", "hash32 0.3.1", "serde_core", "stable_deref_trait", @@ -1465,13 +1476,12 @@ checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "js-sys" -version = "0.3.99" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "142bc4740e452c1e57ade0cbc129f139c9093e354346f0872ef985f4f5cf5f11" +checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ "cfg-if", "futures-util", - "once_cell", "wasm-bindgen", ] @@ -1562,9 +1572,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.32" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "953f07c43838f8e6f9758cab68bf5bed85465e7587ebe0b823f1bcd81978ad3a" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" [[package]] name = "loom" @@ -1601,9 +1611,18 @@ dependencies = [ [[package]] name = "memchr" -version = "2.8.1" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b947ae49db0d222b1dbc6b113ce7248a3fc3a6ca21b696717bfc000ba4484d8" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" + +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] [[package]] name = "nb" @@ -1672,7 +1691,7 @@ checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1708,7 +1727,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd402d00b0fb94c5aee000029204a46884b1262e0c443f166d86d2c0747e1a1a" dependencies = [ "cortex-m", - "defmt 1.1.0", + "defmt 1.1.1", ] [[package]] @@ -1748,9 +1767,9 @@ checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" [[package]] name = "pest" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662" +checksum = "47627dd7305c6a2d6c8c6bcd24c5a4c17dbbf425f4f9c5313e724b38fc9782e9" dependencies = [ "memchr", "ucd-trie", @@ -1758,9 +1777,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77" +checksum = "4b4254325ecad416ab689e27ba51da03ba01a9632bc6e108f5fe7c3c4ad29d58" dependencies = [ "pest", "pest_generator", @@ -1768,25 +1787,24 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f" +checksum = "6c4c0e91ead7a8f7acecbca6f003fc2e8282b1dbe2dd9c9d2f16aba42995e0a7" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "pest_meta" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220" +checksum = "f9744bc48116fee06334924bb5f2bad41eed5e89bd26e29b0b799f9a3f82c210" dependencies = [ "pest", - "sha2", ] [[package]] @@ -1865,7 +1883,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1890,7 +1908,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", - "defmt 1.1.0", + "defmt 1.1.1", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -1904,7 +1924,7 @@ checksum = "e0232bd009a197ceec9cc881ba46f727fcd8060a2d8d6a9dde7a69030a6fe2bb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1950,7 +1970,7 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1968,14 +1988,14 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "869675ad2d7541aea90c6d88c81f46a7f4ea9af8cd0395d38f11a95126998a0d" dependencies = [ - "defmt 1.1.0", + "defmt 1.1.1", ] [[package]] name = "quote" -version = "1.0.45" +version = "1.0.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" +checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" dependencies = [ "proc-macro2", ] @@ -2028,9 +2048,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.12.3" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +checksum = "2a0e75113e14dc5acb068cd0786884f214f1312650a3d36d269f5c4f3cdee8a2" dependencies = [ "aho-corasick", "memchr", @@ -2040,9 +2060,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +checksum = "1f388202e4b80542a0921078cc23b6333bcf1409c1e3f86404cae4766a6131db" dependencies = [ "aho-corasick", "memchr", @@ -2051,9 +2071,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rgb" @@ -2069,7 +2089,7 @@ dependencies = [ "byteorder", "cortex-m", "crc32fast", - "defmt 1.1.0", + "defmt 1.1.1", "document-features", "embassy-boot", "embassy-boot-rp", @@ -2107,10 +2127,12 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", "toml", @@ -2127,7 +2149,7 @@ dependencies = [ "rmk-config", "rmk-types", "strum", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2136,7 +2158,7 @@ version = "0.2.0" dependencies = [ "const-gen", "cortex-m-rt", - "defmt 1.1.0", + "defmt 1.1.1", "defmt-rtt", "embassy-executor", "embassy-rp", @@ -2153,7 +2175,7 @@ name = "rmk-types" version = "0.2.2" dependencies = [ "bitfield-struct", - "defmt 1.1.0", + "defmt 1.1.1", "heapless 0.9.3", "postcard", "rmk-config", @@ -2164,9 +2186,9 @@ dependencies = [ [[package]] name = "ron" -version = "0.12.1" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4147b952f3f819eca0e99527022f7d6a8d05f111aeb0a62960c74eb283bec8fc" +checksum = "81116b9531d61eabc41aeb228e4b6b2435bcca3233b98cf3b3077d4e6e9debb3" dependencies = [ "bitflags 2.13.0", "once_cell", @@ -2225,9 +2247,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] name = "same-file" @@ -2294,7 +2316,7 @@ version = "7.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "574e5a379bf43653079b34cb4cf32958404b5f42e0ed5b5adcdff02c2de04d4d" dependencies = [ - "defmt 1.1.0", + "defmt 1.1.1", "embedded-storage-async", "postcard", "serde", @@ -2318,7 +2340,7 @@ checksum = "2bf03b7a5281cfd4013bc788d057b0f09fc634397d83bc8973c955bd4f32727a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2350,7 +2372,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2375,17 +2397,6 @@ dependencies = [ "serde_core", ] -[[package]] -name = "sha2" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - [[package]] name = "sha2-const-stable" version = "0.1.0" @@ -2437,9 +2448,9 @@ checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] name = "smallvec" -version = "1.15.1" +version = "1.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" [[package]] name = "smart-leds" @@ -2529,7 +2540,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2551,9 +2562,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.117" +version = "2.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" dependencies = [ "proc-macro2", "quote", @@ -2595,7 +2606,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2674,7 +2685,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2724,7 +2735,7 @@ dependencies = [ "aes", "bt-hci", "cmac", - "defmt 1.1.0", + "defmt 1.1.1", "embassy-futures", "embassy-sync", "embassy-time", @@ -2750,7 +2761,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "uuid", ] @@ -2839,15 +2850,15 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.117", + "syn 2.0.118", "usbd-hid-descriptors", ] [[package]] name = "uuid" -version = "1.23.2" +version = "1.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d258b83ceec21034727ecee8c382cfa6c3e133699b0742c64571814fb420c9f7" +checksum = "bf80a72845275afea99e7f2b434723d3bc7e38470fcd1c7ed39a599c73319a53" dependencies = [ "js-sys", "wasm-bindgen", @@ -2904,9 +2915,9 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasm-bindgen" -version = "0.2.122" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ed04576f974d2b2fba0f38c51dbc5518011e38c36bf1143164be765528fd409" +checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" dependencies = [ "cfg-if", "once_cell", @@ -2917,9 +2928,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.122" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "916151b09da36bd82f6615cbf3a419e2f0ba23a03c6160e8e92eb6bd4aa1dec6" +checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2927,22 +2938,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.122" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "299047362ccbfce148b67ab7e73349f77748e00c8296f9542adfad2ad82c5c5e" +checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.122" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a929b2c61f11ba3e9bc35b50c1f25cb38e0e892c0c231ae2b8cf78d5dad4437" +checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" dependencies = [ "unicode-ident", ] @@ -3011,29 +3022,29 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.50" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b065d4f0e55f82fae73202e189638116a87c55ab6b8e6c2721e13dd9d854ad1" +checksum = "b7cbbc0a705a0fd05cc3676525980d2bf5a9bc4adac6d6475209a7887cf59d19" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.50" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b631b19d36a892ab55420c92dbc83ccd79274f25be714855d3074aa71cab639" +checksum = "e2e817b7b52d0c7358d3246da9d69935ebb18116b2b102b4230dac079b4862f5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "zeroize" -version = "1.8.2" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" [[package]] name = "zmij" diff --git a/examples/use_config/rp2040_embassy_boot/Cargo.toml b/examples/use_config/rp2040_embassy_boot/Cargo.toml index edbb6ad04..d139e27fd 100644 --- a/examples/use_config/rp2040_embassy_boot/Cargo.toml +++ b/examples/use_config/rp2040_embassy_boot/Cargo.toml @@ -10,7 +10,7 @@ edition = "2024" license = "MIT OR Apache-2.0" [dependencies] -rmk = { path = "../../../rmk", features = ["dfu_rp", "dfu_lock"] } +rmk = { path = "../../../rmk", default-features = false, features = ["defmt", "dfu_rp", "dfu_lock", "storage", "vial", "watchdog"] } embassy-time = { version = "0.5", features = ["defmt"] } embassy-rp = { version = "0.10", features = [ "rp2040", diff --git a/examples/use_config/rp2040_embassy_boot/keyboard.toml b/examples/use_config/rp2040_embassy_boot/keyboard.toml index 5fa8de76c..96b0ee474 100644 --- a/examples/use_config/rp2040_embassy_boot/keyboard.toml +++ b/examples/use_config/rp2040_embassy_boot/keyboard.toml @@ -13,21 +13,31 @@ col_pins = ["PIN_19", "PIN_20", "PIN_21"] [layout] rows = 4 cols = 3 -layers = 2 -keymap = [ - [ - ["A", "B", "C"], - ["Kc1", "Kc2", "Kc3"], - ["LCtrl", "MO(1)", "LShift"], - ["OSL(1)", "LT(2, Kc9)", "LM(1, LShift | LGui)"], - ], - [ - ["_", "TT(1)", "TG(2)"], - ["_", "_", "_"], - ["_", "_", "_"], - ["_", "_", "_"], - ], -] +map = """ +(0,0) (0,1) (0,2) +(1,0) (1,1) (1,2) +(2,0) (2,1) (2,2) +(3,0) (3,1) (3,2) +""" + +[keymap] +layers = 3 + +[[keymap.layer]] +keys = """ +A B C +Kc1 Kc2 Kc3 +LCtrl MO(1) LShift +OSL(1) LT(2, Kc9) LM(1, LShift | LGui) +""" + +[[keymap.layer]] +keys = """ +_ TT(1) TG(2) +_ _ _ +_ _ _ +_ _ _ +""" # DFU partition layout — must match your bootloader's memory.x # diff --git a/examples/use_config/rp2040_oled/Cargo.lock b/examples/use_config/rp2040_oled/Cargo.lock index ed677e14f..261f15d08 100644 --- a/examples/use_config/rp2040_oled/Cargo.lock +++ b/examples/use_config/rp2040_oled/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -42,9 +48,9 @@ checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236" [[package]] name = "arrayvec" -version = "0.7.6" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" [[package]] name = "ascii-canvas" @@ -63,7 +69,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -77,15 +83,15 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "az" -version = "1.3.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be5eb007b7cacc6c660343e96f650fedf4b5a77512399eb952ca6642cf8d13f7" +checksum = "7b7e4c2464d97fe331d41de9d5db0def0a96f4d823b8b32a2efd503578988973" [[package]] name = "bare-metal" @@ -137,7 +143,7 @@ checksum = "3ca6739863c590881f038d033a146c51ddae239186a4327014839fd864f44ed5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -148,9 +154,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.11.0" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" +checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" dependencies = [ "serde_core", ] @@ -171,12 +177,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f3c66fd0a41a3b3a5906847b1bf5516048ce083e24fa9341a0fa31d3b4cd73d" dependencies = [ "btuuid", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-sync", "embedded-io 0.7.1", "embedded-io-async 0.7.0", "futures-intrusive", - "heapless 0.9.2", + "heapless 0.9.3", "serde", ] @@ -193,9 +199,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.20.2" +version = "3.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" [[package]] name = "byte-slice-cast" @@ -221,16 +227,16 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa61aec073ec94791433ddf3df2323ff9d1711557c2a0eefb0f99cb4f8dca520" dependencies = [ - "semver 1.0.27", + "semver 1.0.28", "serde", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] name = "cc" -version = "1.2.56" +version = "1.2.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2" +checksum = "f5d6cac793997bd970000024b2934968efe83b382de4fdcf4fcb46b6ee4ad996" dependencies = [ "find-msvc-tools", "shlex", @@ -244,11 +250,11 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "chrono" -version = "0.4.44" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" +checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "num-traits", "pure-rust-locales", ] @@ -295,9 +301,9 @@ dependencies = [ [[package]] name = "config" -version = "0.15.19" +version = "0.15.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b30fa8254caad766fc03cb0ccae691e14bf3bd72bfff27f72802ce729551b3d6" +checksum = "b85f248a4de22d204ceabc6299d89d2c70fbd7f09fea53c06c852369652d8139" dependencies = [ "async-trait", "convert_case 0.6.0", @@ -308,7 +314,7 @@ dependencies = [ "serde-untagged", "serde_core", "serde_json", - "toml 0.9.12+spec-1.1.0", + "toml", "winnow", "yaml-rust2", ] @@ -416,7 +422,7 @@ checksum = "e37549a379a9e0e6e576fd208ee60394ccb8be963889eebba3ffe0980364f472" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -430,9 +436,9 @@ dependencies = [ [[package]] name = "crc-any" -version = "2.5.0" +version = "2.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62ec9ff5f7965e4d7280bd5482acd20aadb50d632cf6c1d74493856b011fa73" +checksum = "46db9f663dfb869b80fcf59e32d7a80fc6c464a4f6328f3f06a00f5e36d05f8c" dependencies = [ "debug-helper", ] @@ -485,7 +491,7 @@ name = "custom_renderer" version = "0.1.0" dependencies = [ "embedded-graphics", - "heapless 0.9.2", + "heapless 0.9.3", "rmk", ] @@ -520,7 +526,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -533,7 +539,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -544,7 +550,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -555,7 +561,7 @@ checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ "darling_core 0.23.0", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -569,9 +575,9 @@ dependencies = [ [[package]] name = "debug-helper" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f578e8e2c440e7297e008bb5486a3a8a194775224bbc23729b0dbdfaeebf162e" +checksum = "80a4af69c60438a1a82af89d362f4729fd38db7b73f305a237636fad31ceb2bf" [[package]] name = "defmt" @@ -579,14 +585,14 @@ version = "0.3.100" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0963443817029b2024136fc4dd07a5107eb8f977eaf18fcd1fdeb11306b64ad" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] name = "defmt" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "548d977b6da32fa1d1fda2876453da1e7df63ad0304c8b3dae4dbe7b96f39b78" +checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" dependencies = [ "bitflags 1.3.2", "defmt-macros", @@ -594,15 +600,14 @@ dependencies = [ [[package]] name = "defmt-macros" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d4fc12a85bcf441cfe44344c4b72d58493178ce635338a3f3b78943aceb258e" +checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" dependencies = [ "defmt-parser", - "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -616,12 +621,12 @@ dependencies = [ [[package]] name = "defmt-rtt" -version = "1.1.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d5a25c99d89c40f5676bec8cefe0614f17f0f40e916f98e345dae941807f9e" +checksum = "05144944c117db54127a8ac17a3c9a28d55e7047bfddb950bcd20b4a94c79b10" dependencies = [ "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -694,9 +699,9 @@ dependencies = [ [[package]] name = "either" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" [[package]] name = "elliptic-curve" @@ -723,7 +728,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b0641612053b2f34fc250bb63f6630ae75de46e02ade7f457268447081d709ce" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embassy-futures", "embassy-hal-internal 0.4.0", "embassy-sync", @@ -745,7 +750,7 @@ dependencies = [ "cordyceps", "cortex-m", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-executor-macros", "embassy-executor-timer-queue", @@ -760,7 +765,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -775,7 +780,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc2d050bdc5c21e0862a89256ed8029ae6c290a93aecefc73084b3002cdebb01" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -795,7 +800,7 @@ checksum = "568659fc53866d3d85c60fa33723fb751aa69e71507634fc2c19e7649432fb75" dependencies = [ "cortex-m", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "num-traits", ] @@ -822,12 +827,12 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82051f67e8a06a8faebd183f62cfade184c96be68126c5f064abb8223a591ff1" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "cfg-if", "cortex-m", "cortex-m-rt", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -861,7 +866,7 @@ dependencies = [ "cortex-m", "cortex-m-rt", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -898,11 +903,11 @@ checksum = "7bbd85cf5a5ae56bdf26f618364af642d1d0a4e245cdd75cd9aabda382f65a81" dependencies = [ "cfg-if", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io-async 0.7.0", "futures-core", "futures-sink", - "heapless 0.9.2", + "heapless 0.9.3", ] [[package]] @@ -913,7 +918,7 @@ checksum = "592b0c143ec626e821d4d90da51a2bd91d559d6c442b7c74a47d368c9e23d97a" dependencies = [ "cfg-if", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-time-driver", "embedded-hal 0.2.7", @@ -933,12 +938,12 @@ dependencies = [ [[package]] name = "embassy-time-queue-utils" -version = "0.3.0" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e2ee86063bd028a420a5fb5898c18c87a8898026da1d4c852af2c443d0a454" +checksum = "168297bf80aaf114b3c9ad589bf38b01b3009b9af7f97cd18086c5bbf96f5693" dependencies = [ "embassy-executor-timer-queue", - "heapless 0.8.0", + "heapless 0.9.3", ] [[package]] @@ -947,15 +952,15 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a25746d8b152b72fbf2a217f489a083dbbe243f281f09184a1f2cfbe9bbb245f" dependencies = [ - "bitflags 2.11.0", - "defmt 1.0.1", + "bitflags 2.13.0", + "defmt 1.1.1", "embassy-futures", "embassy-net-driver-channel", "embassy-sync", "embassy-time", "embassy-usb-driver", "embedded-io-async 0.7.0", - "heapless 0.9.2", + "heapless 0.9.3", "ssmarshal", "usbd-hid", ] @@ -966,7 +971,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa675c5f4349b6aa0fcffc4bf9b241f18cd11b97c1f8323273fb9a5449937fbd" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io-async 0.6.1", "embedded-io-async 0.7.0", ] @@ -978,7 +983,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6efd0c0e0b21bcf91b475b8fa47347c1df32c9a99728ae1e1b0e6625862dfd1a" dependencies = [ "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-sync", "embassy-time", "embassy-usb-driver", @@ -987,9 +992,9 @@ dependencies = [ [[package]] name = "embedded-graphics" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0649998afacf6d575d126d83e68b78c0ab0e00ca2ac7e9b3db11b4cbe8274ef0" +checksum = "4e8da660bb0c829b34a56a965490597f82a55e767b91f9543be80ce8ccb416fe" dependencies = [ "az", "byteorder", @@ -1000,9 +1005,9 @@ dependencies = [ [[package]] name = "embedded-graphics-core" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba9ecd261f991856250d2207f6d8376946cd9f412a2165d3b75bc87a0bc7a044" +checksum = "95743bef3ff70fcba3930246c4e6872882bbea0dcc6da2ca860112e0cd4bd09f" dependencies = [ "az", "byteorder", @@ -1047,6 +1052,12 @@ dependencies = [ "nb 1.1.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -1059,7 +1070,7 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9eb1aa714776b75c7e67e1da744b81a129b3ff919c8712b5e1b32252c1f07cc7" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -1077,7 +1088,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2564b9f813c544241430e147d8bc454815ef9ac998878d30cc3055449f7fd4c0" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io 0.7.1", ] @@ -1128,9 +1139,9 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "erased-serde" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e8918065695684b2b0702da20382d5ae6065cf3327bc2d6436bd49a71ce9f3" +checksum = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec" dependencies = [ "serde", "serde_core", @@ -1155,9 +1166,9 @@ checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" [[package]] name = "fixed" -version = "1.30.0" +version = "1.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c566da967934c6c7ee0458a9773de9b2a685bd2ce26a3b28ddfc740e640182f5" +checksum = "707070ccf8c4173548210893a0186e29c266901b71ed20cd9e2ca0193dfe95c3" dependencies = [ "az", "bytemuck", @@ -1188,9 +1199,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foldhash" -version = "0.1.5" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" [[package]] name = "futures" @@ -1246,7 +1257,7 @@ checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1272,13 +1283,14 @@ dependencies = [ "futures-sink", "futures-task", "pin-project-lite", + "slab", ] [[package]] name = "generator" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52f04ae4152da20c76fe800fa48659201d5cf627c5149ca0b707b69d7eef6cf9" +checksum = "b3b854b0e584ead1a33f18b2fcad7cf7be18b3875c78816b753639aa501513ae" dependencies = [ "cc", "cfg-if", @@ -1368,26 +1380,26 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hashbrown" -version = "0.15.5" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" dependencies = [ "foldhash", ] [[package]] name = "hashbrown" -version = "0.16.1" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" [[package]] name = "hashlink" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" +checksum = "824e001ac4f3012dd16a264bec811403a67ca9deb6c102fc5049b32c4574b35f" dependencies = [ - "hashbrown 0.15.5", + "hashbrown 0.16.1", ] [[package]] @@ -1416,11 +1428,11 @@ dependencies = [ [[package]] name = "heapless" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af2455f757db2b292a9b1768c4b70186d443bcb3b316252d6b540aec1cd89ed" +checksum = "25ba4bd83f9415b58b4ed8dc5714c76e626a105be4646c02630ad730ad3b5aa4" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "hash32 0.3.1", "serde_core", "stable_deref_trait", @@ -1458,12 +1470,12 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "indexmap" -version = "2.13.0" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.16.1", + "hashbrown 0.17.1", ] [[package]] @@ -1486,17 +1498,18 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "js-sys" -version = "0.3.90" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14dc6f6450b3f6d4ed5b16327f38fed626d375a886159ca555bd7822c0c3a5a6" +checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ - "once_cell", + "cfg-if", + "futures-util", "wasm-bindgen", ] @@ -1566,9 +1579,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.182" +version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "litrs" @@ -1587,9 +1600,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.29" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" [[package]] name = "loom" @@ -1639,9 +1652,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.8.0" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" [[package]] name = "micromath" @@ -1649,6 +1662,15 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3c8dda44ff03a2f238717214da50f65d5a53b45cd213a7370424ffdb6fae815" +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] + [[package]] name = "nb" version = "0.1.3" @@ -1700,9 +1722,9 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" +checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26" dependencies = [ "num_enum_derive", "rustversion", @@ -1710,20 +1732,20 @@ dependencies = [ [[package]] name = "num_enum_derive" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" +checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "once_cell" -version = "1.21.3" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] name = "ordered-multimap" @@ -1752,7 +1774,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd402d00b0fb94c5aee000029204a46884b1262e0c443f166d86d2c0747e1a1a" dependencies = [ "cortex-m", - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -1792,9 +1814,9 @@ checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" [[package]] name = "pest" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662" +checksum = "47627dd7305c6a2d6c8c6bcd24c5a4c17dbbf425f4f9c5313e724b38fc9782e9" dependencies = [ "memchr", "ucd-trie", @@ -1802,9 +1824,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77" +checksum = "4b4254325ecad416ab689e27ba51da03ba01a9632bc6e108f5fe7c3c4ad29d58" dependencies = [ "pest", "pest_generator", @@ -1812,25 +1834,24 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f" +checksum = "6c4c0e91ead7a8f7acecbca6f003fc2e8282b1dbe2dd9c9d2f16aba42995e0a7" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "pest_meta" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220" +checksum = "f9744bc48116fee06334924bb5f2bad41eed5e89bd26e29b0b799f9a3f82c210" dependencies = [ "pest", - "sha2", ] [[package]] @@ -1860,9 +1881,9 @@ checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" [[package]] name = "pin-project-lite" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pio" @@ -1909,14 +1930,14 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "pkg-config" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" [[package]] name = "portable-atomic" @@ -1934,7 +1955,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", - "defmt 1.0.1", + "defmt 1.1.1", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -1948,7 +1971,7 @@ checksum = "e0232bd009a197ceec9cc881ba46f727fcd8060a2d8d6a9dde7a69030a6fe2bb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2018,7 +2041,7 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2036,7 +2059,7 @@ version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "679341d22c78c6c649893cbd6c3278dcbe9fc4faa62fea3a9296ae2b50c14625" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "memchr", "unicase", ] @@ -2047,23 +2070,23 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "869675ad2d7541aea90c6d88c81f46a7f4ea9af8cd0395d38f11a95126998a0d" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] name = "quote" -version = "1.0.44" +version = "1.0.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" +checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" dependencies = [ "proc-macro2", ] [[package]] name = "rand" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" dependencies = [ "rand_core 0.6.4", ] @@ -2102,14 +2125,14 @@ version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", ] [[package]] name = "regex" -version = "1.12.3" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +checksum = "2a0e75113e14dc5acb068cd0786884f214f1312650a3d36d269f5c4f3cdee8a2" dependencies = [ "aho-corasick", "memchr", @@ -2119,9 +2142,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +checksum = "1f388202e4b80542a0921078cc23b6333bcf1409c1e3f86404cae4766a6131db" dependencies = [ "aho-corasick", "memchr", @@ -2130,15 +2153,15 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rgb" -version = "0.8.52" +version = "0.8.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c6a884d2998352bb4daf0183589aec883f16a6da1f4dde84d8e2e9a5409a1ce" +checksum = "47b34b781b31e5d73e9fbc8689c70551fd1ade9a19e3e28cfec8580a79290cc4" [[package]] name = "rmk" @@ -2148,7 +2171,7 @@ dependencies = [ "byteorder", "cortex-m", "crc32fast", - "defmt 1.0.1", + "defmt 1.1.1", "display-interface", "display-interface-i2c", "document-features", @@ -2168,7 +2191,7 @@ dependencies = [ "embedded-storage-async", "fixed", "futures", - "heapless 0.9.2", + "heapless 0.9.3", "paste", "pio", "postcard", @@ -2187,13 +2210,15 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] @@ -2207,7 +2232,7 @@ dependencies = [ "rmk-config", "rmk-types", "strum", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2217,7 +2242,7 @@ dependencies = [ "const-gen", "cortex-m-rt", "custom_renderer", - "defmt 1.0.1", + "defmt 1.1.1", "defmt-rtt", "embassy-executor", "embassy-rp", @@ -2234,22 +2259,22 @@ name = "rmk-types" version = "0.2.2" dependencies = [ "bitfield-struct", - "defmt 1.0.1", - "heapless 0.9.2", + "defmt 1.1.1", + "heapless 0.9.3", "postcard", "rmk-config", "serde", "strum", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] name = "ron" -version = "0.12.0" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd490c5b18261893f14449cbd28cb9c0b637aebf161cd77900bfdedaff21ec32" +checksum = "81116b9531d61eabc41aeb228e4b6b2435bcca3233b98cf3b3077d4e6e9debb3" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "once_cell", "serde", "serde_derive", @@ -2301,14 +2326,14 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.27", + "semver 1.0.28", ] [[package]] name = "rustversion" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] name = "same-file" @@ -2355,9 +2380,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.27" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" dependencies = [ "serde", "serde_core", @@ -2371,11 +2396,11 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "sequential-storage" -version = "7.1.0" +version = "7.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4580ee0fa08cd41bee9f5b50ed309877e18735370fd4eef5766cc82863ef772" +checksum = "574e5a379bf43653079b34cb4cf32958404b5f42e0ed5b5adcdff02c2de04d4d" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-storage-async", "postcard", "serde", @@ -2399,7 +2424,7 @@ checksum = "2bf03b7a5281cfd4013bc788d057b0f09fc634397d83bc8973c955bd4f32727a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2431,14 +2456,14 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "serde_json" -version = "1.0.149" +version = "1.0.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" dependencies = [ "itoa", "memchr", @@ -2449,24 +2474,13 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "1.0.4" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" dependencies = [ "serde_core", ] -[[package]] -name = "sha2" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - [[package]] name = "sha2-const-stable" version = "0.1.0" @@ -2475,9 +2489,9 @@ checksum = "5f179d4e11094a893b82fff208f74d448a7512f99f5a0acbd5c679b705f83ed9" [[package]] name = "sha3" -version = "0.10.8" +version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +checksum = "77fd7028345d415a4034cf8777cd4f8ab1851274233b45f84e3d955502d93874" dependencies = [ "digest", "keccak", @@ -2494,21 +2508,27 @@ dependencies = [ [[package]] name = "shlex" -version = "1.3.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" [[package]] name = "siphasher" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e" +checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" + +[[package]] +name = "slab" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] name = "smallvec" -version = "1.15.1" +version = "1.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" [[package]] name = "smart-leds" @@ -2613,7 +2633,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2635,9 +2655,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.117" +version = "2.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" dependencies = [ "proc-macro2", "quote", @@ -2679,7 +2699,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2702,27 +2722,14 @@ dependencies = [ [[package]] name = "toml" -version = "0.9.12+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" -dependencies = [ - "serde_core", - "serde_spanned", - "toml_datetime 0.7.5+spec-1.1.0", - "toml_parser", - "winnow", -] - -[[package]] -name = "toml" -version = "1.0.3+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7614eaf19ad818347db24addfa201729cf2a9b6fdfd9eb0ab870fcacc606c0c" +checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee" dependencies = [ "indexmap", "serde_core", "serde_spanned", - "toml_datetime 1.0.0+spec-1.1.0", + "toml_datetime", "toml_parser", "toml_writer", "winnow", @@ -2730,36 +2737,27 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.7.5+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" -dependencies = [ - "serde_core", -] - -[[package]] -name = "toml_datetime" -version = "1.0.0+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32c2555c699578a4f59f0cc68e5116c8d7cabbd45e1409b989d4be085b53f13e" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" dependencies = [ "serde_core", ] [[package]] name = "toml_parser" -version = "1.0.9+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ "winnow", ] [[package]] name = "toml_writer" -version = "1.0.6+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" +checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" [[package]] name = "tracing" @@ -2780,7 +2778,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2830,13 +2828,13 @@ dependencies = [ "aes", "bt-hci", "cmac", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-futures", "embassy-sync", "embassy-time", "embedded-io 0.7.1", "futures", - "heapless 0.9.2", + "heapless 0.9.3", "p256", "rand", "rand_chacha", @@ -2856,7 +2854,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "uuid", ] @@ -2868,9 +2866,9 @@ checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" [[package]] name = "typenum" -version = "1.19.0" +version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" [[package]] name = "ucd-trie" @@ -2892,9 +2890,9 @@ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-segmentation" -version = "1.12.0" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" [[package]] name = "unicode-width" @@ -2951,15 +2949,15 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.117", + "syn 2.0.118", "usbd-hid-descriptors", ] [[package]] name = "uuid" -version = "1.21.0" +version = "1.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b672338555252d43fd2240c714dc444b8c6fb0a5c5335e65a07bba7742735ddb" +checksum = "bf80a72845275afea99e7f2b434723d3bc7e38470fcd1c7ed39a599c73319a53" dependencies = [ "js-sys", "wasm-bindgen", @@ -3016,9 +3014,9 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasm-bindgen" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60722a937f594b7fde9adb894d7c092fc1bb6612897c46368d18e7a20208eff2" +checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" dependencies = [ "cfg-if", "once_cell", @@ -3029,9 +3027,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac8c6395094b6b91c4af293f4c79371c163f9a6f56184d2c9a85f5a95f3950" +checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3039,22 +3037,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab3fabce6159dc20728033842636887e4877688ae94382766e00b180abac9d60" +checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de0e091bdb824da87dc01d967388880d017a0a9bc4f3bdc0d86ee9f9336e3bb5" +checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" dependencies = [ "unicode-ident", ] @@ -3094,9 +3092,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.14" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" +checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" dependencies = [ "memchr", ] @@ -3112,9 +3110,9 @@ dependencies = [ [[package]] name = "yaml-rust2" -version = "0.10.4" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2462ea039c445496d8793d052e13787f2b90e750b833afee748e601c17621ed9" +checksum = "631a50d867fafb7093e709d75aaee9e0e0d5deb934021fcea25ac2fe09edc51e" dependencies = [ "arraydeque", "encoding_rs", @@ -3123,29 +3121,29 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.39" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db6d35d663eadb6c932438e763b262fe1a70987f9ae936e60158176d710cae4a" +checksum = "b7cbbc0a705a0fd05cc3676525980d2bf5a9bc4adac6d6475209a7887cf59d19" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.39" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4122cd3169e94605190e77839c9a40d40ed048d305bfdc146e7df40ab0f3e517" +checksum = "e2e817b7b52d0c7358d3246da9d69935ebb18116b2b102b4230dac079b4862f5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "zeroize" -version = "1.8.2" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" [[package]] name = "zmij" diff --git a/examples/use_config/rp2040_oled/Cargo.toml b/examples/use_config/rp2040_oled/Cargo.toml index 1fc2d9574..65cb28f52 100644 --- a/examples/use_config/rp2040_oled/Cargo.toml +++ b/examples/use_config/rp2040_oled/Cargo.toml @@ -10,7 +10,7 @@ edition = "2024" license = "MIT OR Apache-2.0" [dependencies] -rmk = { path = "../../../rmk", features = ["rp2040", "ssd1306"]} +rmk = { path = "../../../rmk", default-features = false, features = ["defmt", "storage", "vial", "watchdog", "rp2040", "ssd1306"] } custom_renderer = { path = "../../use_rust/custom_renderer" } embassy-time = { version = "0.5", features = ["defmt"] } embassy-rp = { version = "0.10", features = [ diff --git a/examples/use_config/rp2040_oled/keyboard.toml b/examples/use_config/rp2040_oled/keyboard.toml index f77446524..8a10cdccb 100644 --- a/examples/use_config/rp2040_oled/keyboard.toml +++ b/examples/use_config/rp2040_oled/keyboard.toml @@ -1,4 +1,5 @@ [keyboard] +# Replace with your keyboard identity. name = "RMK Keyboard" product_name = "RMK Keyboard" vendor_id = 0x4c4b @@ -7,62 +8,40 @@ manufacturer = "haobo" chip = "rp2040" [matrix] -# Row and col pins are mandatory +# Matrix pins are required. row_pins = ["PIN_6", "PIN_7", "PIN_8", "PIN_9"] col_pins = ["PIN_14", "PIN_20", "PIN_21"] -# RMK uses col2row as the default matrix diode direction, if you want to use a row2col matrix, add `row2col = true` +# Default diode direction is col2row; set `row2col = true` if needed. # row2col = true [layout] rows = 4 cols = 3 -layers = 2 -keymap = [ - [ - [ - "-", - "B", - "C", - ], - [ - "Kc1", - "Kc2", - "Kc3", - ], - [ - "LCtrl", - "MO(1)", - "LShift", - ], - [ - "OSL(1)", - "LT(2, Kc9)", - "LM(1, LShift | LGui)", - ], - ], - [ - [ - "_", - "TT(1)", - "TG(2)", - ], - [ - "_", - "_", - "_", - ], - [ - "_", - "_", - "_", - ], - [ - "_", - "_", - "_", - ], - ], -] +map = """ +(0,0) (0,1) (0,2) +(1,0) (1,1) (1,2) +(2,0) (2,1) (2,2) +(3,0) (3,1) (3,2) +""" + +[keymap] +layers = 3 + +[[keymap.layer]] +keys = """ +- B C +Kc1 Kc2 Kc3 +LCtrl MO(1) LShift +OSL(1) LT(2, Kc9) LM(1, LShift | LGui) +""" + +[[keymap.layer]] +keys = """ +_ TT(1) TG(2) +_ _ _ +_ _ _ +_ _ _ +""" [display] driver = "ssd1306" @@ -82,16 +61,16 @@ address = 0x3C [light] # All light pins are high-active by default, uncomment if you want it to be low-active -# capslock.pin = "PB2" +# capslock.pin = "PIN_16" # capslock.low_active = true -# scrolllock.pin = "PA3" +# scrolllock.pin = "PIN_17" # scrolllock.low_active = true # Just ignore if no light pin is used for it -# numslock.pin = "PA5" +# numslock.pin = "PIN_18" # numslock.low_active = true [storage] -# Storage feature is enabled by default +# Storage is enabled by default. # enabled = false [rmk] diff --git a/examples/use_config/rp2040_pointing_modes/Cargo.lock b/examples/use_config/rp2040_pointing_modes/Cargo.lock index 7cb8b6372..152b62ade 100644 --- a/examples/use_config/rp2040_pointing_modes/Cargo.lock +++ b/examples/use_config/rp2040_pointing_modes/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -42,9 +48,9 @@ checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236" [[package]] name = "arrayvec" -version = "0.7.6" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" [[package]] name = "ascii-canvas" @@ -63,7 +69,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -77,9 +83,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "az" @@ -137,7 +143,7 @@ checksum = "3ca6739863c590881f038d033a146c51ddae239186a4327014839fd864f44ed5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -148,9 +154,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.11.0" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" +checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" dependencies = [ "serde_core", ] @@ -171,12 +177,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f3c66fd0a41a3b3a5906847b1bf5516048ce083e24fa9341a0fa31d3b4cd73d" dependencies = [ "btuuid", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-sync", "embedded-io 0.7.1", "embedded-io-async 0.7.0", "futures-intrusive", - "heapless 0.9.2", + "heapless 0.9.3", "serde", ] @@ -193,9 +199,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.20.2" +version = "3.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" [[package]] name = "bytemuck" @@ -215,16 +221,16 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa61aec073ec94791433ddf3df2323ff9d1711557c2a0eefb0f99cb4f8dca520" dependencies = [ - "semver 1.0.27", + "semver 1.0.28", "serde", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] name = "cc" -version = "1.2.56" +version = "1.2.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2" +checksum = "f5d6cac793997bd970000024b2934968efe83b382de4fdcf4fcb46b6ee4ad996" dependencies = [ "find-msvc-tools", "shlex", @@ -238,11 +244,11 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "chrono" -version = "0.4.44" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" +checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "num-traits", "pure-rust-locales", ] @@ -289,9 +295,9 @@ dependencies = [ [[package]] name = "config" -version = "0.15.19" +version = "0.15.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b30fa8254caad766fc03cb0ccae691e14bf3bd72bfff27f72802ce729551b3d6" +checksum = "b85f248a4de22d204ceabc6299d89d2c70fbd7f09fea53c06c852369652d8139" dependencies = [ "async-trait", "convert_case 0.6.0", @@ -302,7 +308,7 @@ dependencies = [ "serde-untagged", "serde_core", "serde_json", - "toml 0.9.12+spec-1.1.0", + "toml", "winnow", "yaml-rust2", ] @@ -410,7 +416,7 @@ checksum = "e37549a379a9e0e6e576fd208ee60394ccb8be963889eebba3ffe0980364f472" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -424,9 +430,9 @@ dependencies = [ [[package]] name = "crc-any" -version = "2.5.0" +version = "2.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62ec9ff5f7965e4d7280bd5482acd20aadb50d632cf6c1d74493856b011fa73" +checksum = "46db9f663dfb869b80fcf59e32d7a80fc6c464a4f6328f3f06a00f5e36d05f8c" dependencies = [ "debug-helper", ] @@ -505,7 +511,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -518,7 +524,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -529,7 +535,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -540,7 +546,7 @@ checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ "darling_core 0.23.0", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -554,9 +560,9 @@ dependencies = [ [[package]] name = "debug-helper" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f578e8e2c440e7297e008bb5486a3a8a194775224bbc23729b0dbdfaeebf162e" +checksum = "80a4af69c60438a1a82af89d362f4729fd38db7b73f305a237636fad31ceb2bf" [[package]] name = "defmt" @@ -564,14 +570,14 @@ version = "0.3.100" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0963443817029b2024136fc4dd07a5107eb8f977eaf18fcd1fdeb11306b64ad" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] name = "defmt" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "548d977b6da32fa1d1fda2876453da1e7df63ad0304c8b3dae4dbe7b96f39b78" +checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" dependencies = [ "bitflags 1.3.2", "defmt-macros", @@ -579,15 +585,14 @@ dependencies = [ [[package]] name = "defmt-macros" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d4fc12a85bcf441cfe44344c4b72d58493178ce635338a3f3b78943aceb258e" +checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" dependencies = [ "defmt-parser", - "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -601,12 +606,12 @@ dependencies = [ [[package]] name = "defmt-rtt" -version = "1.1.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d5a25c99d89c40f5676bec8cefe0614f17f0f40e916f98e345dae941807f9e" +checksum = "05144944c117db54127a8ac17a3c9a28d55e7047bfddb950bcd20b4a94c79b10" dependencies = [ "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -650,9 +655,9 @@ dependencies = [ [[package]] name = "either" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" [[package]] name = "elliptic-curve" @@ -679,7 +684,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b0641612053b2f34fc250bb63f6630ae75de46e02ade7f457268447081d709ce" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embassy-futures", "embassy-hal-internal 0.4.0", "embassy-sync", @@ -701,7 +706,7 @@ dependencies = [ "cordyceps", "cortex-m", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-executor-macros", "embassy-executor-timer-queue", @@ -716,7 +721,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -731,7 +736,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc2d050bdc5c21e0862a89256ed8029ae6c290a93aecefc73084b3002cdebb01" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -751,7 +756,7 @@ checksum = "568659fc53866d3d85c60fa33723fb751aa69e71507634fc2c19e7649432fb75" dependencies = [ "cortex-m", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "num-traits", ] @@ -778,12 +783,12 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82051f67e8a06a8faebd183f62cfade184c96be68126c5f064abb8223a591ff1" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "cfg-if", "cortex-m", "cortex-m-rt", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -817,7 +822,7 @@ dependencies = [ "cortex-m", "cortex-m-rt", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -854,11 +859,11 @@ checksum = "7bbd85cf5a5ae56bdf26f618364af642d1d0a4e245cdd75cd9aabda382f65a81" dependencies = [ "cfg-if", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io-async 0.7.0", "futures-core", "futures-sink", - "heapless 0.9.2", + "heapless 0.9.3", ] [[package]] @@ -869,7 +874,7 @@ checksum = "592b0c143ec626e821d4d90da51a2bd91d559d6c442b7c74a47d368c9e23d97a" dependencies = [ "cfg-if", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-time-driver", "embedded-hal 0.2.7", @@ -889,12 +894,12 @@ dependencies = [ [[package]] name = "embassy-time-queue-utils" -version = "0.3.0" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e2ee86063bd028a420a5fb5898c18c87a8898026da1d4c852af2c443d0a454" +checksum = "168297bf80aaf114b3c9ad589bf38b01b3009b9af7f97cd18086c5bbf96f5693" dependencies = [ "embassy-executor-timer-queue", - "heapless 0.8.0", + "heapless 0.9.3", ] [[package]] @@ -903,15 +908,15 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a25746d8b152b72fbf2a217f489a083dbbe243f281f09184a1f2cfbe9bbb245f" dependencies = [ - "bitflags 2.11.0", - "defmt 1.0.1", + "bitflags 2.13.0", + "defmt 1.1.1", "embassy-futures", "embassy-net-driver-channel", "embassy-sync", "embassy-time", "embassy-usb-driver", "embedded-io-async 0.7.0", - "heapless 0.9.2", + "heapless 0.9.3", "ssmarshal", "usbd-hid", ] @@ -922,7 +927,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa675c5f4349b6aa0fcffc4bf9b241f18cd11b97c1f8323273fb9a5449937fbd" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io-async 0.6.1", "embedded-io-async 0.7.0", ] @@ -934,7 +939,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6efd0c0e0b21bcf91b475b8fa47347c1df32c9a99728ae1e1b0e6625862dfd1a" dependencies = [ "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-sync", "embassy-time", "embassy-usb-driver", @@ -980,6 +985,12 @@ dependencies = [ "nb 1.1.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -992,7 +1003,7 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9eb1aa714776b75c7e67e1da744b81a129b3ff919c8712b5e1b32252c1f07cc7" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -1010,7 +1021,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2564b9f813c544241430e147d8bc454815ef9ac998878d30cc3055449f7fd4c0" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io 0.7.1", ] @@ -1061,9 +1072,9 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "erased-serde" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e8918065695684b2b0702da20382d5ae6065cf3327bc2d6436bd49a71ce9f3" +checksum = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec" dependencies = [ "serde", "serde_core", @@ -1088,9 +1099,9 @@ checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" [[package]] name = "fixed" -version = "1.30.0" +version = "1.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c566da967934c6c7ee0458a9773de9b2a685bd2ce26a3b28ddfc740e640182f5" +checksum = "9af2cbf772fa6d1c11358f92ef554cb6b386201210bcf0e91fb7fba8a907fb40" dependencies = [ "az", "bytemuck", @@ -1112,9 +1123,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foldhash" -version = "0.1.5" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" [[package]] name = "futures" @@ -1170,7 +1181,7 @@ checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1196,13 +1207,14 @@ dependencies = [ "futures-sink", "futures-task", "pin-project-lite", + "slab", ] [[package]] name = "generator" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52f04ae4152da20c76fe800fa48659201d5cf627c5149ca0b707b69d7eef6cf9" +checksum = "b3b854b0e584ead1a33f18b2fcad7cf7be18b3875c78816b753639aa501513ae" dependencies = [ "cc", "cfg-if", @@ -1292,26 +1304,26 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hashbrown" -version = "0.15.5" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" dependencies = [ "foldhash", ] [[package]] name = "hashbrown" -version = "0.16.1" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" [[package]] name = "hashlink" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" +checksum = "824e001ac4f3012dd16a264bec811403a67ca9deb6c102fc5049b32c4574b35f" dependencies = [ - "hashbrown 0.15.5", + "hashbrown 0.16.1", ] [[package]] @@ -1340,11 +1352,11 @@ dependencies = [ [[package]] name = "heapless" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af2455f757db2b292a9b1768c4b70186d443bcb3b316252d6b540aec1cd89ed" +checksum = "25ba4bd83f9415b58b4ed8dc5714c76e626a105be4646c02630ad730ad3b5aa4" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "hash32 0.3.1", "serde_core", "stable_deref_trait", @@ -1382,12 +1394,12 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "indexmap" -version = "2.13.0" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.16.1", + "hashbrown 0.17.1", ] [[package]] @@ -1410,17 +1422,18 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "js-sys" -version = "0.3.90" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14dc6f6450b3f6d4ed5b16327f38fed626d375a886159ca555bd7822c0c3a5a6" +checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ - "once_cell", + "cfg-if", + "futures-util", "wasm-bindgen", ] @@ -1490,9 +1503,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.182" +version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "litrs" @@ -1511,9 +1524,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.29" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" [[package]] name = "loom" @@ -1550,9 +1563,18 @@ dependencies = [ [[package]] name = "memchr" -version = "2.8.0" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" + +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] [[package]] name = "nb" @@ -1605,9 +1627,9 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" +checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26" dependencies = [ "num_enum_derive", "rustversion", @@ -1615,20 +1637,20 @@ dependencies = [ [[package]] name = "num_enum_derive" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" +checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "once_cell" -version = "1.21.3" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] name = "ordered-multimap" @@ -1657,7 +1679,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd402d00b0fb94c5aee000029204a46884b1262e0c443f166d86d2c0747e1a1a" dependencies = [ "cortex-m", - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -1697,9 +1719,9 @@ checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" [[package]] name = "pest" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662" +checksum = "47627dd7305c6a2d6c8c6bcd24c5a4c17dbbf425f4f9c5313e724b38fc9782e9" dependencies = [ "memchr", "ucd-trie", @@ -1707,9 +1729,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77" +checksum = "4b4254325ecad416ab689e27ba51da03ba01a9632bc6e108f5fe7c3c4ad29d58" dependencies = [ "pest", "pest_generator", @@ -1717,25 +1739,24 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f" +checksum = "6c4c0e91ead7a8f7acecbca6f003fc2e8282b1dbe2dd9c9d2f16aba42995e0a7" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "pest_meta" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220" +checksum = "f9744bc48116fee06334924bb5f2bad41eed5e89bd26e29b0b799f9a3f82c210" dependencies = [ "pest", - "sha2", ] [[package]] @@ -1765,9 +1786,9 @@ checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" [[package]] name = "pin-project-lite" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pio" @@ -1814,14 +1835,14 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "pkg-config" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" [[package]] name = "portable-atomic" @@ -1839,7 +1860,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", - "defmt 1.0.1", + "defmt 1.1.1", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -1853,7 +1876,7 @@ checksum = "e0232bd009a197ceec9cc881ba46f727fcd8060a2d8d6a9dde7a69030a6fe2bb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1899,7 +1922,7 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1917,23 +1940,23 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "869675ad2d7541aea90c6d88c81f46a7f4ea9af8cd0395d38f11a95126998a0d" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] name = "quote" -version = "1.0.44" +version = "1.0.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" +checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" dependencies = [ "proc-macro2", ] [[package]] name = "rand" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" dependencies = [ "rand_core 0.6.4", ] @@ -1972,14 +1995,14 @@ version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", ] [[package]] name = "regex" -version = "1.12.3" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +checksum = "2a0e75113e14dc5acb068cd0786884f214f1312650a3d36d269f5c4f3cdee8a2" dependencies = [ "aho-corasick", "memchr", @@ -1989,9 +2012,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +checksum = "1f388202e4b80542a0921078cc23b6333bcf1409c1e3f86404cae4766a6131db" dependencies = [ "aho-corasick", "memchr", @@ -2000,15 +2023,15 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rgb" -version = "0.8.52" +version = "0.8.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c6a884d2998352bb4daf0183589aec883f16a6da1f4dde84d8e2e9a5409a1ce" +checksum = "47b34b781b31e5d73e9fbc8689c70551fd1ade9a19e3e28cfec8580a79290cc4" [[package]] name = "rmk" @@ -2018,7 +2041,7 @@ dependencies = [ "byteorder", "cortex-m", "crc32fast", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -2035,7 +2058,7 @@ dependencies = [ "embedded-storage-async", "fixed", "futures", - "heapless 0.9.2", + "heapless 0.9.3", "paste", "pio", "postcard", @@ -2053,13 +2076,15 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] @@ -2073,7 +2098,7 @@ dependencies = [ "rmk-config", "rmk-types", "strum", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2082,7 +2107,7 @@ version = "0.2.0" dependencies = [ "const-gen", "cortex-m-rt", - "defmt 1.0.1", + "defmt 1.1.1", "defmt-rtt", "embassy-executor", "embassy-rp", @@ -2099,22 +2124,22 @@ name = "rmk-types" version = "0.2.2" dependencies = [ "bitfield-struct", - "defmt 1.0.1", - "heapless 0.9.2", + "defmt 1.1.1", + "heapless 0.9.3", "postcard", "rmk-config", "serde", "strum", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] name = "ron" -version = "0.12.0" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd490c5b18261893f14449cbd28cb9c0b637aebf161cd77900bfdedaff21ec32" +checksum = "81116b9531d61eabc41aeb228e4b6b2435bcca3233b98cf3b3077d4e6e9debb3" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "once_cell", "serde", "serde_derive", @@ -2166,14 +2191,14 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.27", + "semver 1.0.28", ] [[package]] name = "rustversion" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] name = "same-file" @@ -2220,9 +2245,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.27" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" dependencies = [ "serde", "serde_core", @@ -2236,11 +2261,11 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "sequential-storage" -version = "7.1.0" +version = "7.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4580ee0fa08cd41bee9f5b50ed309877e18735370fd4eef5766cc82863ef772" +checksum = "574e5a379bf43653079b34cb4cf32958404b5f42e0ed5b5adcdff02c2de04d4d" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-storage-async", "postcard", "serde", @@ -2264,7 +2289,7 @@ checksum = "2bf03b7a5281cfd4013bc788d057b0f09fc634397d83bc8973c955bd4f32727a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2296,14 +2321,14 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "serde_json" -version = "1.0.149" +version = "1.0.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" dependencies = [ "itoa", "memchr", @@ -2314,24 +2339,13 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "1.0.4" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" dependencies = [ "serde_core", ] -[[package]] -name = "sha2" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - [[package]] name = "sha2-const-stable" version = "0.1.0" @@ -2340,9 +2354,9 @@ checksum = "5f179d4e11094a893b82fff208f74d448a7512f99f5a0acbd5c679b705f83ed9" [[package]] name = "sha3" -version = "0.10.8" +version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +checksum = "77fd7028345d415a4034cf8777cd4f8ab1851274233b45f84e3d955502d93874" dependencies = [ "digest", "keccak", @@ -2359,21 +2373,27 @@ dependencies = [ [[package]] name = "shlex" -version = "1.3.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" [[package]] name = "siphasher" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e" +checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" + +[[package]] +name = "slab" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] name = "smallvec" -version = "1.15.1" +version = "1.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" [[package]] name = "smart-leds" @@ -2463,7 +2483,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2485,9 +2505,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.117" +version = "2.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" dependencies = [ "proc-macro2", "quote", @@ -2529,7 +2549,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2552,27 +2572,14 @@ dependencies = [ [[package]] name = "toml" -version = "0.9.12+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" -dependencies = [ - "serde_core", - "serde_spanned", - "toml_datetime 0.7.5+spec-1.1.0", - "toml_parser", - "winnow", -] - -[[package]] -name = "toml" -version = "1.0.3+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7614eaf19ad818347db24addfa201729cf2a9b6fdfd9eb0ab870fcacc606c0c" +checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee" dependencies = [ "indexmap", "serde_core", "serde_spanned", - "toml_datetime 1.0.0+spec-1.1.0", + "toml_datetime", "toml_parser", "toml_writer", "winnow", @@ -2580,36 +2587,27 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.7.5+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" -dependencies = [ - "serde_core", -] - -[[package]] -name = "toml_datetime" -version = "1.0.0+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32c2555c699578a4f59f0cc68e5116c8d7cabbd45e1409b989d4be085b53f13e" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" dependencies = [ "serde_core", ] [[package]] name = "toml_parser" -version = "1.0.9+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ "winnow", ] [[package]] name = "toml_writer" -version = "1.0.6+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" +checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" [[package]] name = "tracing" @@ -2630,7 +2628,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2680,13 +2678,13 @@ dependencies = [ "aes", "bt-hci", "cmac", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-futures", "embassy-sync", "embassy-time", "embedded-io 0.7.1", "futures", - "heapless 0.9.2", + "heapless 0.9.3", "p256", "rand", "rand_chacha", @@ -2706,7 +2704,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "uuid", ] @@ -2718,9 +2716,9 @@ checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" [[package]] name = "typenum" -version = "1.19.0" +version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" [[package]] name = "ucd-trie" @@ -2736,9 +2734,9 @@ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-segmentation" -version = "1.12.0" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" [[package]] name = "unicode-width" @@ -2795,15 +2793,15 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.117", + "syn 2.0.118", "usbd-hid-descriptors", ] [[package]] name = "uuid" -version = "1.21.0" +version = "1.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b672338555252d43fd2240c714dc444b8c6fb0a5c5335e65a07bba7742735ddb" +checksum = "bf80a72845275afea99e7f2b434723d3bc7e38470fcd1c7ed39a599c73319a53" dependencies = [ "js-sys", "wasm-bindgen", @@ -2860,9 +2858,9 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasm-bindgen" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60722a937f594b7fde9adb894d7c092fc1bb6612897c46368d18e7a20208eff2" +checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" dependencies = [ "cfg-if", "once_cell", @@ -2873,9 +2871,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac8c6395094b6b91c4af293f4c79371c163f9a6f56184d2c9a85f5a95f3950" +checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2883,22 +2881,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab3fabce6159dc20728033842636887e4877688ae94382766e00b180abac9d60" +checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de0e091bdb824da87dc01d967388880d017a0a9bc4f3bdc0d86ee9f9336e3bb5" +checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" dependencies = [ "unicode-ident", ] @@ -2938,9 +2936,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.14" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" +checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" dependencies = [ "memchr", ] @@ -2956,9 +2954,9 @@ dependencies = [ [[package]] name = "yaml-rust2" -version = "0.10.4" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2462ea039c445496d8793d052e13787f2b90e750b833afee748e601c17621ed9" +checksum = "631a50d867fafb7093e709d75aaee9e0e0d5deb934021fcea25ac2fe09edc51e" dependencies = [ "arraydeque", "encoding_rs", @@ -2967,29 +2965,29 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.39" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db6d35d663eadb6c932438e763b262fe1a70987f9ae936e60158176d710cae4a" +checksum = "b7cbbc0a705a0fd05cc3676525980d2bf5a9bc4adac6d6475209a7887cf59d19" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.39" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4122cd3169e94605190e77839c9a40d40ed048d305bfdc146e7df40ab0f3e517" +checksum = "e2e817b7b52d0c7358d3246da9d69935ebb18116b2b102b4230dac079b4862f5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "zeroize" -version = "1.8.2" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" [[package]] name = "zmij" diff --git a/examples/use_config/rp2040_pointing_modes/Cargo.toml b/examples/use_config/rp2040_pointing_modes/Cargo.toml index b9819536d..724515c00 100644 --- a/examples/use_config/rp2040_pointing_modes/Cargo.toml +++ b/examples/use_config/rp2040_pointing_modes/Cargo.toml @@ -10,7 +10,7 @@ edition = "2024" license = "MIT OR Apache-2.0" [dependencies] -rmk = { path = "../../../rmk", features = ["rp2040"]} +rmk = { path = "../../../rmk", default-features = false, features = ["defmt", "storage", "vial", "watchdog", "rp2040"] } embassy-time = { version = "0.5", features = ["defmt"] } embassy-rp = { version = "0.10", features = [ "rp2040", diff --git a/examples/use_config/rp2040_pointing_modes/keyboard.toml b/examples/use_config/rp2040_pointing_modes/keyboard.toml index d24fb13ca..8b33eb72d 100644 --- a/examples/use_config/rp2040_pointing_modes/keyboard.toml +++ b/examples/use_config/rp2040_pointing_modes/keyboard.toml @@ -1,4 +1,5 @@ [keyboard] +# Replace with your keyboard identity. name = "RMK Keyboard" product_name = "RMK Keyboard" vendor_id = 0x4c4b @@ -7,75 +8,53 @@ manufacturer = "haobo" chip = "rp2040" [matrix] -# Row and col pins are mandatory +# Matrix pins are required. row_pins = ["PIN_6", "PIN_7", "PIN_8", "PIN_9"] col_pins = ["PIN_19", "PIN_20", "PIN_21"] -# RMK uses col2row as the default matrix diode direction, if you want to use a row2col matrix, add `row2col = true` +# Default diode direction is col2row; set `row2col = true` if needed. # row2col = true [layout] rows = 4 cols = 3 -layers = 2 -keymap = [ - [ - [ - "A", - "B", - "C", - ], - [ - "Kc1", - "Kc2", - "Kc3", - ], - [ - "LCtrl", - "MO(1)", - "LShift", - ], - [ - "OSL(1)", - "LT(2, Kc9)", - "LM(1, LShift | LGui)", - ], - ], - [ - [ - "_", - "TT(1)", - "TG(2)", - ], - [ - "_", - "_", - "_", - ], - [ - "_", - "_", - "_", - ], - [ - "_", - "_", - "_", - ], - ], -] +map = """ +(0,0) (0,1) (0,2) +(1,0) (1,1) (1,2) +(2,0) (2,1) (2,2) +(3,0) (3,1) (3,2) +""" + +[keymap] +layers = 3 + +[[keymap.layer]] # layer 0 +keys = """ +A B C +Kc1 Kc2 Kc3 +LCtrl MO(1) LShift +OSL(1) LT(2, Kc9) LM(1, LShift | LGui) +""" + +[[keymap.layer]] # layer 1 +keys = """ +_ TT(1) TG(2) +_ _ _ +_ _ _ +_ _ _ +""" [light] # All light pins are high-active by default, uncomment if you want it to be low-active -# capslock.pin = "PB2" +# capslock.pin = "PIN_16" # capslock.low_active = true -# scrolllock.pin = "PA3" +# scrolllock.pin = "PIN_17" # scrolllock.low_active = true # Just ignore if no light pin is used for it -# numslock.pin = "PA5" +# numslock.pin = "PIN_18" # numslock.low_active = true [storage] -# Storage feature is enabled by default +# Storage is enabled by default. # enabled = false [rmk] diff --git a/examples/use_config/rp2040_rynk/.cargo/config.toml b/examples/use_config/rp2040_rynk/.cargo/config.toml new file mode 100644 index 000000000..730263c2a --- /dev/null +++ b/examples/use_config/rp2040_rynk/.cargo/config.toml @@ -0,0 +1,13 @@ +[target.'cfg(all(target_arch = "arm", target_os = "none"))'] +runner = "probe-rs run --chip RP2040" +# runner = "elf2uf2-rs -d" + +# Use flip-link overflow check: https://github.com/knurling-rs/flip-link +linker = "flip-link" + +[build] +target = "thumbv6m-none-eabi" # Cortex-M0 and Cortex-M0+ + +[env] +DEFMT_LOG = "debug" +KEYBOARD_TOML_PATH = { value = "keyboard.toml", relative = true } diff --git a/examples/use_config/rp2040_rynk/Cargo.lock b/examples/use_config/rp2040_rynk/Cargo.lock new file mode 100644 index 000000000..0dfa70b3b --- /dev/null +++ b/examples/use_config/rp2040_rynk/Cargo.lock @@ -0,0 +1,2931 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + +[[package]] +name = "ahash" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" +dependencies = [ + "cfg-if", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +dependencies = [ + "memchr", +] + +[[package]] +name = "arraydeque" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236" + +[[package]] +name = "arrayvec" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" + +[[package]] +name = "ascii-canvas" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1e3e699d84ab1b0911a1010c5c106aa34ae89aeac103be5ce0c3859db1e891" +dependencies = [ + "term", +] + +[[package]] +name = "async-trait" +version = "0.1.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "atomic-polyfill" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cf2bce30dfe09ef0bfaef228b9d414faaf7e563035494d7fe092dba54b300f4" +dependencies = [ + "critical-section", +] + +[[package]] +name = "autocfg" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" + +[[package]] +name = "az" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be5eb007b7cacc6c660343e96f650fedf4b5a77512399eb952ca6642cf8d13f7" + +[[package]] +name = "bare-metal" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5deb64efa5bd81e31fcd1938615a6d98c82eafcbcd787162b6f63b91d6bac5b3" +dependencies = [ + "rustc_version 0.2.3", +] + +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + +[[package]] +name = "bit-set" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" + +[[package]] +name = "bitfield" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46afbd2983a5d5a7bd740ccb198caf5b82f45c40c09c0eed36052d91cb92e719" + +[[package]] +name = "bitfield" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d7e60934ceec538daadb9d8432424ed043a904d8e0243f3c6446bce549a46ac" + +[[package]] +name = "bitfield-struct" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ca6739863c590881f038d033a146c51ddae239186a4327014839fd864f44ed5" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da" +dependencies = [ + "serde_core", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "bt-hci" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f3c66fd0a41a3b3a5906847b1bf5516048ce083e24fa9341a0fa31d3b4cd73d" +dependencies = [ + "btuuid", + "defmt 1.1.1", + "embassy-sync", + "embedded-io 0.7.1", + "embedded-io-async 0.7.0", + "futures-intrusive", + "heapless 0.9.3", + "serde", +] + +[[package]] +name = "btuuid" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5f48f1e9b0aad0a4f05d17bdeae0fa20ff798e272a03a6940ca27ad9c5a6ae7" +dependencies = [ + "defmt 0.3.100", + "serde", + "uuid", +] + +[[package]] +name = "bumpalo" +version = "3.20.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" + +[[package]] +name = "bytemuck" +version = "1.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6aedf8ae72766347502cf3cb4f41cf5e9cc37d28bee90f1fdaaae15f9cf9424" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "cargo_toml" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa61aec073ec94791433ddf3df2323ff9d1711557c2a0eefb0f99cb4f8dca520" +dependencies = [ + "semver 1.0.28", + "serde", + "toml", +] + +[[package]] +name = "cc" +version = "1.2.67" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e17dd265a7d0f31ef544e1b20e03add05d3b45b491b633b10d67145d2acc1a38" +dependencies = [ + "find-msvc-tools", + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "chrono" +version = "0.4.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327" +dependencies = [ + "defmt 1.1.1", + "num-traits", + "pure-rust-locales", +] + +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", +] + +[[package]] +name = "cmac" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8543454e3c3f5126effff9cd44d562af4e31fb8ce1cc0d3dcd8f084515dbc1aa" +dependencies = [ + "cipher", + "dbl", + "digest", +] + +[[package]] +name = "cobs" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1" +dependencies = [ + "thiserror", +] + +[[package]] +name = "codespan-reporting" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" +dependencies = [ + "termcolor", + "unicode-width", +] + +[[package]] +name = "config" +version = "0.15.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b85f248a4de22d204ceabc6299d89d2c70fbd7f09fea53c06c852369652d8139" +dependencies = [ + "async-trait", + "convert_case 0.6.0", + "json5", + "pathdiff", + "ron", + "rust-ini", + "serde-untagged", + "serde_core", + "serde_json", + "toml", + "winnow", + "yaml-rust2", +] + +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "const-random" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359" +dependencies = [ + "const-random-macro", +] + +[[package]] +name = "const-random-macro" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" +dependencies = [ + "getrandom", + "once_cell", + "tiny-keccak", +] + +[[package]] +name = "convert_case" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "convert_case" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baaaa0ecca5b51987b9423ccdc971514dd8b0bb7b4060b983d3664dad3f1f89f" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "cordyceps" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "688d7fbb8092b8de775ef2536f36c8c31f2bc4006ece2e8d8ad2d17d00ce0a2a" +dependencies = [ + "loom", + "tracing", +] + +[[package]] +name = "cortex-m" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ec610d8f49840a5b376c69663b6369e71f4b34484b9b2eb29fb918d92516cb9" +dependencies = [ + "bare-metal", + "bitfield 0.13.2", + "embedded-hal 0.2.7", + "volatile-register", +] + +[[package]] +name = "cortex-m-rt" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "801d4dec46b34c299ccf6b036717ae0fce602faa4f4fe816d9013b9a7c9f5ba6" +dependencies = [ + "cortex-m-rt-macros", +] + +[[package]] +name = "cortex-m-rt-macros" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e37549a379a9e0e6e576fd208ee60394ccb8be963889eebba3ffe0980364f472" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc-any" +version = "2.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46db9f663dfb869b80fcf59e32d7a80fc6c464a4f6328f3f06a00f5e36d05f8c" +dependencies = [ + "debug-helper", +] + +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "critical-section" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" + +[[package]] +name = "crunchy" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" + +[[package]] +name = "crypto-bigint" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "subtle", + "zeroize", +] + +[[package]] +name = "crypto-common" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "darling" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" +dependencies = [ + "darling_core 0.20.11", + "darling_macro 0.20.11", +] + +[[package]] +name = "darling" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" +dependencies = [ + "darling_core 0.23.0", + "darling_macro 0.23.0", +] + +[[package]] +name = "darling_core" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn", +] + +[[package]] +name = "darling_core" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0" +dependencies = [ + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn", +] + +[[package]] +name = "darling_macro" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" +dependencies = [ + "darling_core 0.20.11", + "quote", + "syn", +] + +[[package]] +name = "darling_macro" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" +dependencies = [ + "darling_core 0.23.0", + "quote", + "syn", +] + +[[package]] +name = "dbl" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd2735a791158376708f9347fe8faba9667589d82427ef3aed6794a8981de3d9" +dependencies = [ + "generic-array", +] + +[[package]] +name = "debug-helper" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80a4af69c60438a1a82af89d362f4729fd38db7b73f305a237636fad31ceb2bf" + +[[package]] +name = "defmt" +version = "0.3.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0963443817029b2024136fc4dd07a5107eb8f977eaf18fcd1fdeb11306b64ad" +dependencies = [ + "defmt 1.1.1", +] + +[[package]] +name = "defmt" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" +dependencies = [ + "bitflags 1.3.2", + "defmt-macros", +] + +[[package]] +name = "defmt-macros" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" +dependencies = [ + "defmt-parser", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "defmt-parser" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10d60334b3b2e7c9d91ef8150abfb6fa4c1c39ebbcf4a81c2e346aad939fee3e" +dependencies = [ + "thiserror", +] + +[[package]] +name = "defmt-rtt" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05144944c117db54127a8ac17a3c9a28d55e7047bfddb950bcd20b4a94c79b10" +dependencies = [ + "critical-section", + "defmt 1.1.1", +] + +[[package]] +name = "der" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +dependencies = [ + "const-oid", + "zeroize", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", + "subtle", +] + +[[package]] +name = "dlv-list" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "442039f5147480ba31067cb00ada1adae6892028e40e45fc5de7b7df6dcc1b5f" +dependencies = [ + "const-random", +] + +[[package]] +name = "document-features" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61" +dependencies = [ + "litrs", +] + +[[package]] +name = "either" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" + +[[package]] +name = "elliptic-curve" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +dependencies = [ + "base16ct", + "crypto-bigint", + "digest", + "ff", + "generic-array", + "group", + "hkdf", + "rand_core 0.6.4", + "sec1", + "subtle", + "zeroize", +] + +[[package]] +name = "embassy-embedded-hal" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0641612053b2f34fc250bb63f6630ae75de46e02ade7f457268447081d709ce" +dependencies = [ + "defmt 1.1.1", + "embassy-futures", + "embassy-hal-internal 0.4.0", + "embassy-sync", + "embassy-time", + "embedded-hal 0.2.7", + "embedded-hal 1.0.0", + "embedded-hal-async", + "embedded-storage", + "embedded-storage-async", + "nb 1.1.0", +] + +[[package]] +name = "embassy-executor" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d0d3b15c9d7dc4fec1d8cb77112472fb008b3b28c51ad23838d83587a6d2f1e" +dependencies = [ + "cordyceps", + "cortex-m", + "critical-section", + "defmt 1.1.1", + "document-features", + "embassy-executor-macros", + "embassy-executor-timer-queue", +] + +[[package]] +name = "embassy-executor-macros" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d11a246f53de5f97a387f40ac24726817cd0b6f833e7603baac784f29d6ff276" +dependencies = [ + "darling 0.20.11", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "embassy-executor-timer-queue" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fc328bf943af66b80b98755db9106bf7e7471b0cf47dc8559cd9a6be504cc9c" + +[[package]] +name = "embassy-futures" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc2d050bdc5c21e0862a89256ed8029ae6c290a93aecefc73084b3002cdebb01" +dependencies = [ + "defmt 1.1.1", +] + +[[package]] +name = "embassy-hal-internal" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f10ce10a4dfdf6402d8e9bd63128986b96a736b1a0a6680547ed2ac55d55dba" +dependencies = [ + "num-traits", +] + +[[package]] +name = "embassy-hal-internal" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "568659fc53866d3d85c60fa33723fb751aa69e71507634fc2c19e7649432fb75" +dependencies = [ + "cortex-m", + "critical-section", + "defmt 1.1.1", + "num-traits", +] + +[[package]] +name = "embassy-net-driver" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524eb3c489760508f71360112bca70f6e53173e6fe48fc5f0efd0f5ab217751d" + +[[package]] +name = "embassy-net-driver-channel" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a07d2eb9f05a6fc876500949856ea1be40773d866d8cb99384f72d0ae4568c16" +dependencies = [ + "embassy-futures", + "embassy-net-driver", + "embassy-sync", +] + +[[package]] +name = "embassy-nrf" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82051f67e8a06a8faebd183f62cfade184c96be68126c5f064abb8223a591ff1" +dependencies = [ + "bitflags 2.13.1", + "cfg-if", + "cortex-m", + "cortex-m-rt", + "critical-section", + "defmt 1.1.1", + "document-features", + "embassy-embedded-hal", + "embassy-futures", + "embassy-hal-internal 0.5.0", + "embassy-sync", + "embassy-time", + "embassy-usb-driver", + "embassy-usb-synopsys-otg", + "embedded-hal 0.2.7", + "embedded-hal 1.0.0", + "embedded-hal-async", + "embedded-io 0.7.1", + "embedded-io-async 0.7.0", + "embedded-storage", + "embedded-storage-async", + "fixed", + "nrf-pac", + "rand_core 0.10.1", + "rand_core 0.6.4", + "rand_core 0.9.5", +] + +[[package]] +name = "embassy-rp" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d98f472894c1ecffac5596c657af5305c57282d29e8746d7fec033951931bc8" +dependencies = [ + "cfg-if", + "chrono", + "cortex-m", + "cortex-m-rt", + "critical-section", + "defmt 1.1.1", + "document-features", + "embassy-embedded-hal", + "embassy-futures", + "embassy-hal-internal 0.5.0", + "embassy-sync", + "embassy-time", + "embassy-time-driver", + "embassy-time-queue-utils", + "embassy-usb-driver", + "embedded-hal 0.2.7", + "embedded-hal 1.0.0", + "embedded-hal-async", + "embedded-hal-nb", + "embedded-io 0.7.1", + "embedded-io-async 0.7.0", + "embedded-storage", + "embedded-storage-async", + "fixed", + "nb 1.1.0", + "pio", + "rand_core 0.6.4", + "rand_core 0.9.5", + "rp-pac", + "rp2040-boot2", + "sha2-const-stable", + "smart-leds", +] + +[[package]] +name = "embassy-sync" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bbd85cf5a5ae56bdf26f618364af642d1d0a4e245cdd75cd9aabda382f65a81" +dependencies = [ + "cfg-if", + "critical-section", + "defmt 1.1.1", + "embedded-io-async 0.7.0", + "futures-core", + "futures-sink", + "heapless 0.9.3", +] + +[[package]] +name = "embassy-time" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "592b0c143ec626e821d4d90da51a2bd91d559d6c442b7c74a47d368c9e23d97a" +dependencies = [ + "cfg-if", + "critical-section", + "defmt 1.1.1", + "document-features", + "embassy-time-driver", + "embedded-hal 0.2.7", + "embedded-hal 1.0.0", + "embedded-hal-async", + "futures-core", +] + +[[package]] +name = "embassy-time-driver" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ee71af1b3a0deaa53eaf2d39252f83504c853646e472400b763060389b9fcc9" +dependencies = [ + "document-features", +] + +[[package]] +name = "embassy-time-queue-utils" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "168297bf80aaf114b3c9ad589bf38b01b3009b9af7f97cd18086c5bbf96f5693" +dependencies = [ + "embassy-executor-timer-queue", + "heapless 0.9.3", +] + +[[package]] +name = "embassy-usb" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a25746d8b152b72fbf2a217f489a083dbbe243f281f09184a1f2cfbe9bbb245f" +dependencies = [ + "bitflags 2.13.1", + "defmt 1.1.1", + "embassy-futures", + "embassy-net-driver-channel", + "embassy-sync", + "embassy-time", + "embassy-usb-driver", + "embedded-io-async 0.7.0", + "heapless 0.9.3", + "ssmarshal", + "usbd-hid", +] + +[[package]] +name = "embassy-usb-driver" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa675c5f4349b6aa0fcffc4bf9b241f18cd11b97c1f8323273fb9a5449937fbd" +dependencies = [ + "defmt 1.1.1", + "embedded-io-async 0.6.1", + "embedded-io-async 0.7.0", +] + +[[package]] +name = "embassy-usb-synopsys-otg" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6efd0c0e0b21bcf91b475b8fa47347c1df32c9a99728ae1e1b0e6625862dfd1a" +dependencies = [ + "critical-section", + "defmt 1.1.1", + "embassy-sync", + "embassy-time", + "embassy-usb-driver", + "portable-atomic", +] + +[[package]] +name = "embedded-hal" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35949884794ad573cf46071e41c9b60efb0cb311e3ca01f7af807af1debc66ff" +dependencies = [ + "nb 0.1.3", + "void", +] + +[[package]] +name = "embedded-hal" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "361a90feb7004eca4019fb28352a9465666b24f840f5c3cddf0ff13920590b89" +dependencies = [ + "defmt 0.3.100", +] + +[[package]] +name = "embedded-hal-async" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c4c685bbef7fe13c3c6dd4da26841ed3980ef33e841cddfa15ce8a8fb3f1884" +dependencies = [ + "defmt 0.3.100", + "embedded-hal 1.0.0", +] + +[[package]] +name = "embedded-hal-nb" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fba4268c14288c828995299e59b12babdbe170f6c6d73731af1b4648142e8605" +dependencies = [ + "embedded-hal 1.0.0", + "nb 1.1.0", +] + +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + +[[package]] +name = "embedded-io" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" + +[[package]] +name = "embedded-io" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9eb1aa714776b75c7e67e1da744b81a129b3ff919c8712b5e1b32252c1f07cc7" +dependencies = [ + "defmt 1.1.1", +] + +[[package]] +name = "embedded-io-async" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ff09972d4073aa8c299395be75161d582e7629cd663171d62af73c8d50dba3f" +dependencies = [ + "embedded-io 0.6.1", +] + +[[package]] +name = "embedded-io-async" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2564b9f813c544241430e147d8bc454815ef9ac998878d30cc3055449f7fd4c0" +dependencies = [ + "defmt 1.1.1", + "embedded-io 0.7.1", +] + +[[package]] +name = "embedded-storage" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a21dea9854beb860f3062d10228ce9b976da520a73474aed3171ec276bc0c032" + +[[package]] +name = "embedded-storage-async" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1763775e2323b7d5f0aa6090657f5e21cfa02ede71f5dc40eead06d64dcd15cc" +dependencies = [ + "embedded-storage", +] + +[[package]] +name = "ena" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eabffdaee24bd1bf95c5ef7cec31260444317e72ea56c4c91750e8b7ee58d5f1" +dependencies = [ + "log", +] + +[[package]] +name = "encode_unicode" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" + +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "erased-serde" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec" +dependencies = [ + "serde", + "serde_core", + "typeid", +] + +[[package]] +name = "ff" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" +dependencies = [ + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "find-msvc-tools" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" + +[[package]] +name = "fixed" +version = "1.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9af2cbf772fa6d1c11358f92ef554cb6b386201210bcf0e91fb7fba8a907fb40" +dependencies = [ + "az", + "bytemuck", + "half", + "typenum", +] + +[[package]] +name = "fixedbitset" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + +[[package]] +name = "futures" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" + +[[package]] +name = "futures-intrusive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d930c203dd0b6ff06e0201a4a2fe9149b43c684fd4420555b26d21b1a02956f" +dependencies = [ + "futures-core", + "lock_api", +] + +[[package]] +name = "futures-io" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" + +[[package]] +name = "futures-macro" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" + +[[package]] +name = "futures-task" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" + +[[package]] +name = "futures-util" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" +dependencies = [ + "futures-core", + "futures-macro", + "futures-sink", + "futures-task", + "pin-project-lite", + "slab", +] + +[[package]] +name = "generator" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3b854b0e584ead1a33f18b2fcad7cf7be18b3875c78816b753639aa501513ae" +dependencies = [ + "cc", + "cfg-if", + "libc", + "log", + "rustversion", + "windows-link", + "windows-result", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", + "zeroize", +] + +[[package]] +name = "getrandom" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "half" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" +dependencies = [ + "cfg-if", + "crunchy", + "zerocopy", +] + +[[package]] +name = "hash32" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" +dependencies = [ + "byteorder", +] + +[[package]] +name = "hash32" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606" +dependencies = [ + "byteorder", +] + +[[package]] +name = "hashbrown" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +dependencies = [ + "ahash", +] + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" + +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +dependencies = [ + "foldhash", +] + +[[package]] +name = "hashbrown" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" + +[[package]] +name = "hashlink" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "824e001ac4f3012dd16a264bec811403a67ca9deb6c102fc5049b32c4574b35f" +dependencies = [ + "hashbrown 0.16.1", +] + +[[package]] +name = "heapless" +version = "0.7.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdc6457c0eb62c71aac4bc17216026d8410337c4126773b9c5daba343f17964f" +dependencies = [ + "atomic-polyfill", + "hash32 0.2.1", + "rustc_version 0.4.1", + "serde", + "spin", + "stable_deref_trait", +] + +[[package]] +name = "heapless" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bfb9eb618601c89945a70e254898da93b13be0388091d42117462b265bb3fad" +dependencies = [ + "hash32 0.3.1", + "stable_deref_trait", +] + +[[package]] +name = "heapless" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25ba4bd83f9415b58b4ed8dc5714c76e626a105be4646c02630ad730ad3b5aa4" +dependencies = [ + "defmt 1.1.1", + "hash32 0.3.1", + "serde_core", + "stable_deref_trait", +] + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hkdf" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +dependencies = [ + "hmac", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "indexmap" +version = "2.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" +dependencies = [ + "equivalent", + "hashbrown 0.17.1", +] + +[[package]] +name = "inout" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +dependencies = [ + "generic-array", +] + +[[package]] +name = "itertools" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" + +[[package]] +name = "js-sys" +version = "0.3.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" +dependencies = [ + "cfg-if", + "futures-util", + "wasm-bindgen", +] + +[[package]] +name = "json5" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96b0db21af676c1ce64250b5f40f3ce2cf27e4e47cb91ed91eb6fe9350b430c1" +dependencies = [ + "pest", + "pest_derive", + "serde", +] + +[[package]] +name = "keccak" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb26cec98cce3a3d96cbb7bced3c4b16e3d13f27ec56dbd62cbc8f39cfb9d653" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "lalrpop" +version = "0.22.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba4ebbd48ce411c1d10fb35185f5a51a7bfa3d8b24b4e330d30c9e3a34129501" +dependencies = [ + "ascii-canvas", + "bit-set", + "ena", + "itertools", + "lalrpop-util", + "petgraph", + "pico-args", + "regex", + "regex-syntax", + "sha3", + "string_cache", + "term", + "unicode-xid", + "walkdir", +] + +[[package]] +name = "lalrpop-util" +version = "0.22.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5baa5e9ff84f1aefd264e6869907646538a52147a755d494517a8007fb48733" +dependencies = [ + "regex-automata", + "rustversion", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "libc" +version = "0.2.186" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" + +[[package]] +name = "litrs" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092" + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" + +[[package]] +name = "loom" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca" +dependencies = [ + "cfg-if", + "generator", + "scoped-tls", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "matchers" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" +dependencies = [ + "regex-automata", +] + +[[package]] +name = "memchr" +version = "2.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" + +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] + +[[package]] +name = "nb" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "801d31da0513b6ec5214e9bf433a77966320625a37860f910be265be6e18d06f" +dependencies = [ + "nb 1.1.0", +] + +[[package]] +name = "nb" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d5439c4ad607c3c23abf66de8c8bf57ba8adcd1f129e699851a6e43935d339d" + +[[package]] +name = "new_debug_unreachable" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" + +[[package]] +name = "nrf-pac" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83531b9f1e19f493018da9b8b20359e4cedd6d1357553b1ac50f3fa27a0104fa" +dependencies = [ + "cortex-m", + "cortex-m-rt", +] + +[[package]] +name = "nu-ansi-term" +version = "0.50.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" +dependencies = [ + "windows-sys", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_enum" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26" +dependencies = [ + "num_enum_derive", + "rustversion", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "once_cell" +version = "1.21.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" + +[[package]] +name = "ordered-multimap" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49203cdcae0030493bad186b28da2fa25645fa276a51b6fec8010d281e02ef79" +dependencies = [ + "dlv-list", + "hashbrown 0.14.5", +] + +[[package]] +name = "p256" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" +dependencies = [ + "elliptic-curve", + "primeorder", +] + +[[package]] +name = "panic-probe" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd402d00b0fb94c5aee000029204a46884b1262e0c443f166d86d2c0747e1a1a" +dependencies = [ + "cortex-m", + "defmt 1.1.1", +] + +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-link", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "pathdiff" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" + +[[package]] +name = "pest" +version = "2.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47627dd7305c6a2d6c8c6bcd24c5a4c17dbbf425f4f9c5313e724b38fc9782e9" +dependencies = [ + "memchr", + "ucd-trie", +] + +[[package]] +name = "pest_derive" +version = "2.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b4254325ecad416ab689e27ba51da03ba01a9632bc6e108f5fe7c3c4ad29d58" +dependencies = [ + "pest", + "pest_generator", +] + +[[package]] +name = "pest_generator" +version = "2.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c4c0e91ead7a8f7acecbca6f003fc2e8282b1dbe2dd9c9d2f16aba42995e0a7" +dependencies = [ + "pest", + "pest_meta", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "pest_meta" +version = "2.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9744bc48116fee06334924bb5f2bad41eed5e89bd26e29b0b799f9a3f82c210" +dependencies = [ + "pest", +] + +[[package]] +name = "petgraph" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" +dependencies = [ + "fixedbitset", + "indexmap", +] + +[[package]] +name = "phf_shared" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pico-args" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" + +[[package]] +name = "pin-project-lite" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" + +[[package]] +name = "pio" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0ba4153cee9585abc451271aa437d9e8defdea8b468d48ba6b8f098cbe03d7f" +dependencies = [ + "pio-core", + "pio-proc", +] + +[[package]] +name = "pio-core" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61d90fddc3d67f21bbf93683bc461b05d6a29c708caf3ffb79947d7ff7095406" +dependencies = [ + "arrayvec", + "num_enum", + "paste", +] + +[[package]] +name = "pio-parser" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "825266c1eaddf54f636d06eefa4bf3c99d774c14ec46a4a6c6e5128a0f10d205" +dependencies = [ + "lalrpop", + "lalrpop-util", + "pio-core", +] + +[[package]] +name = "pio-proc" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed4a76571f5fe51af43cc80ac870fe0c79cc0cdd686b9002a6c4c84bfdd0176b" +dependencies = [ + "codespan-reporting", + "lalrpop-util", + "pio-core", + "pio-parser", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "portable-atomic" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" +dependencies = [ + "critical-section", +] + +[[package]] +name = "postcard" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" +dependencies = [ + "cobs", + "defmt 1.1.1", + "embedded-io 0.4.0", + "embedded-io 0.6.1", + "heapless 0.7.17", + "postcard-derive", + "serde", +] + +[[package]] +name = "postcard-derive" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0232bd009a197ceec9cc881ba46f727fcd8060a2d8d6a9dde7a69030a6fe2bb" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + +[[package]] +name = "primeorder" +version = "0.13.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" +dependencies = [ + "elliptic-curve", +] + +[[package]] +name = "proc-macro-error-attr2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "proc-macro-error2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" +dependencies = [ + "proc-macro-error-attr2", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "proc-macro2" +version = "1.0.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "pure-rust-locales" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "869675ad2d7541aea90c6d88c81f46a7f4ea9af8cd0395d38f11a95126998a0d" +dependencies = [ + "defmt 1.1.1", +] + +[[package]] +name = "quote" +version = "1.0.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22f6172bdec972074665ed81ed53b71da00bfc44b65a753cfde883ec4c702a1a" +dependencies = [ + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" + +[[package]] +name = "rand_core" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" + +[[package]] +name = "rand_core" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags 2.13.1", +] + +[[package]] +name = "regex" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f020237b6c8eed93db2e2cb53c00c60a8e1bc73da7d073199a1180401450218d" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fcfdb36bda0c880c5931cdc7a2bcdc8ba4556847b9d912bca70bc94708711ad" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" + +[[package]] +name = "rgb" +version = "0.8.53" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47b34b781b31e5d73e9fbc8689c70551fd1ade9a19e3e28cfec8580a79290cc4" + +[[package]] +name = "rmk" +version = "0.8.2" +dependencies = [ + "bt-hci", + "byteorder", + "cortex-m", + "crc32fast", + "defmt 1.1.1", + "document-features", + "embassy-embedded-hal", + "embassy-futures", + "embassy-hal-internal 0.5.0", + "embassy-nrf", + "embassy-rp", + "embassy-sync", + "embassy-time", + "embassy-usb", + "embedded-hal 1.0.0", + "embedded-hal-async", + "embedded-io-async 0.7.0", + "embedded-storage", + "embedded-storage-async", + "fixed", + "futures", + "heapless 0.9.3", + "paste", + "pio", + "postcard", + "rmk-macro", + "rmk-types", + "sequential-storage", + "serde", + "static_cell", + "trouble-host", + "usbd-hid", +] + +[[package]] +name = "rmk-config" +version = "0.6.1" +dependencies = [ + "config", + "miniz_oxide", + "once_cell", + "paste", + "pest", + "pest_derive", + "postcard", + "serde", + "serde-inline-default", + "toml", +] + +[[package]] +name = "rmk-macro" +version = "0.7.1" +dependencies = [ + "cargo_toml", + "darling 0.23.0", + "proc-macro2", + "quote", + "rmk-config", + "rmk-types", + "strum", + "syn", +] + +[[package]] +name = "rmk-rp2040-rynk" +version = "0.2.0" +dependencies = [ + "cortex-m-rt", + "defmt 1.1.1", + "defmt-rtt", + "embassy-executor", + "embassy-rp", + "embassy-time", + "panic-probe", + "portable-atomic", + "rmk", +] + +[[package]] +name = "rmk-types" +version = "0.2.2" +dependencies = [ + "bitfield-struct", + "cobs", + "defmt 1.1.1", + "heapless 0.9.3", + "postcard", + "rmk-config", + "serde", + "strum", + "toml", +] + +[[package]] +name = "ron" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81116b9531d61eabc41aeb228e4b6b2435bcca3233b98cf3b3077d4e6e9debb3" +dependencies = [ + "bitflags 2.13.1", + "once_cell", + "serde", + "serde_derive", + "typeid", + "unicode-ident", +] + +[[package]] +name = "rp-pac" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8af65855c40b2c35079514c5489abffc0429347fef25d8467ff98ad84b4322d3" +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 = "rust-ini" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "796e8d2b6696392a43bea58116b667fb4c29727dc5abd27d6acf338bb4f688c7" +dependencies = [ + "cfg-if", + "ordered-multimap", +] + +[[package]] +name = "rustc_version" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +dependencies = [ + "semver 0.9.0", +] + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver 1.0.28", +] + +[[package]] +name = "rustversion" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct", + "der", + "generic-array", + "subtle", + "zeroize", +] + +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver" +version = "1.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" +dependencies = [ + "serde", + "serde_core", +] + +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" + +[[package]] +name = "sequential-storage" +version = "7.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "574e5a379bf43653079b34cb4cf32958404b5f42e0ed5b5adcdff02c2de04d4d" +dependencies = [ + "defmt 1.1.1", + "embedded-storage-async", + "postcard", + "serde", +] + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde-inline-default" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bf03b7a5281cfd4013bc788d057b0f09fc634397d83bc8973c955bd4f32727a" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde-untagged" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9faf48a4a2d2693be24c6289dbe26552776eb7737074e6722891fadbe6c5058" +dependencies = [ + "erased-serde", + "serde", + "serde_core", + "typeid", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.150" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" +dependencies = [ + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", +] + +[[package]] +name = "serde_spanned" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" +dependencies = [ + "serde_core", +] + +[[package]] +name = "sha2-const-stable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f179d4e11094a893b82fff208f74d448a7512f99f5a0acbd5c679b705f83ed9" + +[[package]] +name = "sha3" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77fd7028345d415a4034cf8777cd4f8ab1851274233b45f84e3d955502d93874" +dependencies = [ + "digest", + "keccak", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shlex" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" + +[[package]] +name = "siphasher" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" + +[[package]] +name = "slab" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" + +[[package]] +name = "smallvec" +version = "1.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" + +[[package]] +name = "smart-leds" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66df34e571fa9993fa6f99131a374d58ca3d694b75f9baac93458fe0d6057bf0" +dependencies = [ + "smart-leds-trait", +] + +[[package]] +name = "smart-leds-trait" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7f4441a131924d58da6b83a7ad765c460e64630cce504376c3a87a2558c487f" +dependencies = [ + "rgb", +] + +[[package]] +name = "spin" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3763264f6b73151db08c50ff20d7d8a0b8796e021cdea7ceedad07b80155fa0e" +dependencies = [ + "lock_api", +] + +[[package]] +name = "ssmarshal" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3e6ad23b128192ed337dfa4f1b8099ced0c2bf30d61e551b65fda5916dbb850" +dependencies = [ + "encode_unicode", + "serde", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + +[[package]] +name = "static_cell" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0530892bb4fa575ee0da4b86f86c667132a94b74bb72160f58ee5a4afec74c23" +dependencies = [ + "portable-atomic", +] + +[[package]] +name = "string_cache" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" +dependencies = [ + "new_debug_unreachable", + "parking_lot", + "phf_shared", + "precomputed-hash", +] + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "strum" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9628de9b8791db39ceda2b119bbe13134770b56c138ec1d3af810d045c04f9bd" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab85eea0270ee17587ed4156089e10b9e6880ee688791d45a905f5b1ca36f664" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "2.0.119" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "term" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8c27177b12a6399ffc08b98f76f7c9a1f4fe9fc967c784c5a071fa8d93cf7e1" +dependencies = [ + "windows-sys", +] + +[[package]] +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "thiserror" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "thread_local" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad99c4c6d32803332c548b1af0540b357b3f5fc0be8f6c6bfe8b2e6ae784070" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + +[[package]] +name = "toml" +version = "1.1.3+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53c96ecdfa941c8fc4fcaed14f99ada8ebed502eef533015095a07e3301d4c3c" +dependencies = [ + "indexmap", + "serde_core", + "serde_spanned", + "toml_datetime", + "toml_parser", + "toml_writer", + "winnow", +] + +[[package]] +name = "toml_datetime" +version = "1.1.1+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_parser" +version = "1.1.2+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" +dependencies = [ + "winnow", +] + +[[package]] +name = "toml_writer" +version = "1.1.2+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d56353a2a665ad0f41a421187180aab746c8c325620617ad883a99a1cbe66d2" + +[[package]] +name = "tracing" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" +dependencies = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex-automata", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "trouble-host" +version = "0.7.0" +source = "git+https://github.com/embassy-rs/trouble?rev=088e09c451177d5db50cf3e58c68d05512265ba0#088e09c451177d5db50cf3e58c68d05512265ba0" +dependencies = [ + "aes", + "bt-hci", + "cmac", + "defmt 1.1.1", + "embassy-futures", + "embassy-sync", + "embassy-time", + "embedded-io 0.7.1", + "futures", + "heapless 0.9.3", + "p256", + "rand", + "rand_chacha", + "rand_core 0.6.4", + "serde", + "static_cell", + "trouble-host-macros", + "zerocopy", +] + +[[package]] +name = "trouble-host-macros" +version = "0.5.0" +source = "git+https://github.com/embassy-rs/trouble?rev=088e09c451177d5db50cf3e58c68d05512265ba0#088e09c451177d5db50cf3e58c68d05512265ba0" +dependencies = [ + "convert_case 0.8.0", + "darling 0.20.11", + "proc-macro2", + "quote", + "syn", + "uuid", +] + +[[package]] +name = "typeid" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" + +[[package]] +name = "typenum" +version = "1.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" + +[[package]] +name = "ucd-trie" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" + +[[package]] +name = "unicode-ident" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" + +[[package]] +name = "unicode-segmentation" +version = "1.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" + +[[package]] +name = "unicode-width" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "usb-device" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98816b1accafbb09085168b90f27e93d790b4bfa19d883466b5e53315b5f06a6" +dependencies = [ + "defmt 0.3.100", + "heapless 0.8.0", + "portable-atomic", +] + +[[package]] +name = "usbd-hid" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68beab087e4971a2fe76f631478b0e91d39593f58efd2775026ce6dc07a7bac6" +dependencies = [ + "defmt 0.3.100", + "usb-device", + "usbd-hid-macros", +] + +[[package]] +name = "usbd-hid-descriptors" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b297f021719c4308d5d0c61b6c1e7c6b3ba383deba774b49aa5484f996bdb8f1" +dependencies = [ + "bitfield 0.14.0", +] + +[[package]] +name = "usbd-hid-macros" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "011a3219e0933f5b3ad7dc90d9a66541a967d084c98c067deed1cd608e557ed7" +dependencies = [ + "byteorder", + "hashbrown 0.13.2", + "log", + "proc-macro2", + "quote", + "serde", + "syn", + "usbd-hid-descriptors", +] + +[[package]] +name = "uuid" +version = "1.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf3923a6f5c4c6382e0b653c4117f48d631ea17f38ed86e2a828e6f7412f5239" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "valuable" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" + +[[package]] +name = "vcell" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77439c1b53d2303b20d9459b1ade71a83c716e3f9c34f3228c00e6f185d6c002" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "void" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" + +[[package]] +name = "volatile-register" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de437e2a6208b014ab52972a27e59b33fa2920d3e00fe05026167a1c509d19cc" +dependencies = [ + "vcell", +] + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasm-bindgen" +version = "0.2.126" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.126" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.126" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" +dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.126" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "winapi-util" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" +dependencies = [ + "windows-sys", +] + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-result" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", +] + +[[package]] +name = "winnow" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b97319f7b8343df12cc98938e5c3eb436064524c8d2b4e30a1d3a36eecdf81" +dependencies = [ + "memchr", +] + +[[package]] +name = "yaml-rust2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "631a50d867fafb7093e709d75aaee9e0e0d5deb934021fcea25ac2fe09edc51e" +dependencies = [ + "arraydeque", + "encoding_rs", + "hashlink", +] + +[[package]] +name = "zerocopy" +version = "0.8.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7cbbc0a705a0fd05cc3676525980d2bf5a9bc4adac6d6475209a7887cf59d19" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2e817b7b52d0c7358d3246da9d69935ebb18116b2b102b4230dac079b4862f5" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zeroize" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" + +[[package]] +name = "zmij" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b" diff --git a/examples/use_config/rp2040_rynk/Cargo.toml b/examples/use_config/rp2040_rynk/Cargo.toml new file mode 100644 index 000000000..7e472d901 --- /dev/null +++ b/examples/use_config/rp2040_rynk/Cargo.toml @@ -0,0 +1,50 @@ +[package] +name = "rmk-rp2040-rynk" +version = "0.2.0" +authors = ["Haobo Gu "] +description = "Keyboard firmware written in Rust" +homepage = "https://github.com/haobogu/rmk" +repository = "https://github.com/haobogu/rmk" +readme = "../../README.md" +edition = "2024" +license = "MIT OR Apache-2.0" + +[dependencies] +rmk = { path = "../../../rmk", default-features = false, features = ["defmt", "storage", "rynk", "watchdog", "rp2040"] } +embassy-time = { version = "0.5", features = ["defmt"] } +embassy-rp = { version = "0.10", features = [ + "rp2040", + "defmt", + "time-driver", + "critical-section-impl", +] } +embassy-executor = { version = "0.10", features = [ + "defmt", + "platform-cortex-m", + "executor-thread", +] } +cortex-m-rt = "0.7.5" +portable-atomic = { version = "1", features = ["critical-section"] } +defmt = "1" +defmt-rtt = "1" +panic-probe = { version = "1", features = ["print-defmt"] } + +[[bin]] +name = "rmk-rp2040-rynk" +test = false +bench = false + +[profile.dev] +codegen-units = 1 # better optimizations +debug = true +opt-level = 1 +overflow-checks = true +lto = false +panic = 'unwind' + +[profile.release] +codegen-units = 1 # better optimizations +debug = true # no overhead for bare-metal +opt-level = "z" # optimize for binary size +overflow-checks = false +lto = "fat" diff --git a/examples/use_config/rp2040_rynk/build.rs b/examples/use_config/rp2040_rynk/build.rs new file mode 100644 index 000000000..0b00ecfbe --- /dev/null +++ b/examples/use_config/rp2040_rynk/build.rs @@ -0,0 +1,29 @@ +//! Copies `memory.x` into the linker search path and sets the link args. +//! +//! Unlike the Vial examples, there's no `vial.json` to compress here: Rynk's +//! physical-layout blob is baked from `[layout]` in `keyboard.toml` by the +//! `#[rmk_keyboard]` macro at expansion time, not by this build script. + +use std::env; +use std::fs::File; +use std::io::Write; +use std::path::PathBuf; + +fn main() { + // Put `memory.x` in our output directory and on the linker search path. + let out = &PathBuf::from(env::var_os("OUT_DIR").unwrap()); + File::create(out.join("memory.x")) + .unwrap() + .write_all(include_bytes!("memory.x")) + .unwrap(); + println!("cargo:rustc-link-search={}", out.display()); + println!("cargo:rerun-if-changed=memory.x"); + println!("cargo:rerun-if-changed=keyboard.toml"); + + // `--nmagic` is required if memory section addresses are not aligned to 0x10000. + // See https://github.com/rust-embedded/cortex-m-quickstart/pull/95 + println!("cargo:rustc-link-arg=--nmagic"); + // Link script provided by cortex-m-rt, plus defmt's. + println!("cargo:rustc-link-arg=-Tlink.x"); + println!("cargo:rustc-link-arg=-Tdefmt.x"); +} diff --git a/examples/use_config/rp2040_rynk/keyboard.toml b/examples/use_config/rp2040_rynk/keyboard.toml new file mode 100644 index 000000000..bbb323e7a --- /dev/null +++ b/examples/use_config/rp2040_rynk/keyboard.toml @@ -0,0 +1,58 @@ +[keyboard] +# Replace with your keyboard identity. +name = "RMK Keyboard" +product_name = "RMK Keyboard" +vendor_id = 0x4c4b +product_id = 0x4643 +manufacturer = "haobo" +chip = "rp2040" + +[host] +# Use Rynk instead of Vial; their rmk features conflict. +vial_enabled = false +rynk_enabled = true + +[matrix] +# Matrix pins are required. +row_pins = ["PIN_6", "PIN_7", "PIN_8", "PIN_9"] +col_pins = ["PIN_19", "PIN_20", "PIN_21"] +# Default diode direction is col2row; set `row2col = true` if needed. +# row2col = true + +[layout] +# The physical key layout. +rows = 4 +cols = 3 +map = """ +(0,0) (0,1) (0,2) +(1,0) (1,1) (1,2) +(2,0) (2,1) (2,2) +(3,0) (3,1) (3,2) +""" + +[keymap] +layers = 3 + +[[keymap.layer]] # layer 0 +keys = """ +A B C +Kc1 Kc2 Kc3 +LCtrl MO(1) LShift +OSL(1) LT(2, Kc9) LM(1, LShift | LGui) +""" + +[[keymap.layer]] # layer 1 +keys = """ +_ TT(1) TG(2) +_ _ _ +_ _ _ +_ _ _ +""" + +[storage] +# Storage is enabled by default. +# enabled = false + +[rmk] +morse_max_num = 8 +max_patterns_per_key = 8 diff --git a/examples/use_config/rp2040_rynk/memory.x b/examples/use_config/rp2040_rynk/memory.x new file mode 100644 index 000000000..4077aab27 --- /dev/null +++ b/examples/use_config/rp2040_rynk/memory.x @@ -0,0 +1,15 @@ +MEMORY { + BOOT2 : ORIGIN = 0x10000000, LENGTH = 0x100 + FLASH : ORIGIN = 0x10000100, LENGTH = 2048K - 0x100 + RAM : ORIGIN = 0x20000000, LENGTH = 256K +} + +EXTERN(BOOT2_FIRMWARE) + +SECTIONS { + /* ### Boot loader */ + .boot2 ORIGIN(BOOT2) : + { + KEEP(*(.boot2)); + } > BOOT2 +} INSERT BEFORE .text; diff --git a/examples/use_config/rp2040_rynk/src/main.rs b/examples/use_config/rp2040_rynk/src/main.rs new file mode 100644 index 000000000..15f9fdfd9 --- /dev/null +++ b/examples/use_config/rp2040_rynk/src/main.rs @@ -0,0 +1,8 @@ +#![no_main] +#![no_std] + +use rmk::macros::rmk_keyboard; + +// Create and run your keyboard with a single macro: `rmk_keyboard`, that's it! +#[rmk_keyboard] +mod keyboard {} diff --git a/examples/use_config/rp2040_split/Cargo.lock b/examples/use_config/rp2040_split/Cargo.lock index 4e7928469..3b887e30d 100644 --- a/examples/use_config/rp2040_split/Cargo.lock +++ b/examples/use_config/rp2040_split/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -42,9 +48,9 @@ checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236" [[package]] name = "arrayvec" -version = "0.7.6" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" [[package]] name = "ascii-canvas" @@ -63,7 +69,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -77,9 +83,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "az" @@ -137,7 +143,7 @@ checksum = "3ca6739863c590881f038d033a146c51ddae239186a4327014839fd864f44ed5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -148,9 +154,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.11.0" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" +checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" dependencies = [ "serde_core", ] @@ -171,12 +177,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f3c66fd0a41a3b3a5906847b1bf5516048ce083e24fa9341a0fa31d3b4cd73d" dependencies = [ "btuuid", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-sync", "embedded-io 0.7.1", "embedded-io-async 0.7.0", "futures-intrusive", - "heapless 0.9.2", + "heapless 0.9.3", "serde", ] @@ -193,9 +199,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.20.2" +version = "3.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" [[package]] name = "bytemuck" @@ -215,16 +221,16 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa61aec073ec94791433ddf3df2323ff9d1711557c2a0eefb0f99cb4f8dca520" dependencies = [ - "semver 1.0.27", + "semver 1.0.28", "serde", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] name = "cc" -version = "1.2.56" +version = "1.2.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2" +checksum = "f5d6cac793997bd970000024b2934968efe83b382de4fdcf4fcb46b6ee4ad996" dependencies = [ "find-msvc-tools", "shlex", @@ -238,11 +244,11 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "chrono" -version = "0.4.44" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" +checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "num-traits", "pure-rust-locales", ] @@ -289,9 +295,9 @@ dependencies = [ [[package]] name = "config" -version = "0.15.19" +version = "0.15.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b30fa8254caad766fc03cb0ccae691e14bf3bd72bfff27f72802ce729551b3d6" +checksum = "b85f248a4de22d204ceabc6299d89d2c70fbd7f09fea53c06c852369652d8139" dependencies = [ "async-trait", "convert_case 0.6.0", @@ -302,7 +308,7 @@ dependencies = [ "serde-untagged", "serde_core", "serde_json", - "toml 0.9.12+spec-1.1.0", + "toml", "winnow", "yaml-rust2", ] @@ -410,7 +416,7 @@ checksum = "e37549a379a9e0e6e576fd208ee60394ccb8be963889eebba3ffe0980364f472" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -424,9 +430,9 @@ dependencies = [ [[package]] name = "crc-any" -version = "2.5.0" +version = "2.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62ec9ff5f7965e4d7280bd5482acd20aadb50d632cf6c1d74493856b011fa73" +checksum = "46db9f663dfb869b80fcf59e32d7a80fc6c464a4f6328f3f06a00f5e36d05f8c" dependencies = [ "debug-helper", ] @@ -505,7 +511,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -518,7 +524,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -529,7 +535,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -540,7 +546,7 @@ checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ "darling_core 0.23.0", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -554,9 +560,9 @@ dependencies = [ [[package]] name = "debug-helper" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f578e8e2c440e7297e008bb5486a3a8a194775224bbc23729b0dbdfaeebf162e" +checksum = "80a4af69c60438a1a82af89d362f4729fd38db7b73f305a237636fad31ceb2bf" [[package]] name = "defmt" @@ -564,14 +570,14 @@ version = "0.3.100" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0963443817029b2024136fc4dd07a5107eb8f977eaf18fcd1fdeb11306b64ad" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] name = "defmt" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "548d977b6da32fa1d1fda2876453da1e7df63ad0304c8b3dae4dbe7b96f39b78" +checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" dependencies = [ "bitflags 1.3.2", "defmt-macros", @@ -579,15 +585,14 @@ dependencies = [ [[package]] name = "defmt-macros" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d4fc12a85bcf441cfe44344c4b72d58493178ce635338a3f3b78943aceb258e" +checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" dependencies = [ "defmt-parser", - "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -601,12 +606,12 @@ dependencies = [ [[package]] name = "defmt-rtt" -version = "1.1.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d5a25c99d89c40f5676bec8cefe0614f17f0f40e916f98e345dae941807f9e" +checksum = "05144944c117db54127a8ac17a3c9a28d55e7047bfddb950bcd20b4a94c79b10" dependencies = [ "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -650,9 +655,9 @@ dependencies = [ [[package]] name = "either" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" [[package]] name = "elliptic-curve" @@ -679,7 +684,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b0641612053b2f34fc250bb63f6630ae75de46e02ade7f457268447081d709ce" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embassy-futures", "embassy-hal-internal 0.4.0", "embassy-sync", @@ -701,7 +706,7 @@ dependencies = [ "cordyceps", "cortex-m", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-executor-macros", "embassy-executor-timer-queue", @@ -716,7 +721,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -731,7 +736,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc2d050bdc5c21e0862a89256ed8029ae6c290a93aecefc73084b3002cdebb01" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -751,7 +756,7 @@ checksum = "568659fc53866d3d85c60fa33723fb751aa69e71507634fc2c19e7649432fb75" dependencies = [ "cortex-m", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "num-traits", ] @@ -778,12 +783,12 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82051f67e8a06a8faebd183f62cfade184c96be68126c5f064abb8223a591ff1" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "cfg-if", "cortex-m", "cortex-m-rt", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -817,7 +822,7 @@ dependencies = [ "cortex-m", "cortex-m-rt", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -854,11 +859,11 @@ checksum = "7bbd85cf5a5ae56bdf26f618364af642d1d0a4e245cdd75cd9aabda382f65a81" dependencies = [ "cfg-if", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io-async 0.7.0", "futures-core", "futures-sink", - "heapless 0.9.2", + "heapless 0.9.3", ] [[package]] @@ -869,7 +874,7 @@ checksum = "592b0c143ec626e821d4d90da51a2bd91d559d6c442b7c74a47d368c9e23d97a" dependencies = [ "cfg-if", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-time-driver", "embedded-hal 0.2.7", @@ -889,12 +894,12 @@ dependencies = [ [[package]] name = "embassy-time-queue-utils" -version = "0.3.0" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e2ee86063bd028a420a5fb5898c18c87a8898026da1d4c852af2c443d0a454" +checksum = "168297bf80aaf114b3c9ad589bf38b01b3009b9af7f97cd18086c5bbf96f5693" dependencies = [ "embassy-executor-timer-queue", - "heapless 0.8.0", + "heapless 0.9.3", ] [[package]] @@ -903,15 +908,15 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a25746d8b152b72fbf2a217f489a083dbbe243f281f09184a1f2cfbe9bbb245f" dependencies = [ - "bitflags 2.11.0", - "defmt 1.0.1", + "bitflags 2.13.0", + "defmt 1.1.1", "embassy-futures", "embassy-net-driver-channel", "embassy-sync", "embassy-time", "embassy-usb-driver", "embedded-io-async 0.7.0", - "heapless 0.9.2", + "heapless 0.9.3", "ssmarshal", "usbd-hid", ] @@ -922,7 +927,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa675c5f4349b6aa0fcffc4bf9b241f18cd11b97c1f8323273fb9a5449937fbd" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io-async 0.6.1", "embedded-io-async 0.7.0", ] @@ -934,7 +939,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6efd0c0e0b21bcf91b475b8fa47347c1df32c9a99728ae1e1b0e6625862dfd1a" dependencies = [ "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-sync", "embassy-time", "embassy-usb-driver", @@ -980,6 +985,12 @@ dependencies = [ "nb 1.1.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -992,7 +1003,7 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9eb1aa714776b75c7e67e1da744b81a129b3ff919c8712b5e1b32252c1f07cc7" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -1010,7 +1021,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2564b9f813c544241430e147d8bc454815ef9ac998878d30cc3055449f7fd4c0" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io 0.7.1", ] @@ -1061,9 +1072,9 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "erased-serde" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e8918065695684b2b0702da20382d5ae6065cf3327bc2d6436bd49a71ce9f3" +checksum = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec" dependencies = [ "serde", "serde_core", @@ -1088,9 +1099,9 @@ checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" [[package]] name = "fixed" -version = "1.30.0" +version = "1.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c566da967934c6c7ee0458a9773de9b2a685bd2ce26a3b28ddfc740e640182f5" +checksum = "9af2cbf772fa6d1c11358f92ef554cb6b386201210bcf0e91fb7fba8a907fb40" dependencies = [ "az", "bytemuck", @@ -1112,9 +1123,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foldhash" -version = "0.1.5" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" [[package]] name = "futures" @@ -1170,7 +1181,7 @@ checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1196,13 +1207,14 @@ dependencies = [ "futures-sink", "futures-task", "pin-project-lite", + "slab", ] [[package]] name = "generator" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52f04ae4152da20c76fe800fa48659201d5cf627c5149ca0b707b69d7eef6cf9" +checksum = "b3b854b0e584ead1a33f18b2fcad7cf7be18b3875c78816b753639aa501513ae" dependencies = [ "cc", "cfg-if", @@ -1292,26 +1304,26 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hashbrown" -version = "0.15.5" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" dependencies = [ "foldhash", ] [[package]] name = "hashbrown" -version = "0.16.1" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" [[package]] name = "hashlink" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" +checksum = "824e001ac4f3012dd16a264bec811403a67ca9deb6c102fc5049b32c4574b35f" dependencies = [ - "hashbrown 0.15.5", + "hashbrown 0.16.1", ] [[package]] @@ -1340,11 +1352,11 @@ dependencies = [ [[package]] name = "heapless" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af2455f757db2b292a9b1768c4b70186d443bcb3b316252d6b540aec1cd89ed" +checksum = "25ba4bd83f9415b58b4ed8dc5714c76e626a105be4646c02630ad730ad3b5aa4" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "hash32 0.3.1", "serde_core", "stable_deref_trait", @@ -1382,12 +1394,12 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "indexmap" -version = "2.13.0" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.16.1", + "hashbrown 0.17.1", ] [[package]] @@ -1410,17 +1422,18 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "js-sys" -version = "0.3.90" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14dc6f6450b3f6d4ed5b16327f38fed626d375a886159ca555bd7822c0c3a5a6" +checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ - "once_cell", + "cfg-if", + "futures-util", "wasm-bindgen", ] @@ -1490,9 +1503,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.182" +version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "litrs" @@ -1511,9 +1524,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.29" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" [[package]] name = "loom" @@ -1550,9 +1563,18 @@ dependencies = [ [[package]] name = "memchr" -version = "2.8.0" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" + +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] [[package]] name = "nb" @@ -1605,9 +1627,9 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" +checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26" dependencies = [ "num_enum_derive", "rustversion", @@ -1615,20 +1637,20 @@ dependencies = [ [[package]] name = "num_enum_derive" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" +checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "once_cell" -version = "1.21.3" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] name = "ordered-multimap" @@ -1657,7 +1679,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd402d00b0fb94c5aee000029204a46884b1262e0c443f166d86d2c0747e1a1a" dependencies = [ "cortex-m", - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -1697,9 +1719,9 @@ checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" [[package]] name = "pest" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662" +checksum = "47627dd7305c6a2d6c8c6bcd24c5a4c17dbbf425f4f9c5313e724b38fc9782e9" dependencies = [ "memchr", "ucd-trie", @@ -1707,9 +1729,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77" +checksum = "4b4254325ecad416ab689e27ba51da03ba01a9632bc6e108f5fe7c3c4ad29d58" dependencies = [ "pest", "pest_generator", @@ -1717,25 +1739,24 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f" +checksum = "6c4c0e91ead7a8f7acecbca6f003fc2e8282b1dbe2dd9c9d2f16aba42995e0a7" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "pest_meta" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220" +checksum = "f9744bc48116fee06334924bb5f2bad41eed5e89bd26e29b0b799f9a3f82c210" dependencies = [ "pest", - "sha2", ] [[package]] @@ -1765,9 +1786,9 @@ checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" [[package]] name = "pin-project-lite" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pio" @@ -1814,14 +1835,14 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "pkg-config" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" [[package]] name = "portable-atomic" @@ -1839,7 +1860,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", - "defmt 1.0.1", + "defmt 1.1.1", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -1853,7 +1876,7 @@ checksum = "e0232bd009a197ceec9cc881ba46f727fcd8060a2d8d6a9dde7a69030a6fe2bb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1899,7 +1922,7 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1917,23 +1940,23 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "869675ad2d7541aea90c6d88c81f46a7f4ea9af8cd0395d38f11a95126998a0d" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] name = "quote" -version = "1.0.44" +version = "1.0.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" +checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" dependencies = [ "proc-macro2", ] [[package]] name = "rand" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" dependencies = [ "rand_core 0.6.4", ] @@ -1972,14 +1995,14 @@ version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", ] [[package]] name = "regex" -version = "1.12.3" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +checksum = "2a0e75113e14dc5acb068cd0786884f214f1312650a3d36d269f5c4f3cdee8a2" dependencies = [ "aho-corasick", "memchr", @@ -1989,9 +2012,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +checksum = "1f388202e4b80542a0921078cc23b6333bcf1409c1e3f86404cae4766a6131db" dependencies = [ "aho-corasick", "memchr", @@ -2000,15 +2023,15 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rgb" -version = "0.8.52" +version = "0.8.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c6a884d2998352bb4daf0183589aec883f16a6da1f4dde84d8e2e9a5409a1ce" +checksum = "47b34b781b31e5d73e9fbc8689c70551fd1ade9a19e3e28cfec8580a79290cc4" [[package]] name = "rmk" @@ -2018,7 +2041,7 @@ dependencies = [ "byteorder", "cortex-m", "crc32fast", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -2035,7 +2058,7 @@ dependencies = [ "embedded-storage-async", "fixed", "futures", - "heapless 0.9.2", + "heapless 0.9.3", "paste", "pio", "postcard", @@ -2053,13 +2076,15 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] @@ -2073,7 +2098,7 @@ dependencies = [ "rmk-config", "rmk-types", "strum", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2082,7 +2107,7 @@ version = "0.2.0" dependencies = [ "const-gen", "cortex-m-rt", - "defmt 1.0.1", + "defmt 1.1.1", "defmt-rtt", "embassy-executor", "embassy-futures", @@ -2101,22 +2126,22 @@ name = "rmk-types" version = "0.2.2" dependencies = [ "bitfield-struct", - "defmt 1.0.1", - "heapless 0.9.2", + "defmt 1.1.1", + "heapless 0.9.3", "postcard", "rmk-config", "serde", "strum", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] name = "ron" -version = "0.12.0" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd490c5b18261893f14449cbd28cb9c0b637aebf161cd77900bfdedaff21ec32" +checksum = "81116b9531d61eabc41aeb228e4b6b2435bcca3233b98cf3b3077d4e6e9debb3" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "once_cell", "serde", "serde_derive", @@ -2168,14 +2193,14 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.27", + "semver 1.0.28", ] [[package]] name = "rustversion" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] name = "same-file" @@ -2222,9 +2247,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.27" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" dependencies = [ "serde", "serde_core", @@ -2238,11 +2263,11 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "sequential-storage" -version = "7.1.0" +version = "7.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4580ee0fa08cd41bee9f5b50ed309877e18735370fd4eef5766cc82863ef772" +checksum = "574e5a379bf43653079b34cb4cf32958404b5f42e0ed5b5adcdff02c2de04d4d" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-storage-async", "postcard", "serde", @@ -2266,7 +2291,7 @@ checksum = "2bf03b7a5281cfd4013bc788d057b0f09fc634397d83bc8973c955bd4f32727a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2298,14 +2323,14 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "serde_json" -version = "1.0.149" +version = "1.0.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" dependencies = [ "itoa", "memchr", @@ -2316,24 +2341,13 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "1.0.4" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" dependencies = [ "serde_core", ] -[[package]] -name = "sha2" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - [[package]] name = "sha2-const-stable" version = "0.1.0" @@ -2342,9 +2356,9 @@ checksum = "5f179d4e11094a893b82fff208f74d448a7512f99f5a0acbd5c679b705f83ed9" [[package]] name = "sha3" -version = "0.10.8" +version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +checksum = "77fd7028345d415a4034cf8777cd4f8ab1851274233b45f84e3d955502d93874" dependencies = [ "digest", "keccak", @@ -2361,21 +2375,27 @@ dependencies = [ [[package]] name = "shlex" -version = "1.3.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" [[package]] name = "siphasher" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e" +checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" + +[[package]] +name = "slab" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] name = "smallvec" -version = "1.15.1" +version = "1.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" [[package]] name = "smart-leds" @@ -2465,7 +2485,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2487,9 +2507,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.117" +version = "2.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" dependencies = [ "proc-macro2", "quote", @@ -2531,7 +2551,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2554,27 +2574,14 @@ dependencies = [ [[package]] name = "toml" -version = "0.9.12+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" -dependencies = [ - "serde_core", - "serde_spanned", - "toml_datetime 0.7.5+spec-1.1.0", - "toml_parser", - "winnow", -] - -[[package]] -name = "toml" -version = "1.0.3+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7614eaf19ad818347db24addfa201729cf2a9b6fdfd9eb0ab870fcacc606c0c" +checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee" dependencies = [ "indexmap", "serde_core", "serde_spanned", - "toml_datetime 1.0.0+spec-1.1.0", + "toml_datetime", "toml_parser", "toml_writer", "winnow", @@ -2582,36 +2589,27 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.7.5+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" -dependencies = [ - "serde_core", -] - -[[package]] -name = "toml_datetime" -version = "1.0.0+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32c2555c699578a4f59f0cc68e5116c8d7cabbd45e1409b989d4be085b53f13e" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" dependencies = [ "serde_core", ] [[package]] name = "toml_parser" -version = "1.0.9+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ "winnow", ] [[package]] name = "toml_writer" -version = "1.0.6+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" +checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" [[package]] name = "tracing" @@ -2632,7 +2630,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2682,13 +2680,13 @@ dependencies = [ "aes", "bt-hci", "cmac", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-futures", "embassy-sync", "embassy-time", "embedded-io 0.7.1", "futures", - "heapless 0.9.2", + "heapless 0.9.3", "p256", "rand", "rand_chacha", @@ -2708,7 +2706,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "uuid", ] @@ -2720,9 +2718,9 @@ checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" [[package]] name = "typenum" -version = "1.19.0" +version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" [[package]] name = "ucd-trie" @@ -2738,9 +2736,9 @@ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-segmentation" -version = "1.12.0" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" [[package]] name = "unicode-width" @@ -2797,15 +2795,15 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.117", + "syn 2.0.118", "usbd-hid-descriptors", ] [[package]] name = "uuid" -version = "1.21.0" +version = "1.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b672338555252d43fd2240c714dc444b8c6fb0a5c5335e65a07bba7742735ddb" +checksum = "bf80a72845275afea99e7f2b434723d3bc7e38470fcd1c7ed39a599c73319a53" dependencies = [ "js-sys", "wasm-bindgen", @@ -2862,9 +2860,9 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasm-bindgen" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60722a937f594b7fde9adb894d7c092fc1bb6612897c46368d18e7a20208eff2" +checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" dependencies = [ "cfg-if", "once_cell", @@ -2875,9 +2873,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac8c6395094b6b91c4af293f4c79371c163f9a6f56184d2c9a85f5a95f3950" +checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2885,22 +2883,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab3fabce6159dc20728033842636887e4877688ae94382766e00b180abac9d60" +checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de0e091bdb824da87dc01d967388880d017a0a9bc4f3bdc0d86ee9f9336e3bb5" +checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" dependencies = [ "unicode-ident", ] @@ -2940,9 +2938,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.14" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" +checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" dependencies = [ "memchr", ] @@ -2958,9 +2956,9 @@ dependencies = [ [[package]] name = "yaml-rust2" -version = "0.10.4" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2462ea039c445496d8793d052e13787f2b90e750b833afee748e601c17621ed9" +checksum = "631a50d867fafb7093e709d75aaee9e0e0d5deb934021fcea25ac2fe09edc51e" dependencies = [ "arraydeque", "encoding_rs", @@ -2969,29 +2967,29 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.39" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db6d35d663eadb6c932438e763b262fe1a70987f9ae936e60158176d710cae4a" +checksum = "b7cbbc0a705a0fd05cc3676525980d2bf5a9bc4adac6d6475209a7887cf59d19" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.39" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4122cd3169e94605190e77839c9a40d40ed048d305bfdc146e7df40ab0f3e517" +checksum = "e2e817b7b52d0c7358d3246da9d69935ebb18116b2b102b4230dac079b4862f5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "zeroize" -version = "1.8.2" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" [[package]] name = "zmij" diff --git a/examples/use_config/rp2040_split/Cargo.toml b/examples/use_config/rp2040_split/Cargo.toml index 66b19be16..9c716eac9 100644 --- a/examples/use_config/rp2040_split/Cargo.toml +++ b/examples/use_config/rp2040_split/Cargo.toml @@ -10,7 +10,7 @@ edition = "2024" license = "MIT OR Apache-2.0" [dependencies] -rmk = { path = "../../../rmk", features = ["split", "rp2040"] } +rmk = { path = "../../../rmk", default-features = false, features = ["defmt", "storage", "vial", "watchdog", "split", "rp2040"] } embassy-time = { version = "0.5", features = ["defmt"] } embassy-rp = { version = "0.10", features = [ "rp2040", diff --git a/examples/use_config/rp2040_split/keyboard.toml b/examples/use_config/rp2040_split/keyboard.toml index e855a1179..3636ee942 100644 --- a/examples/use_config/rp2040_split/keyboard.toml +++ b/examples/use_config/rp2040_split/keyboard.toml @@ -1,4 +1,5 @@ [keyboard] +# Replace with your keyboard identity. name = "RMK Keyboard" product_name = "RMK Keyboard" vendor_id = 0x4c4b @@ -9,21 +10,31 @@ chip = "rp2040" [layout] rows = 4 cols = 3 -layers = 2 -keymap = [ - [ - ["A", "B", "C"], - ["Kc1", "Kc2", "Kc3"], - ["LCtrl", "MO(1)", "LShift"], - ["OSL(1)", "LT(2, Kc9)", "LM(1, LShift | LGui)"] - ], - [ - ["_", "TT(1)", "TG(2)"], - ["_", "_", "_"], - ["_", "_", "_"], - ["_", "_", "_"] - ], -] +map = """ +(0,0) (0,1) (0,2) +(1,0) (1,1) (1,2) +(2,0) (2,1) (2,2) +(3,0) (3,1) (3,2) +""" + +[keymap] +layers = 3 + +[[keymap.layer]] +keys = """ +A B C +Kc1 Kc2 Kc3 +LCtrl MO(1) LShift +OSL(1) LT(2, Kc9) LM(1, LShift | LGui) +""" + +[[keymap.layer]] +keys = """ +_ TT(1) TG(2) +_ _ _ +_ _ _ +_ _ _ +""" [storage] @@ -41,7 +52,7 @@ serial = [ ] [split.central.matrix] matrix_type = "normal" -# RMK uses col2row as the default matrix diode direction, if you want to use a row2col matrix, add `row2col = true` +# Default diode direction is col2row; set `row2col = true` if needed. # row2col = true row_pins = ["PIN_9", "PIN_11"] col_pins = ["PIN_10", "PIN_12"] diff --git a/examples/use_config/rp2040_split_pio/Cargo.lock b/examples/use_config/rp2040_split_pio/Cargo.lock index 4e7928469..3b887e30d 100644 --- a/examples/use_config/rp2040_split_pio/Cargo.lock +++ b/examples/use_config/rp2040_split_pio/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -42,9 +48,9 @@ checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236" [[package]] name = "arrayvec" -version = "0.7.6" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" [[package]] name = "ascii-canvas" @@ -63,7 +69,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -77,9 +83,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "az" @@ -137,7 +143,7 @@ checksum = "3ca6739863c590881f038d033a146c51ddae239186a4327014839fd864f44ed5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -148,9 +154,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.11.0" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" +checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" dependencies = [ "serde_core", ] @@ -171,12 +177,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f3c66fd0a41a3b3a5906847b1bf5516048ce083e24fa9341a0fa31d3b4cd73d" dependencies = [ "btuuid", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-sync", "embedded-io 0.7.1", "embedded-io-async 0.7.0", "futures-intrusive", - "heapless 0.9.2", + "heapless 0.9.3", "serde", ] @@ -193,9 +199,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.20.2" +version = "3.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" [[package]] name = "bytemuck" @@ -215,16 +221,16 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa61aec073ec94791433ddf3df2323ff9d1711557c2a0eefb0f99cb4f8dca520" dependencies = [ - "semver 1.0.27", + "semver 1.0.28", "serde", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] name = "cc" -version = "1.2.56" +version = "1.2.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2" +checksum = "f5d6cac793997bd970000024b2934968efe83b382de4fdcf4fcb46b6ee4ad996" dependencies = [ "find-msvc-tools", "shlex", @@ -238,11 +244,11 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "chrono" -version = "0.4.44" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" +checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "num-traits", "pure-rust-locales", ] @@ -289,9 +295,9 @@ dependencies = [ [[package]] name = "config" -version = "0.15.19" +version = "0.15.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b30fa8254caad766fc03cb0ccae691e14bf3bd72bfff27f72802ce729551b3d6" +checksum = "b85f248a4de22d204ceabc6299d89d2c70fbd7f09fea53c06c852369652d8139" dependencies = [ "async-trait", "convert_case 0.6.0", @@ -302,7 +308,7 @@ dependencies = [ "serde-untagged", "serde_core", "serde_json", - "toml 0.9.12+spec-1.1.0", + "toml", "winnow", "yaml-rust2", ] @@ -410,7 +416,7 @@ checksum = "e37549a379a9e0e6e576fd208ee60394ccb8be963889eebba3ffe0980364f472" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -424,9 +430,9 @@ dependencies = [ [[package]] name = "crc-any" -version = "2.5.0" +version = "2.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62ec9ff5f7965e4d7280bd5482acd20aadb50d632cf6c1d74493856b011fa73" +checksum = "46db9f663dfb869b80fcf59e32d7a80fc6c464a4f6328f3f06a00f5e36d05f8c" dependencies = [ "debug-helper", ] @@ -505,7 +511,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -518,7 +524,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -529,7 +535,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -540,7 +546,7 @@ checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ "darling_core 0.23.0", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -554,9 +560,9 @@ dependencies = [ [[package]] name = "debug-helper" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f578e8e2c440e7297e008bb5486a3a8a194775224bbc23729b0dbdfaeebf162e" +checksum = "80a4af69c60438a1a82af89d362f4729fd38db7b73f305a237636fad31ceb2bf" [[package]] name = "defmt" @@ -564,14 +570,14 @@ version = "0.3.100" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0963443817029b2024136fc4dd07a5107eb8f977eaf18fcd1fdeb11306b64ad" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] name = "defmt" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "548d977b6da32fa1d1fda2876453da1e7df63ad0304c8b3dae4dbe7b96f39b78" +checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" dependencies = [ "bitflags 1.3.2", "defmt-macros", @@ -579,15 +585,14 @@ dependencies = [ [[package]] name = "defmt-macros" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d4fc12a85bcf441cfe44344c4b72d58493178ce635338a3f3b78943aceb258e" +checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" dependencies = [ "defmt-parser", - "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -601,12 +606,12 @@ dependencies = [ [[package]] name = "defmt-rtt" -version = "1.1.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d5a25c99d89c40f5676bec8cefe0614f17f0f40e916f98e345dae941807f9e" +checksum = "05144944c117db54127a8ac17a3c9a28d55e7047bfddb950bcd20b4a94c79b10" dependencies = [ "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -650,9 +655,9 @@ dependencies = [ [[package]] name = "either" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" [[package]] name = "elliptic-curve" @@ -679,7 +684,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b0641612053b2f34fc250bb63f6630ae75de46e02ade7f457268447081d709ce" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embassy-futures", "embassy-hal-internal 0.4.0", "embassy-sync", @@ -701,7 +706,7 @@ dependencies = [ "cordyceps", "cortex-m", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-executor-macros", "embassy-executor-timer-queue", @@ -716,7 +721,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -731,7 +736,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc2d050bdc5c21e0862a89256ed8029ae6c290a93aecefc73084b3002cdebb01" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -751,7 +756,7 @@ checksum = "568659fc53866d3d85c60fa33723fb751aa69e71507634fc2c19e7649432fb75" dependencies = [ "cortex-m", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "num-traits", ] @@ -778,12 +783,12 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82051f67e8a06a8faebd183f62cfade184c96be68126c5f064abb8223a591ff1" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "cfg-if", "cortex-m", "cortex-m-rt", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -817,7 +822,7 @@ dependencies = [ "cortex-m", "cortex-m-rt", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -854,11 +859,11 @@ checksum = "7bbd85cf5a5ae56bdf26f618364af642d1d0a4e245cdd75cd9aabda382f65a81" dependencies = [ "cfg-if", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io-async 0.7.0", "futures-core", "futures-sink", - "heapless 0.9.2", + "heapless 0.9.3", ] [[package]] @@ -869,7 +874,7 @@ checksum = "592b0c143ec626e821d4d90da51a2bd91d559d6c442b7c74a47d368c9e23d97a" dependencies = [ "cfg-if", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-time-driver", "embedded-hal 0.2.7", @@ -889,12 +894,12 @@ dependencies = [ [[package]] name = "embassy-time-queue-utils" -version = "0.3.0" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e2ee86063bd028a420a5fb5898c18c87a8898026da1d4c852af2c443d0a454" +checksum = "168297bf80aaf114b3c9ad589bf38b01b3009b9af7f97cd18086c5bbf96f5693" dependencies = [ "embassy-executor-timer-queue", - "heapless 0.8.0", + "heapless 0.9.3", ] [[package]] @@ -903,15 +908,15 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a25746d8b152b72fbf2a217f489a083dbbe243f281f09184a1f2cfbe9bbb245f" dependencies = [ - "bitflags 2.11.0", - "defmt 1.0.1", + "bitflags 2.13.0", + "defmt 1.1.1", "embassy-futures", "embassy-net-driver-channel", "embassy-sync", "embassy-time", "embassy-usb-driver", "embedded-io-async 0.7.0", - "heapless 0.9.2", + "heapless 0.9.3", "ssmarshal", "usbd-hid", ] @@ -922,7 +927,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa675c5f4349b6aa0fcffc4bf9b241f18cd11b97c1f8323273fb9a5449937fbd" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io-async 0.6.1", "embedded-io-async 0.7.0", ] @@ -934,7 +939,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6efd0c0e0b21bcf91b475b8fa47347c1df32c9a99728ae1e1b0e6625862dfd1a" dependencies = [ "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-sync", "embassy-time", "embassy-usb-driver", @@ -980,6 +985,12 @@ dependencies = [ "nb 1.1.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -992,7 +1003,7 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9eb1aa714776b75c7e67e1da744b81a129b3ff919c8712b5e1b32252c1f07cc7" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -1010,7 +1021,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2564b9f813c544241430e147d8bc454815ef9ac998878d30cc3055449f7fd4c0" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io 0.7.1", ] @@ -1061,9 +1072,9 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "erased-serde" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e8918065695684b2b0702da20382d5ae6065cf3327bc2d6436bd49a71ce9f3" +checksum = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec" dependencies = [ "serde", "serde_core", @@ -1088,9 +1099,9 @@ checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" [[package]] name = "fixed" -version = "1.30.0" +version = "1.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c566da967934c6c7ee0458a9773de9b2a685bd2ce26a3b28ddfc740e640182f5" +checksum = "9af2cbf772fa6d1c11358f92ef554cb6b386201210bcf0e91fb7fba8a907fb40" dependencies = [ "az", "bytemuck", @@ -1112,9 +1123,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foldhash" -version = "0.1.5" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" [[package]] name = "futures" @@ -1170,7 +1181,7 @@ checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1196,13 +1207,14 @@ dependencies = [ "futures-sink", "futures-task", "pin-project-lite", + "slab", ] [[package]] name = "generator" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52f04ae4152da20c76fe800fa48659201d5cf627c5149ca0b707b69d7eef6cf9" +checksum = "b3b854b0e584ead1a33f18b2fcad7cf7be18b3875c78816b753639aa501513ae" dependencies = [ "cc", "cfg-if", @@ -1292,26 +1304,26 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hashbrown" -version = "0.15.5" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" dependencies = [ "foldhash", ] [[package]] name = "hashbrown" -version = "0.16.1" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" [[package]] name = "hashlink" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" +checksum = "824e001ac4f3012dd16a264bec811403a67ca9deb6c102fc5049b32c4574b35f" dependencies = [ - "hashbrown 0.15.5", + "hashbrown 0.16.1", ] [[package]] @@ -1340,11 +1352,11 @@ dependencies = [ [[package]] name = "heapless" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af2455f757db2b292a9b1768c4b70186d443bcb3b316252d6b540aec1cd89ed" +checksum = "25ba4bd83f9415b58b4ed8dc5714c76e626a105be4646c02630ad730ad3b5aa4" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "hash32 0.3.1", "serde_core", "stable_deref_trait", @@ -1382,12 +1394,12 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "indexmap" -version = "2.13.0" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.16.1", + "hashbrown 0.17.1", ] [[package]] @@ -1410,17 +1422,18 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "js-sys" -version = "0.3.90" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14dc6f6450b3f6d4ed5b16327f38fed626d375a886159ca555bd7822c0c3a5a6" +checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ - "once_cell", + "cfg-if", + "futures-util", "wasm-bindgen", ] @@ -1490,9 +1503,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.182" +version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "litrs" @@ -1511,9 +1524,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.29" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" [[package]] name = "loom" @@ -1550,9 +1563,18 @@ dependencies = [ [[package]] name = "memchr" -version = "2.8.0" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" + +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] [[package]] name = "nb" @@ -1605,9 +1627,9 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" +checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26" dependencies = [ "num_enum_derive", "rustversion", @@ -1615,20 +1637,20 @@ dependencies = [ [[package]] name = "num_enum_derive" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" +checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "once_cell" -version = "1.21.3" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] name = "ordered-multimap" @@ -1657,7 +1679,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd402d00b0fb94c5aee000029204a46884b1262e0c443f166d86d2c0747e1a1a" dependencies = [ "cortex-m", - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -1697,9 +1719,9 @@ checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" [[package]] name = "pest" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662" +checksum = "47627dd7305c6a2d6c8c6bcd24c5a4c17dbbf425f4f9c5313e724b38fc9782e9" dependencies = [ "memchr", "ucd-trie", @@ -1707,9 +1729,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77" +checksum = "4b4254325ecad416ab689e27ba51da03ba01a9632bc6e108f5fe7c3c4ad29d58" dependencies = [ "pest", "pest_generator", @@ -1717,25 +1739,24 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f" +checksum = "6c4c0e91ead7a8f7acecbca6f003fc2e8282b1dbe2dd9c9d2f16aba42995e0a7" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "pest_meta" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220" +checksum = "f9744bc48116fee06334924bb5f2bad41eed5e89bd26e29b0b799f9a3f82c210" dependencies = [ "pest", - "sha2", ] [[package]] @@ -1765,9 +1786,9 @@ checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" [[package]] name = "pin-project-lite" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pio" @@ -1814,14 +1835,14 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "pkg-config" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" [[package]] name = "portable-atomic" @@ -1839,7 +1860,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", - "defmt 1.0.1", + "defmt 1.1.1", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -1853,7 +1876,7 @@ checksum = "e0232bd009a197ceec9cc881ba46f727fcd8060a2d8d6a9dde7a69030a6fe2bb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1899,7 +1922,7 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1917,23 +1940,23 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "869675ad2d7541aea90c6d88c81f46a7f4ea9af8cd0395d38f11a95126998a0d" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] name = "quote" -version = "1.0.44" +version = "1.0.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" +checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" dependencies = [ "proc-macro2", ] [[package]] name = "rand" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" dependencies = [ "rand_core 0.6.4", ] @@ -1972,14 +1995,14 @@ version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", ] [[package]] name = "regex" -version = "1.12.3" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +checksum = "2a0e75113e14dc5acb068cd0786884f214f1312650a3d36d269f5c4f3cdee8a2" dependencies = [ "aho-corasick", "memchr", @@ -1989,9 +2012,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +checksum = "1f388202e4b80542a0921078cc23b6333bcf1409c1e3f86404cae4766a6131db" dependencies = [ "aho-corasick", "memchr", @@ -2000,15 +2023,15 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rgb" -version = "0.8.52" +version = "0.8.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c6a884d2998352bb4daf0183589aec883f16a6da1f4dde84d8e2e9a5409a1ce" +checksum = "47b34b781b31e5d73e9fbc8689c70551fd1ade9a19e3e28cfec8580a79290cc4" [[package]] name = "rmk" @@ -2018,7 +2041,7 @@ dependencies = [ "byteorder", "cortex-m", "crc32fast", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -2035,7 +2058,7 @@ dependencies = [ "embedded-storage-async", "fixed", "futures", - "heapless 0.9.2", + "heapless 0.9.3", "paste", "pio", "postcard", @@ -2053,13 +2076,15 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] @@ -2073,7 +2098,7 @@ dependencies = [ "rmk-config", "rmk-types", "strum", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2082,7 +2107,7 @@ version = "0.2.0" dependencies = [ "const-gen", "cortex-m-rt", - "defmt 1.0.1", + "defmt 1.1.1", "defmt-rtt", "embassy-executor", "embassy-futures", @@ -2101,22 +2126,22 @@ name = "rmk-types" version = "0.2.2" dependencies = [ "bitfield-struct", - "defmt 1.0.1", - "heapless 0.9.2", + "defmt 1.1.1", + "heapless 0.9.3", "postcard", "rmk-config", "serde", "strum", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] name = "ron" -version = "0.12.0" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd490c5b18261893f14449cbd28cb9c0b637aebf161cd77900bfdedaff21ec32" +checksum = "81116b9531d61eabc41aeb228e4b6b2435bcca3233b98cf3b3077d4e6e9debb3" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "once_cell", "serde", "serde_derive", @@ -2168,14 +2193,14 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.27", + "semver 1.0.28", ] [[package]] name = "rustversion" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] name = "same-file" @@ -2222,9 +2247,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.27" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" dependencies = [ "serde", "serde_core", @@ -2238,11 +2263,11 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "sequential-storage" -version = "7.1.0" +version = "7.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4580ee0fa08cd41bee9f5b50ed309877e18735370fd4eef5766cc82863ef772" +checksum = "574e5a379bf43653079b34cb4cf32958404b5f42e0ed5b5adcdff02c2de04d4d" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-storage-async", "postcard", "serde", @@ -2266,7 +2291,7 @@ checksum = "2bf03b7a5281cfd4013bc788d057b0f09fc634397d83bc8973c955bd4f32727a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2298,14 +2323,14 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "serde_json" -version = "1.0.149" +version = "1.0.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" dependencies = [ "itoa", "memchr", @@ -2316,24 +2341,13 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "1.0.4" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" dependencies = [ "serde_core", ] -[[package]] -name = "sha2" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - [[package]] name = "sha2-const-stable" version = "0.1.0" @@ -2342,9 +2356,9 @@ checksum = "5f179d4e11094a893b82fff208f74d448a7512f99f5a0acbd5c679b705f83ed9" [[package]] name = "sha3" -version = "0.10.8" +version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +checksum = "77fd7028345d415a4034cf8777cd4f8ab1851274233b45f84e3d955502d93874" dependencies = [ "digest", "keccak", @@ -2361,21 +2375,27 @@ dependencies = [ [[package]] name = "shlex" -version = "1.3.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" [[package]] name = "siphasher" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e" +checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" + +[[package]] +name = "slab" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] name = "smallvec" -version = "1.15.1" +version = "1.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" [[package]] name = "smart-leds" @@ -2465,7 +2485,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2487,9 +2507,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.117" +version = "2.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" dependencies = [ "proc-macro2", "quote", @@ -2531,7 +2551,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2554,27 +2574,14 @@ dependencies = [ [[package]] name = "toml" -version = "0.9.12+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" -dependencies = [ - "serde_core", - "serde_spanned", - "toml_datetime 0.7.5+spec-1.1.0", - "toml_parser", - "winnow", -] - -[[package]] -name = "toml" -version = "1.0.3+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7614eaf19ad818347db24addfa201729cf2a9b6fdfd9eb0ab870fcacc606c0c" +checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee" dependencies = [ "indexmap", "serde_core", "serde_spanned", - "toml_datetime 1.0.0+spec-1.1.0", + "toml_datetime", "toml_parser", "toml_writer", "winnow", @@ -2582,36 +2589,27 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.7.5+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" -dependencies = [ - "serde_core", -] - -[[package]] -name = "toml_datetime" -version = "1.0.0+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32c2555c699578a4f59f0cc68e5116c8d7cabbd45e1409b989d4be085b53f13e" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" dependencies = [ "serde_core", ] [[package]] name = "toml_parser" -version = "1.0.9+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ "winnow", ] [[package]] name = "toml_writer" -version = "1.0.6+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" +checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" [[package]] name = "tracing" @@ -2632,7 +2630,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2682,13 +2680,13 @@ dependencies = [ "aes", "bt-hci", "cmac", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-futures", "embassy-sync", "embassy-time", "embedded-io 0.7.1", "futures", - "heapless 0.9.2", + "heapless 0.9.3", "p256", "rand", "rand_chacha", @@ -2708,7 +2706,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "uuid", ] @@ -2720,9 +2718,9 @@ checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" [[package]] name = "typenum" -version = "1.19.0" +version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" [[package]] name = "ucd-trie" @@ -2738,9 +2736,9 @@ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-segmentation" -version = "1.12.0" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" [[package]] name = "unicode-width" @@ -2797,15 +2795,15 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.117", + "syn 2.0.118", "usbd-hid-descriptors", ] [[package]] name = "uuid" -version = "1.21.0" +version = "1.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b672338555252d43fd2240c714dc444b8c6fb0a5c5335e65a07bba7742735ddb" +checksum = "bf80a72845275afea99e7f2b434723d3bc7e38470fcd1c7ed39a599c73319a53" dependencies = [ "js-sys", "wasm-bindgen", @@ -2862,9 +2860,9 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasm-bindgen" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60722a937f594b7fde9adb894d7c092fc1bb6612897c46368d18e7a20208eff2" +checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" dependencies = [ "cfg-if", "once_cell", @@ -2875,9 +2873,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac8c6395094b6b91c4af293f4c79371c163f9a6f56184d2c9a85f5a95f3950" +checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2885,22 +2883,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab3fabce6159dc20728033842636887e4877688ae94382766e00b180abac9d60" +checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de0e091bdb824da87dc01d967388880d017a0a9bc4f3bdc0d86ee9f9336e3bb5" +checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" dependencies = [ "unicode-ident", ] @@ -2940,9 +2938,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.14" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" +checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" dependencies = [ "memchr", ] @@ -2958,9 +2956,9 @@ dependencies = [ [[package]] name = "yaml-rust2" -version = "0.10.4" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2462ea039c445496d8793d052e13787f2b90e750b833afee748e601c17621ed9" +checksum = "631a50d867fafb7093e709d75aaee9e0e0d5deb934021fcea25ac2fe09edc51e" dependencies = [ "arraydeque", "encoding_rs", @@ -2969,29 +2967,29 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.39" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db6d35d663eadb6c932438e763b262fe1a70987f9ae936e60158176d710cae4a" +checksum = "b7cbbc0a705a0fd05cc3676525980d2bf5a9bc4adac6d6475209a7887cf59d19" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.39" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4122cd3169e94605190e77839c9a40d40ed048d305bfdc146e7df40ab0f3e517" +checksum = "e2e817b7b52d0c7358d3246da9d69935ebb18116b2b102b4230dac079b4862f5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "zeroize" -version = "1.8.2" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" [[package]] name = "zmij" diff --git a/examples/use_config/rp2040_split_pio/Cargo.toml b/examples/use_config/rp2040_split_pio/Cargo.toml index bb346622f..2e2b6f18a 100644 --- a/examples/use_config/rp2040_split_pio/Cargo.toml +++ b/examples/use_config/rp2040_split_pio/Cargo.toml @@ -10,7 +10,7 @@ edition = "2024" license = "MIT OR Apache-2.0" [dependencies] -rmk = { path = "../../../rmk", features = ["split", "rp2040"] } +rmk = { path = "../../../rmk", default-features = false, features = ["defmt", "storage", "vial", "watchdog", "split", "rp2040"] } embassy-time = { version = "0.5", features = ["defmt"] } embassy-rp = { version = "0.10", features = [ "rp2040", diff --git a/examples/use_config/rp2040_split_pio/keyboard.toml b/examples/use_config/rp2040_split_pio/keyboard.toml index b5d288caf..7bd529388 100644 --- a/examples/use_config/rp2040_split_pio/keyboard.toml +++ b/examples/use_config/rp2040_split_pio/keyboard.toml @@ -1,4 +1,5 @@ [keyboard] +# Replace with your keyboard identity. name = "RMK Keyboard" product_name = "RMK Keyboard" vendor_id = 0x4c4b @@ -9,21 +10,31 @@ chip = "rp2040" [layout] rows = 4 cols = 3 -layers = 2 -keymap = [ - [ - ["A", "B", "C"], - ["Kc1", "Kc2", "Kc3"], - ["LCtrl", "MO(1)", "LShift"], - ["OSL(1)", "LT(2, Kc9)", "LM(1, LShift | LGui)"] - ], - [ - ["_", "TT(1)", "TG(2)"], - ["_", "_", "_"], - ["_", "_", "_"], - ["_", "_", "_"] - ], -] +map = """ +(0,0) (0,1) (0,2) +(1,0) (1,1) (1,2) +(2,0) (2,1) (2,2) +(3,0) (3,1) (3,2) +""" + +[keymap] +layers = 3 + +[[keymap.layer]] # layer 0 +keys = """ +A B C +Kc1 Kc2 Kc3 +LCtrl MO(1) LShift +OSL(1) LT(2, Kc9) LM(1, LShift | LGui) +""" + +[[keymap.layer]] # layer 1 +keys = """ +_ TT(1) TG(2) +_ _ _ +_ _ _ +_ _ _ +""" [storage] @@ -41,7 +52,7 @@ serial = [ ] [split.central.matrix] matrix_type = "normal" -# RMK uses col2row as the default matrix diode direction, if you want to use a row2col matrix, add `row2col = true` +# Default diode direction is col2row; set `row2col = true` if needed. # row2col = true row_pins = ["PIN_9", "PIN_11"] col_pins = ["PIN_10", "PIN_12"] diff --git a/examples/use_config/stm32f1/Cargo.lock b/examples/use_config/stm32f1/Cargo.lock index d3a8dec63..dbbe490e7 100644 --- a/examples/use_config/stm32f1/Cargo.lock +++ b/examples/use_config/stm32f1/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "ahash" version = "0.8.12" @@ -55,7 +61,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -69,9 +75,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "bare-metal" @@ -108,7 +114,7 @@ checksum = "3ca6739863c590881f038d033a146c51ddae239186a4327014839fd864f44ed5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -119,22 +125,13 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.11.0" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" +checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" dependencies = [ "serde_core", ] -[[package]] -name = "block-buffer" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" -dependencies = [ - "generic-array", -] - [[package]] name = "block-device-driver" version = "0.2.0" @@ -156,16 +153,16 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa61aec073ec94791433ddf3df2323ff9d1711557c2a0eefb0f99cb4f8dca520" dependencies = [ - "semver 1.0.27", + "semver 1.0.28", "serde", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] name = "cc" -version = "1.2.56" +version = "1.2.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2" +checksum = "f5d6cac793997bd970000024b2934968efe83b382de4fdcf4fcb46b6ee4ad996" dependencies = [ "find-msvc-tools", "shlex", @@ -188,9 +185,9 @@ dependencies = [ [[package]] name = "config" -version = "0.15.19" +version = "0.15.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b30fa8254caad766fc03cb0ccae691e14bf3bd72bfff27f72802ce729551b3d6" +checksum = "b85f248a4de22d204ceabc6299d89d2c70fbd7f09fea53c06c852369652d8139" dependencies = [ "async-trait", "convert_case", @@ -201,7 +198,7 @@ dependencies = [ "serde-untagged", "serde_core", "serde_json", - "toml 0.9.12+spec-1.1.0", + "toml", "winnow", "yaml-rust2", ] @@ -295,16 +292,7 @@ checksum = "e37549a379a9e0e6e576fd208ee60394ccb8be963889eebba3ffe0980364f472" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", -] - -[[package]] -name = "cpufeatures" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" -dependencies = [ - "libc", + "syn 2.0.118", ] [[package]] @@ -328,16 +316,6 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" -[[package]] -name = "crypto-common" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" -dependencies = [ - "generic-array", - "typenum", -] - [[package]] name = "darling" version = "0.20.11" @@ -369,7 +347,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -382,7 +360,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -393,7 +371,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -404,14 +382,14 @@ checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ "darling_core 0.23.0", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "defmt" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "548d977b6da32fa1d1fda2876453da1e7df63ad0304c8b3dae4dbe7b96f39b78" +checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" dependencies = [ "bitflags 1.3.2", "defmt-macros", @@ -419,15 +397,14 @@ dependencies = [ [[package]] name = "defmt-macros" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d4fc12a85bcf441cfe44344c4b72d58493178ce635338a3f3b78943aceb258e" +checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" dependencies = [ "defmt-parser", - "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -439,16 +416,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "digest" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" -dependencies = [ - "block-buffer", - "crypto-common", -] - [[package]] name = "dlv-list" version = "0.5.2" @@ -508,7 +475,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -568,7 +535,7 @@ checksum = "486c0622deb5a519fc4d2cb8e3ef324f7568fcdfff201ff8fcab46557d663ceb" dependencies = [ "aligned", "bit_field", - "bitflags 2.11.0", + "bitflags 2.13.0", "block-device-driver", "cfg-if", "cortex-m", @@ -595,7 +562,7 @@ dependencies = [ "embedded-storage", "embedded-storage-async", "futures-util", - "heapless 0.9.2", + "heapless 0.9.3", "nb 1.1.0", "proc-macro2", "quote", @@ -622,7 +589,7 @@ dependencies = [ "embedded-io-async 0.7.0", "futures-core", "futures-sink", - "heapless 0.9.2", + "heapless 0.9.3", ] [[package]] @@ -652,12 +619,12 @@ dependencies = [ [[package]] name = "embassy-time-queue-utils" -version = "0.3.0" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e2ee86063bd028a420a5fb5898c18c87a8898026da1d4c852af2c443d0a454" +checksum = "168297bf80aaf114b3c9ad589bf38b01b3009b9af7f97cd18086c5bbf96f5693" dependencies = [ "embassy-executor-timer-queue", - "heapless 0.8.0", + "heapless 0.9.3", ] [[package]] @@ -666,36 +633,39 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a25746d8b152b72fbf2a217f489a083dbbe243f281f09184a1f2cfbe9bbb245f" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "embassy-futures", "embassy-net-driver-channel", "embassy-sync", "embassy-time", "embassy-usb-driver", "embedded-io-async 0.7.0", - "heapless 0.9.2", + "heapless 0.9.3", "ssmarshal", "usbd-hid", ] [[package]] name = "embassy-usb-driver" -version = "0.2.0" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17119855ccc2d1f7470a39756b12068454ae27a3eabb037d940b5c03d9c77b7a" +checksum = "fa675c5f4349b6aa0fcffc4bf9b241f18cd11b97c1f8323273fb9a5449937fbd" dependencies = [ "embedded-io-async 0.6.1", + "embedded-io-async 0.7.0", ] [[package]] name = "embassy-usb-synopsys-otg" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbe46f4083109c7ea12a03ca61095d1e87c76fec52c7ca9ee06a42935606dacb" +checksum = "fb205e26d59e483e8c48f91f637ec217ec7e2cfb0b61d50482301b991b4ff431" dependencies = [ "critical-section", "embassy-sync", + "embassy-time", "embassy-usb-driver", + "portable-atomic", ] [[package]] @@ -742,6 +712,12 @@ dependencies = [ "nb 1.1.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -810,9 +786,9 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "erased-serde" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e8918065695684b2b0702da20382d5ae6065cf3327bc2d6436bd49a71ce9f3" +checksum = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec" dependencies = [ "serde", "serde_core", @@ -833,9 +809,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foldhash" -version = "0.1.5" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" [[package]] name = "futures" @@ -881,7 +857,7 @@ checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -911,9 +887,9 @@ dependencies = [ [[package]] name = "generator" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52f04ae4152da20c76fe800fa48659201d5cf627c5149ca0b707b69d7eef6cf9" +checksum = "b3b854b0e584ead1a33f18b2fcad7cf7be18b3875c78816b753639aa501513ae" dependencies = [ "cc", "cfg-if", @@ -924,16 +900,6 @@ dependencies = [ "windows-result", ] -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", -] - [[package]] name = "getrandom" version = "0.2.17" @@ -980,26 +946,26 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hashbrown" -version = "0.15.5" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" dependencies = [ "foldhash", ] [[package]] name = "hashbrown" -version = "0.16.1" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" [[package]] name = "hashlink" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" +checksum = "824e001ac4f3012dd16a264bec811403a67ca9deb6c102fc5049b32c4574b35f" dependencies = [ - "hashbrown 0.15.5", + "hashbrown 0.16.1", ] [[package]] @@ -1028,9 +994,9 @@ dependencies = [ [[package]] name = "heapless" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af2455f757db2b292a9b1768c4b70186d443bcb3b316252d6b540aec1cd89ed" +checksum = "25ba4bd83f9415b58b4ed8dc5714c76e626a105be4646c02630ad730ad3b5aa4" dependencies = [ "hash32 0.3.1", "serde_core", @@ -1051,19 +1017,19 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "indexmap" -version = "2.13.0" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.16.1", + "hashbrown 0.17.1", ] [[package]] name = "itoa" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "json" @@ -1090,9 +1056,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.182" +version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "litrs" @@ -1111,9 +1077,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.29" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" [[package]] name = "loom" @@ -1150,9 +1116,18 @@ dependencies = [ [[package]] name = "memchr" -version = "2.8.0" +version = "2.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" + +[[package]] +name = "miniz_oxide" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] [[package]] name = "nb" @@ -1189,9 +1164,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.21.3" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] name = "ordered-multimap" @@ -1226,9 +1201,9 @@ checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" [[package]] name = "pest" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662" +checksum = "47627dd7305c6a2d6c8c6bcd24c5a4c17dbbf425f4f9c5313e724b38fc9782e9" dependencies = [ "memchr", "ucd-trie", @@ -1236,9 +1211,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77" +checksum = "4b4254325ecad416ab689e27ba51da03ba01a9632bc6e108f5fe7c3c4ad29d58" dependencies = [ "pest", "pest_generator", @@ -1246,38 +1221,37 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f" +checksum = "6c4c0e91ead7a8f7acecbca6f003fc2e8282b1dbe2dd9c9d2f16aba42995e0a7" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "pest_meta" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220" +checksum = "f9744bc48116fee06334924bb5f2bad41eed5e89bd26e29b0b799f9a3f82c210" dependencies = [ "pest", - "sha2", ] [[package]] name = "pin-project-lite" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pkg-config" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" [[package]] name = "portable-atomic" @@ -1292,6 +1266,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -1305,29 +1281,7 @@ checksum = "e0232bd009a197ceec9cc881ba46f727fcd8060a2d8d6a9dde7a69030a6fe2bb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", -] - -[[package]] -name = "proc-macro-error-attr2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "proc-macro-error2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" -dependencies = [ - "proc-macro-error-attr2", - "proc-macro2", - "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1341,9 +1295,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.44" +version = "1.0.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" +checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" dependencies = [ "proc-macro2", ] @@ -1362,9 +1316,9 @@ checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" [[package]] name = "regex" -version = "1.12.3" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +checksum = "2a0e75113e14dc5acb068cd0786884f214f1312650a3d36d269f5c4f3cdee8a2" dependencies = [ "aho-corasick", "memchr", @@ -1374,9 +1328,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +checksum = "1f388202e4b80542a0921078cc23b6333bcf1409c1e3f86404cae4766a6131db" dependencies = [ "aho-corasick", "memchr", @@ -1385,9 +1339,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rmk" @@ -1402,8 +1356,9 @@ dependencies = [ "embassy-usb", "embedded-hal 1.0.0", "embedded-hal-async", + "embedded-io-async 0.7.0", "futures", - "heapless 0.9.2", + "heapless 0.9.3", "paste", "postcard", "rmk-macro", @@ -1419,13 +1374,15 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] @@ -1439,7 +1396,7 @@ dependencies = [ "rmk-config", "rmk-types", "strum", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1464,21 +1421,21 @@ name = "rmk-types" version = "0.2.2" dependencies = [ "bitfield-struct", - "heapless 0.9.2", + "heapless 0.9.3", "postcard", "rmk-config", "serde", "strum", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] name = "ron" -version = "0.12.0" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd490c5b18261893f14449cbd28cb9c0b637aebf161cd77900bfdedaff21ec32" +checksum = "81116b9531d61eabc41aeb228e4b6b2435bcca3233b98cf3b3077d4e6e9debb3" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "once_cell", "serde", "serde_derive", @@ -1511,14 +1468,14 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.27", + "semver 1.0.28", ] [[package]] name = "rustversion" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] name = "scoped-tls" @@ -1549,9 +1506,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.27" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" dependencies = [ "serde", "serde_core", @@ -1565,9 +1522,9 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "sequential-storage" -version = "7.1.0" +version = "7.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4580ee0fa08cd41bee9f5b50ed309877e18735370fd4eef5766cc82863ef772" +checksum = "574e5a379bf43653079b34cb4cf32958404b5f42e0ed5b5adcdff02c2de04d4d" dependencies = [ "embedded-storage-async", "postcard", @@ -1592,7 +1549,7 @@ checksum = "2bf03b7a5281cfd4013bc788d057b0f09fc634397d83bc8973c955bd4f32727a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1624,14 +1581,14 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "serde_json" -version = "1.0.149" +version = "1.0.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" dependencies = [ "itoa", "memchr", @@ -1642,24 +1599,13 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "1.0.4" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" dependencies = [ "serde_core", ] -[[package]] -name = "sha2" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - [[package]] name = "sharded-slab" version = "0.1.7" @@ -1671,15 +1617,15 @@ dependencies = [ [[package]] name = "shlex" -version = "1.3.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" [[package]] name = "smallvec" -version = "1.15.1" +version = "1.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" [[package]] name = "spin" @@ -1764,7 +1710,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1780,9 +1726,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.117" +version = "2.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" dependencies = [ "proc-macro2", "quote", @@ -1806,7 +1752,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1829,27 +1775,14 @@ dependencies = [ [[package]] name = "toml" -version = "0.9.12+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" -dependencies = [ - "serde_core", - "serde_spanned", - "toml_datetime 0.7.5+spec-1.1.0", - "toml_parser", - "winnow", -] - -[[package]] -name = "toml" -version = "1.0.3+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7614eaf19ad818347db24addfa201729cf2a9b6fdfd9eb0ab870fcacc606c0c" +checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee" dependencies = [ "indexmap", "serde_core", "serde_spanned", - "toml_datetime 1.0.0+spec-1.1.0", + "toml_datetime", "toml_parser", "toml_writer", "winnow", @@ -1857,36 +1790,27 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.7.5+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" -dependencies = [ - "serde_core", -] - -[[package]] -name = "toml_datetime" -version = "1.0.0+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32c2555c699578a4f59f0cc68e5116c8d7cabbd45e1409b989d4be085b53f13e" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" dependencies = [ "serde_core", ] [[package]] name = "toml_parser" -version = "1.0.9+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ "winnow", ] [[package]] name = "toml_writer" -version = "1.0.6+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" +checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" [[package]] name = "tracing" @@ -1907,7 +1831,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1966,12 +1890,6 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" -[[package]] -name = "typenum" -version = "1.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" - [[package]] name = "ucd-trie" version = "0.1.7" @@ -1986,9 +1904,9 @@ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-segmentation" -version = "1.12.0" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" [[package]] name = "usb-device" @@ -2031,7 +1949,7 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.117", + "syn 2.0.118", "usbd-hid-descriptors", ] @@ -2100,9 +2018,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.14" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" +checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" dependencies = [ "memchr", ] @@ -2118,9 +2036,9 @@ dependencies = [ [[package]] name = "yaml-rust2" -version = "0.10.4" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2462ea039c445496d8793d052e13787f2b90e750b833afee748e601c17621ed9" +checksum = "631a50d867fafb7093e709d75aaee9e0e0d5deb934021fcea25ac2fe09edc51e" dependencies = [ "arraydeque", "encoding_rs", @@ -2129,22 +2047,22 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.39" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db6d35d663eadb6c932438e763b262fe1a70987f9ae936e60158176d710cae4a" +checksum = "b7cbbc0a705a0fd05cc3676525980d2bf5a9bc4adac6d6475209a7887cf59d19" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.39" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4122cd3169e94605190e77839c9a40d40ed048d305bfdc146e7df40ab0f3e517" +checksum = "e2e817b7b52d0c7358d3246da9d69935ebb18116b2b102b4230dac079b4862f5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] diff --git a/examples/use_config/stm32f1/keyboard.toml b/examples/use_config/stm32f1/keyboard.toml index a23b4ce92..27462d639 100644 --- a/examples/use_config/stm32f1/keyboard.toml +++ b/examples/use_config/stm32f1/keyboard.toml @@ -1,4 +1,5 @@ [keyboard] +# Replace with your keyboard identity. name = "RMK Keyboard" product_name = "RMK Keyboard" vendor_id = 0x4c4b @@ -7,30 +8,40 @@ manufacturer = "haobo" chip = "stm32f103cb" [matrix] -# Row and col pins are mandatory +# Matrix pins are required. row_pins = ["PA4", "PA5", "PA6", "PA3"] col_pins = ["PA7", "PA8", "PA9"] -# RMK uses col2row as the default matrix diode direction, if you want to use a row2col matrix, add `row2col = true` +# Default diode direction is col2row; set `row2col = true` if needed. # row2col = true [layout] rows = 4 cols = 3 -layers = 2 -keymap = [ - [ - ["A", "B", "C"], - ["Kc1", "Kc2", "Kc3"], - ["LCtrl", "MO(1)", "LShift"], - ["OSL(1)", "LT(2, Kc9)", "LM(1, LShift | LGui)"] - ], - [ - ["_", "TT(1)", "TG(2)"], - ["_", "_", "_"], - ["_", "_", "_"], - ["_", "_", "_"] - ], -] +map = """ +(0,0) (0,1) (0,2) +(1,0) (1,1) (1,2) +(2,0) (2,1) (2,2) +(3,0) (3,1) (3,2) +""" + +[keymap] +layers = 3 + +[[keymap.layer]] # layer 0 +keys = """ +A B C +Kc1 Kc2 Kc3 +LCtrl MO(1) LShift +OSL(1) LT(2, Kc9) LM(1, LShift | LGui) +""" + +[[keymap.layer]] # layer 1 +keys = """ +_ TT(1) TG(2) +_ _ _ +_ _ _ +_ _ _ +""" [light] # All light pins are high-active by default, uncomment if you want it to be low-active @@ -45,7 +56,7 @@ keymap = [ [storage] -# Storage feature is enabled by default +# Storage is enabled by default. enabled = false [dependency] diff --git a/examples/use_config/stm32f4/Cargo.lock b/examples/use_config/stm32f4/Cargo.lock index 2e86e34cd..29c0e6d47 100644 --- a/examples/use_config/stm32f4/Cargo.lock +++ b/examples/use_config/stm32f4/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -66,7 +72,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -80,9 +86,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "az" @@ -131,7 +137,7 @@ checksum = "3ca6739863c590881f038d033a146c51ddae239186a4327014839fd864f44ed5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -142,9 +148,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.11.0" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" +checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" dependencies = [ "serde_core", ] @@ -174,12 +180,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f3c66fd0a41a3b3a5906847b1bf5516048ce083e24fa9341a0fa31d3b4cd73d" dependencies = [ "btuuid", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-sync", "embedded-io 0.7.1", "embedded-io-async 0.7.0", "futures-intrusive", - "heapless 0.9.2", + "heapless 0.9.3", "serde", ] @@ -196,9 +202,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.20.2" +version = "3.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" [[package]] name = "bytemuck" @@ -218,16 +224,16 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa61aec073ec94791433ddf3df2323ff9d1711557c2a0eefb0f99cb4f8dca520" dependencies = [ - "semver 1.0.27", + "semver 1.0.28", "serde", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] name = "cc" -version = "1.2.56" +version = "1.2.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2" +checksum = "f5d6cac793997bd970000024b2934968efe83b382de4fdcf4fcb46b6ee4ad996" dependencies = [ "find-msvc-tools", "shlex", @@ -271,9 +277,9 @@ dependencies = [ [[package]] name = "config" -version = "0.15.19" +version = "0.15.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b30fa8254caad766fc03cb0ccae691e14bf3bd72bfff27f72802ce729551b3d6" +checksum = "b85f248a4de22d204ceabc6299d89d2c70fbd7f09fea53c06c852369652d8139" dependencies = [ "async-trait", "convert_case 0.6.0", @@ -284,7 +290,7 @@ dependencies = [ "serde-untagged", "serde_core", "serde_json", - "toml 0.9.12+spec-1.1.0", + "toml", "winnow", "yaml-rust2", ] @@ -393,7 +399,7 @@ checksum = "e37549a379a9e0e6e576fd208ee60394ccb8be963889eebba3ffe0980364f472" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -479,7 +485,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -492,7 +498,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -503,7 +509,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -514,7 +520,7 @@ checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ "darling_core 0.23.0", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -532,14 +538,14 @@ version = "0.3.100" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0963443817029b2024136fc4dd07a5107eb8f977eaf18fcd1fdeb11306b64ad" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] name = "defmt" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "548d977b6da32fa1d1fda2876453da1e7df63ad0304c8b3dae4dbe7b96f39b78" +checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" dependencies = [ "bitflags 1.3.2", "defmt-macros", @@ -547,15 +553,14 @@ dependencies = [ [[package]] name = "defmt-macros" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d4fc12a85bcf441cfe44344c4b72d58493178ce635338a3f3b78943aceb258e" +checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" dependencies = [ "defmt-parser", - "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -569,12 +574,12 @@ dependencies = [ [[package]] name = "defmt-rtt" -version = "1.1.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d5a25c99d89c40f5676bec8cefe0614f17f0f40e916f98e345dae941807f9e" +checksum = "05144944c117db54127a8ac17a3c9a28d55e7047bfddb950bcd20b4a94c79b10" dependencies = [ "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -641,7 +646,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b0641612053b2f34fc250bb63f6630ae75de46e02ade7f457268447081d709ce" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embassy-futures", "embassy-hal-internal 0.4.0", "embassy-sync", @@ -663,7 +668,7 @@ dependencies = [ "cordyceps", "cortex-m", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-executor-macros", "embassy-executor-timer-queue", @@ -678,7 +683,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -693,7 +698,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc2d050bdc5c21e0862a89256ed8029ae6c290a93aecefc73084b3002cdebb01" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -713,7 +718,7 @@ checksum = "568659fc53866d3d85c60fa33723fb751aa69e71507634fc2c19e7649432fb75" dependencies = [ "cortex-m", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "num-traits", ] @@ -743,12 +748,12 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82051f67e8a06a8faebd183f62cfade184c96be68126c5f064abb8223a591ff1" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "cfg-if", "cortex-m", "cortex-m-rt", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -779,13 +784,13 @@ checksum = "486c0622deb5a519fc4d2cb8e3ef324f7568fcdfff201ff8fcab46557d663ceb" dependencies = [ "aligned", "bit_field", - "bitflags 2.11.0", + "bitflags 2.13.0", "block-device-driver", "cfg-if", "cortex-m", "cortex-m-rt", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -796,7 +801,7 @@ dependencies = [ "embassy-time-driver", "embassy-time-queue-utils", "embassy-usb-driver", - "embassy-usb-synopsys-otg 0.3.2", + "embassy-usb-synopsys-otg 0.3.3", "embedded-can", "embedded-hal 0.2.7", "embedded-hal 1.0.0", @@ -807,7 +812,7 @@ dependencies = [ "embedded-storage", "embedded-storage-async", "futures-util", - "heapless 0.9.2", + "heapless 0.9.3", "nb 1.1.0", "proc-macro2", "quote", @@ -831,11 +836,11 @@ checksum = "7bbd85cf5a5ae56bdf26f618364af642d1d0a4e245cdd75cd9aabda382f65a81" dependencies = [ "cfg-if", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io-async 0.7.0", "futures-core", "futures-sink", - "heapless 0.9.2", + "heapless 0.9.3", ] [[package]] @@ -846,7 +851,7 @@ checksum = "592b0c143ec626e821d4d90da51a2bd91d559d6c442b7c74a47d368c9e23d97a" dependencies = [ "cfg-if", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-time-driver", "embedded-hal 0.2.7", @@ -866,12 +871,12 @@ dependencies = [ [[package]] name = "embassy-time-queue-utils" -version = "0.3.0" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e2ee86063bd028a420a5fb5898c18c87a8898026da1d4c852af2c443d0a454" +checksum = "168297bf80aaf114b3c9ad589bf38b01b3009b9af7f97cd18086c5bbf96f5693" dependencies = [ "embassy-executor-timer-queue", - "heapless 0.8.0", + "heapless 0.9.3", ] [[package]] @@ -880,15 +885,15 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a25746d8b152b72fbf2a217f489a083dbbe243f281f09184a1f2cfbe9bbb245f" dependencies = [ - "bitflags 2.11.0", - "defmt 1.0.1", + "bitflags 2.13.0", + "defmt 1.1.1", "embassy-futures", "embassy-net-driver-channel", "embassy-sync", "embassy-time", "embassy-usb-driver", "embedded-io-async 0.7.0", - "heapless 0.9.2", + "heapless 0.9.3", "ssmarshal", "usbd-hid", ] @@ -899,21 +904,23 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa675c5f4349b6aa0fcffc4bf9b241f18cd11b97c1f8323273fb9a5449937fbd" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io-async 0.6.1", "embedded-io-async 0.7.0", ] [[package]] name = "embassy-usb-synopsys-otg" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbe46f4083109c7ea12a03ca61095d1e87c76fec52c7ca9ee06a42935606dacb" +checksum = "fb205e26d59e483e8c48f91f637ec217ec7e2cfb0b61d50482301b991b4ff431" dependencies = [ "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-sync", + "embassy-time", "embassy-usb-driver", + "portable-atomic", ] [[package]] @@ -923,7 +930,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6efd0c0e0b21bcf91b475b8fa47347c1df32c9a99728ae1e1b0e6625862dfd1a" dependencies = [ "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-sync", "embassy-time", "embassy-usb-driver", @@ -978,6 +985,12 @@ dependencies = [ "nb 1.1.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -990,7 +1003,7 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9eb1aa714776b75c7e67e1da744b81a129b3ff919c8712b5e1b32252c1f07cc7" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -1008,7 +1021,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2564b9f813c544241430e147d8bc454815ef9ac998878d30cc3055449f7fd4c0" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io 0.7.1", ] @@ -1050,9 +1063,9 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "erased-serde" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e8918065695684b2b0702da20382d5ae6065cf3327bc2d6436bd49a71ce9f3" +checksum = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec" dependencies = [ "serde", "serde_core", @@ -1077,9 +1090,9 @@ checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" [[package]] name = "fixed" -version = "1.30.0" +version = "1.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c566da967934c6c7ee0458a9773de9b2a685bd2ce26a3b28ddfc740e640182f5" +checksum = "9af2cbf772fa6d1c11358f92ef554cb6b386201210bcf0e91fb7fba8a907fb40" dependencies = [ "az", "bytemuck", @@ -1095,9 +1108,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foldhash" -version = "0.1.5" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" [[package]] name = "futures" @@ -1153,7 +1166,7 @@ checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1179,13 +1192,14 @@ dependencies = [ "futures-sink", "futures-task", "pin-project-lite", + "slab", ] [[package]] name = "generator" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52f04ae4152da20c76fe800fa48659201d5cf627c5149ca0b707b69d7eef6cf9" +checksum = "b3b854b0e584ead1a33f18b2fcad7cf7be18b3875c78816b753639aa501513ae" dependencies = [ "cc", "cfg-if", @@ -1275,26 +1289,26 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hashbrown" -version = "0.15.5" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" dependencies = [ "foldhash", ] [[package]] name = "hashbrown" -version = "0.16.1" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" [[package]] name = "hashlink" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" +checksum = "824e001ac4f3012dd16a264bec811403a67ca9deb6c102fc5049b32c4574b35f" dependencies = [ - "hashbrown 0.15.5", + "hashbrown 0.16.1", ] [[package]] @@ -1323,11 +1337,11 @@ dependencies = [ [[package]] name = "heapless" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af2455f757db2b292a9b1768c4b70186d443bcb3b316252d6b540aec1cd89ed" +checksum = "25ba4bd83f9415b58b4ed8dc5714c76e626a105be4646c02630ad730ad3b5aa4" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "hash32 0.3.1", "serde_core", "stable_deref_trait", @@ -1365,12 +1379,12 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "indexmap" -version = "2.13.0" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.16.1", + "hashbrown 0.17.1", ] [[package]] @@ -1384,17 +1398,18 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "js-sys" -version = "0.3.90" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14dc6f6450b3f6d4ed5b16327f38fed626d375a886159ca555bd7822c0c3a5a6" +checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ - "once_cell", + "cfg-if", + "futures-util", "wasm-bindgen", ] @@ -1423,9 +1438,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.182" +version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "litrs" @@ -1444,9 +1459,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.29" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" [[package]] name = "loom" @@ -1483,9 +1498,18 @@ dependencies = [ [[package]] name = "memchr" -version = "2.8.0" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" + +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] [[package]] name = "nb" @@ -1532,9 +1556,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.21.3" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] name = "ordered-multimap" @@ -1563,7 +1587,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd402d00b0fb94c5aee000029204a46884b1262e0c443f166d86d2c0747e1a1a" dependencies = [ "cortex-m", - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -1580,9 +1604,9 @@ checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" [[package]] name = "pest" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662" +checksum = "47627dd7305c6a2d6c8c6bcd24c5a4c17dbbf425f4f9c5313e724b38fc9782e9" dependencies = [ "memchr", "ucd-trie", @@ -1590,9 +1614,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77" +checksum = "4b4254325ecad416ab689e27ba51da03ba01a9632bc6e108f5fe7c3c4ad29d58" dependencies = [ "pest", "pest_generator", @@ -1600,38 +1624,37 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f" +checksum = "6c4c0e91ead7a8f7acecbca6f003fc2e8282b1dbe2dd9c9d2f16aba42995e0a7" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "pest_meta" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220" +checksum = "f9744bc48116fee06334924bb5f2bad41eed5e89bd26e29b0b799f9a3f82c210" dependencies = [ "pest", - "sha2", ] [[package]] name = "pin-project-lite" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pkg-config" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" [[package]] name = "portable-atomic" @@ -1646,7 +1669,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", - "defmt 1.0.1", + "defmt 1.1.1", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -1660,7 +1685,7 @@ checksum = "e0232bd009a197ceec9cc881ba46f727fcd8060a2d8d6a9dde7a69030a6fe2bb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1681,28 +1706,6 @@ dependencies = [ "elliptic-curve", ] -[[package]] -name = "proc-macro-error-attr2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "proc-macro-error2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" -dependencies = [ - "proc-macro-error-attr2", - "proc-macro2", - "quote", - "syn 2.0.117", -] - [[package]] name = "proc-macro2" version = "1.0.106" @@ -1714,18 +1717,18 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.44" +version = "1.0.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" +checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" dependencies = [ "proc-macro2", ] [[package]] name = "rand" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" dependencies = [ "rand_core 0.6.4", ] @@ -1760,9 +1763,9 @@ checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" [[package]] name = "regex" -version = "1.12.3" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +checksum = "2a0e75113e14dc5acb068cd0786884f214f1312650a3d36d269f5c4f3cdee8a2" dependencies = [ "aho-corasick", "memchr", @@ -1772,9 +1775,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +checksum = "1f388202e4b80542a0921078cc23b6333bcf1409c1e3f86404cae4766a6131db" dependencies = [ "aho-corasick", "memchr", @@ -1783,9 +1786,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rmk" @@ -1795,7 +1798,7 @@ dependencies = [ "byteorder", "cortex-m", "crc32fast", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -1809,7 +1812,7 @@ dependencies = [ "embedded-storage", "embedded-storage-async", "futures", - "heapless 0.9.2", + "heapless 0.9.3", "paste", "postcard", "rmk-macro", @@ -1826,13 +1829,15 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] @@ -1846,7 +1851,7 @@ dependencies = [ "rmk-config", "rmk-types", "strum", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1856,7 +1861,7 @@ dependencies = [ "const-gen", "cortex-m", "cortex-m-rt", - "defmt 1.0.1", + "defmt 1.1.1", "defmt-rtt", "embassy-executor", "embassy-stm32", @@ -1873,22 +1878,22 @@ name = "rmk-types" version = "0.2.2" dependencies = [ "bitfield-struct", - "defmt 1.0.1", - "heapless 0.9.2", + "defmt 1.1.1", + "heapless 0.9.3", "postcard", "rmk-config", "serde", "strum", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] name = "ron" -version = "0.12.0" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd490c5b18261893f14449cbd28cb9c0b637aebf161cd77900bfdedaff21ec32" +checksum = "81116b9531d61eabc41aeb228e4b6b2435bcca3233b98cf3b3077d4e6e9debb3" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "once_cell", "serde", "serde_derive", @@ -1921,14 +1926,14 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.27", + "semver 1.0.28", ] [[package]] name = "rustversion" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] name = "scoped-tls" @@ -1972,9 +1977,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.27" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" dependencies = [ "serde", "serde_core", @@ -1988,11 +1993,11 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "sequential-storage" -version = "7.1.0" +version = "7.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4580ee0fa08cd41bee9f5b50ed309877e18735370fd4eef5766cc82863ef772" +checksum = "574e5a379bf43653079b34cb4cf32958404b5f42e0ed5b5adcdff02c2de04d4d" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-storage-async", "postcard", "serde", @@ -2016,7 +2021,7 @@ checksum = "2bf03b7a5281cfd4013bc788d057b0f09fc634397d83bc8973c955bd4f32727a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2048,14 +2053,14 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "serde_json" -version = "1.0.149" +version = "1.0.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" dependencies = [ "itoa", "memchr", @@ -2066,24 +2071,13 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "1.0.4" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" dependencies = [ "serde_core", ] -[[package]] -name = "sha2" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - [[package]] name = "sharded-slab" version = "0.1.7" @@ -2095,15 +2089,21 @@ dependencies = [ [[package]] name = "shlex" -version = "1.3.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" + +[[package]] +name = "slab" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] name = "smallvec" -version = "1.15.1" +version = "1.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" [[package]] name = "spin" @@ -2189,7 +2189,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2211,9 +2211,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.117" +version = "2.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" dependencies = [ "proc-macro2", "quote", @@ -2237,7 +2237,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2260,27 +2260,14 @@ dependencies = [ [[package]] name = "toml" -version = "0.9.12+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" -dependencies = [ - "serde_core", - "serde_spanned", - "toml_datetime 0.7.5+spec-1.1.0", - "toml_parser", - "winnow", -] - -[[package]] -name = "toml" -version = "1.0.3+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7614eaf19ad818347db24addfa201729cf2a9b6fdfd9eb0ab870fcacc606c0c" +checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee" dependencies = [ "indexmap", "serde_core", "serde_spanned", - "toml_datetime 1.0.0+spec-1.1.0", + "toml_datetime", "toml_parser", "toml_writer", "winnow", @@ -2288,36 +2275,27 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.7.5+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" -dependencies = [ - "serde_core", -] - -[[package]] -name = "toml_datetime" -version = "1.0.0+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32c2555c699578a4f59f0cc68e5116c8d7cabbd45e1409b989d4be085b53f13e" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" dependencies = [ "serde_core", ] [[package]] name = "toml_parser" -version = "1.0.9+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ "winnow", ] [[package]] name = "toml_writer" -version = "1.0.6+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" +checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" [[package]] name = "tracing" @@ -2338,7 +2316,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2399,13 +2377,13 @@ dependencies = [ "aes", "bt-hci", "cmac", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-futures", "embassy-sync", "embassy-time", "embedded-io 0.7.1", "futures", - "heapless 0.9.2", + "heapless 0.9.3", "p256", "rand", "rand_chacha", @@ -2425,7 +2403,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "uuid", ] @@ -2437,9 +2415,9 @@ checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" [[package]] name = "typenum" -version = "1.19.0" +version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" [[package]] name = "ucd-trie" @@ -2455,9 +2433,9 @@ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-segmentation" -version = "1.12.0" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" [[package]] name = "usb-device" @@ -2502,15 +2480,15 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.117", + "syn 2.0.118", "usbd-hid-descriptors", ] [[package]] name = "uuid" -version = "1.21.0" +version = "1.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b672338555252d43fd2240c714dc444b8c6fb0a5c5335e65a07bba7742735ddb" +checksum = "bf80a72845275afea99e7f2b434723d3bc7e38470fcd1c7ed39a599c73319a53" dependencies = [ "js-sys", "wasm-bindgen", @@ -2557,9 +2535,9 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasm-bindgen" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60722a937f594b7fde9adb894d7c092fc1bb6612897c46368d18e7a20208eff2" +checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" dependencies = [ "cfg-if", "once_cell", @@ -2570,9 +2548,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac8c6395094b6b91c4af293f4c79371c163f9a6f56184d2c9a85f5a95f3950" +checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2580,22 +2558,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab3fabce6159dc20728033842636887e4877688ae94382766e00b180abac9d60" +checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de0e091bdb824da87dc01d967388880d017a0a9bc4f3bdc0d86ee9f9336e3bb5" +checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" dependencies = [ "unicode-ident", ] @@ -2626,9 +2604,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.14" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" +checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" dependencies = [ "memchr", ] @@ -2644,9 +2622,9 @@ dependencies = [ [[package]] name = "yaml-rust2" -version = "0.10.4" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2462ea039c445496d8793d052e13787f2b90e750b833afee748e601c17621ed9" +checksum = "631a50d867fafb7093e709d75aaee9e0e0d5deb934021fcea25ac2fe09edc51e" dependencies = [ "arraydeque", "encoding_rs", @@ -2655,29 +2633,29 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.39" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db6d35d663eadb6c932438e763b262fe1a70987f9ae936e60158176d710cae4a" +checksum = "b7cbbc0a705a0fd05cc3676525980d2bf5a9bc4adac6d6475209a7887cf59d19" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.39" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4122cd3169e94605190e77839c9a40d40ed048d305bfdc146e7df40ab0f3e517" +checksum = "e2e817b7b52d0c7358d3246da9d69935ebb18116b2b102b4230dac079b4862f5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "zeroize" -version = "1.8.2" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" [[package]] name = "zmij" diff --git a/examples/use_config/stm32f4/Cargo.toml b/examples/use_config/stm32f4/Cargo.toml index 614095499..a3fe27d4d 100644 --- a/examples/use_config/stm32f4/Cargo.toml +++ b/examples/use_config/stm32f4/Cargo.toml @@ -10,7 +10,7 @@ edition = "2024" license = "MIT OR Apache-2.0" [dependencies] -rmk = { path = "../../../rmk" } +rmk = { path = "../../../rmk", default-features = false, features = ["defmt", "storage", "vial", "watchdog"] } cortex-m = { version = "0.7.7", features = ['critical-section-single-core'] } cortex-m-rt = "0.7.5" embassy-time = { version = "0.5", features = ["tick-hz-32_768", "defmt"] } diff --git a/examples/use_config/stm32f4/keyboard.toml b/examples/use_config/stm32f4/keyboard.toml index b7f3bcde2..4647307c2 100644 --- a/examples/use_config/stm32f4/keyboard.toml +++ b/examples/use_config/stm32f4/keyboard.toml @@ -1,4 +1,5 @@ [keyboard] +# Replace with your keyboard identity. name = "RMK Keyboard" product_name = "RMK Keyboard" vendor_id = 0x4c4b @@ -7,30 +8,40 @@ manufacturer = "haobo" chip = "stm32f411ce" [matrix] -# Row and col pins are mandatory +# Matrix pins are required. row_pins = ["PA4", "PA5", "PA6", "PA3"] col_pins = ["PA7", "PA8", "PA9"] -# RMK uses col2row as the default matrix diode direction, if you want to use a row2col matrix, add `row2col = true` +# Default diode direction is col2row; set `row2col = true` if needed. # row2col = true [layout] rows = 4 cols = 3 -layers = 2 -keymap = [ - [ - ["A", "B", "C"], - ["Kc1", "Kc2", "Kc3"], - ["LCtrl", "MO(1)", "LShift"], - ["OSL(1)", "LT(2, Kc9)", "LM(1, LShift | LGui)"] - ], - [ - ["_", "TT(1)", "TG(2)"], - ["_", "_", "_"], - ["_", "_", "_"], - ["_", "_", "_"] - ], -] +map = """ +(0,0) (0,1) (0,2) +(1,0) (1,1) (1,2) +(2,0) (2,1) (2,2) +(3,0) (3,1) (3,2) +""" + +[keymap] +layers = 3 + +[[keymap.layer]] # layer 0 +keys = """ +A B C +Kc1 Kc2 Kc3 +LCtrl MO(1) LShift +OSL(1) LT(2, Kc9) LM(1, LShift | LGui) +""" + +[[keymap.layer]] # layer 1 +keys = """ +_ TT(1) TG(2) +_ _ _ +_ _ _ +_ _ _ +""" [light] # All light pins are high-active by default, uncomment if you want it to be low-active @@ -45,5 +56,5 @@ capslock.low_active = false [storage] -# Storage feature is enabled by default +# Storage is enabled by default. # enabled = false \ No newline at end of file diff --git a/examples/use_config/stm32h7/Cargo.lock b/examples/use_config/stm32h7/Cargo.lock index 65a42a5a1..dbe5593bb 100644 --- a/examples/use_config/stm32h7/Cargo.lock +++ b/examples/use_config/stm32h7/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "ahash" version = "0.8.12" @@ -55,7 +61,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -69,9 +75,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "bare-metal" @@ -108,7 +114,7 @@ checksum = "3ca6739863c590881f038d033a146c51ddae239186a4327014839fd864f44ed5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -119,22 +125,13 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.11.0" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" +checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" dependencies = [ "serde_core", ] -[[package]] -name = "block-buffer" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" -dependencies = [ - "generic-array", -] - [[package]] name = "block-device-driver" version = "0.2.0" @@ -156,16 +153,16 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa61aec073ec94791433ddf3df2323ff9d1711557c2a0eefb0f99cb4f8dca520" dependencies = [ - "semver 1.0.27", + "semver 1.0.28", "serde", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] name = "cc" -version = "1.2.56" +version = "1.2.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2" +checksum = "f5d6cac793997bd970000024b2934968efe83b382de4fdcf4fcb46b6ee4ad996" dependencies = [ "find-msvc-tools", "shlex", @@ -188,9 +185,9 @@ dependencies = [ [[package]] name = "config" -version = "0.15.19" +version = "0.15.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b30fa8254caad766fc03cb0ccae691e14bf3bd72bfff27f72802ce729551b3d6" +checksum = "b85f248a4de22d204ceabc6299d89d2c70fbd7f09fea53c06c852369652d8139" dependencies = [ "async-trait", "convert_case", @@ -201,7 +198,7 @@ dependencies = [ "serde-untagged", "serde_core", "serde_json", - "toml 0.9.12+spec-1.1.0", + "toml", "winnow", "yaml-rust2", ] @@ -295,16 +292,7 @@ checksum = "e37549a379a9e0e6e576fd208ee60394ccb8be963889eebba3ffe0980364f472" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", -] - -[[package]] -name = "cpufeatures" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" -dependencies = [ - "libc", + "syn 2.0.118", ] [[package]] @@ -328,16 +316,6 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" -[[package]] -name = "crypto-common" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" -dependencies = [ - "generic-array", - "typenum", -] - [[package]] name = "darling" version = "0.20.11" @@ -369,7 +347,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -382,7 +360,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -393,7 +371,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -404,7 +382,7 @@ checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ "darling_core 0.23.0", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -413,14 +391,14 @@ version = "0.3.100" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0963443817029b2024136fc4dd07a5107eb8f977eaf18fcd1fdeb11306b64ad" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] name = "defmt" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "548d977b6da32fa1d1fda2876453da1e7df63ad0304c8b3dae4dbe7b96f39b78" +checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" dependencies = [ "bitflags 1.3.2", "defmt-macros", @@ -428,15 +406,14 @@ dependencies = [ [[package]] name = "defmt-macros" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d4fc12a85bcf441cfe44344c4b72d58493178ce635338a3f3b78943aceb258e" +checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" dependencies = [ "defmt-parser", - "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -450,22 +427,12 @@ dependencies = [ [[package]] name = "defmt-rtt" -version = "1.1.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d5a25c99d89c40f5676bec8cefe0614f17f0f40e916f98e345dae941807f9e" +checksum = "05144944c117db54127a8ac17a3c9a28d55e7047bfddb950bcd20b4a94c79b10" dependencies = [ "critical-section", - "defmt 1.0.1", -] - -[[package]] -name = "digest" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" -dependencies = [ - "block-buffer", - "crypto-common", + "defmt 1.1.1", ] [[package]] @@ -492,7 +459,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b0641612053b2f34fc250bb63f6630ae75de46e02ade7f457268447081d709ce" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embassy-futures", "embassy-hal-internal 0.4.0", "embassy-sync", @@ -514,7 +481,7 @@ dependencies = [ "cordyceps", "cortex-m", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-executor-macros", "embassy-executor-timer-queue", @@ -529,7 +496,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -561,7 +528,7 @@ checksum = "568659fc53866d3d85c60fa33723fb751aa69e71507634fc2c19e7649432fb75" dependencies = [ "cortex-m", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "num-traits", ] @@ -593,13 +560,13 @@ checksum = "486c0622deb5a519fc4d2cb8e3ef324f7568fcdfff201ff8fcab46557d663ceb" dependencies = [ "aligned", "bit_field", - "bitflags 2.11.0", + "bitflags 2.13.0", "block-device-driver", "cfg-if", "cortex-m", "cortex-m-rt", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -621,7 +588,7 @@ dependencies = [ "embedded-storage", "embedded-storage-async", "futures-util", - "heapless 0.9.2", + "heapless 0.9.3", "nb 1.1.0", "proc-macro2", "quote", @@ -645,11 +612,11 @@ checksum = "7bbd85cf5a5ae56bdf26f618364af642d1d0a4e245cdd75cd9aabda382f65a81" dependencies = [ "cfg-if", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io-async 0.7.0", "futures-core", "futures-sink", - "heapless 0.9.2", + "heapless 0.9.3", ] [[package]] @@ -660,7 +627,7 @@ checksum = "592b0c143ec626e821d4d90da51a2bd91d559d6c442b7c74a47d368c9e23d97a" dependencies = [ "cfg-if", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-time-driver", "embedded-hal 0.2.7", @@ -680,12 +647,12 @@ dependencies = [ [[package]] name = "embassy-time-queue-utils" -version = "0.3.0" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e2ee86063bd028a420a5fb5898c18c87a8898026da1d4c852af2c443d0a454" +checksum = "168297bf80aaf114b3c9ad589bf38b01b3009b9af7f97cd18086c5bbf96f5693" dependencies = [ "embassy-executor-timer-queue", - "heapless 0.8.0", + "heapless 0.9.3", ] [[package]] @@ -694,38 +661,41 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a25746d8b152b72fbf2a217f489a083dbbe243f281f09184a1f2cfbe9bbb245f" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "embassy-futures", "embassy-net-driver-channel", "embassy-sync", "embassy-time", "embassy-usb-driver", "embedded-io-async 0.7.0", - "heapless 0.9.2", + "heapless 0.9.3", "ssmarshal", "usbd-hid", ] [[package]] name = "embassy-usb-driver" -version = "0.2.0" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17119855ccc2d1f7470a39756b12068454ae27a3eabb037d940b5c03d9c77b7a" +checksum = "fa675c5f4349b6aa0fcffc4bf9b241f18cd11b97c1f8323273fb9a5449937fbd" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io-async 0.6.1", + "embedded-io-async 0.7.0", ] [[package]] name = "embassy-usb-synopsys-otg" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbe46f4083109c7ea12a03ca61095d1e87c76fec52c7ca9ee06a42935606dacb" +checksum = "fb205e26d59e483e8c48f91f637ec217ec7e2cfb0b61d50482301b991b4ff431" dependencies = [ "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-sync", + "embassy-time", "embassy-usb-driver", + "portable-atomic", ] [[package]] @@ -772,6 +742,12 @@ dependencies = [ "nb 1.1.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -784,7 +760,7 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9eb1aa714776b75c7e67e1da744b81a129b3ff919c8712b5e1b32252c1f07cc7" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -802,7 +778,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2564b9f813c544241430e147d8bc454815ef9ac998878d30cc3055449f7fd4c0" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io 0.7.1", ] @@ -844,9 +820,9 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "erased-serde" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e8918065695684b2b0702da20382d5ae6065cf3327bc2d6436bd49a71ce9f3" +checksum = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec" dependencies = [ "serde", "serde_core", @@ -867,9 +843,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foldhash" -version = "0.1.5" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" [[package]] name = "futures" @@ -915,7 +891,7 @@ checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -945,9 +921,9 @@ dependencies = [ [[package]] name = "generator" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52f04ae4152da20c76fe800fa48659201d5cf627c5149ca0b707b69d7eef6cf9" +checksum = "b3b854b0e584ead1a33f18b2fcad7cf7be18b3875c78816b753639aa501513ae" dependencies = [ "cc", "cfg-if", @@ -958,16 +934,6 @@ dependencies = [ "windows-result", ] -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", -] - [[package]] name = "getrandom" version = "0.2.17" @@ -1014,26 +980,26 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hashbrown" -version = "0.15.5" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" dependencies = [ "foldhash", ] [[package]] name = "hashbrown" -version = "0.16.1" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" [[package]] name = "hashlink" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" +checksum = "824e001ac4f3012dd16a264bec811403a67ca9deb6c102fc5049b32c4574b35f" dependencies = [ - "hashbrown 0.15.5", + "hashbrown 0.16.1", ] [[package]] @@ -1062,9 +1028,9 @@ dependencies = [ [[package]] name = "heapless" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af2455f757db2b292a9b1768c4b70186d443bcb3b316252d6b540aec1cd89ed" +checksum = "25ba4bd83f9415b58b4ed8dc5714c76e626a105be4646c02630ad730ad3b5aa4" dependencies = [ "hash32 0.3.1", "serde_core", @@ -1085,19 +1051,19 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "indexmap" -version = "2.13.0" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.16.1", + "hashbrown 0.17.1", ] [[package]] name = "itoa" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "json" @@ -1124,9 +1090,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.182" +version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "litrs" @@ -1145,9 +1111,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.29" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" [[package]] name = "loom" @@ -1184,9 +1150,18 @@ dependencies = [ [[package]] name = "memchr" -version = "2.8.0" +version = "2.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" + +[[package]] +name = "miniz_oxide" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] [[package]] name = "nb" @@ -1223,9 +1198,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.21.3" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] name = "ordered-multimap" @@ -1244,7 +1219,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd402d00b0fb94c5aee000029204a46884b1262e0c443f166d86d2c0747e1a1a" dependencies = [ "cortex-m", - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -1261,9 +1236,9 @@ checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" [[package]] name = "pest" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662" +checksum = "47627dd7305c6a2d6c8c6bcd24c5a4c17dbbf425f4f9c5313e724b38fc9782e9" dependencies = [ "memchr", "ucd-trie", @@ -1271,9 +1246,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77" +checksum = "4b4254325ecad416ab689e27ba51da03ba01a9632bc6e108f5fe7c3c4ad29d58" dependencies = [ "pest", "pest_generator", @@ -1281,38 +1256,37 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f" +checksum = "6c4c0e91ead7a8f7acecbca6f003fc2e8282b1dbe2dd9c9d2f16aba42995e0a7" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "pest_meta" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220" +checksum = "f9744bc48116fee06334924bb5f2bad41eed5e89bd26e29b0b799f9a3f82c210" dependencies = [ "pest", - "sha2", ] [[package]] name = "pin-project-lite" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pkg-config" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" [[package]] name = "portable-atomic" @@ -1327,6 +1301,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -1340,29 +1316,7 @@ checksum = "e0232bd009a197ceec9cc881ba46f727fcd8060a2d8d6a9dde7a69030a6fe2bb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", -] - -[[package]] -name = "proc-macro-error-attr2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "proc-macro-error2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" -dependencies = [ - "proc-macro-error-attr2", - "proc-macro2", - "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1376,9 +1330,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.44" +version = "1.0.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" +checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" dependencies = [ "proc-macro2", ] @@ -1397,9 +1351,9 @@ checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" [[package]] name = "regex" -version = "1.12.3" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +checksum = "2a0e75113e14dc5acb068cd0786884f214f1312650a3d36d269f5c4f3cdee8a2" dependencies = [ "aho-corasick", "memchr", @@ -1409,9 +1363,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +checksum = "1f388202e4b80542a0921078cc23b6333bcf1409c1e3f86404cae4766a6131db" dependencies = [ "aho-corasick", "memchr", @@ -1420,9 +1374,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rmk" @@ -1438,8 +1392,9 @@ dependencies = [ "embassy-usb", "embedded-hal 1.0.0", "embedded-hal-async", + "embedded-io-async 0.7.0", "futures", - "heapless 0.9.2", + "heapless 0.9.3", "paste", "postcard", "rmk-macro", @@ -1455,13 +1410,15 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] @@ -1475,7 +1432,7 @@ dependencies = [ "rmk-config", "rmk-types", "strum", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1485,7 +1442,7 @@ dependencies = [ "const-gen", "cortex-m", "cortex-m-rt", - "defmt 1.0.1", + "defmt 1.1.1", "defmt-rtt", "embassy-executor", "embassy-stm32", @@ -1502,21 +1459,21 @@ name = "rmk-types" version = "0.2.2" dependencies = [ "bitfield-struct", - "heapless 0.9.2", + "heapless 0.9.3", "postcard", "rmk-config", "serde", "strum", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] name = "ron" -version = "0.12.0" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd490c5b18261893f14449cbd28cb9c0b637aebf161cd77900bfdedaff21ec32" +checksum = "81116b9531d61eabc41aeb228e4b6b2435bcca3233b98cf3b3077d4e6e9debb3" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "once_cell", "serde", "serde_derive", @@ -1549,14 +1506,14 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.27", + "semver 1.0.28", ] [[package]] name = "rustversion" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] name = "scoped-tls" @@ -1587,9 +1544,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.27" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" dependencies = [ "serde", "serde_core", @@ -1603,9 +1560,9 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "sequential-storage" -version = "7.1.0" +version = "7.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4580ee0fa08cd41bee9f5b50ed309877e18735370fd4eef5766cc82863ef772" +checksum = "574e5a379bf43653079b34cb4cf32958404b5f42e0ed5b5adcdff02c2de04d4d" dependencies = [ "embedded-storage-async", "postcard", @@ -1630,7 +1587,7 @@ checksum = "2bf03b7a5281cfd4013bc788d057b0f09fc634397d83bc8973c955bd4f32727a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1662,14 +1619,14 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "serde_json" -version = "1.0.149" +version = "1.0.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" dependencies = [ "itoa", "memchr", @@ -1680,24 +1637,13 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "1.0.4" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" dependencies = [ "serde_core", ] -[[package]] -name = "sha2" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - [[package]] name = "sharded-slab" version = "0.1.7" @@ -1709,15 +1655,15 @@ dependencies = [ [[package]] name = "shlex" -version = "1.3.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" [[package]] name = "smallvec" -version = "1.15.1" +version = "1.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" [[package]] name = "spin" @@ -1803,7 +1749,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1819,9 +1765,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.117" +version = "2.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" dependencies = [ "proc-macro2", "quote", @@ -1845,7 +1791,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1868,27 +1814,14 @@ dependencies = [ [[package]] name = "toml" -version = "0.9.12+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" -dependencies = [ - "serde_core", - "serde_spanned", - "toml_datetime 0.7.5+spec-1.1.0", - "toml_parser", - "winnow", -] - -[[package]] -name = "toml" -version = "1.0.3+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7614eaf19ad818347db24addfa201729cf2a9b6fdfd9eb0ab870fcacc606c0c" +checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee" dependencies = [ "indexmap", "serde_core", "serde_spanned", - "toml_datetime 1.0.0+spec-1.1.0", + "toml_datetime", "toml_parser", "toml_writer", "winnow", @@ -1896,36 +1829,27 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.7.5+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" -dependencies = [ - "serde_core", -] - -[[package]] -name = "toml_datetime" -version = "1.0.0+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32c2555c699578a4f59f0cc68e5116c8d7cabbd45e1409b989d4be085b53f13e" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" dependencies = [ "serde_core", ] [[package]] name = "toml_parser" -version = "1.0.9+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ "winnow", ] [[package]] name = "toml_writer" -version = "1.0.6+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" +checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" [[package]] name = "tracing" @@ -1946,7 +1870,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2005,12 +1929,6 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" -[[package]] -name = "typenum" -version = "1.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" - [[package]] name = "ucd-trie" version = "0.1.7" @@ -2025,9 +1943,9 @@ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-segmentation" -version = "1.12.0" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" [[package]] name = "usb-device" @@ -2070,7 +1988,7 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.117", + "syn 2.0.118", "usbd-hid-descriptors", ] @@ -2139,9 +2057,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.14" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" +checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" dependencies = [ "memchr", ] @@ -2157,9 +2075,9 @@ dependencies = [ [[package]] name = "yaml-rust2" -version = "0.10.4" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2462ea039c445496d8793d052e13787f2b90e750b833afee748e601c17621ed9" +checksum = "631a50d867fafb7093e709d75aaee9e0e0d5deb934021fcea25ac2fe09edc51e" dependencies = [ "arraydeque", "encoding_rs", @@ -2168,22 +2086,22 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.39" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db6d35d663eadb6c932438e763b262fe1a70987f9ae936e60158176d710cae4a" +checksum = "b7cbbc0a705a0fd05cc3676525980d2bf5a9bc4adac6d6475209a7887cf59d19" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.39" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4122cd3169e94605190e77839c9a40d40ed048d305bfdc146e7df40ab0f3e517" +checksum = "e2e817b7b52d0c7358d3246da9d69935ebb18116b2b102b4230dac079b4862f5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] diff --git a/examples/use_config/stm32h7/keyboard.toml b/examples/use_config/stm32h7/keyboard.toml index 53678a101..844fddae8 100644 --- a/examples/use_config/stm32h7/keyboard.toml +++ b/examples/use_config/stm32h7/keyboard.toml @@ -1,4 +1,5 @@ [keyboard] +# Replace with your keyboard identity. name = "RMK Keyboard" product_name = "My RMK Keyboard" vendor_id = 0x4c4b @@ -7,30 +8,40 @@ manufacturer = "haobo" chip = "stm32h7b0vb" [matrix] -# Row and col pins are mandatory +# Matrix pins are required. row_pins = ["PD9", "PD8", "PB13", "PB12"] col_pins = ["PE13", "PE14", "PE15"] -# RMK uses col2row as the default matrix diode direction, if you want to use a row2col matrix, add `row2col = true` +# Default diode direction is col2row; set `row2col = true` if needed. # row2col = true [layout] rows = 4 cols = 3 -layers = 2 -keymap = [ - [ - ["A", "B", "C"], - ["Kc1", "Kc2", "Kc3"], - ["LCtrl", "MO(1)", "LShift"], - ["OSL(1)", "LT(2, Kc9)", "LM(1, LShift | LGui)"] - ], - [ - ["_", "TT(1)", "TG(2)"], - ["_", "_", "_"], - ["_", "_", "_"], - ["_", "_", "_"] - ], -] +map = """ +(0,0) (0,1) (0,2) +(1,0) (1,1) (1,2) +(2,0) (2,1) (2,2) +(3,0) (3,1) (3,2) +""" + +[keymap] +layers = 3 + +[[keymap.layer]] +keys = """ +A B C +Kc1 Kc2 Kc3 +LCtrl MO(1) LShift +OSL(1) LT(2, Kc9) LM(1, LShift | LGui) +""" + +[[keymap.layer]] +keys = """ +_ TT(1) TG(2) +_ _ _ +_ _ _ +_ _ _ +""" [light] # All light pins are high-active by default, uncomment if you want it to be low-active @@ -43,7 +54,7 @@ scrolllock.low_active = false # numslock.low_active = true [storage] -# Storage feature is enabled by default +# Storage is enabled by default. enabled = false [dependency] diff --git a/examples/use_config/stm32h7/src/main.rs b/examples/use_config/stm32h7/src/main.rs index 36195503b..420d9bb9c 100644 --- a/examples/use_config/stm32h7/src/main.rs +++ b/examples/use_config/stm32h7/src/main.rs @@ -81,10 +81,10 @@ mod my_keyboard { // Use `#[Override(entry)]` to override default rmk keyboard runner #[Override(entry)] fn run() { - let mut usb_transport = UsbTransport::new(driver, rmk_config.device_config); + let mut usb_transport = UsbTransport::new(driver, rmk_config.device_config).with_host_service(&host_service); let mut wpm_processor = WpmProcessor::new(); // Start - run_all!(matrix, usb_transport, wpm_processor, keyboard, host_service).await; + run_all!(matrix, usb_transport, wpm_processor, keyboard).await; } } diff --git a/examples/use_rust/custom_renderer/Cargo.lock b/examples/use_rust/custom_renderer/Cargo.lock index 75bc8af6f..1cd2d6b5f 100644 --- a/examples/use_rust/custom_renderer/Cargo.lock +++ b/examples/use_rust/custom_renderer/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -640,6 +646,12 @@ dependencies = [ "embedded-hal 1.0.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -1072,6 +1084,15 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3c8dda44ff03a2f238717214da50f65d5a53b45cd213a7370424ffdb6fae815" +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] + [[package]] name = "nb" version = "0.1.3" @@ -1196,6 +1217,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -1310,10 +1333,12 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", "toml", diff --git a/examples/use_rust/esp32c3_ble/Cargo.lock b/examples/use_rust/esp32c3_ble/Cargo.lock index 5c3d6a65b..8f2e2faa1 100644 --- a/examples/use_rust/esp32c3_ble/Cargo.lock +++ b/examples/use_rust/esp32c3_ble/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -885,6 +891,12 @@ dependencies = [ "embedded-hal 1.0.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -1832,6 +1844,15 @@ version = "2.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4" +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] + [[package]] name = "nb" version = "0.1.3" @@ -2012,6 +2033,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -2237,6 +2260,7 @@ dependencies = [ "embassy-usb", "embedded-hal 1.0.0", "embedded-hal-async", + "embedded-io-async 0.7.0", "embedded-storage", "embedded-storage-async", "esp-hal", @@ -2259,10 +2283,12 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", "toml", diff --git a/examples/use_rust/esp32c3_ble/src/main.rs b/examples/use_rust/esp32c3_ble/src/main.rs index 74ad7edb6..8f591e95c 100644 --- a/examples/use_rust/esp32c3_ble/src/main.rs +++ b/examples/use_rust/esp32c3_ble/src/main.rs @@ -88,11 +88,12 @@ async fn main(_s: Spawner) { let mut matrix = Matrix::<_, _, _, ROW, COL, true>::new(row_pins, col_pins, debouncer); // let mut matrix = rmk::matrix::TestMatrix::::new(); let mut keyboard = Keyboard::new(&keymap); // Initialize the light controller - let host_ctx = rmk::host::KeyboardContext::new(&keymap); - let mut host_service = HostService::new(&host_ctx, &rmk_config); + let host_service = HostService::new(&keymap, &rmk_config); - let mut ble_transport = BleTransport::new(&stack, rmk_config).await; + let mut ble_transport = BleTransport::new(&stack, rmk_config) + .await + .with_host_service(&host_service); let mut wpm_processor = WpmProcessor::new(); - run_all!(matrix, storage, ble_transport, wpm_processor, keyboard, host_service).await; + run_all!(matrix, storage, ble_transport, wpm_processor, keyboard).await; } diff --git a/examples/use_rust/esp32c6_ble/Cargo.lock b/examples/use_rust/esp32c6_ble/Cargo.lock index c1db248d4..c4992dbe5 100644 --- a/examples/use_rust/esp32c6_ble/Cargo.lock +++ b/examples/use_rust/esp32c6_ble/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -885,6 +891,12 @@ dependencies = [ "embedded-hal 1.0.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -1833,6 +1845,15 @@ version = "2.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4" +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] + [[package]] name = "nb" version = "0.1.3" @@ -2022,6 +2043,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -2247,6 +2270,7 @@ dependencies = [ "embassy-usb", "embedded-hal 1.0.0", "embedded-hal-async", + "embedded-io-async 0.7.0", "embedded-storage", "embedded-storage-async", "esp-hal", @@ -2269,10 +2293,12 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", "toml", diff --git a/examples/use_rust/esp32c6_ble/src/main.rs b/examples/use_rust/esp32c6_ble/src/main.rs index 99db991b8..e1e08f9b9 100644 --- a/examples/use_rust/esp32c6_ble/src/main.rs +++ b/examples/use_rust/esp32c6_ble/src/main.rs @@ -88,11 +88,12 @@ async fn main(_s: Spawner) { let mut matrix = Matrix::<_, _, _, ROW, COL, true>::new(row_pins, col_pins, debouncer); // let mut matrix = rmk::matrix::TestMatrix::::new(); let mut keyboard = Keyboard::new(&keymap); // Initialize the light controller - let host_ctx = rmk::host::KeyboardContext::new(&keymap); - let mut host_service = HostService::new(&host_ctx, &rmk_config); + let host_service = HostService::new(&keymap, &rmk_config); - let mut ble_transport = BleTransport::new(&stack, rmk_config).await; + let mut ble_transport = BleTransport::new(&stack, rmk_config) + .await + .with_host_service(&host_service); let mut wpm_processor = WpmProcessor::new(); - run_all!(matrix, storage, ble_transport, wpm_processor, keyboard, host_service).await; + run_all!(matrix, storage, ble_transport, wpm_processor, keyboard).await; } diff --git a/examples/use_rust/esp32h2_ble/Cargo.lock b/examples/use_rust/esp32h2_ble/Cargo.lock index 6812d3d3c..547d2e685 100644 --- a/examples/use_rust/esp32h2_ble/Cargo.lock +++ b/examples/use_rust/esp32h2_ble/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -885,6 +891,12 @@ dependencies = [ "embedded-hal 1.0.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -1838,6 +1850,15 @@ version = "2.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4" +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] + [[package]] name = "nb" version = "0.1.3" @@ -2018,6 +2039,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -2243,6 +2266,7 @@ dependencies = [ "embassy-usb", "embedded-hal 1.0.0", "embedded-hal-async", + "embedded-io-async 0.7.0", "embedded-storage", "embedded-storage-async", "esp-hal", @@ -2265,10 +2289,12 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", "toml", diff --git a/examples/use_rust/esp32h2_ble/src/main.rs b/examples/use_rust/esp32h2_ble/src/main.rs index 5d2be09e5..3b711b793 100644 --- a/examples/use_rust/esp32h2_ble/src/main.rs +++ b/examples/use_rust/esp32h2_ble/src/main.rs @@ -89,11 +89,12 @@ async fn main(_s: Spawner) { let mut matrix = Matrix::<_, _, _, ROW, COL, true>::new(row_pins, col_pins, debouncer); // let mut matrix = rmk::matrix::TestMatrix::::new(); let mut keyboard = Keyboard::new(&keymap); // Initialize the light controller - let host_ctx = rmk::host::KeyboardContext::new(&keymap); - let mut host_service = HostService::new(&host_ctx, &rmk_config); + let host_service = HostService::new(&keymap, &rmk_config); - let mut ble_transport = BleTransport::new(&stack, rmk_config).await; + let mut ble_transport = BleTransport::new(&stack, rmk_config) + .await + .with_host_service(&host_service); let mut wpm_processor = WpmProcessor::new(); - run_all!(matrix, storage, ble_transport, wpm_processor, keyboard, host_service).await; + run_all!(matrix, storage, ble_transport, wpm_processor, keyboard).await; } diff --git a/examples/use_rust/esp32s3_ble/Cargo.lock b/examples/use_rust/esp32s3_ble/Cargo.lock index a3e2c85b8..2aed36983 100644 --- a/examples/use_rust/esp32s3_ble/Cargo.lock +++ b/examples/use_rust/esp32s3_ble/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -42,9 +48,9 @@ checksum = "c583acf993cf4245c4acb0a2cc2ab1f9cc097de73411bb6d3647ff6af2b1013d" [[package]] name = "anyhow" -version = "1.0.102" +version = "1.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" +checksum = "2a4385e2e34eb35d6b3efe798b9eb88096925d87726c0798709bf56d9ed84af3" [[package]] name = "arraydeque" @@ -222,9 +228,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.65" +version = "1.2.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e228eec9be7c17ccb640b59b36a5cd805ea2a564a4c5e162c2f659fea30d3b96" +checksum = "f5d6cac793997bd970000024b2934968efe83b382de4fdcf4fcb46b6ee4ad996" dependencies = [ "find-msvc-tools", "shlex 2.0.1", @@ -268,9 +274,9 @@ dependencies = [ [[package]] name = "config" -version = "0.15.24" +version = "0.15.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b34d0237145f33580b89724f75d16950efd3e2c91b2d823917ecb69ec7f84f0" +checksum = "b85f248a4de22d204ceabc6299d89d2c70fbd7f09fea53c06c852369652d8139" dependencies = [ "async-trait", "convert_case 0.6.0", @@ -544,9 +550,9 @@ dependencies = [ [[package]] name = "defmt" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6e524506490a1953d237cb87b1cfc1e46f88c18f10a22dfe0f507dc6bfc7f7f" +checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" dependencies = [ "bitflags 1.3.2", "defmt-macros", @@ -554,12 +560,11 @@ dependencies = [ [[package]] name = "defmt-macros" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0a27770e9c8f719a79d8b638281f4d828f77d8fd61e0bd94451b9b85e576a0b" +checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" dependencies = [ "defmt-parser", - "proc-macro-error2", "proc-macro2", "quote", "syn 2.0.118", @@ -898,6 +903,12 @@ dependencies = [ "embedded-hal 1.0.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -1730,9 +1741,9 @@ checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "jiff" -version = "0.2.29" +version = "0.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34f877a98676d2fb664698d74cc6a51ce6c484ce8c770f05d0108ec9090aeb46" +checksum = "961d16382652bfdd8c6f68b223b26a8c93e0d475c672f414411db31c6c5c900e" dependencies = [ "defmt", "jiff-static", @@ -1744,9 +1755,9 @@ dependencies = [ [[package]] name = "jiff-static" -version = "0.2.29" +version = "0.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0666b5ab5ecaca213fc2a85b8c0083d9004e84ee2d5f9a7e0017aaf50986f25f" +checksum = "d0879bd39df99c4c5e2c6615ccc026391a423dde10532c573e6086eb94a802cc" dependencies = [ "proc-macro2", "quote", @@ -1755,9 +1766,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.102" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03d04c30968dffe80775bd4d7fb676131cd04a1fb46d2686dbffbaec2d9dfd31" +checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ "cfg-if", "futures-util", @@ -1855,9 +1866,18 @@ dependencies = [ [[package]] name = "memchr" -version = "2.8.2" +version = "2.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" + +[[package]] +name = "miniz_oxide" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] [[package]] name = "nb" @@ -1952,9 +1972,9 @@ checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" [[package]] name = "pest" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662" +checksum = "47627dd7305c6a2d6c8c6bcd24c5a4c17dbbf425f4f9c5313e724b38fc9782e9" dependencies = [ "memchr", "ucd-trie", @@ -1962,9 +1982,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77" +checksum = "4b4254325ecad416ab689e27ba51da03ba01a9632bc6e108f5fe7c3c4ad29d58" dependencies = [ "pest", "pest_generator", @@ -1972,9 +1992,9 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f" +checksum = "6c4c0e91ead7a8f7acecbca6f003fc2e8282b1dbe2dd9c9d2f16aba42995e0a7" dependencies = [ "pest", "pest_meta", @@ -1985,12 +2005,11 @@ dependencies = [ [[package]] name = "pest_meta" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220" +checksum = "f9744bc48116fee06334924bb5f2bad41eed5e89bd26e29b0b799f9a3f82c210" dependencies = [ "pest", - "sha2", ] [[package]] @@ -2048,6 +2067,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -2091,28 +2112,6 @@ dependencies = [ "toml_edit", ] -[[package]] -name = "proc-macro-error-attr2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "proc-macro-error2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" -dependencies = [ - "proc-macro-error-attr2", - "proc-macro2", - "quote", - "syn 2.0.118", -] - [[package]] name = "proc-macro2" version = "1.0.106" @@ -2170,9 +2169,9 @@ checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" [[package]] name = "regex-automata" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +checksum = "1f388202e4b80542a0921078cc23b6333bcf1409c1e3f86404cae4766a6131db" dependencies = [ "aho-corasick", "memchr", @@ -2273,6 +2272,7 @@ dependencies = [ "embassy-usb", "embedded-hal 1.0.0", "embedded-hal-async", + "embedded-io-async 0.7.0", "embedded-storage", "embedded-storage-async", "esp-hal", @@ -2295,10 +2295,12 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", "toml", @@ -2397,9 +2399,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] name = "ryu" @@ -2562,17 +2564,6 @@ dependencies = [ "unsafe-libyaml", ] -[[package]] -name = "sha2" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - [[package]] name = "sharded-slab" version = "0.1.7" @@ -3056,9 +3047,9 @@ dependencies = [ [[package]] name = "uuid" -version = "1.23.3" +version = "1.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "144d6b123cef80b301b8f72a9e2ca4370ddec21950d0a103dd22c437006d2db7" +checksum = "bf80a72845275afea99e7f2b434723d3bc7e38470fcd1c7ed39a599c73319a53" dependencies = [ "js-sys", "wasm-bindgen", @@ -3105,9 +3096,9 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasm-bindgen" -version = "0.2.125" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ddb3f79143bced6de84270411622a2699cee572fc0875aeaf1e7867cf9fca1a" +checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" dependencies = [ "cfg-if", "once_cell", @@ -3118,9 +3109,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.125" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e21a184b13fb19e157296e2c46056aec9092264fab83e4ba59e68c61b323c3d" +checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3128,9 +3119,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.125" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fecefd9c35bd935a20fc3fc344b5f29138961e4f47fb03297d88f2587afb5ebd" +checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" dependencies = [ "bumpalo", "proc-macro2", @@ -3141,9 +3132,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.125" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23939e44bb9a5d7576fa2b563dc2e136628f1224e88a8deed09e04858b77871f" +checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" dependencies = [ "unicode-ident", ] @@ -3240,18 +3231,18 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.52" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce1022995ff5ff5d841ad7d994facc23098cd40152f2c1d11cd607c6f530653f" +checksum = "b7cbbc0a705a0fd05cc3676525980d2bf5a9bc4adac6d6475209a7887cf59d19" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.52" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ae7f38b72ec2a254e2b87ef277cf2cd4fb97cbebf944faa6f33354da0867930" +checksum = "e2e817b7b52d0c7358d3246da9d69935ebb18116b2b102b4230dac079b4862f5" dependencies = [ "proc-macro2", "quote", diff --git a/examples/use_rust/esp32s3_ble/src/main.rs b/examples/use_rust/esp32s3_ble/src/main.rs index 650b44d19..94560db83 100644 --- a/examples/use_rust/esp32s3_ble/src/main.rs +++ b/examples/use_rust/esp32s3_ble/src/main.rs @@ -100,21 +100,13 @@ async fn main(_s: Spawner) { let mut matrix = Matrix::<_, _, _, ROW, COL, true>::new(row_pins, col_pins, debouncer); // let mut matrix = rmk::matrix::TestMatrix::::new(); let mut keyboard = Keyboard::new(&keymap); // Initialize the light controller - let host_ctx = rmk::host::KeyboardContext::new(&keymap); - let mut host_service = HostService::new(&host_ctx, &rmk_config); + let host_service = HostService::new(&keymap, &rmk_config); - let mut usb_transport = UsbTransport::new(usb_driver, rmk_config.device_config); - let mut ble_transport = BleTransport::new(&stack, rmk_config).await; + let mut usb_transport = UsbTransport::new(usb_driver, rmk_config.device_config).with_host_service(&host_service); + let mut ble_transport = BleTransport::new(&stack, rmk_config) + .await + .with_host_service(&host_service); let mut wpm_processor = WpmProcessor::new(); - run_all!( - matrix, - storage, - usb_transport, - ble_transport, - wpm_processor, - keyboard, - host_service - ) - .await; + run_all!(matrix, storage, usb_transport, ble_transport, wpm_processor, keyboard).await; } diff --git a/examples/use_rust/nrf52832_ble/Cargo.lock b/examples/use_rust/nrf52832_ble/Cargo.lock index deefa9c18..193d56da9 100644 --- a/examples/use_rust/nrf52832_ble/Cargo.lock +++ b/examples/use_rust/nrf52832_ble/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -915,6 +921,12 @@ dependencies = [ "embedded-hal 1.0.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -1455,6 +1467,15 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] + [[package]] name = "nb" version = "0.1.3" @@ -1725,6 +1746,8 @@ checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", "defmt 1.0.1", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -1914,10 +1937,12 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", "toml 1.0.3+spec-1.1.0", diff --git a/examples/use_rust/nrf52832_ble/Cargo.toml b/examples/use_rust/nrf52832_ble/Cargo.toml index 2b58a2d04..0bef24fbf 100644 --- a/examples/use_rust/nrf52832_ble/Cargo.toml +++ b/examples/use_rust/nrf52832_ble/Cargo.toml @@ -10,7 +10,7 @@ edition = "2024" license = "MIT OR Apache-2.0" [dependencies] -rmk = { path = "../../../rmk", features = ["async_matrix", "nrf52832_ble"] } +rmk = { path = "../../../rmk", default-features = false, features = ["defmt", "storage", "vial", "watchdog", "async_matrix", "nrf52832_ble"] } nrf-sdc = { git = "https://github.com/alexmoon/nrf-sdc", rev = "abe49d22ebfc85fae134eb082fbfddf752016a55", features = [ "defmt", "peripheral", diff --git a/examples/use_rust/nrf52832_ble/src/main.rs b/examples/use_rust/nrf52832_ble/src/main.rs index a92c014b5..fbd59b5e4 100644 --- a/examples/use_rust/nrf52832_ble/src/main.rs +++ b/examples/use_rust/nrf52832_ble/src/main.rs @@ -157,22 +157,14 @@ async fn main(spawner: Spawner) { let mut matrix = Matrix::<_, _, _, ROW, COL, true>::new(row_pins, col_pins, debouncer); // let mut matrix = TestMatrix::::new(); let mut keyboard = Keyboard::new(&keymap); - let host_ctx = rmk::host::KeyboardContext::new(&keymap); - let mut host_service = HostService::new(&host_ctx, &rmk_config); + let host_service = HostService::new(&keymap, &rmk_config); - let mut ble_transport = BleTransport::new(&stack, rmk_config).await; + let mut ble_transport = BleTransport::new(&stack, rmk_config) + .await + .with_host_service(&host_service); let mut wpm_processor = WpmProcessor::new(); let mut watchdog_runner = Nrf52Watchdog::default_runner(p.WDT); - run_all!( - matrix, - storage, - ble_transport, - wpm_processor, - keyboard, - host_service, - watchdog_runner - ) - .await; + run_all!(matrix, storage, ble_transport, wpm_processor, keyboard, watchdog_runner).await; } diff --git a/examples/use_rust/nrf52840/Cargo.lock b/examples/use_rust/nrf52840/Cargo.lock index 666030dac..56c8b5035 100644 --- a/examples/use_rust/nrf52840/Cargo.lock +++ b/examples/use_rust/nrf52840/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -861,6 +867,12 @@ dependencies = [ "embedded-hal 1.0.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -1370,6 +1382,15 @@ version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] + [[package]] name = "nb" version = "0.1.3" @@ -1530,6 +1551,8 @@ checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", "defmt 1.0.1", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -1697,10 +1720,12 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", "toml 1.0.3+spec-1.1.0", diff --git a/examples/use_rust/nrf52840/Cargo.toml b/examples/use_rust/nrf52840/Cargo.toml index 8fd7d5131..b766f1e3f 100644 --- a/examples/use_rust/nrf52840/Cargo.toml +++ b/examples/use_rust/nrf52840/Cargo.toml @@ -10,7 +10,7 @@ edition = "2024" license = "MIT OR Apache-2.0" [dependencies] -rmk = { path = "../../../rmk" } +rmk = { path = "../../../rmk", default-features = false, features = ["defmt", "storage", "vial", "watchdog"] } cortex-m = { version = "0.7.7", features = ["critical-section-single-core"] } cortex-m-rt = "0.7.5" embassy-time = { version = "0.5", features = ["tick-hz-32_768", "defmt"] } diff --git a/examples/use_rust/nrf52840/src/main.rs b/examples/use_rust/nrf52840/src/main.rs index 17b0297d9..81c804ac9 100644 --- a/examples/use_rust/nrf52840/src/main.rs +++ b/examples/use_rust/nrf52840/src/main.rs @@ -81,12 +81,11 @@ async fn main(_spawner: Spawner) { let debouncer = DefaultDebouncer::new(); let mut matrix = Matrix::<_, _, _, ROW, COL, true>::new(row_pins, col_pins, debouncer); let mut keyboard = Keyboard::new(&keymap); - let host_ctx = rmk::host::KeyboardContext::new(&keymap); - let mut host_service = HostService::new(&host_ctx, &rmk_config); + let host_service = HostService::new(&keymap, &rmk_config); - let mut usb_transport = UsbTransport::new(driver, rmk_config.device_config); + let mut usb_transport = UsbTransport::new(driver, rmk_config.device_config).with_host_service(&host_service); let mut wpm_processor = WpmProcessor::new(); // Start - run_all!(matrix, storage, usb_transport, wpm_processor, keyboard, host_service).await; + run_all!(matrix, storage, usb_transport, wpm_processor, keyboard).await; } diff --git a/examples/use_rust/nrf52840_ble/Cargo.lock b/examples/use_rust/nrf52840_ble/Cargo.lock index 74402c652..8101125d9 100644 --- a/examples/use_rust/nrf52840_ble/Cargo.lock +++ b/examples/use_rust/nrf52840_ble/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -915,6 +921,12 @@ dependencies = [ "embedded-hal 1.0.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -1455,6 +1467,15 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] + [[package]] name = "nb" version = "0.1.3" @@ -1721,6 +1742,8 @@ checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", "defmt 1.0.1", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -1910,10 +1933,12 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", "toml 1.0.3+spec-1.1.0", diff --git a/examples/use_rust/nrf52840_ble/Cargo.toml b/examples/use_rust/nrf52840_ble/Cargo.toml index 9b3d163c1..68ffb11a9 100644 --- a/examples/use_rust/nrf52840_ble/Cargo.toml +++ b/examples/use_rust/nrf52840_ble/Cargo.toml @@ -10,11 +10,7 @@ edition = "2024" license = "MIT OR Apache-2.0" [dependencies] -rmk = { path = "../../../rmk", features = [ - "async_matrix", - "nrf52840_ble", - "adafruit_bl", -] } +rmk = { path = "../../../rmk", default-features = false, features = ["defmt", "storage", "vial", "watchdog", "async_matrix", "nrf52840_ble", "adafruit_bl"] } nrf-sdc = { git = "https://github.com/alexmoon/nrf-sdc", rev = "abe49d22ebfc85fae134eb082fbfddf752016a55", features = [ "defmt", "peripheral", diff --git a/examples/use_rust/nrf52840_ble/src/main.rs b/examples/use_rust/nrf52840_ble/src/main.rs index fe5970f6f..4285d89b5 100644 --- a/examples/use_rust/nrf52840_ble/src/main.rs +++ b/examples/use_rust/nrf52840_ble/src/main.rs @@ -196,8 +196,7 @@ async fn main(spawner: Spawner) { let mut matrix = Matrix::<_, _, _, ROW, COL, true>::new(row_pins, col_pins, debouncer); // let mut matrix = TestMatrix::::new(); let mut keyboard = Keyboard::new(&keymap); - let host_ctx = rmk::host::KeyboardContext::new(&keymap); - let mut host_service = HostService::new(&host_ctx, &rmk_config); + let host_service = HostService::new(&keymap, &rmk_config); // Initialize the encoder let pin_a = Input::new(p.P1_06, embassy_nrf::gpio::Pull::None); @@ -213,8 +212,10 @@ async fn main(spawner: Spawner) { ); let mut batt_proc = BatteryProcessor::new(2000, 2806); - let mut usb_transport = UsbTransport::new(driver, rmk_config.device_config); - let mut ble_transport = BleTransport::new(&stack, rmk_config).await; + let mut usb_transport = UsbTransport::new(driver, rmk_config.device_config).with_host_service(&host_service); + let mut ble_transport = BleTransport::new(&stack, rmk_config) + .await + .with_host_service(&host_service); let mut wpm_processor = WpmProcessor::new(); let mut watchdog_runner = Nrf52Watchdog::default_runner(p.WDT); @@ -229,7 +230,6 @@ async fn main(spawner: Spawner) { wpm_processor, batt_proc, keyboard, - host_service, watchdog_runner ) .await; diff --git a/examples/use_rust/nrf52840_ble_split/Cargo.lock b/examples/use_rust/nrf52840_ble_split/Cargo.lock index abe028010..3c48b9a3f 100644 --- a/examples/use_rust/nrf52840_ble_split/Cargo.lock +++ b/examples/use_rust/nrf52840_ble_split/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -915,6 +921,12 @@ dependencies = [ "embedded-hal 1.0.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -1455,6 +1467,15 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] + [[package]] name = "nb" version = "0.1.3" @@ -1721,6 +1742,8 @@ checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", "defmt 1.0.1", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -1910,10 +1933,12 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", "toml 1.0.3+spec-1.1.0", diff --git a/examples/use_rust/nrf52840_ble_split/Cargo.toml b/examples/use_rust/nrf52840_ble_split/Cargo.toml index 5eb6558e6..90fe3f68f 100644 --- a/examples/use_rust/nrf52840_ble_split/Cargo.toml +++ b/examples/use_rust/nrf52840_ble_split/Cargo.toml @@ -10,12 +10,7 @@ edition = "2024" license = "MIT OR Apache-2.0" [dependencies] -rmk = { path = "../../../rmk", features = [ - "nrf52840_ble", - "split", - "async_matrix", - "adafruit_bl", -] } +rmk = { path = "../../../rmk", default-features = false, features = ["defmt", "storage", "vial", "watchdog", "nrf52840_ble", "split", "async_matrix", "adafruit_bl"] } nrf-sdc = { git = "https://github.com/alexmoon/nrf-sdc", rev = "abe49d22ebfc85fae134eb082fbfddf752016a55", features = [ "defmt", "peripheral", diff --git a/examples/use_rust/nrf52840_ble_split/src/central.rs b/examples/use_rust/nrf52840_ble_split/src/central.rs index 0b7f0585f..09cb1aec5 100644 --- a/examples/use_rust/nrf52840_ble_split/src/central.rs +++ b/examples/use_rust/nrf52840_ble_split/src/central.rs @@ -208,8 +208,7 @@ async fn main(spawner: Spawner) { let mut matrix = Matrix::<_, _, _, 4, 7, true>::new(row_pins, col_pins, debouncer); // let mut matrix = TestMatrix::::new(); let mut keyboard = Keyboard::new(&keymap); - let host_ctx = rmk::host::KeyboardContext::new(&keymap); - let mut host_service = HostService::new(&host_ctx, &rmk_config); + let host_service = HostService::new(&keymap, &rmk_config); // Read peripheral address from storage let peripheral_addrs = storage.read_peripheral_addresses::<1>().await; @@ -258,8 +257,10 @@ async fn main(spawner: Spawner) { let mut peripheral_battery_monitor = PeripheralBatteryMonitor {}; - let mut usb_transport = UsbTransport::new(driver, rmk_config.device_config); - let mut ble_transport = BleTransport::new(&stack, rmk_config).await; + let mut usb_transport = UsbTransport::new(driver, rmk_config.device_config).with_host_service(&host_service); + let mut ble_transport = BleTransport::new(&stack, rmk_config) + .await + .with_host_service(&host_service); let mut wpm_processor = WpmProcessor::new(); let mut watchdog_runner = Nrf52Watchdog::default_runner(p.WDT); @@ -276,7 +277,6 @@ async fn main(spawner: Spawner) { wpm_processor, batt_proc, keyboard, - host_service, capslock_led, peripheral_battery_monitor, watchdog_runner diff --git a/examples/use_rust/nrf52840_ble_split_dongle/Cargo.lock b/examples/use_rust/nrf52840_ble_split_dongle/Cargo.lock index abe028010..3c48b9a3f 100644 --- a/examples/use_rust/nrf52840_ble_split_dongle/Cargo.lock +++ b/examples/use_rust/nrf52840_ble_split_dongle/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -915,6 +921,12 @@ dependencies = [ "embedded-hal 1.0.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -1455,6 +1467,15 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] + [[package]] name = "nb" version = "0.1.3" @@ -1721,6 +1742,8 @@ checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", "defmt 1.0.1", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -1910,10 +1933,12 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", "toml 1.0.3+spec-1.1.0", diff --git a/examples/use_rust/nrf52840_ble_split_dongle/Cargo.toml b/examples/use_rust/nrf52840_ble_split_dongle/Cargo.toml index 8475ba3a4..e2b7dfee1 100644 --- a/examples/use_rust/nrf52840_ble_split_dongle/Cargo.toml +++ b/examples/use_rust/nrf52840_ble_split_dongle/Cargo.toml @@ -10,12 +10,7 @@ edition = "2024" license = "MIT OR Apache-2.0" [dependencies] -rmk = { path = "../../../rmk", features = [ - "nrf52840_ble", - "split", - "async_matrix", - "adafruit_bl", -] } +rmk = { path = "../../../rmk", default-features = false, features = ["defmt", "storage", "vial", "watchdog", "nrf52840_ble", "split", "async_matrix", "adafruit_bl"] } nrf-sdc = { git = "https://github.com/alexmoon/nrf-sdc", rev = "abe49d22ebfc85fae134eb082fbfddf752016a55", features = [ "defmt", "peripheral", diff --git a/examples/use_rust/nrf52840_ble_split_dongle/src/central.rs b/examples/use_rust/nrf52840_ble_split_dongle/src/central.rs index b86e3263b..90d6361c1 100644 --- a/examples/use_rust/nrf52840_ble_split_dongle/src/central.rs +++ b/examples/use_rust/nrf52840_ble_split_dongle/src/central.rs @@ -210,8 +210,7 @@ async fn main(spawner: Spawner) { let mut matrix = Matrix::<_, _, _, 4, 7, true>::new(row_pins, col_pins, debouncer); // let mut matrix = TestMatrix::::new(); let mut keyboard = Keyboard::new(&keymap); - let host_ctx = rmk::host::KeyboardContext::new(&keymap); - let mut host_service = HostService::new(&host_ctx, &rmk_config); + let host_service = HostService::new(&keymap, &rmk_config); // Read peripheral address from storage let peripheral_addrs = storage.read_peripheral_addresses::<2>().await; @@ -260,8 +259,10 @@ async fn main(spawner: Spawner) { rmk::types::led_indicator::LedIndicatorType::CapsLock, ); - let mut usb_transport = UsbTransport::new(driver, rmk_config.device_config); - let mut ble_transport = BleTransport::new(&stack, rmk_config).await; + let mut usb_transport = UsbTransport::new(driver, rmk_config.device_config).with_host_service(&host_service); + let mut ble_transport = BleTransport::new(&stack, rmk_config) + .await + .with_host_service(&host_service); let mut wpm_processor = WpmProcessor::new(); let mut watchdog_runner = Nrf52Watchdog::default_runner(p.WDT); @@ -281,7 +282,6 @@ async fn main(spawner: Spawner) { wpm_processor, keyboard, capslock_led, - host_service, watchdog_runner ), join( diff --git a/examples/use_rust/nrf52840_embassy_boot/Cargo.lock b/examples/use_rust/nrf52840_embassy_boot/Cargo.lock index ed67e8467..7f1722cf3 100644 --- a/examples/use_rust/nrf52840_embassy_boot/Cargo.lock +++ b/examples/use_rust/nrf52840_embassy_boot/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -892,6 +898,12 @@ dependencies = [ "embedded-hal 1.0.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -1403,6 +1415,15 @@ version = "2.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4" +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] + [[package]] name = "nb" version = "0.1.3" @@ -1563,6 +1584,8 @@ checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", "defmt 1.1.0", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -1732,10 +1755,12 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", "toml", diff --git a/examples/use_rust/nrf52840_embassy_boot/Cargo.toml b/examples/use_rust/nrf52840_embassy_boot/Cargo.toml index 846169f62..bff9e2cda 100644 --- a/examples/use_rust/nrf52840_embassy_boot/Cargo.toml +++ b/examples/use_rust/nrf52840_embassy_boot/Cargo.toml @@ -10,8 +10,12 @@ edition = "2024" license = "MIT OR Apache-2.0" [dependencies] -rmk = { path = "../../../rmk", features = [ +rmk = { path = "../../../rmk", default-features = false, features = [ + "defmt", "dfu_nrf", + "storage", + "vial", + "watchdog", # "dfu_lock" ] } embassy-time = { version = "0.5", features = ["defmt"] } diff --git a/examples/use_rust/nrf52840_embassy_boot/src/main.rs b/examples/use_rust/nrf52840_embassy_boot/src/main.rs index 8bd62de90..e7a12515c 100644 --- a/examples/use_rust/nrf52840_embassy_boot/src/main.rs +++ b/examples/use_rust/nrf52840_embassy_boot/src/main.rs @@ -151,10 +151,9 @@ async fn main(_spawner: Spawner) { let debouncer = DefaultDebouncer::new(); let mut matrix = Matrix::<_, _, _, ROW, COL, true>::new(row_pins, col_pins, debouncer); let mut keyboard = Keyboard::new(&keymap); - let host_ctx = rmk::host::KeyboardContext::new(&keymap); - let mut host_service = HostService::new(&host_ctx, &rmk_config); + let host_service = HostService::new(&keymap, &rmk_config); - let mut usb_transport = UsbTransport::new(driver, rmk_config.device_config); + let mut usb_transport = UsbTransport::new(driver, rmk_config.device_config).with_host_service(&host_service); let mut wpm_processor = WpmProcessor::new(); run_all!( @@ -163,7 +162,6 @@ async fn main(_spawner: Spawner) { usb_transport, wpm_processor, keyboard, - host_service, dfu_led_processor, // , dfu_lock ) .await; diff --git a/examples/use_rust/nrf54l15_ble/Cargo.lock b/examples/use_rust/nrf54l15_ble/Cargo.lock index 20eb2b410..953fa8358 100644 --- a/examples/use_rust/nrf54l15_ble/Cargo.lock +++ b/examples/use_rust/nrf54l15_ble/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -915,6 +921,12 @@ dependencies = [ "embedded-hal 1.0.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -1455,6 +1467,15 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] + [[package]] name = "nb" version = "0.1.3" @@ -1721,6 +1742,8 @@ checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", "defmt 1.0.1", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -1910,10 +1933,12 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", "toml", diff --git a/examples/use_rust/nrf54l15_ble/Cargo.toml b/examples/use_rust/nrf54l15_ble/Cargo.toml index fbab43a91..5cc611af0 100644 --- a/examples/use_rust/nrf54l15_ble/Cargo.toml +++ b/examples/use_rust/nrf54l15_ble/Cargo.toml @@ -10,15 +10,15 @@ edition = "2024" license = "MIT OR Apache-2.0" [dependencies] -rmk = { path = "../../../rmk", features = ["async_matrix", "nrf54l15_ble"] } +rmk = { path = "../../../rmk", default-features = false, features = ["defmt", "storage", "vial", "watchdog", "async_matrix", "nrf54l15_ble"] } nrf-sdc = { git = "https://github.com/alexmoon/nrf-sdc", rev = "abe49d22ebfc85fae134eb082fbfddf752016a55", default-features = false, features = [ - "defmt", + "defmt", "peripheral", "central", "nrf54l15-app-s", ] } nrf-mpsl = { git = "https://github.com/alexmoon/nrf-sdc", rev = "abe49d22ebfc85fae134eb082fbfddf752016a55", default-features = false, features = [ - "defmt", + "defmt", "critical-section-impl", "nrf54l15-app-s", ] } diff --git a/examples/use_rust/nrf54l15_ble/src/main.rs b/examples/use_rust/nrf54l15_ble/src/main.rs index 68f77430e..92b44c924 100644 --- a/examples/use_rust/nrf54l15_ble/src/main.rs +++ b/examples/use_rust/nrf54l15_ble/src/main.rs @@ -202,11 +202,12 @@ async fn main(spawner: Spawner) { let debouncer = DefaultDebouncer::new(); let mut matrix = DirectPinMatrix::<_, _, ROW, COL, SIZE>::new(direct_pins, debouncer, true); let mut keyboard = Keyboard::new(&keymap); - let host_ctx = rmk::host::KeyboardContext::new(&keymap); - let mut host_service = HostService::new(&host_ctx, &rmk_config); + let host_service = HostService::new(&keymap, &rmk_config); - let mut ble_transport = BleTransport::new(&stack, rmk_config).await; + let mut ble_transport = BleTransport::new(&stack, rmk_config) + .await + .with_host_service(&host_service); let mut wpm_processor = WpmProcessor::new(); - run_all!(matrix, storage, ble_transport, wpm_processor, keyboard, host_service).await; + run_all!(matrix, storage, ble_transport, wpm_processor, keyboard).await; } diff --git a/examples/use_rust/nrf54lm20_ble/.cargo/config.toml b/examples/use_rust/nrf54lm20_ble/.cargo/config.toml index 01fc0ff9f..4b767a04b 100644 --- a/examples/use_rust/nrf54lm20_ble/.cargo/config.toml +++ b/examples/use_rust/nrf54lm20_ble/.cargo/config.toml @@ -6,5 +6,5 @@ runner = "./run.sh" target = "thumbv8m.main-none-eabihf" [env] -DEFMT_LOG = "trace" +DEFMT_LOG = "debug" \ No newline at end of file diff --git a/examples/use_rust/nrf54lm20_ble/Cargo.lock b/examples/use_rust/nrf54lm20_ble/Cargo.lock index c0ecc7e7d..6e5a44916 100644 --- a/examples/use_rust/nrf54lm20_ble/Cargo.lock +++ b/examples/use_rust/nrf54lm20_ble/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -161,7 +167,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f3c66fd0a41a3b3a5906847b1bf5516048ce083e24fa9341a0fa31d3b4cd73d" dependencies = [ "btuuid", - "defmt 1.1.0", + "defmt 1.1.1", "embassy-sync", "embedded-io 0.7.1", "embedded-io-async 0.7.0", @@ -189,9 +195,9 @@ checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" [[package]] name = "bytemuck" -version = "1.25.0" +version = "1.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec" +checksum = "d6aedf8ae72766347502cf3cb4f41cf5e9cc37d28bee90f1fdaaae15f9cf9424" [[package]] name = "byteorder" @@ -212,9 +218,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.65" +version = "1.2.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e228eec9be7c17ccb640b59b36a5cd805ea2a564a4c5e162c2f659fea30d3b96" +checksum = "e17dd265a7d0f31ef544e1b20e03add05d3b45b491b633b10d67145d2acc1a38" dependencies = [ "find-msvc-tools", "shlex 2.0.1", @@ -538,14 +544,14 @@ version = "0.3.100" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0963443817029b2024136fc4dd07a5107eb8f977eaf18fcd1fdeb11306b64ad" dependencies = [ - "defmt 1.1.0", + "defmt 1.1.1", ] [[package]] name = "defmt" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6e524506490a1953d237cb87b1cfc1e46f88c18f10a22dfe0f507dc6bfc7f7f" +checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" dependencies = [ "bitflags 1.3.2", "defmt-macros", @@ -553,12 +559,11 @@ dependencies = [ [[package]] name = "defmt-macros" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0a27770e9c8f719a79d8b638281f4d828f77d8fd61e0bd94451b9b85e576a0b" +checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" dependencies = [ "defmt-parser", - "proc-macro-error2", "proc-macro2", "quote", "syn 2.0.118", @@ -575,12 +580,12 @@ dependencies = [ [[package]] name = "defmt-rtt" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0f73a4a4a91609e977ae3b7bd831ffa292edfd42ad140a3244a61d805b0e05e" +checksum = "05144944c117db54127a8ac17a3c9a28d55e7047bfddb950bcd20b4a94c79b10" dependencies = [ "critical-section", - "defmt 1.1.0", + "defmt 1.1.1", ] [[package]] @@ -659,12 +664,11 @@ dependencies = [ [[package]] name = "embassy-embedded-hal" version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0641612053b2f34fc250bb63f6630ae75de46e02ade7f457268447081d709ce" +source = "git+https://github.com/embassy-rs/embassy?rev=1e291ec17780b1e73630de7fe38c0ab33d8292bc#1e291ec17780b1e73630de7fe38c0ab33d8292bc" dependencies = [ - "defmt 1.1.0", + "defmt 1.1.1", "embassy-futures", - "embassy-hal-internal 0.4.0", + "embassy-hal-internal", "embassy-sync", "embassy-time", "embedded-hal 0.2.7", @@ -678,13 +682,12 @@ dependencies = [ [[package]] name = "embassy-executor" version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d0d3b15c9d7dc4fec1d8cb77112472fb008b3b28c51ad23838d83587a6d2f1e" +source = "git+https://github.com/embassy-rs/embassy?rev=1e291ec17780b1e73630de7fe38c0ab33d8292bc#1e291ec17780b1e73630de7fe38c0ab33d8292bc" dependencies = [ "cordyceps", "cortex-m", "critical-section", - "defmt 1.1.0", + "defmt 1.1.1", "document-features", "embassy-executor-macros", "embassy-executor-timer-queue", @@ -693,8 +696,7 @@ dependencies = [ [[package]] name = "embassy-executor-macros" version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d11a246f53de5f97a387f40ac24726817cd0b6f833e7603baac784f29d6ff276" +source = "git+https://github.com/embassy-rs/embassy?rev=1e291ec17780b1e73630de7fe38c0ab33d8292bc#1e291ec17780b1e73630de7fe38c0ab33d8292bc" dependencies = [ "darling 0.20.11", "proc-macro2", @@ -705,50 +707,36 @@ dependencies = [ [[package]] name = "embassy-executor-timer-queue" version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fc328bf943af66b80b98755db9106bf7e7471b0cf47dc8559cd9a6be504cc9c" +source = "git+https://github.com/embassy-rs/embassy?rev=1e291ec17780b1e73630de7fe38c0ab33d8292bc#1e291ec17780b1e73630de7fe38c0ab33d8292bc" [[package]] name = "embassy-futures" version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc2d050bdc5c21e0862a89256ed8029ae6c290a93aecefc73084b3002cdebb01" -dependencies = [ - "defmt 1.1.0", -] - -[[package]] -name = "embassy-hal-internal" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f10ce10a4dfdf6402d8e9bd63128986b96a736b1a0a6680547ed2ac55d55dba" +source = "git+https://github.com/embassy-rs/embassy?rev=1e291ec17780b1e73630de7fe38c0ab33d8292bc#1e291ec17780b1e73630de7fe38c0ab33d8292bc" dependencies = [ - "num-traits", + "defmt 1.1.1", ] [[package]] name = "embassy-hal-internal" version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "568659fc53866d3d85c60fa33723fb751aa69e71507634fc2c19e7649432fb75" +source = "git+https://github.com/embassy-rs/embassy?rev=1e291ec17780b1e73630de7fe38c0ab33d8292bc#1e291ec17780b1e73630de7fe38c0ab33d8292bc" dependencies = [ "cortex-m", "critical-section", - "defmt 1.1.0", + "defmt 1.1.1", "num-traits", ] [[package]] name = "embassy-net-driver" version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524eb3c489760508f71360112bca70f6e53173e6fe48fc5f0efd0f5ab217751d" +source = "git+https://github.com/embassy-rs/embassy?rev=1e291ec17780b1e73630de7fe38c0ab33d8292bc#1e291ec17780b1e73630de7fe38c0ab33d8292bc" [[package]] name = "embassy-net-driver-channel" version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a07d2eb9f05a6fc876500949856ea1be40773d866d8cb99384f72d0ae4568c16" +source = "git+https://github.com/embassy-rs/embassy?rev=1e291ec17780b1e73630de7fe38c0ab33d8292bc#1e291ec17780b1e73630de7fe38c0ab33d8292bc" dependencies = [ "embassy-futures", "embassy-net-driver", @@ -758,19 +746,18 @@ dependencies = [ [[package]] name = "embassy-nrf" version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82051f67e8a06a8faebd183f62cfade184c96be68126c5f064abb8223a591ff1" +source = "git+https://github.com/embassy-rs/embassy?rev=1e291ec17780b1e73630de7fe38c0ab33d8292bc#1e291ec17780b1e73630de7fe38c0ab33d8292bc" dependencies = [ "bitflags 2.13.0", "cfg-if", "cortex-m", "cortex-m-rt", "critical-section", - "defmt 1.1.0", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", - "embassy-hal-internal 0.5.0", + "embassy-hal-internal", "embassy-sync", "embassy-time", "embassy-time-driver", @@ -794,12 +781,11 @@ dependencies = [ [[package]] name = "embassy-sync" version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bbd85cf5a5ae56bdf26f618364af642d1d0a4e245cdd75cd9aabda382f65a81" +source = "git+https://github.com/embassy-rs/embassy?rev=1e291ec17780b1e73630de7fe38c0ab33d8292bc#1e291ec17780b1e73630de7fe38c0ab33d8292bc" dependencies = [ "cfg-if", "critical-section", - "defmt 1.1.0", + "defmt 1.1.1", "embedded-io-async 0.7.0", "futures-core", "futures-sink", @@ -809,12 +795,11 @@ dependencies = [ [[package]] name = "embassy-time" version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "592b0c143ec626e821d4d90da51a2bd91d559d6c442b7c74a47d368c9e23d97a" +source = "git+https://github.com/embassy-rs/embassy?rev=1e291ec17780b1e73630de7fe38c0ab33d8292bc#1e291ec17780b1e73630de7fe38c0ab33d8292bc" dependencies = [ "cfg-if", "critical-section", - "defmt 1.1.0", + "defmt 1.1.1", "document-features", "embassy-time-driver", "embedded-hal 0.2.7", @@ -826,8 +811,7 @@ dependencies = [ [[package]] name = "embassy-time-driver" version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ee71af1b3a0deaa53eaf2d39252f83504c853646e472400b763060389b9fcc9" +source = "git+https://github.com/embassy-rs/embassy?rev=1e291ec17780b1e73630de7fe38c0ab33d8292bc#1e291ec17780b1e73630de7fe38c0ab33d8292bc" dependencies = [ "document-features", ] @@ -835,8 +819,7 @@ dependencies = [ [[package]] name = "embassy-time-queue-utils" version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168297bf80aaf114b3c9ad589bf38b01b3009b9af7f97cd18086c5bbf96f5693" +source = "git+https://github.com/embassy-rs/embassy?rev=1e291ec17780b1e73630de7fe38c0ab33d8292bc#1e291ec17780b1e73630de7fe38c0ab33d8292bc" dependencies = [ "embassy-executor-timer-queue", "heapless 0.9.3", @@ -845,11 +828,10 @@ dependencies = [ [[package]] name = "embassy-usb" version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a25746d8b152b72fbf2a217f489a083dbbe243f281f09184a1f2cfbe9bbb245f" +source = "git+https://github.com/embassy-rs/embassy?rev=1e291ec17780b1e73630de7fe38c0ab33d8292bc#1e291ec17780b1e73630de7fe38c0ab33d8292bc" dependencies = [ "bitflags 2.13.0", - "defmt 1.1.0", + "defmt 1.1.1", "embassy-futures", "embassy-net-driver-channel", "embassy-sync", @@ -864,10 +846,9 @@ dependencies = [ [[package]] name = "embassy-usb-driver" version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa675c5f4349b6aa0fcffc4bf9b241f18cd11b97c1f8323273fb9a5449937fbd" +source = "git+https://github.com/embassy-rs/embassy?rev=1e291ec17780b1e73630de7fe38c0ab33d8292bc#1e291ec17780b1e73630de7fe38c0ab33d8292bc" dependencies = [ - "defmt 1.1.0", + "defmt 1.1.1", "embedded-io-async 0.6.1", "embedded-io-async 0.7.0", ] @@ -875,11 +856,10 @@ dependencies = [ [[package]] name = "embassy-usb-synopsys-otg" version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6efd0c0e0b21bcf91b475b8fa47347c1df32c9a99728ae1e1b0e6625862dfd1a" +source = "git+https://github.com/embassy-rs/embassy?rev=1e291ec17780b1e73630de7fe38c0ab33d8292bc#1e291ec17780b1e73630de7fe38c0ab33d8292bc" dependencies = [ "critical-section", - "defmt 1.1.0", + "defmt 1.1.1", "embassy-sync", "embassy-time", "embassy-usb-driver", @@ -915,6 +895,12 @@ dependencies = [ "embedded-hal 1.0.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -927,7 +913,7 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9eb1aa714776b75c7e67e1da744b81a129b3ff919c8712b5e1b32252c1f07cc7" dependencies = [ - "defmt 1.1.0", + "defmt 1.1.1", ] [[package]] @@ -945,7 +931,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2564b9f813c544241430e147d8bc454815ef9ac998878d30cc3055449f7fd4c0" dependencies = [ - "defmt 1.1.0", + "defmt 1.1.1", "embedded-io 0.7.1", ] @@ -1271,7 +1257,7 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "25ba4bd83f9415b58b4ed8dc5714c76e626a105be4646c02630ad730ad3b5aa4" dependencies = [ - "defmt 1.1.0", + "defmt 1.1.1", "hash32 0.3.1", "serde_core", "stable_deref_trait", @@ -1447,9 +1433,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.8.2" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" [[package]] name = "minimal-lexical" @@ -1457,6 +1443,15 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] + [[package]] name = "nb" version = "0.1.3" @@ -1490,7 +1485,7 @@ dependencies = [ "cfg-if", "cortex-m", "critical-section", - "defmt 1.1.0", + "defmt 1.1.1", "embassy-nrf", "embassy-sync", "embedded-io 0.7.1", @@ -1525,7 +1520,7 @@ source = "git+https://github.com/haobogu/nrf-sdc?rev=73ad22d57f39b5b109a665fe6f5 dependencies = [ "bt-hci", "critical-section", - "defmt 1.1.0", + "defmt 1.1.1", "embassy-nrf", "embassy-sync", "embedded-io 0.7.1", @@ -1597,7 +1592,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd402d00b0fb94c5aee000029204a46884b1262e0c443f166d86d2c0747e1a1a" dependencies = [ "cortex-m", - "defmt 1.1.0", + "defmt 1.1.1", ] [[package]] @@ -1614,9 +1609,9 @@ checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" [[package]] name = "pest" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662" +checksum = "47627dd7305c6a2d6c8c6bcd24c5a4c17dbbf425f4f9c5313e724b38fc9782e9" dependencies = [ "memchr", "ucd-trie", @@ -1624,9 +1619,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77" +checksum = "4b4254325ecad416ab689e27ba51da03ba01a9632bc6e108f5fe7c3c4ad29d58" dependencies = [ "pest", "pest_generator", @@ -1634,9 +1629,9 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f" +checksum = "6c4c0e91ead7a8f7acecbca6f003fc2e8282b1dbe2dd9c9d2f16aba42995e0a7" dependencies = [ "pest", "pest_meta", @@ -1647,12 +1642,11 @@ dependencies = [ [[package]] name = "pest_meta" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220" +checksum = "f9744bc48116fee06334924bb5f2bad41eed5e89bd26e29b0b799f9a3f82c210" dependencies = [ "pest", - "sha2", ] [[package]] @@ -1722,7 +1716,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", - "defmt 1.1.0", + "defmt 1.1.1", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -1767,28 +1763,6 @@ dependencies = [ "elliptic-curve", ] -[[package]] -name = "proc-macro-error-attr2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "proc-macro-error2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" -dependencies = [ - "proc-macro-error-attr2", - "proc-macro2", - "quote", - "syn 2.0.118", -] - [[package]] name = "proc-macro2" version = "1.0.106" @@ -1809,9 +1783,9 @@ dependencies = [ [[package]] name = "rand" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" +checksum = "22f6172bdec972074665ed81ed53b71da00bfc44b65a753cfde883ec4c702a1a" dependencies = [ "rand_core 0.6.4", ] @@ -1846,9 +1820,9 @@ checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" [[package]] name = "regex" -version = "1.12.4" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1292b7759ae1cb9ec195452d1390a074f0cd8541ab7a5a8c31cd6db45d4a6ba" +checksum = "2a0e75113e14dc5acb068cd0786884f214f1312650a3d36d269f5c4f3cdee8a2" dependencies = [ "aho-corasick", "memchr", @@ -1858,9 +1832,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +checksum = "1f388202e4b80542a0921078cc23b6333bcf1409c1e3f86404cae4766a6131db" dependencies = [ "aho-corasick", "memchr", @@ -1881,7 +1855,7 @@ dependencies = [ "byteorder", "cortex-m", "crc32fast", - "defmt 1.1.0", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -1912,10 +1886,12 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", "toml", @@ -1943,7 +1919,7 @@ dependencies = [ "const-gen", "cortex-m", "cortex-m-rt", - "defmt 1.1.0", + "defmt 1.1.1", "defmt-rtt", "embassy-executor", "embassy-nrf", @@ -1962,7 +1938,8 @@ name = "rmk-types" version = "0.2.2" dependencies = [ "bitfield-struct", - "defmt 1.1.0", + "cobs", + "defmt 1.1.1", "heapless 0.9.3", "postcard", "rmk-config", @@ -1997,9 +1974,9 @@ dependencies = [ [[package]] name = "rustc-hash" -version = "2.1.2" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe" +checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d" [[package]] name = "rustc_version" @@ -2021,9 +1998,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] name = "scoped-tls" @@ -2081,7 +2058,7 @@ version = "7.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "574e5a379bf43653079b34cb4cf32958404b5f42e0ed5b5adcdff02c2de04d4d" dependencies = [ - "defmt 1.1.0", + "defmt 1.1.1", "embedded-storage-async", "postcard", "serde", @@ -2162,17 +2139,6 @@ dependencies = [ "serde_core", ] -[[package]] -name = "sha2" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - [[package]] name = "sharded-slab" version = "0.1.7" @@ -2323,9 +2289,9 @@ dependencies = [ [[package]] name = "thread_local" -version = "1.1.9" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" +checksum = "1ad99c4c6d32803332c548b1af0540b357b3f5fc0be8f6c6bfe8b2e6ae784070" dependencies = [ "cfg-if", ] @@ -2447,7 +2413,7 @@ dependencies = [ "aes", "bt-hci", "cmac", - "defmt 1.1.0", + "defmt 1.1.1", "embassy-futures", "embassy-sync", "embassy-time", @@ -2712,18 +2678,18 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.52" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce1022995ff5ff5d841ad7d994facc23098cd40152f2c1d11cd607c6f530653f" +checksum = "b7cbbc0a705a0fd05cc3676525980d2bf5a9bc4adac6d6475209a7887cf59d19" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.52" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ae7f38b72ec2a254e2b87ef277cf2cd4fb97cbebf944faa6f33354da0867930" +checksum = "e2e817b7b52d0c7358d3246da9d69935ebb18116b2b102b4230dac079b4862f5" dependencies = [ "proc-macro2", "quote", diff --git a/examples/use_rust/nrf54lm20_ble/Cargo.toml b/examples/use_rust/nrf54lm20_ble/Cargo.toml index 3c47f8b13..5265bccd2 100644 --- a/examples/use_rust/nrf54lm20_ble/Cargo.toml +++ b/examples/use_rust/nrf54lm20_ble/Cargo.toml @@ -10,8 +10,14 @@ edition = "2024" license = "MIT OR Apache-2.0" [dependencies] -rmk = { path = "../../../rmk", features = ["async_matrix", "nrf54lm20_ble"] } -# nrf-sdc = { git = "https://github.com/alexmoon/nrf-sdc", rev = "abe49d22ebfc85fae134eb082fbfddf752016a55", default-features = false, features = [ +rmk = { path = "../../../rmk", default-features = false, features = [ + "rynk", + "async_matrix", + "nrf54lm20_ble", + "storage", + "defmt", + "watchdog", +] } nrf-sdc = { git = "https://github.com/haobogu/nrf-sdc", rev = "73ad22d57f39b5b109a665fe6f55c5ed61294ff2", default-features = false, features = [ "defmt", "peripheral", @@ -72,3 +78,13 @@ debug = true opt-level = "z" overflow-checks = false lto = "fat" + +[patch.crates-io] +embassy-nrf = { git = "https://github.com/embassy-rs/embassy", rev = "1e291ec17780b1e73630de7fe38c0ab33d8292bc" } +embassy-sync = { git = "https://github.com/embassy-rs/embassy", rev = "1e291ec17780b1e73630de7fe38c0ab33d8292bc" } +embassy-usb = { git = "https://github.com/embassy-rs/embassy", rev = "1e291ec17780b1e73630de7fe38c0ab33d8292bc" } +embassy-time = { git = "https://github.com/embassy-rs/embassy", rev = "1e291ec17780b1e73630de7fe38c0ab33d8292bc" } +embassy-executor = { git = "https://github.com/embassy-rs/embassy", rev = "1e291ec17780b1e73630de7fe38c0ab33d8292bc" } +embassy-hal-internal = { git = "https://github.com/embassy-rs/embassy", rev = "1e291ec17780b1e73630de7fe38c0ab33d8292bc" } +embassy-futures = { git = "https://github.com/embassy-rs/embassy", rev = "1e291ec17780b1e73630de7fe38c0ab33d8292bc" } +embassy-embedded-hal = { git = "https://github.com/embassy-rs/embassy", rev = "1e291ec17780b1e73630de7fe38c0ab33d8292bc" } diff --git a/examples/use_rust/nrf54lm20_ble/README.md b/examples/use_rust/nrf54lm20_ble/README.md index 1d0ee6f35..8c24cf43b 100644 --- a/examples/use_rust/nrf54lm20_ble/README.md +++ b/examples/use_rust/nrf54lm20_ble/README.md @@ -1,7 +1,6 @@ # nRF54LM20A BLE example -This example targets the nRF54LM20A DK and uses the local `embassy`, `nrf-sdc`, and `trouble` -trees from the sibling `../../../../../rust/` directory for nRF54 support. +This example targets the nRF54LM20A DK. It uses the DK's four onboard buttons as a 2x2 direct-pin keyboard matrix: diff --git a/examples/use_rust/nrf54lm20_ble/src/keymap.rs b/examples/use_rust/nrf54lm20_ble/src/keymap.rs index 102c1adea..82762d688 100644 --- a/examples/use_rust/nrf54lm20_ble/src/keymap.rs +++ b/examples/use_rust/nrf54lm20_ble/src/keymap.rs @@ -10,12 +10,12 @@ pub(crate) const NUM_LAYER: usize = 2; pub const fn get_default_keymap() -> [[[KeyAction; COL]; ROW]; NUM_LAYER] { [ layer!([ - [k!(Escape), k!(Enter)], - [k!(Space), mo!(1)] + [k!(A), k!(B)], + [k!(C), mo!(1)] ]), layer!([ [k!(KbVolumeDown), k!(KbVolumeUp)], - [k!(Tab), mo!(1)] + [k!(D), mo!(1)] ]), ] } diff --git a/examples/use_rust/nrf54lm20_ble/src/main.rs b/examples/use_rust/nrf54lm20_ble/src/main.rs index 5e0b65940..0e4f47126 100644 --- a/examples/use_rust/nrf54lm20_ble/src/main.rs +++ b/examples/use_rust/nrf54lm20_ble/src/main.rs @@ -1,7 +1,6 @@ #![no_std] #![no_main] -mod vial; #[macro_use] mod macros; mod keymap; @@ -21,7 +20,7 @@ use nrf_sdc::mpsl::MultiprotocolServiceLayer; use nrf_sdc::{self as sdc, mpsl}; use panic_probe as _; use rmk::ble::{BleTransport, build_ble_stack}; -use rmk::config::{BehaviorConfig, DeviceConfig, PositionalConfig, RmkConfig, StorageConfig, VialConfig}; +use rmk::config::{BehaviorConfig, DeviceConfig, LockConfig, PositionalConfig, RmkConfig, StorageConfig}; use rmk::debounce::default_debouncer::DefaultDebouncer; use rmk::host::HostService; use rmk::keyboard::Keyboard; @@ -30,7 +29,6 @@ use rmk::processor::builtin::wpm::WpmProcessor; use rmk::usb::UsbTransport; use rmk::{DefaultPacketPool, HostResources, KeymapData, PacketPool, initialize_keymap_and_storage, run_all}; use static_cell::StaticCell; -use vial::{VIAL_KEYBOARD_DEF, VIAL_KEYBOARD_ID}; type RandomSource = cracen::Cracen<'static, Blocking>; @@ -52,12 +50,11 @@ async fn mpsl_task(mpsl: &'static MultiprotocolServiceLayer<'static>) -> ! { const SDC_MEM_SIZE: usize = 5788; const FLASH_START_ADDR: usize = 0x120000; const FLASH_SECTORS: u8 = 6; +const RYNK_UNLOCK_KEYS: &[(u8, u8)] = &[(0, 0), (0, 1)]; const L2CAP_TXQ: u8 = 4; const L2CAP_RXQ: u8 = 4; -const UNLOCK_KEYS: &[(u8, u8)] = &[(0, 0), (0, 1)]; - fn build_sdc<'d, const N: usize>( p: nrf_sdc::Peripherals<'d>, rng: &'d mut RandomSource, @@ -67,9 +64,9 @@ fn build_sdc<'d, const N: usize>( sdc::Builder::new()? .support_adv() .support_peripheral() - // .support_dle_peripheral() - // .support_phy_update_peripheral() - // .support_le_2m_phy() + .support_dle_peripheral() + .support_phy_update_peripheral() + .support_le_2m_phy() .peripheral_count(1)? .buffer_cfg( DefaultPacketPool::MTU as u16, @@ -186,7 +183,6 @@ async fn main(spawner: Spawner) { product_name: "RMK nRF54LM20A", ..DeviceConfig::default() }; - let vial_config = VialConfig::new(VIAL_KEYBOARD_ID, VIAL_KEYBOARD_DEF, UNLOCK_KEYS); let storage_config = StorageConfig { start_addr: FLASH_START_ADDR, num_sectors: FLASH_SECTORS, @@ -194,7 +190,11 @@ async fn main(spawner: Spawner) { }; let rmk_config = RmkConfig { device_config: keyboard_device_config, - vial_config, + lock_config: LockConfig { + unlock_keys: RYNK_UNLOCK_KEYS, + insecure: false, + write_requires_unlock: false, + }, storage_config, ..Default::default() }; @@ -218,21 +218,13 @@ async fn main(spawner: Spawner) { let debouncer = DefaultDebouncer::new(); let mut matrix = DirectPinMatrix::<_, _, ROW, COL, SIZE>::new(direct_pins, debouncer, true); let mut keyboard = Keyboard::new(&keymap); - let host_ctx = rmk::host::KeyboardContext::new(&keymap); - let mut host_service = HostService::new(&host_ctx, &rmk_config); + let host_service = HostService::new(&keymap, &rmk_config); - let mut usb_transport = UsbTransport::new(driver, rmk_config.device_config); - let mut ble_transport = BleTransport::new(&stack, rmk_config).await; + let mut usb_transport = UsbTransport::new(driver, rmk_config.device_config).with_host_service(&host_service); + let mut ble_transport = BleTransport::new(&stack, rmk_config) + .await + .with_host_service(&host_service); let mut wpm_processor = WpmProcessor::new(); - run_all!( - matrix, - storage, - usb_transport, - ble_transport, - wpm_processor, - keyboard, - host_service - ) - .await; + run_all!(matrix, storage, usb_transport, ble_transport, wpm_processor, keyboard).await; } diff --git a/examples/use_rust/pi_pico_w_ble/Cargo.lock b/examples/use_rust/pi_pico_w_ble/Cargo.lock index 94ef6054c..4895231a9 100644 --- a/examples/use_rust/pi_pico_w_ble/Cargo.lock +++ b/examples/use_rust/pi_pico_w_ble/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -1138,6 +1144,12 @@ dependencies = [ "nb 1.1.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -2035,6 +2047,15 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] + [[package]] name = "mio" version = "1.1.1" @@ -2350,6 +2371,8 @@ checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", "defmt 1.0.1", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -2711,10 +2734,12 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", "toml 1.0.3+spec-1.1.0", diff --git a/examples/use_rust/pi_pico_w_ble/Cargo.toml b/examples/use_rust/pi_pico_w_ble/Cargo.toml index b8c314b39..ea7d0aada 100644 --- a/examples/use_rust/pi_pico_w_ble/Cargo.toml +++ b/examples/use_rust/pi_pico_w_ble/Cargo.toml @@ -10,7 +10,7 @@ edition = "2024" license = "MIT OR Apache-2.0" [dependencies] -rmk = { path = "../../../rmk", features = ["pico_w_ble", "rp2040"] } +rmk = { path = "../../../rmk", default-features = false, features = ["defmt", "storage", "vial", "watchdog", "pico_w_ble", "rp2040"] } embassy-time = { version = "0.5", features = ["defmt"] } embassy-rp = { version = "0.10", features = [ "rp2040", @@ -28,7 +28,7 @@ portable-atomic = { version = "1", features = ["critical-section"] } defmt = "1" defmt-rtt = "1" panic-probe = { version = "1", features = ["print-defmt"] } -cyw43 = { version = "0.7.0", features = ["defmt", "firmware-logs", "bluetooth"] } +cyw43 = { version = "0.7", features = ["defmt", "firmware-logs", "bluetooth"] } cyw43-pio = { version = "0.10.0", features = ["defmt"] } static_cell = "2" bt-hci = { version = "0.9", features = ["defmt"] } diff --git a/examples/use_rust/pi_pico_w_ble/src/main.rs b/examples/use_rust/pi_pico_w_ble/src/main.rs index 815cdc901..9505eba31 100644 --- a/examples/use_rust/pi_pico_w_ble/src/main.rs +++ b/examples/use_rust/pi_pico_w_ble/src/main.rs @@ -150,8 +150,7 @@ async fn main(spawner: Spawner) { let debouncer = DefaultDebouncer::new(); let mut matrix = Matrix::<_, _, _, ROW, COL, true>::new(row_pins, col_pins, debouncer); let mut keyboard = Keyboard::new(&keymap); - let host_ctx = rmk::host::KeyboardContext::new(&keymap); - let mut host_service = HostService::new(&host_ctx, &rmk_config); + let host_service = HostService::new(&keymap, &rmk_config); let ble_addr = [0x18, 0xe2, 0x21, 0x88, 0xc0, 0xc7]; @@ -159,8 +158,10 @@ async fn main(spawner: Spawner) { let stack = build_ble_stack(controller, ble_addr, &mut host_resources).await; - let mut usb_transport = UsbTransport::new(driver, rmk_config.device_config); - let mut ble_transport = BleTransport::new(&stack, rmk_config).await; + let mut usb_transport = UsbTransport::new(driver, rmk_config.device_config).with_host_service(&host_service); + let mut ble_transport = BleTransport::new(&stack, rmk_config) + .await + .with_host_service(&host_service); let mut wpm_processor = WpmProcessor::new(); let mut watchdog_runner = Rp2040Watchdog::default_runner(embassy_rp::watchdog::Watchdog::new(p.WATCHDOG)); @@ -172,7 +173,6 @@ async fn main(spawner: Spawner) { ble_transport, wpm_processor, keyboard, - host_service, watchdog_runner ) .await; diff --git a/examples/use_rust/pi_pico_w_ble_split/Cargo.lock b/examples/use_rust/pi_pico_w_ble_split/Cargo.lock index 94ef6054c..4895231a9 100644 --- a/examples/use_rust/pi_pico_w_ble_split/Cargo.lock +++ b/examples/use_rust/pi_pico_w_ble_split/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -1138,6 +1144,12 @@ dependencies = [ "nb 1.1.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -2035,6 +2047,15 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] + [[package]] name = "mio" version = "1.1.1" @@ -2350,6 +2371,8 @@ checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", "defmt 1.0.1", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -2711,10 +2734,12 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", "toml 1.0.3+spec-1.1.0", diff --git a/examples/use_rust/pi_pico_w_ble_split/Cargo.toml b/examples/use_rust/pi_pico_w_ble_split/Cargo.toml index 86f84d692..b38fba8e0 100644 --- a/examples/use_rust/pi_pico_w_ble_split/Cargo.toml +++ b/examples/use_rust/pi_pico_w_ble_split/Cargo.toml @@ -10,7 +10,7 @@ edition = "2024" license = "MIT OR Apache-2.0" [dependencies] -rmk = { path = "../../../rmk", features = ["pico_w_ble", "rp2040", "split"] } +rmk = { path = "../../../rmk", default-features = false, features = ["defmt", "storage", "vial", "watchdog", "pico_w_ble", "rp2040", "split"] } embassy-time = { version = "0.5", features = ["defmt"] } embassy-rp = { version = "0.10", features = [ "rp2040", diff --git a/examples/use_rust/pi_pico_w_ble_split/src/central.rs b/examples/use_rust/pi_pico_w_ble_split/src/central.rs index d94b608ae..f7c8ca4c4 100644 --- a/examples/use_rust/pi_pico_w_ble_split/src/central.rs +++ b/examples/use_rust/pi_pico_w_ble_split/src/central.rs @@ -153,8 +153,7 @@ async fn main(spawner: Spawner) { let debouncer = DefaultDebouncer::new(); let mut matrix = Matrix::<_, _, _, ROW, COL, true>::new(row_pins, col_pins, debouncer); let mut keyboard = Keyboard::new(&keymap); - let host_ctx = rmk::host::KeyboardContext::new(&keymap); - let mut host_service = HostService::new(&host_ctx, &rmk_config); + let host_service = HostService::new(&keymap, &rmk_config); // Read peripheral address from storage let peripheral_addrs = storage.read_peripheral_addresses::<1>().await; @@ -165,8 +164,10 @@ async fn main(spawner: Spawner) { let stack = build_ble_stack(controller, ble_addr, &mut host_resources).await; - let mut usb_transport = UsbTransport::new(driver, rmk_config.device_config); - let mut ble_transport = BleTransport::new(&stack, rmk_config).await; + let mut usb_transport = UsbTransport::new(driver, rmk_config.device_config).with_host_service(&host_service); + let mut ble_transport = BleTransport::new(&stack, rmk_config) + .await + .with_host_service(&host_service); let mut wpm_processor = WpmProcessor::new(); let mut watchdog_runner = Rp2040Watchdog::default_runner(embassy_rp::watchdog::Watchdog::new(p.WATCHDOG)); @@ -179,7 +180,6 @@ async fn main(spawner: Spawner) { ble_transport, wpm_processor, keyboard, - host_service, watchdog_runner ), join( diff --git a/examples/use_rust/qemu-riscv-rynk/.cargo/config.toml b/examples/use_rust/qemu-riscv-rynk/.cargo/config.toml new file mode 100644 index 000000000..ad4859264 --- /dev/null +++ b/examples/use_rust/qemu-riscv-rynk/.cargo/config.toml @@ -0,0 +1,2 @@ +[build] +target = "riscv32imac-unknown-none-elf" diff --git a/examples/use_rust/qemu-riscv-rynk/Cargo.lock b/examples/use_rust/qemu-riscv-rynk/Cargo.lock new file mode 100644 index 000000000..8b33c7d93 --- /dev/null +++ b/examples/use_rust/qemu-riscv-rynk/Cargo.lock @@ -0,0 +1,1850 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "ahash" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" +dependencies = [ + "cfg-if", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +dependencies = [ + "memchr", +] + +[[package]] +name = "arraydeque" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236" + +[[package]] +name = "async-trait" +version = "0.1.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "atomic-polyfill" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cf2bce30dfe09ef0bfaef228b9d414faaf7e563035494d7fe092dba54b300f4" +dependencies = [ + "critical-section", +] + +[[package]] +name = "bare-metal" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5deb64efa5bd81e31fcd1938615a6d98c82eafcbcd787162b6f63b91d6bac5b3" +dependencies = [ + "rustc_version 0.2.3", +] + +[[package]] +name = "bitfield" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46afbd2983a5d5a7bd740ccb198caf5b82f45c40c09c0eed36052d91cb92e719" + +[[package]] +name = "bitfield" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d7e60934ceec538daadb9d8432424ed043a904d8e0243f3c6446bce549a46ac" + +[[package]] +name = "bitfield-struct" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ca6739863c590881f038d033a146c51ddae239186a4327014839fd864f44ed5" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "bitflags" +version = "2.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" +dependencies = [ + "serde_core", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "cargo_toml" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa61aec073ec94791433ddf3df2323ff9d1711557c2a0eefb0f99cb4f8dca520" +dependencies = [ + "semver 1.0.28", + "serde", + "toml", +] + +[[package]] +name = "cc" +version = "1.2.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "556e016178bb5662a08681bbe0f00f8e17631781a4dfc8c45e466e4b185ec27f" +dependencies = [ + "find-msvc-tools", + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "cobs" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1" +dependencies = [ + "thiserror", +] + +[[package]] +name = "config" +version = "0.15.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f316c6237b2d38be61949ecd15268a4c6ca32570079394a2444d9ce2c72a72d8" +dependencies = [ + "async-trait", + "convert_case", + "json5", + "pathdiff", + "ron", + "rust-ini", + "serde-untagged", + "serde_core", + "serde_json", + "toml", + "winnow", + "yaml-rust2", +] + +[[package]] +name = "const-random" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359" +dependencies = [ + "const-random-macro", +] + +[[package]] +name = "const-random-macro" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" +dependencies = [ + "getrandom", + "once_cell", + "tiny-keccak", +] + +[[package]] +name = "convert_case" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "cordyceps" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "688d7fbb8092b8de775ef2536f36c8c31f2bc4006ece2e8d8ad2d17d00ce0a2a" +dependencies = [ + "loom", + "tracing", +] + +[[package]] +name = "cortex-m" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ec610d8f49840a5b376c69663b6369e71f4b34484b9b2eb29fb918d92516cb9" +dependencies = [ + "bare-metal", + "bitfield 0.13.2", + "embedded-hal 0.2.7", + "volatile-register", +] + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "critical-section" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" + +[[package]] +name = "crunchy" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" + +[[package]] +name = "crypto-common" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "darling" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" +dependencies = [ + "darling_core 0.20.11", + "darling_macro 0.20.11", +] + +[[package]] +name = "darling" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" +dependencies = [ + "darling_core 0.23.0", + "darling_macro 0.23.0", +] + +[[package]] +name = "darling_core" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn", +] + +[[package]] +name = "darling_core" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0" +dependencies = [ + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn", +] + +[[package]] +name = "darling_macro" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" +dependencies = [ + "darling_core 0.20.11", + "quote", + "syn", +] + +[[package]] +name = "darling_macro" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" +dependencies = [ + "darling_core 0.23.0", + "quote", + "syn", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "dlv-list" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "442039f5147480ba31067cb00ada1adae6892028e40e45fc5de7b7df6dcc1b5f" +dependencies = [ + "const-random", +] + +[[package]] +name = "document-features" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61" +dependencies = [ + "litrs", +] + +[[package]] +name = "embassy-executor" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d0d3b15c9d7dc4fec1d8cb77112472fb008b3b28c51ad23838d83587a6d2f1e" +dependencies = [ + "cordyceps", + "critical-section", + "document-features", + "embassy-executor-macros", + "embassy-executor-timer-queue", +] + +[[package]] +name = "embassy-executor-macros" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d11a246f53de5f97a387f40ac24726817cd0b6f833e7603baac784f29d6ff276" +dependencies = [ + "darling 0.20.11", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "embassy-executor-timer-queue" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fc328bf943af66b80b98755db9106bf7e7471b0cf47dc8559cd9a6be504cc9c" + +[[package]] +name = "embassy-futures" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc2d050bdc5c21e0862a89256ed8029ae6c290a93aecefc73084b3002cdebb01" + +[[package]] +name = "embassy-net-driver" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524eb3c489760508f71360112bca70f6e53173e6fe48fc5f0efd0f5ab217751d" + +[[package]] +name = "embassy-net-driver-channel" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a07d2eb9f05a6fc876500949856ea1be40773d866d8cb99384f72d0ae4568c16" +dependencies = [ + "embassy-futures", + "embassy-net-driver", + "embassy-sync", +] + +[[package]] +name = "embassy-sync" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bbd85cf5a5ae56bdf26f618364af642d1d0a4e245cdd75cd9aabda382f65a81" +dependencies = [ + "cfg-if", + "critical-section", + "embedded-io-async 0.7.0", + "futures-core", + "futures-sink", + "heapless 0.9.3", +] + +[[package]] +name = "embassy-time" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "592b0c143ec626e821d4d90da51a2bd91d559d6c442b7c74a47d368c9e23d97a" +dependencies = [ + "cfg-if", + "critical-section", + "document-features", + "embassy-time-driver", + "embassy-time-queue-utils", + "embedded-hal 0.2.7", + "embedded-hal 1.0.0", + "embedded-hal-async", + "futures-core", +] + +[[package]] +name = "embassy-time-driver" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ee71af1b3a0deaa53eaf2d39252f83504c853646e472400b763060389b9fcc9" +dependencies = [ + "document-features", +] + +[[package]] +name = "embassy-time-queue-utils" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "168297bf80aaf114b3c9ad589bf38b01b3009b9af7f97cd18086c5bbf96f5693" +dependencies = [ + "embassy-executor-timer-queue", + "heapless 0.9.3", +] + +[[package]] +name = "embassy-usb" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a25746d8b152b72fbf2a217f489a083dbbe243f281f09184a1f2cfbe9bbb245f" +dependencies = [ + "bitflags", + "embassy-futures", + "embassy-net-driver-channel", + "embassy-sync", + "embassy-time", + "embassy-usb-driver", + "embedded-io-async 0.7.0", + "heapless 0.9.3", + "ssmarshal", + "usbd-hid", +] + +[[package]] +name = "embassy-usb-driver" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa675c5f4349b6aa0fcffc4bf9b241f18cd11b97c1f8323273fb9a5449937fbd" +dependencies = [ + "embedded-io-async 0.6.1", + "embedded-io-async 0.7.0", +] + +[[package]] +name = "embedded-hal" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35949884794ad573cf46071e41c9b60efb0cb311e3ca01f7af807af1debc66ff" +dependencies = [ + "nb 0.1.3", + "void", +] + +[[package]] +name = "embedded-hal" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "361a90feb7004eca4019fb28352a9465666b24f840f5c3cddf0ff13920590b89" + +[[package]] +name = "embedded-hal-async" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c4c685bbef7fe13c3c6dd4da26841ed3980ef33e841cddfa15ce8a8fb3f1884" +dependencies = [ + "embedded-hal 1.0.0", +] + +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + +[[package]] +name = "embedded-io" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" + +[[package]] +name = "embedded-io" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9eb1aa714776b75c7e67e1da744b81a129b3ff919c8712b5e1b32252c1f07cc7" + +[[package]] +name = "embedded-io-async" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ff09972d4073aa8c299395be75161d582e7629cd663171d62af73c8d50dba3f" +dependencies = [ + "embedded-io 0.6.1", +] + +[[package]] +name = "embedded-io-async" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2564b9f813c544241430e147d8bc454815ef9ac998878d30cc3055449f7fd4c0" +dependencies = [ + "embedded-io 0.7.1", +] + +[[package]] +name = "embedded-storage" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a21dea9854beb860f3062d10228ce9b976da520a73474aed3171ec276bc0c032" + +[[package]] +name = "embedded-storage-async" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1763775e2323b7d5f0aa6090657f5e21cfa02ede71f5dc40eead06d64dcd15cc" +dependencies = [ + "embedded-storage", +] + +[[package]] +name = "encode_unicode" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" + +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "erased-serde" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec" +dependencies = [ + "serde", + "serde_core", + "typeid", +] + +[[package]] +name = "find-msvc-tools" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + +[[package]] +name = "futures" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" + +[[package]] +name = "futures-io" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" + +[[package]] +name = "futures-macro" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" + +[[package]] +name = "futures-task" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" + +[[package]] +name = "futures-util" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" +dependencies = [ + "futures-core", + "futures-macro", + "futures-sink", + "futures-task", + "pin-project-lite", +] + +[[package]] +name = "generator" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3b854b0e584ead1a33f18b2fcad7cf7be18b3875c78816b753639aa501513ae" +dependencies = [ + "cc", + "cfg-if", + "libc", + "log", + "rustversion", + "windows-link", + "windows-result", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "hash32" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" +dependencies = [ + "byteorder", +] + +[[package]] +name = "hash32" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606" +dependencies = [ + "byteorder", +] + +[[package]] +name = "hashbrown" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +dependencies = [ + "ahash", +] + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" + +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +dependencies = [ + "foldhash", +] + +[[package]] +name = "hashbrown" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" + +[[package]] +name = "hashlink" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "824e001ac4f3012dd16a264bec811403a67ca9deb6c102fc5049b32c4574b35f" +dependencies = [ + "hashbrown 0.16.1", +] + +[[package]] +name = "heapless" +version = "0.7.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdc6457c0eb62c71aac4bc17216026d8410337c4126773b9c5daba343f17964f" +dependencies = [ + "atomic-polyfill", + "hash32 0.2.1", + "rustc_version 0.4.1", + "serde", + "spin", + "stable_deref_trait", +] + +[[package]] +name = "heapless" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bfb9eb618601c89945a70e254898da93b13be0388091d42117462b265bb3fad" +dependencies = [ + "hash32 0.3.1", + "stable_deref_trait", +] + +[[package]] +name = "heapless" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25ba4bd83f9415b58b4ed8dc5714c76e626a105be4646c02630ad730ad3b5aa4" +dependencies = [ + "hash32 0.3.1", + "serde_core", + "stable_deref_trait", +] + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "indexmap" +version = "2.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" +dependencies = [ + "equivalent", + "hashbrown 0.17.1", +] + +[[package]] +name = "itoa" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" + +[[package]] +name = "json5" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96b0db21af676c1ce64250b5f40f3ce2cf27e4e47cb91ed91eb6fe9350b430c1" +dependencies = [ + "pest", + "pest_derive", + "serde", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "libc" +version = "0.2.186" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" + +[[package]] +name = "litrs" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092" + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "953f07c43838f8e6f9758cab68bf5bed85465e7587ebe0b823f1bcd81978ad3a" + +[[package]] +name = "loom" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca" +dependencies = [ + "cfg-if", + "generator", + "scoped-tls", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "matchers" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" +dependencies = [ + "regex-automata", +] + +[[package]] +name = "memchr" +version = "2.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b947ae49db0d222b1dbc6b113ce7248a3fc3a6ca21b696717bfc000ba4484d8" + +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] + +[[package]] +name = "nb" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "801d31da0513b6ec5214e9bf433a77966320625a37860f910be265be6e18d06f" +dependencies = [ + "nb 1.1.0", +] + +[[package]] +name = "nb" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d5439c4ad607c3c23abf66de8c8bf57ba8adcd1f129e699851a6e43935d339d" + +[[package]] +name = "nu-ansi-term" +version = "0.50.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" +dependencies = [ + "windows-sys", +] + +[[package]] +name = "once_cell" +version = "1.21.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" + +[[package]] +name = "ordered-multimap" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49203cdcae0030493bad186b28da2fa25645fa276a51b6fec8010d281e02ef79" +dependencies = [ + "dlv-list", + "hashbrown 0.14.5", +] + +[[package]] +name = "panic-halt" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a513e167849a384b7f9b746e517604398518590a9142f4846a32e3c2a4de7b11" + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "pastey" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ee67f1008b1ba2321834326597b8e186293b049a023cdef258527550b9935b4" + +[[package]] +name = "pathdiff" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" + +[[package]] +name = "pest" +version = "2.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662" +dependencies = [ + "memchr", + "ucd-trie", +] + +[[package]] +name = "pest_derive" +version = "2.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77" +dependencies = [ + "pest", + "pest_generator", +] + +[[package]] +name = "pest_generator" +version = "2.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f" +dependencies = [ + "pest", + "pest_meta", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "pest_meta" +version = "2.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220" +dependencies = [ + "pest", + "sha2", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" + +[[package]] +name = "portable-atomic" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" + +[[package]] +name = "postcard" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" +dependencies = [ + "cobs", + "embedded-io 0.4.0", + "embedded-io 0.6.1", + "heapless 0.7.17", + "postcard-derive", + "serde", +] + +[[package]] +name = "postcard-derive" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0232bd009a197ceec9cc881ba46f727fcd8060a2d8d6a9dde7a69030a6fe2bb" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "proc-macro2" +version = "1.0.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "regex-automata" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" + +[[package]] +name = "riscv" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e42cdafa0aa3f0f956b7993cace26de5dafff7bb4f2c5b1dcb2c3723f4267a4f" +dependencies = [ + "critical-section", + "embedded-hal 1.0.0", + "pastey", + "riscv-macros", + "riscv-types", +] + +[[package]] +name = "riscv-macros" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ad9f6dda08d90d091bc0743967cab369b8fe39ea74b26783ba2ca5c0ce39e86" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "riscv-rt" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0baa4cb06cc47b4f87b1252a542d1442ab078520a4e3744eb8e654b485aa205" +dependencies = [ + "riscv", + "riscv-macros", + "riscv-target-parser", + "riscv-types", +] + +[[package]] +name = "riscv-target-parser" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1376b15f3ff160e9b1e8ea564ce427f2f6fcf77528cc0a8bf405cb476f9cea7" + +[[package]] +name = "riscv-types" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3f2ad9f15a07f4a0e1677124f9120ce7e83ab7e1ca7186af0ca9da529b62e80" + +[[package]] +name = "rmk" +version = "0.8.2" +dependencies = [ + "byteorder", + "cortex-m", + "crc32fast", + "document-features", + "embassy-futures", + "embassy-sync", + "embassy-time", + "embassy-usb", + "embedded-hal 1.0.0", + "embedded-hal-async", + "embedded-io-async 0.7.0", + "futures", + "heapless 0.9.3", + "paste", + "postcard", + "rmk-macro", + "rmk-types", + "sequential-storage", + "serde", + "static_cell", + "usbd-hid", +] + +[[package]] +name = "rmk-config" +version = "0.6.1" +dependencies = [ + "config", + "miniz_oxide", + "once_cell", + "paste", + "pest", + "pest_derive", + "postcard", + "serde", + "serde-inline-default", + "toml", +] + +[[package]] +name = "rmk-macro" +version = "0.7.1" +dependencies = [ + "cargo_toml", + "darling 0.23.0", + "proc-macro2", + "quote", + "rmk-config", + "rmk-types", + "strum", + "syn", +] + +[[package]] +name = "rmk-qemu-riscv" +version = "0.2.0" +dependencies = [ + "embassy-executor", + "embassy-futures", + "embassy-time", + "embedded-io-async 0.7.0", + "panic-halt", + "riscv", + "riscv-rt", + "rmk", + "semihosting", + "static_cell", + "uart_16550", +] + +[[package]] +name = "rmk-types" +version = "0.2.2" +dependencies = [ + "bitfield-struct", + "cobs", + "heapless 0.9.3", + "postcard", + "rmk-config", + "serde", + "strum", + "toml", +] + +[[package]] +name = "ron" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4147b952f3f819eca0e99527022f7d6a8d05f111aeb0a62960c74eb283bec8fc" +dependencies = [ + "bitflags", + "once_cell", + "serde", + "serde_derive", + "typeid", + "unicode-ident", +] + +[[package]] +name = "rust-ini" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "796e8d2b6696392a43bea58116b667fb4c29727dc5abd27d6acf338bb4f688c7" +dependencies = [ + "cfg-if", + "ordered-multimap", +] + +[[package]] +name = "rustc_version" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +dependencies = [ + "semver 0.9.0", +] + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver 1.0.28", +] + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "semihosting" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8e4abf97879f4e80db69a9fba7bd64998e9bdad25f58ef045a778e191172fd4" + +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver" +version = "1.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" +dependencies = [ + "serde", + "serde_core", +] + +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" + +[[package]] +name = "sequential-storage" +version = "7.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "574e5a379bf43653079b34cb4cf32958404b5f42e0ed5b5adcdff02c2de04d4d" +dependencies = [ + "embedded-storage-async", + "postcard", + "serde", +] + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde-inline-default" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bf03b7a5281cfd4013bc788d057b0f09fc634397d83bc8973c955bd4f32727a" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde-untagged" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9faf48a4a2d2693be24c6289dbe26552776eb7737074e6722891fadbe6c5058" +dependencies = [ + "erased-serde", + "serde", + "serde_core", + "typeid", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.150" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" +dependencies = [ + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", +] + +[[package]] +name = "serde_spanned" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" +dependencies = [ + "serde_core", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shlex" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +dependencies = [ + "lock_api", +] + +[[package]] +name = "ssmarshal" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3e6ad23b128192ed337dfa4f1b8099ced0c2bf30d61e551b65fda5916dbb850" +dependencies = [ + "encode_unicode", + "serde", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + +[[package]] +name = "static_cell" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0530892bb4fa575ee0da4b86f86c667132a94b74bb72160f58ee5a4afec74c23" +dependencies = [ + "portable-atomic", +] + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "strum" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9628de9b8791db39ceda2b119bbe13134770b56c138ec1d3af810d045c04f9bd" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab85eea0270ee17587ed4156089e10b9e6880ee688791d45a905f5b1ca36f664" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "syn" +version = "2.0.117" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "thiserror" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "thread_local" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + +[[package]] +name = "toml" +version = "1.1.2+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee" +dependencies = [ + "indexmap", + "serde_core", + "serde_spanned", + "toml_datetime", + "toml_parser", + "toml_writer", + "winnow", +] + +[[package]] +name = "toml_datetime" +version = "1.1.1+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_parser" +version = "1.1.2+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" +dependencies = [ + "winnow", +] + +[[package]] +name = "toml_writer" +version = "1.1.1+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" + +[[package]] +name = "tracing" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" +dependencies = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex-automata", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "typeid" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" + +[[package]] +name = "typenum" +version = "1.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" + +[[package]] +name = "uart_16550" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22ee77075ecbc5e1c9b1236d03ff013dd77c7bb06da181c5c44f1f39b6cf3ff2" +dependencies = [ + "bitflags", +] + +[[package]] +name = "ucd-trie" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" + +[[package]] +name = "unicode-ident" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" + +[[package]] +name = "unicode-segmentation" +version = "1.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" + +[[package]] +name = "usb-device" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98816b1accafbb09085168b90f27e93d790b4bfa19d883466b5e53315b5f06a6" +dependencies = [ + "heapless 0.8.0", + "portable-atomic", +] + +[[package]] +name = "usbd-hid" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68beab087e4971a2fe76f631478b0e91d39593f58efd2775026ce6dc07a7bac6" +dependencies = [ + "usb-device", + "usbd-hid-macros", +] + +[[package]] +name = "usbd-hid-descriptors" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b297f021719c4308d5d0c61b6c1e7c6b3ba383deba774b49aa5484f996bdb8f1" +dependencies = [ + "bitfield 0.14.0", +] + +[[package]] +name = "usbd-hid-macros" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "011a3219e0933f5b3ad7dc90d9a66541a967d084c98c067deed1cd608e557ed7" +dependencies = [ + "byteorder", + "hashbrown 0.13.2", + "log", + "proc-macro2", + "quote", + "serde", + "syn", + "usbd-hid-descriptors", +] + +[[package]] +name = "valuable" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" + +[[package]] +name = "vcell" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77439c1b53d2303b20d9459b1ade71a83c716e3f9c34f3228c00e6f185d6c002" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "void" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" + +[[package]] +name = "volatile-register" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de437e2a6208b014ab52972a27e59b33fa2920d3e00fe05026167a1c509d19cc" +dependencies = [ + "vcell", +] + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-result" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", +] + +[[package]] +name = "winnow" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" +dependencies = [ + "memchr", +] + +[[package]] +name = "yaml-rust2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "631a50d867fafb7093e709d75aaee9e0e0d5deb934021fcea25ac2fe09edc51e" +dependencies = [ + "arraydeque", + "encoding_rs", + "hashlink", +] + +[[package]] +name = "zerocopy" +version = "0.8.52" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce1022995ff5ff5d841ad7d994facc23098cd40152f2c1d11cd607c6f530653f" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.52" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ae7f38b72ec2a254e2b87ef277cf2cd4fb97cbebf944faa6f33354da0867930" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zmij" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" diff --git a/examples/use_rust/qemu-riscv-rynk/Cargo.toml b/examples/use_rust/qemu-riscv-rynk/Cargo.toml new file mode 100644 index 000000000..93d2c040f --- /dev/null +++ b/examples/use_rust/qemu-riscv-rynk/Cargo.toml @@ -0,0 +1,23 @@ +[package] +name = "rmk-qemu-riscv" +version = "0.2.0" +authors = ["Haobo Gu "] +description = "Keyboard firmware written in Rust" +homepage = "https://github.com/haobogu/rmk" +repository = "https://github.com/haobogu/rmk" +readme = "../../README.md" +edition = "2024" +license = "MIT OR Apache-2.0" + +[dependencies] +rmk = { path = "../../../rmk", default-features = false, features = ["rynk"] } +embassy-executor = { version = "0.10", features = ["platform-riscv32", "executor-thread"] } +embassy-futures = { version = "0.1" } +embassy-time = { version = "0.5", features = ["mock-driver", "generic-queue-8"] } +riscv-rt = "0.18" +riscv = { version = "0.16", features = ["critical-section-single-hart"] } +semihosting = { version = "0.1", features = ["stdio"] } +embedded-io-async = "0.7" +panic-halt = "1" +static_cell = "2" +uart_16550 = "0.6" diff --git a/examples/use_rust/qemu-riscv-rynk/README.md b/examples/use_rust/qemu-riscv-rynk/README.md new file mode 100644 index 000000000..e13c98fff --- /dev/null +++ b/examples/use_rust/qemu-riscv-rynk/README.md @@ -0,0 +1,9 @@ +# RMK QEMU (RISC-V + Rynk) + +```sh +python run.py +``` + +RMK firmware on QEMU RISC-V `virt`, UART -> TCP :9000. +The runner builds the firmware, starts QEMU, then runs the strict Rynk behavior +verifier in `rynk/examples/qemu_behavior.rs`. diff --git a/examples/use_rust/qemu-riscv-rynk/build.rs b/examples/use_rust/qemu-riscv-rynk/build.rs new file mode 100644 index 000000000..c8999477e --- /dev/null +++ b/examples/use_rust/qemu-riscv-rynk/build.rs @@ -0,0 +1,19 @@ +use std::env; +use std::fs::File; +use std::io::Write; +use std::path::PathBuf; + +fn main() { + let out = PathBuf::from(env::var_os("OUT_DIR").unwrap()); + + // Copy memory.x to OUT_DIR so the linker can find it. + for (name, bytes) in [("memory.x", include_bytes!("memory.x").as_slice())] { + File::create(out.join(name)).unwrap().write_all(bytes).unwrap(); + println!("cargo:rerun-if-changed={name}"); + } + println!("cargo:rustc-link-search={}", out.display()); + + // Link order: our memory.x first, then riscv-rt's link.x. + println!("cargo:rustc-link-arg-bins=-Tmemory.x"); + println!("cargo:rustc-link-arg-bins=-Tlink.x"); +} diff --git a/examples/use_rust/qemu-riscv-rynk/memory.x b/examples/use_rust/qemu-riscv-rynk/memory.x new file mode 100644 index 000000000..82cd3d5c7 --- /dev/null +++ b/examples/use_rust/qemu-riscv-rynk/memory.x @@ -0,0 +1,18 @@ +/* QEMU `virt` machine: 16 MB RAM at 0x80000000. + * With `-bios none`, the kernel ELF is loaded directly at RAM start. + * Use only 16 MB — QEMU places the device tree near the top of RAM. + * + * riscv-rt's link.x provides defaults: _max_hart_id=0, _hart_stack_size=2K, + * _stack_start = ORIGIN(REGION_STACK) + LENGTH(REGION_STACK). + */ +MEMORY +{ + RAM : ORIGIN = 0x80000000, LENGTH = 16M +} + +REGION_ALIAS("REGION_TEXT", RAM); +REGION_ALIAS("REGION_RODATA", RAM); +REGION_ALIAS("REGION_DATA", RAM); +REGION_ALIAS("REGION_BSS", RAM); +REGION_ALIAS("REGION_HEAP", RAM); +REGION_ALIAS("REGION_STACK", RAM); diff --git a/examples/use_rust/qemu-riscv-rynk/run.py b/examples/use_rust/qemu-riscv-rynk/run.py new file mode 100644 index 000000000..6249e8041 --- /dev/null +++ b/examples/use_rust/qemu-riscv-rynk/run.py @@ -0,0 +1,39 @@ +from pathlib import Path +import subprocess + +PORT = 9000 +ROOT = Path(__file__).resolve().parents[3] +HERE = Path(__file__).resolve().parent +ELF = HERE / "target/riscv32imac-unknown-none-elf/debug/rmk-qemu-riscv" + +subprocess.run(["cargo", "build"], cwd=HERE, check=True) + +q = subprocess.Popen( + ["qemu-system-riscv32", "-M", "virt", "-cpu", "rv32", + "-semihosting", "-nographic", "-bios", "none", + "-kernel", str(ELF), "-serial", f"tcp::{PORT},server,nowait"], + stdin=subprocess.DEVNULL, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) +print(f"QEMU started, serial on tcp::{PORT}", flush=True) + +try: + subprocess.run( + [ + "cargo", + "run", + "--manifest-path", + str(ROOT / "rynk/Cargo.toml"), + "--example", + "qemu_behavior", + "--", + f"127.0.0.1:{PORT}", + ], + cwd=ROOT, + check=True, + ) +finally: + q.terminate() + try: + q.wait(timeout=2) + except subprocess.TimeoutExpired: + q.kill() + q.wait() diff --git a/examples/use_rust/qemu-riscv-rynk/src/main.rs b/examples/use_rust/qemu-riscv-rynk/src/main.rs new file mode 100644 index 000000000..e1f8cb3cc --- /dev/null +++ b/examples/use_rust/qemu-riscv-rynk/src/main.rs @@ -0,0 +1,136 @@ +#![no_main] +#![no_std] + +use core::convert::Infallible; +use core::ptr::NonNull; + +use embassy_executor::Spawner; +use embassy_futures::yield_now; +use embedded_io_async::{Read, Write}; +use panic_halt as _; +use rmk::config::{BehaviorConfig, LockConfig, PositionalConfig, RmkConfig}; +use rmk::keymap::KeymapData; +use rmk::types::action::{EncoderAction, KeyAction}; +use rmk::types::fork::{Fork, StateBits}; +use rmk::types::modifier::ModifierCombination; +use rmk::types::morse::{Morse, MorseProfile}; +use rmk::{initialize_keymap, k, layer}; +use semihosting::println; +use static_cell::StaticCell; +use uart_16550::Uart16550; +use uart_16550::backend::MmioBackend; + +struct Uart(Uart16550); + +impl Uart { + fn new() -> Self { + let addr = NonNull::new(0x1000_0000usize as *mut u8).unwrap(); + let mut uart = unsafe { Uart16550::new_mmio(addr, 1) }.unwrap(); + uart.init(uart_16550::Config::default()).unwrap(); + Self(uart) + } +} + +impl embedded_io_async::ErrorType for Uart { + type Error = Infallible; +} + +impl Read for Uart { + async fn read(&mut self, buf: &mut [u8]) -> Result { + loop { + let n = self.0.receive_bytes(buf); + if n > 0 { return Ok(n) } else { yield_now().await } + } + } +} + +impl Write for Uart { + async fn write(&mut self, buf: &[u8]) -> Result { + let mut sent = 0; + while sent < buf.len() { + let n = self.0.send_bytes(&buf[sent..]); + if n > 0 { sent += n } else { yield_now().await } + } + Ok(sent) + } + + async fn flush(&mut self) -> Result<(), Self::Error> { + Ok(()) + } +} + +const COL: usize = 3; +const ROW: usize = 3; +const NUM_LAYER: usize = 2; +const NUM_ENCODER: usize = 1; + +#[rustfmt::skip] +const fn get_default_keymap() -> [[[KeyAction; COL]; ROW]; NUM_LAYER] { + [ + layer!([ + [k!(Kp1), k!(Kp2), k!(Kp3)], + [k!(Kp4), k!(Kp5), k!(Kp6)], + [k!(Kp7), k!(Kp8), k!(Kp9)] + ]), + layer!([ + [k!(A), k!(B), k!(C)], + [k!(D), k!(E), k!(F)], + [k!(G), k!(H), k!(I)] + ]), + ] +} + +const DEFAULT_ENCODER_MAP: [[EncoderAction; NUM_ENCODER]; NUM_LAYER] = [ + [EncoderAction::new(k!(KpPlus), k!(KpMinus))], + [EncoderAction::new(k!(AudioVolUp), k!(AudioVolDown))], +]; + +#[embassy_executor::main] +async fn main(_spawner: Spawner) { + println!("[RMK] starting"); + + let mut rx = Uart::new(); + let mut tx = Uart::new(); + + let mut keymap_data = KeymapData::new_with_encoder(get_default_keymap(), DEFAULT_ENCODER_MAP); + let mut behavior_config = BehaviorConfig::default(); + behavior_config + .fork + .forks + .push(Fork::new( + k!(A), + k!(B), + k!(C), + StateBits::default(), + StateBits::default(), + ModifierCombination::default(), + true, + )) + .unwrap(); + behavior_config + .morse + .morses + .push(Morse { + profile: MorseProfile::const_default(), + actions: rmk::heapless::LinearMap::new(), + }) + .unwrap(); + let positional_config = PositionalConfig::default(); + let keymap = initialize_keymap(&mut keymap_data, &mut behavior_config, &positional_config).await; + + static RMK_CONFIG: StaticCell> = StaticCell::new(); + let rmk_config = RMK_CONFIG.init(RmkConfig { + lock_config: LockConfig { + insecure: true, + ..Default::default() + }, + ..Default::default() + }); + + let service = rmk::host::HostService::new(&keymap, rmk_config); + // A UART has no "connected" notion, so just restart the framing session on + // every read/write error, dropping whatever frame was in flight. + loop { + service.run_session(&mut rx, &mut tx).await; + } +} diff --git a/examples/use_rust/rp2040/Cargo.lock b/examples/use_rust/rp2040/Cargo.lock index 7cb8b6372..f3d7cc32d 100644 --- a/examples/use_rust/rp2040/Cargo.lock +++ b/examples/use_rust/rp2040/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -980,6 +986,12 @@ dependencies = [ "nb 1.1.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -1554,6 +1566,15 @@ version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] + [[package]] name = "nb" version = "0.1.3" @@ -1840,6 +1861,8 @@ checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", "defmt 1.0.1", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -2053,10 +2076,12 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", "toml 1.0.3+spec-1.1.0", diff --git a/examples/use_rust/rp2040/Cargo.toml b/examples/use_rust/rp2040/Cargo.toml index 245eecb32..724515c00 100644 --- a/examples/use_rust/rp2040/Cargo.toml +++ b/examples/use_rust/rp2040/Cargo.toml @@ -10,7 +10,7 @@ edition = "2024" license = "MIT OR Apache-2.0" [dependencies] -rmk = { path = "../../../rmk", features = ["rp2040"] } +rmk = { path = "../../../rmk", default-features = false, features = ["defmt", "storage", "vial", "watchdog", "rp2040"] } embassy-time = { version = "0.5", features = ["defmt"] } embassy-rp = { version = "0.10", features = [ "rp2040", diff --git a/examples/use_rust/rp2040/src/main.rs b/examples/use_rust/rp2040/src/main.rs index 69bfdd0e5..077feb886 100644 --- a/examples/use_rust/rp2040/src/main.rs +++ b/examples/use_rust/rp2040/src/main.rs @@ -87,23 +87,13 @@ async fn main(_spawner: Spawner) { let debouncer = DefaultDebouncer::new(); let mut matrix = Matrix::<_, _, _, ROW, COL, true>::new(row_pins, col_pins, debouncer); let mut keyboard = Keyboard::new(&keymap); - let host_ctx = rmk::host::KeyboardContext::new(&keymap); - let mut host_service = HostService::new(&host_ctx, &rmk_config); + let host_service = HostService::new(&keymap, &rmk_config); - let mut usb_transport = UsbTransport::new(driver, rmk_config.device_config); + let mut usb_transport = UsbTransport::new(driver, rmk_config.device_config).with_host_service(&host_service); let mut wpm_processor = WpmProcessor::new(); let mut watchdog_runner = Rp2040Watchdog::default_runner(embassy_rp::watchdog::Watchdog::new(p.WATCHDOG)); // Start - run_all!( - matrix, - storage, - usb_transport, - wpm_processor, - keyboard, - host_service, - watchdog_runner - ) - .await; + run_all!(matrix, storage, usb_transport, wpm_processor, keyboard, watchdog_runner).await; } diff --git a/examples/use_rust/rp2040_dfu_split/Cargo.lock b/examples/use_rust/rp2040_dfu_split/Cargo.lock index e095b8269..dd0dae711 100644 --- a/examples/use_rust/rp2040_dfu_split/Cargo.lock +++ b/examples/use_rust/rp2040_dfu_split/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -1028,6 +1034,12 @@ dependencies = [ "nb 1.1.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -1604,6 +1616,15 @@ version = "2.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4" +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] + [[package]] name = "nb" version = "0.1.3" @@ -1890,6 +1911,8 @@ checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", "defmt 1.1.0", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -2106,10 +2129,12 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", "toml", diff --git a/examples/use_rust/rp2040_dfu_split/Cargo.toml b/examples/use_rust/rp2040_dfu_split/Cargo.toml index 1302c7eeb..1996ceef1 100644 --- a/examples/use_rust/rp2040_dfu_split/Cargo.toml +++ b/examples/use_rust/rp2040_dfu_split/Cargo.toml @@ -16,10 +16,10 @@ embassy-rp = { version = "0.10", features = ["rp2040", "defmt", "time-driver", " embassy-executor = { version = "0.10", features = ["defmt", "platform-cortex-m", "executor-thread"] } cortex-m-rt = { version = "0.7.5", features = ["set-vtor"] } static_cell = "2" -portable-atomic = { version = "1.11", features = ["critical-section"] } -defmt = "1.0" -defmt-rtt = "1.0" -panic-probe = { version = "1.0", features = ["print-defmt"] } +portable-atomic = { version = "1", features = ["critical-section"] } +defmt = "1" +defmt-rtt = "1" +panic-probe = { version = "1", features = ["print-defmt"] } [build-dependencies] const-gen = "1.6" diff --git a/examples/use_rust/rp2040_dfu_split/src/central.rs b/examples/use_rust/rp2040_dfu_split/src/central.rs index e0a45ff36..5545c2bda 100644 --- a/examples/use_rust/rp2040_dfu_split/src/central.rs +++ b/examples/use_rust/rp2040_dfu_split/src/central.rs @@ -151,10 +151,9 @@ async fn main(_spawner: Spawner) { let debouncer = DefaultDebouncer::new(); let mut matrix = Matrix::<_, _, _, 2, 2, true>::new(row_pins, col_pins, debouncer); let mut keyboard = Keyboard::new(&keymap); - let host_ctx = rmk::host::KeyboardContext::new(&keymap); - let mut host_service = HostService::new(&host_ctx, &rmk_config); + let host_service = HostService::new(&keymap, &rmk_config); - let mut usb_transport = UsbTransport::new(driver, rmk_config.device_config); + let mut usb_transport = UsbTransport::new(driver, rmk_config.device_config).with_host_service(&host_service); let mut wpm_processor = WpmProcessor::new(); let mut watchdog_runner = Rp2040Watchdog::default_runner(embassy_rp::watchdog::Watchdog::new(p.WATCHDOG)); @@ -174,7 +173,6 @@ async fn main(_spawner: Spawner) { wpm_processor, dfu_led_processor, keyboard, - host_service, watchdog_runner ), // use UpdatePolicy::Force to force the peripheral update at every start of central diff --git a/examples/use_rust/rp2040_direct_pin/Cargo.lock b/examples/use_rust/rp2040_direct_pin/Cargo.lock index 7cb8b6372..f3d7cc32d 100644 --- a/examples/use_rust/rp2040_direct_pin/Cargo.lock +++ b/examples/use_rust/rp2040_direct_pin/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -980,6 +986,12 @@ dependencies = [ "nb 1.1.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -1554,6 +1566,15 @@ version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] + [[package]] name = "nb" version = "0.1.3" @@ -1840,6 +1861,8 @@ checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", "defmt 1.0.1", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -2053,10 +2076,12 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", "toml 1.0.3+spec-1.1.0", diff --git a/examples/use_rust/rp2040_direct_pin/Cargo.toml b/examples/use_rust/rp2040_direct_pin/Cargo.toml index 245eecb32..724515c00 100644 --- a/examples/use_rust/rp2040_direct_pin/Cargo.toml +++ b/examples/use_rust/rp2040_direct_pin/Cargo.toml @@ -10,7 +10,7 @@ edition = "2024" license = "MIT OR Apache-2.0" [dependencies] -rmk = { path = "../../../rmk", features = ["rp2040"] } +rmk = { path = "../../../rmk", default-features = false, features = ["defmt", "storage", "vial", "watchdog", "rp2040"] } embassy-time = { version = "0.5", features = ["defmt"] } embassy-rp = { version = "0.10", features = [ "rp2040", diff --git a/examples/use_rust/rp2040_direct_pin/src/main.rs b/examples/use_rust/rp2040_direct_pin/src/main.rs index a3dd87587..654d4f105 100644 --- a/examples/use_rust/rp2040_direct_pin/src/main.rs +++ b/examples/use_rust/rp2040_direct_pin/src/main.rs @@ -94,12 +94,11 @@ async fn main(_spawner: Spawner) { let debouncer = DefaultDebouncer::new(); let mut matrix = DirectPinMatrix::<_, _, ROW, COL, SIZE>::new(direct_pins, debouncer, true); let mut keyboard = Keyboard::new(&keymap); - let host_ctx = rmk::host::KeyboardContext::new(&keymap); - let mut host_service = HostService::new(&host_ctx, &rmk_config); + let host_service = HostService::new(&keymap, &rmk_config); - let mut usb_transport = UsbTransport::new(driver, rmk_config.device_config); + let mut usb_transport = UsbTransport::new(driver, rmk_config.device_config).with_host_service(&host_service); let mut wpm_processor = WpmProcessor::new(); // Start - run_all!(matrix, storage, usb_transport, wpm_processor, keyboard, host_service).await; + run_all!(matrix, storage, usb_transport, wpm_processor, keyboard).await; } diff --git a/examples/use_rust/rp2040_embassy_boot/Cargo.lock b/examples/use_rust/rp2040_embassy_boot/Cargo.lock index 6c2091cb8..9a85fd078 100644 --- a/examples/use_rust/rp2040_embassy_boot/Cargo.lock +++ b/examples/use_rust/rp2040_embassy_boot/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -1028,6 +1034,12 @@ dependencies = [ "nb 1.1.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -1605,6 +1617,15 @@ version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b947ae49db0d222b1dbc6b113ce7248a3fc3a6ca21b696717bfc000ba4484d8" +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] + [[package]] name = "nb" version = "0.1.3" @@ -1891,6 +1912,8 @@ checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", "defmt 1.1.0", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -2107,10 +2130,12 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", "toml", diff --git a/examples/use_rust/rp2040_embassy_boot/Cargo.toml b/examples/use_rust/rp2040_embassy_boot/Cargo.toml index 79223723c..6cc916702 100644 --- a/examples/use_rust/rp2040_embassy_boot/Cargo.toml +++ b/examples/use_rust/rp2040_embassy_boot/Cargo.toml @@ -10,8 +10,12 @@ edition = "2024" license = "MIT OR Apache-2.0" [dependencies] -rmk = { path = "../../../rmk", features = [ +rmk = { path = "../../../rmk", default-features = false, features = [ + "defmt", "dfu_rp", + "storage", + "vial", + "watchdog", # "dfu_lock" ] } embassy-time = { version = "0.5", features = ["defmt"] } diff --git a/examples/use_rust/rp2040_embassy_boot/src/main.rs b/examples/use_rust/rp2040_embassy_boot/src/main.rs index df449e9cb..6c5ecc930 100644 --- a/examples/use_rust/rp2040_embassy_boot/src/main.rs +++ b/examples/use_rust/rp2040_embassy_boot/src/main.rs @@ -145,10 +145,9 @@ async fn main(_spawner: Spawner) { let debouncer = DefaultDebouncer::new(); let mut matrix = Matrix::<_, _, _, ROW, COL, true>::new(row_pins, col_pins, debouncer); let mut keyboard = Keyboard::new(&keymap); - let host_ctx = rmk::host::KeyboardContext::new(&keymap); - let mut host_service = HostService::new(&host_ctx, &rmk_config); + let host_service = HostService::new(&keymap, &rmk_config); - let mut usb_transport = UsbTransport::new(driver, rmk_config.device_config); + let mut usb_transport = UsbTransport::new(driver, rmk_config.device_config).with_host_service(&host_service); let mut wpm_processor = WpmProcessor::new(); let mut watchdog_runner = Rp2040Watchdog::default_runner(embassy_rp::watchdog::Watchdog::new(p.WATCHDOG)); @@ -159,7 +158,6 @@ async fn main(_spawner: Spawner) { usb_transport, wpm_processor, keyboard, - host_service, watchdog_runner, dfu_led_processor, // , dfu_lock ) diff --git a/examples/use_rust/rp2040_embassy_boot_split/Cargo.lock b/examples/use_rust/rp2040_embassy_boot_split/Cargo.lock index 124591b57..83deb7f4b 100644 --- a/examples/use_rust/rp2040_embassy_boot_split/Cargo.lock +++ b/examples/use_rust/rp2040_embassy_boot_split/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -1028,6 +1034,12 @@ dependencies = [ "nb 1.1.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -1604,6 +1616,15 @@ version = "2.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4" +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] + [[package]] name = "nb" version = "0.1.3" @@ -1890,6 +1911,8 @@ checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", "defmt 1.1.0", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -2106,10 +2129,12 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", "toml", diff --git a/examples/use_rust/rp2040_embassy_boot_split/Cargo.toml b/examples/use_rust/rp2040_embassy_boot_split/Cargo.toml index b54862e90..eed078bd6 100644 --- a/examples/use_rust/rp2040_embassy_boot_split/Cargo.toml +++ b/examples/use_rust/rp2040_embassy_boot_split/Cargo.toml @@ -10,10 +10,13 @@ edition = "2024" license = "MIT OR Apache-2.0" [dependencies] -rmk = { path = "../../../rmk", features = [ +rmk = { path = "../../../rmk", default-features = false, features = [ + "defmt", "dfu_rp", "split", "storage", + "vial", + "watchdog", ] } embassy-time = { version = "0.5", features = ["defmt"] } embassy-rp = { version = "0.10", features = [ diff --git a/examples/use_rust/rp2040_embassy_boot_split/src/central.rs b/examples/use_rust/rp2040_embassy_boot_split/src/central.rs index 18fd76818..457d9f7de 100644 --- a/examples/use_rust/rp2040_embassy_boot_split/src/central.rs +++ b/examples/use_rust/rp2040_embassy_boot_split/src/central.rs @@ -126,24 +126,15 @@ async fn main(_spawner: Spawner) { let debouncer = DefaultDebouncer::new(); let mut matrix = Matrix::<_, _, _, 2, 2, true>::new(row_pins, col_pins, debouncer); let mut keyboard = Keyboard::new(&keymap); - let host_ctx = rmk::host::KeyboardContext::new(&keymap); - let mut host_service = HostService::new(&host_ctx, &rmk_config); + let host_service = HostService::new(&keymap, &rmk_config); - let mut usb_transport = UsbTransport::new(driver, rmk_config.device_config); + let mut usb_transport = UsbTransport::new(driver, rmk_config.device_config).with_host_service(&host_service); let mut wpm_processor = WpmProcessor::new(); let mut watchdog_runner = Rp2040Watchdog::default_runner(embassy_rp::watchdog::Watchdog::new(p.WATCHDOG)); join( - run_all!( - matrix, - storage, - usb_transport, - wpm_processor, - keyboard, - host_service, - watchdog_runner - ), + run_all!(matrix, storage, usb_transport, wpm_processor, keyboard, watchdog_runner), run_peripheral_manager::<2, 1, 2, 2, _>(0, uart_receiver), ) .await; diff --git a/examples/use_rust/rp2040_oled/Cargo.lock b/examples/use_rust/rp2040_oled/Cargo.lock index ebefb2e2f..75495cb56 100644 --- a/examples/use_rust/rp2040_oled/Cargo.lock +++ b/examples/use_rust/rp2040_oled/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -971,6 +977,12 @@ dependencies = [ "nb 1.1.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -1557,6 +1569,15 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3c8dda44ff03a2f238717214da50f65d5a53b45cd213a7370424ffdb6fae815" +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] + [[package]] name = "nb" version = "0.1.3" @@ -1844,6 +1865,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -2029,6 +2052,7 @@ dependencies = [ "embedded-graphics", "embedded-hal 1.0.0", "embedded-hal-async", + "embedded-io-async 0.7.0", "embedded-storage", "embedded-storage-async", "fixed", @@ -2053,10 +2077,12 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", "toml", diff --git a/examples/use_rust/rp2040_oled/Cargo.toml b/examples/use_rust/rp2040_oled/Cargo.toml index ca22d40a6..98d7b81e4 100644 --- a/examples/use_rust/rp2040_oled/Cargo.toml +++ b/examples/use_rust/rp2040_oled/Cargo.toml @@ -10,7 +10,7 @@ edition = "2024" license = "MIT OR Apache-2.0" [dependencies] -rmk = { path = "../../../rmk", features = ["host", "log", "rp2040", "storage", "usb_log", "vial", "vial_lock", "sh1106"], version = "0.8.2", default-features = false } +rmk = { path = "../../../rmk", features = ["host", "log", "rp2040", "storage", "usb_log", "vial", "host_lock", "sh1106"], default-features = false } oled_async = { version = "0.2.1", features = ["i2c"] } display-interface-i2c = "0.5" embedded-graphics = "0.8" diff --git a/examples/use_rust/rp2040_oled/src/main.rs b/examples/use_rust/rp2040_oled/src/main.rs index 8e769fb78..5033a2839 100644 --- a/examples/use_rust/rp2040_oled/src/main.rs +++ b/examples/use_rust/rp2040_oled/src/main.rs @@ -93,8 +93,7 @@ async fn main(_spawner: Spawner) { let debouncer = DefaultDebouncer::new(); let mut matrix = Matrix::<_, _, _, ROW, COL, true>::new(row_pins, col_pins, debouncer); let mut keyboard = Keyboard::new(&keymap); - let host_ctx = rmk::host::KeyboardContext::new(&keymap); - let mut host_service = HostService::new(&host_ctx, &rmk_config); + let host_service = HostService::new(&keymap, &rmk_config); // Initialize I2C1 on PIN_2 (SDA) and PIN_3 (SCL) let i2c = i2c::I2c::new_async(p.I2C1, p.PIN_3, p.PIN_2, Irqs, i2c::Config::default()); @@ -105,18 +104,9 @@ async fn main(_spawner: Spawner) { .into(); let mut oled = DisplayProcessor::new(display); - let mut usb_transport = UsbTransport::new(driver, rmk_config.device_config); + let mut usb_transport = UsbTransport::new(driver, rmk_config.device_config).with_host_service(&host_service); let mut wpm_processor = WpmProcessor::new(); // Start - run_all!( - matrix, - oled, - storage, - usb_transport, - wpm_processor, - keyboard, - host_service - ) - .await; + run_all!(matrix, oled, storage, usb_transport, wpm_processor, keyboard).await; } diff --git a/examples/use_rust/rp2040_pointing_modes/Cargo.lock b/examples/use_rust/rp2040_pointing_modes/Cargo.lock index 7cb8b6372..f3d7cc32d 100644 --- a/examples/use_rust/rp2040_pointing_modes/Cargo.lock +++ b/examples/use_rust/rp2040_pointing_modes/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -980,6 +986,12 @@ dependencies = [ "nb 1.1.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -1554,6 +1566,15 @@ version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] + [[package]] name = "nb" version = "0.1.3" @@ -1840,6 +1861,8 @@ checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", "defmt 1.0.1", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -2053,10 +2076,12 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", "toml 1.0.3+spec-1.1.0", diff --git a/examples/use_rust/rp2040_pointing_modes/Cargo.toml b/examples/use_rust/rp2040_pointing_modes/Cargo.toml index 245eecb32..724515c00 100644 --- a/examples/use_rust/rp2040_pointing_modes/Cargo.toml +++ b/examples/use_rust/rp2040_pointing_modes/Cargo.toml @@ -10,7 +10,7 @@ edition = "2024" license = "MIT OR Apache-2.0" [dependencies] -rmk = { path = "../../../rmk", features = ["rp2040"] } +rmk = { path = "../../../rmk", default-features = false, features = ["defmt", "storage", "vial", "watchdog", "rp2040"] } embassy-time = { version = "0.5", features = ["defmt"] } embassy-rp = { version = "0.10", features = [ "rp2040", diff --git a/examples/use_rust/rp2040_pointing_modes/src/main.rs b/examples/use_rust/rp2040_pointing_modes/src/main.rs index 673e4b13a..87be508aa 100644 --- a/examples/use_rust/rp2040_pointing_modes/src/main.rs +++ b/examples/use_rust/rp2040_pointing_modes/src/main.rs @@ -89,10 +89,9 @@ async fn main(_spawner: Spawner) { let debouncer = DefaultDebouncer::new(); let mut matrix = Matrix::<_, _, _, ROW, COL, true>::new(row_pins, col_pins, debouncer); let mut keyboard = Keyboard::new(&keymap); - let host_ctx = rmk::host::KeyboardContext::new(&keymap); - let mut host_service = HostService::new(&host_ctx, &rmk_config); + let host_service = HostService::new(&keymap, &rmk_config); - let mut usb_transport = UsbTransport::new(driver, rmk_config.device_config); + let mut usb_transport = UsbTransport::new(driver, rmk_config.device_config).with_host_service(&host_service); let mut wpm_processor = WpmProcessor::new(); let mut pointing_controller = PointingProcessorController::new(); @@ -107,7 +106,6 @@ async fn main(_spawner: Spawner) { wpm_processor, pointing_controller, keyboard, - host_service, watchdog_runner ) .await; diff --git a/examples/use_rust/rp2040_split/Cargo.lock b/examples/use_rust/rp2040_split/Cargo.lock index 4e7928469..3b887e30d 100644 --- a/examples/use_rust/rp2040_split/Cargo.lock +++ b/examples/use_rust/rp2040_split/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -42,9 +48,9 @@ checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236" [[package]] name = "arrayvec" -version = "0.7.6" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" [[package]] name = "ascii-canvas" @@ -63,7 +69,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -77,9 +83,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "az" @@ -137,7 +143,7 @@ checksum = "3ca6739863c590881f038d033a146c51ddae239186a4327014839fd864f44ed5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -148,9 +154,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.11.0" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" +checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" dependencies = [ "serde_core", ] @@ -171,12 +177,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f3c66fd0a41a3b3a5906847b1bf5516048ce083e24fa9341a0fa31d3b4cd73d" dependencies = [ "btuuid", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-sync", "embedded-io 0.7.1", "embedded-io-async 0.7.0", "futures-intrusive", - "heapless 0.9.2", + "heapless 0.9.3", "serde", ] @@ -193,9 +199,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.20.2" +version = "3.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" [[package]] name = "bytemuck" @@ -215,16 +221,16 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa61aec073ec94791433ddf3df2323ff9d1711557c2a0eefb0f99cb4f8dca520" dependencies = [ - "semver 1.0.27", + "semver 1.0.28", "serde", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] name = "cc" -version = "1.2.56" +version = "1.2.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2" +checksum = "f5d6cac793997bd970000024b2934968efe83b382de4fdcf4fcb46b6ee4ad996" dependencies = [ "find-msvc-tools", "shlex", @@ -238,11 +244,11 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "chrono" -version = "0.4.44" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" +checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "num-traits", "pure-rust-locales", ] @@ -289,9 +295,9 @@ dependencies = [ [[package]] name = "config" -version = "0.15.19" +version = "0.15.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b30fa8254caad766fc03cb0ccae691e14bf3bd72bfff27f72802ce729551b3d6" +checksum = "b85f248a4de22d204ceabc6299d89d2c70fbd7f09fea53c06c852369652d8139" dependencies = [ "async-trait", "convert_case 0.6.0", @@ -302,7 +308,7 @@ dependencies = [ "serde-untagged", "serde_core", "serde_json", - "toml 0.9.12+spec-1.1.0", + "toml", "winnow", "yaml-rust2", ] @@ -410,7 +416,7 @@ checksum = "e37549a379a9e0e6e576fd208ee60394ccb8be963889eebba3ffe0980364f472" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -424,9 +430,9 @@ dependencies = [ [[package]] name = "crc-any" -version = "2.5.0" +version = "2.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62ec9ff5f7965e4d7280bd5482acd20aadb50d632cf6c1d74493856b011fa73" +checksum = "46db9f663dfb869b80fcf59e32d7a80fc6c464a4f6328f3f06a00f5e36d05f8c" dependencies = [ "debug-helper", ] @@ -505,7 +511,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -518,7 +524,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -529,7 +535,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -540,7 +546,7 @@ checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ "darling_core 0.23.0", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -554,9 +560,9 @@ dependencies = [ [[package]] name = "debug-helper" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f578e8e2c440e7297e008bb5486a3a8a194775224bbc23729b0dbdfaeebf162e" +checksum = "80a4af69c60438a1a82af89d362f4729fd38db7b73f305a237636fad31ceb2bf" [[package]] name = "defmt" @@ -564,14 +570,14 @@ version = "0.3.100" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0963443817029b2024136fc4dd07a5107eb8f977eaf18fcd1fdeb11306b64ad" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] name = "defmt" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "548d977b6da32fa1d1fda2876453da1e7df63ad0304c8b3dae4dbe7b96f39b78" +checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" dependencies = [ "bitflags 1.3.2", "defmt-macros", @@ -579,15 +585,14 @@ dependencies = [ [[package]] name = "defmt-macros" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d4fc12a85bcf441cfe44344c4b72d58493178ce635338a3f3b78943aceb258e" +checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" dependencies = [ "defmt-parser", - "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -601,12 +606,12 @@ dependencies = [ [[package]] name = "defmt-rtt" -version = "1.1.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d5a25c99d89c40f5676bec8cefe0614f17f0f40e916f98e345dae941807f9e" +checksum = "05144944c117db54127a8ac17a3c9a28d55e7047bfddb950bcd20b4a94c79b10" dependencies = [ "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -650,9 +655,9 @@ dependencies = [ [[package]] name = "either" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" [[package]] name = "elliptic-curve" @@ -679,7 +684,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b0641612053b2f34fc250bb63f6630ae75de46e02ade7f457268447081d709ce" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embassy-futures", "embassy-hal-internal 0.4.0", "embassy-sync", @@ -701,7 +706,7 @@ dependencies = [ "cordyceps", "cortex-m", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-executor-macros", "embassy-executor-timer-queue", @@ -716,7 +721,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -731,7 +736,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc2d050bdc5c21e0862a89256ed8029ae6c290a93aecefc73084b3002cdebb01" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -751,7 +756,7 @@ checksum = "568659fc53866d3d85c60fa33723fb751aa69e71507634fc2c19e7649432fb75" dependencies = [ "cortex-m", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "num-traits", ] @@ -778,12 +783,12 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82051f67e8a06a8faebd183f62cfade184c96be68126c5f064abb8223a591ff1" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "cfg-if", "cortex-m", "cortex-m-rt", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -817,7 +822,7 @@ dependencies = [ "cortex-m", "cortex-m-rt", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -854,11 +859,11 @@ checksum = "7bbd85cf5a5ae56bdf26f618364af642d1d0a4e245cdd75cd9aabda382f65a81" dependencies = [ "cfg-if", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io-async 0.7.0", "futures-core", "futures-sink", - "heapless 0.9.2", + "heapless 0.9.3", ] [[package]] @@ -869,7 +874,7 @@ checksum = "592b0c143ec626e821d4d90da51a2bd91d559d6c442b7c74a47d368c9e23d97a" dependencies = [ "cfg-if", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-time-driver", "embedded-hal 0.2.7", @@ -889,12 +894,12 @@ dependencies = [ [[package]] name = "embassy-time-queue-utils" -version = "0.3.0" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e2ee86063bd028a420a5fb5898c18c87a8898026da1d4c852af2c443d0a454" +checksum = "168297bf80aaf114b3c9ad589bf38b01b3009b9af7f97cd18086c5bbf96f5693" dependencies = [ "embassy-executor-timer-queue", - "heapless 0.8.0", + "heapless 0.9.3", ] [[package]] @@ -903,15 +908,15 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a25746d8b152b72fbf2a217f489a083dbbe243f281f09184a1f2cfbe9bbb245f" dependencies = [ - "bitflags 2.11.0", - "defmt 1.0.1", + "bitflags 2.13.0", + "defmt 1.1.1", "embassy-futures", "embassy-net-driver-channel", "embassy-sync", "embassy-time", "embassy-usb-driver", "embedded-io-async 0.7.0", - "heapless 0.9.2", + "heapless 0.9.3", "ssmarshal", "usbd-hid", ] @@ -922,7 +927,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa675c5f4349b6aa0fcffc4bf9b241f18cd11b97c1f8323273fb9a5449937fbd" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io-async 0.6.1", "embedded-io-async 0.7.0", ] @@ -934,7 +939,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6efd0c0e0b21bcf91b475b8fa47347c1df32c9a99728ae1e1b0e6625862dfd1a" dependencies = [ "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-sync", "embassy-time", "embassy-usb-driver", @@ -980,6 +985,12 @@ dependencies = [ "nb 1.1.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -992,7 +1003,7 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9eb1aa714776b75c7e67e1da744b81a129b3ff919c8712b5e1b32252c1f07cc7" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -1010,7 +1021,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2564b9f813c544241430e147d8bc454815ef9ac998878d30cc3055449f7fd4c0" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io 0.7.1", ] @@ -1061,9 +1072,9 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "erased-serde" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e8918065695684b2b0702da20382d5ae6065cf3327bc2d6436bd49a71ce9f3" +checksum = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec" dependencies = [ "serde", "serde_core", @@ -1088,9 +1099,9 @@ checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" [[package]] name = "fixed" -version = "1.30.0" +version = "1.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c566da967934c6c7ee0458a9773de9b2a685bd2ce26a3b28ddfc740e640182f5" +checksum = "9af2cbf772fa6d1c11358f92ef554cb6b386201210bcf0e91fb7fba8a907fb40" dependencies = [ "az", "bytemuck", @@ -1112,9 +1123,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foldhash" -version = "0.1.5" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" [[package]] name = "futures" @@ -1170,7 +1181,7 @@ checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1196,13 +1207,14 @@ dependencies = [ "futures-sink", "futures-task", "pin-project-lite", + "slab", ] [[package]] name = "generator" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52f04ae4152da20c76fe800fa48659201d5cf627c5149ca0b707b69d7eef6cf9" +checksum = "b3b854b0e584ead1a33f18b2fcad7cf7be18b3875c78816b753639aa501513ae" dependencies = [ "cc", "cfg-if", @@ -1292,26 +1304,26 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hashbrown" -version = "0.15.5" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" dependencies = [ "foldhash", ] [[package]] name = "hashbrown" -version = "0.16.1" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" [[package]] name = "hashlink" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" +checksum = "824e001ac4f3012dd16a264bec811403a67ca9deb6c102fc5049b32c4574b35f" dependencies = [ - "hashbrown 0.15.5", + "hashbrown 0.16.1", ] [[package]] @@ -1340,11 +1352,11 @@ dependencies = [ [[package]] name = "heapless" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af2455f757db2b292a9b1768c4b70186d443bcb3b316252d6b540aec1cd89ed" +checksum = "25ba4bd83f9415b58b4ed8dc5714c76e626a105be4646c02630ad730ad3b5aa4" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "hash32 0.3.1", "serde_core", "stable_deref_trait", @@ -1382,12 +1394,12 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "indexmap" -version = "2.13.0" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.16.1", + "hashbrown 0.17.1", ] [[package]] @@ -1410,17 +1422,18 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "js-sys" -version = "0.3.90" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14dc6f6450b3f6d4ed5b16327f38fed626d375a886159ca555bd7822c0c3a5a6" +checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ - "once_cell", + "cfg-if", + "futures-util", "wasm-bindgen", ] @@ -1490,9 +1503,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.182" +version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "litrs" @@ -1511,9 +1524,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.29" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" [[package]] name = "loom" @@ -1550,9 +1563,18 @@ dependencies = [ [[package]] name = "memchr" -version = "2.8.0" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" + +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] [[package]] name = "nb" @@ -1605,9 +1627,9 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" +checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26" dependencies = [ "num_enum_derive", "rustversion", @@ -1615,20 +1637,20 @@ dependencies = [ [[package]] name = "num_enum_derive" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" +checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "once_cell" -version = "1.21.3" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] name = "ordered-multimap" @@ -1657,7 +1679,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd402d00b0fb94c5aee000029204a46884b1262e0c443f166d86d2c0747e1a1a" dependencies = [ "cortex-m", - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -1697,9 +1719,9 @@ checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" [[package]] name = "pest" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662" +checksum = "47627dd7305c6a2d6c8c6bcd24c5a4c17dbbf425f4f9c5313e724b38fc9782e9" dependencies = [ "memchr", "ucd-trie", @@ -1707,9 +1729,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77" +checksum = "4b4254325ecad416ab689e27ba51da03ba01a9632bc6e108f5fe7c3c4ad29d58" dependencies = [ "pest", "pest_generator", @@ -1717,25 +1739,24 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f" +checksum = "6c4c0e91ead7a8f7acecbca6f003fc2e8282b1dbe2dd9c9d2f16aba42995e0a7" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "pest_meta" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220" +checksum = "f9744bc48116fee06334924bb5f2bad41eed5e89bd26e29b0b799f9a3f82c210" dependencies = [ "pest", - "sha2", ] [[package]] @@ -1765,9 +1786,9 @@ checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" [[package]] name = "pin-project-lite" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pio" @@ -1814,14 +1835,14 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "pkg-config" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" [[package]] name = "portable-atomic" @@ -1839,7 +1860,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", - "defmt 1.0.1", + "defmt 1.1.1", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -1853,7 +1876,7 @@ checksum = "e0232bd009a197ceec9cc881ba46f727fcd8060a2d8d6a9dde7a69030a6fe2bb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1899,7 +1922,7 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1917,23 +1940,23 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "869675ad2d7541aea90c6d88c81f46a7f4ea9af8cd0395d38f11a95126998a0d" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] name = "quote" -version = "1.0.44" +version = "1.0.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" +checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" dependencies = [ "proc-macro2", ] [[package]] name = "rand" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" dependencies = [ "rand_core 0.6.4", ] @@ -1972,14 +1995,14 @@ version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", ] [[package]] name = "regex" -version = "1.12.3" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +checksum = "2a0e75113e14dc5acb068cd0786884f214f1312650a3d36d269f5c4f3cdee8a2" dependencies = [ "aho-corasick", "memchr", @@ -1989,9 +2012,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +checksum = "1f388202e4b80542a0921078cc23b6333bcf1409c1e3f86404cae4766a6131db" dependencies = [ "aho-corasick", "memchr", @@ -2000,15 +2023,15 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rgb" -version = "0.8.52" +version = "0.8.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c6a884d2998352bb4daf0183589aec883f16a6da1f4dde84d8e2e9a5409a1ce" +checksum = "47b34b781b31e5d73e9fbc8689c70551fd1ade9a19e3e28cfec8580a79290cc4" [[package]] name = "rmk" @@ -2018,7 +2041,7 @@ dependencies = [ "byteorder", "cortex-m", "crc32fast", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -2035,7 +2058,7 @@ dependencies = [ "embedded-storage-async", "fixed", "futures", - "heapless 0.9.2", + "heapless 0.9.3", "paste", "pio", "postcard", @@ -2053,13 +2076,15 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] @@ -2073,7 +2098,7 @@ dependencies = [ "rmk-config", "rmk-types", "strum", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2082,7 +2107,7 @@ version = "0.2.0" dependencies = [ "const-gen", "cortex-m-rt", - "defmt 1.0.1", + "defmt 1.1.1", "defmt-rtt", "embassy-executor", "embassy-futures", @@ -2101,22 +2126,22 @@ name = "rmk-types" version = "0.2.2" dependencies = [ "bitfield-struct", - "defmt 1.0.1", - "heapless 0.9.2", + "defmt 1.1.1", + "heapless 0.9.3", "postcard", "rmk-config", "serde", "strum", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] name = "ron" -version = "0.12.0" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd490c5b18261893f14449cbd28cb9c0b637aebf161cd77900bfdedaff21ec32" +checksum = "81116b9531d61eabc41aeb228e4b6b2435bcca3233b98cf3b3077d4e6e9debb3" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "once_cell", "serde", "serde_derive", @@ -2168,14 +2193,14 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.27", + "semver 1.0.28", ] [[package]] name = "rustversion" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] name = "same-file" @@ -2222,9 +2247,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.27" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" dependencies = [ "serde", "serde_core", @@ -2238,11 +2263,11 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "sequential-storage" -version = "7.1.0" +version = "7.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4580ee0fa08cd41bee9f5b50ed309877e18735370fd4eef5766cc82863ef772" +checksum = "574e5a379bf43653079b34cb4cf32958404b5f42e0ed5b5adcdff02c2de04d4d" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-storage-async", "postcard", "serde", @@ -2266,7 +2291,7 @@ checksum = "2bf03b7a5281cfd4013bc788d057b0f09fc634397d83bc8973c955bd4f32727a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2298,14 +2323,14 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "serde_json" -version = "1.0.149" +version = "1.0.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" dependencies = [ "itoa", "memchr", @@ -2316,24 +2341,13 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "1.0.4" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" dependencies = [ "serde_core", ] -[[package]] -name = "sha2" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - [[package]] name = "sha2-const-stable" version = "0.1.0" @@ -2342,9 +2356,9 @@ checksum = "5f179d4e11094a893b82fff208f74d448a7512f99f5a0acbd5c679b705f83ed9" [[package]] name = "sha3" -version = "0.10.8" +version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +checksum = "77fd7028345d415a4034cf8777cd4f8ab1851274233b45f84e3d955502d93874" dependencies = [ "digest", "keccak", @@ -2361,21 +2375,27 @@ dependencies = [ [[package]] name = "shlex" -version = "1.3.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" [[package]] name = "siphasher" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e" +checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" + +[[package]] +name = "slab" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] name = "smallvec" -version = "1.15.1" +version = "1.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" [[package]] name = "smart-leds" @@ -2465,7 +2485,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2487,9 +2507,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.117" +version = "2.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" dependencies = [ "proc-macro2", "quote", @@ -2531,7 +2551,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2554,27 +2574,14 @@ dependencies = [ [[package]] name = "toml" -version = "0.9.12+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" -dependencies = [ - "serde_core", - "serde_spanned", - "toml_datetime 0.7.5+spec-1.1.0", - "toml_parser", - "winnow", -] - -[[package]] -name = "toml" -version = "1.0.3+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7614eaf19ad818347db24addfa201729cf2a9b6fdfd9eb0ab870fcacc606c0c" +checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee" dependencies = [ "indexmap", "serde_core", "serde_spanned", - "toml_datetime 1.0.0+spec-1.1.0", + "toml_datetime", "toml_parser", "toml_writer", "winnow", @@ -2582,36 +2589,27 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.7.5+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" -dependencies = [ - "serde_core", -] - -[[package]] -name = "toml_datetime" -version = "1.0.0+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32c2555c699578a4f59f0cc68e5116c8d7cabbd45e1409b989d4be085b53f13e" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" dependencies = [ "serde_core", ] [[package]] name = "toml_parser" -version = "1.0.9+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ "winnow", ] [[package]] name = "toml_writer" -version = "1.0.6+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" +checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" [[package]] name = "tracing" @@ -2632,7 +2630,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2682,13 +2680,13 @@ dependencies = [ "aes", "bt-hci", "cmac", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-futures", "embassy-sync", "embassy-time", "embedded-io 0.7.1", "futures", - "heapless 0.9.2", + "heapless 0.9.3", "p256", "rand", "rand_chacha", @@ -2708,7 +2706,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "uuid", ] @@ -2720,9 +2718,9 @@ checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" [[package]] name = "typenum" -version = "1.19.0" +version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" [[package]] name = "ucd-trie" @@ -2738,9 +2736,9 @@ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-segmentation" -version = "1.12.0" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" [[package]] name = "unicode-width" @@ -2797,15 +2795,15 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.117", + "syn 2.0.118", "usbd-hid-descriptors", ] [[package]] name = "uuid" -version = "1.21.0" +version = "1.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b672338555252d43fd2240c714dc444b8c6fb0a5c5335e65a07bba7742735ddb" +checksum = "bf80a72845275afea99e7f2b434723d3bc7e38470fcd1c7ed39a599c73319a53" dependencies = [ "js-sys", "wasm-bindgen", @@ -2862,9 +2860,9 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasm-bindgen" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60722a937f594b7fde9adb894d7c092fc1bb6612897c46368d18e7a20208eff2" +checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" dependencies = [ "cfg-if", "once_cell", @@ -2875,9 +2873,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac8c6395094b6b91c4af293f4c79371c163f9a6f56184d2c9a85f5a95f3950" +checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2885,22 +2883,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab3fabce6159dc20728033842636887e4877688ae94382766e00b180abac9d60" +checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de0e091bdb824da87dc01d967388880d017a0a9bc4f3bdc0d86ee9f9336e3bb5" +checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" dependencies = [ "unicode-ident", ] @@ -2940,9 +2938,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.14" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" +checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" dependencies = [ "memchr", ] @@ -2958,9 +2956,9 @@ dependencies = [ [[package]] name = "yaml-rust2" -version = "0.10.4" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2462ea039c445496d8793d052e13787f2b90e750b833afee748e601c17621ed9" +checksum = "631a50d867fafb7093e709d75aaee9e0e0d5deb934021fcea25ac2fe09edc51e" dependencies = [ "arraydeque", "encoding_rs", @@ -2969,29 +2967,29 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.39" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db6d35d663eadb6c932438e763b262fe1a70987f9ae936e60158176d710cae4a" +checksum = "b7cbbc0a705a0fd05cc3676525980d2bf5a9bc4adac6d6475209a7887cf59d19" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.39" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4122cd3169e94605190e77839c9a40d40ed048d305bfdc146e7df40ab0f3e517" +checksum = "e2e817b7b52d0c7358d3246da9d69935ebb18116b2b102b4230dac079b4862f5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "zeroize" -version = "1.8.2" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" [[package]] name = "zmij" diff --git a/examples/use_rust/rp2040_split/Cargo.toml b/examples/use_rust/rp2040_split/Cargo.toml index 66b19be16..9c716eac9 100644 --- a/examples/use_rust/rp2040_split/Cargo.toml +++ b/examples/use_rust/rp2040_split/Cargo.toml @@ -10,7 +10,7 @@ edition = "2024" license = "MIT OR Apache-2.0" [dependencies] -rmk = { path = "../../../rmk", features = ["split", "rp2040"] } +rmk = { path = "../../../rmk", default-features = false, features = ["defmt", "storage", "vial", "watchdog", "split", "rp2040"] } embassy-time = { version = "0.5", features = ["defmt"] } embassy-rp = { version = "0.10", features = [ "rp2040", diff --git a/examples/use_rust/rp2040_split/src/central.rs b/examples/use_rust/rp2040_split/src/central.rs index 8878949da..03416567e 100644 --- a/examples/use_rust/rp2040_split/src/central.rs +++ b/examples/use_rust/rp2040_split/src/central.rs @@ -97,25 +97,16 @@ async fn main(_spawner: Spawner) { let debouncer = DefaultDebouncer::new(); let mut matrix = Matrix::<_, _, _, 2, 2, true>::new(row_pins, col_pins, debouncer); let mut keyboard = Keyboard::new(&keymap); - let host_ctx = rmk::host::KeyboardContext::new(&keymap); - let mut host_service = HostService::new(&host_ctx, &rmk_config); + let host_service = HostService::new(&keymap, &rmk_config); - let mut usb_transport = UsbTransport::new(driver, rmk_config.device_config); + let mut usb_transport = UsbTransport::new(driver, rmk_config.device_config).with_host_service(&host_service); let mut wpm_processor = WpmProcessor::new(); let mut watchdog_runner = Rp2040Watchdog::default_runner(embassy_rp::watchdog::Watchdog::new(p.WATCHDOG)); // Start join( - run_all!( - matrix, - storage, - usb_transport, - wpm_processor, - keyboard, - host_service, - watchdog_runner - ), + run_all!(matrix, storage, usb_transport, wpm_processor, keyboard, watchdog_runner), run_peripheral_manager::<2, 1, 2, 2, _>(0, uart_receiver), ) .await; diff --git a/examples/use_rust/rp2040_split_pio/Cargo.lock b/examples/use_rust/rp2040_split_pio/Cargo.lock index 4e7928469..3b887e30d 100644 --- a/examples/use_rust/rp2040_split_pio/Cargo.lock +++ b/examples/use_rust/rp2040_split_pio/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -42,9 +48,9 @@ checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236" [[package]] name = "arrayvec" -version = "0.7.6" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" [[package]] name = "ascii-canvas" @@ -63,7 +69,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -77,9 +83,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "az" @@ -137,7 +143,7 @@ checksum = "3ca6739863c590881f038d033a146c51ddae239186a4327014839fd864f44ed5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -148,9 +154,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.11.0" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" +checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" dependencies = [ "serde_core", ] @@ -171,12 +177,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f3c66fd0a41a3b3a5906847b1bf5516048ce083e24fa9341a0fa31d3b4cd73d" dependencies = [ "btuuid", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-sync", "embedded-io 0.7.1", "embedded-io-async 0.7.0", "futures-intrusive", - "heapless 0.9.2", + "heapless 0.9.3", "serde", ] @@ -193,9 +199,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.20.2" +version = "3.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" [[package]] name = "bytemuck" @@ -215,16 +221,16 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa61aec073ec94791433ddf3df2323ff9d1711557c2a0eefb0f99cb4f8dca520" dependencies = [ - "semver 1.0.27", + "semver 1.0.28", "serde", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] name = "cc" -version = "1.2.56" +version = "1.2.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2" +checksum = "f5d6cac793997bd970000024b2934968efe83b382de4fdcf4fcb46b6ee4ad996" dependencies = [ "find-msvc-tools", "shlex", @@ -238,11 +244,11 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "chrono" -version = "0.4.44" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" +checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "num-traits", "pure-rust-locales", ] @@ -289,9 +295,9 @@ dependencies = [ [[package]] name = "config" -version = "0.15.19" +version = "0.15.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b30fa8254caad766fc03cb0ccae691e14bf3bd72bfff27f72802ce729551b3d6" +checksum = "b85f248a4de22d204ceabc6299d89d2c70fbd7f09fea53c06c852369652d8139" dependencies = [ "async-trait", "convert_case 0.6.0", @@ -302,7 +308,7 @@ dependencies = [ "serde-untagged", "serde_core", "serde_json", - "toml 0.9.12+spec-1.1.0", + "toml", "winnow", "yaml-rust2", ] @@ -410,7 +416,7 @@ checksum = "e37549a379a9e0e6e576fd208ee60394ccb8be963889eebba3ffe0980364f472" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -424,9 +430,9 @@ dependencies = [ [[package]] name = "crc-any" -version = "2.5.0" +version = "2.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62ec9ff5f7965e4d7280bd5482acd20aadb50d632cf6c1d74493856b011fa73" +checksum = "46db9f663dfb869b80fcf59e32d7a80fc6c464a4f6328f3f06a00f5e36d05f8c" dependencies = [ "debug-helper", ] @@ -505,7 +511,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -518,7 +524,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -529,7 +535,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -540,7 +546,7 @@ checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ "darling_core 0.23.0", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -554,9 +560,9 @@ dependencies = [ [[package]] name = "debug-helper" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f578e8e2c440e7297e008bb5486a3a8a194775224bbc23729b0dbdfaeebf162e" +checksum = "80a4af69c60438a1a82af89d362f4729fd38db7b73f305a237636fad31ceb2bf" [[package]] name = "defmt" @@ -564,14 +570,14 @@ version = "0.3.100" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0963443817029b2024136fc4dd07a5107eb8f977eaf18fcd1fdeb11306b64ad" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] name = "defmt" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "548d977b6da32fa1d1fda2876453da1e7df63ad0304c8b3dae4dbe7b96f39b78" +checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" dependencies = [ "bitflags 1.3.2", "defmt-macros", @@ -579,15 +585,14 @@ dependencies = [ [[package]] name = "defmt-macros" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d4fc12a85bcf441cfe44344c4b72d58493178ce635338a3f3b78943aceb258e" +checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" dependencies = [ "defmt-parser", - "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -601,12 +606,12 @@ dependencies = [ [[package]] name = "defmt-rtt" -version = "1.1.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d5a25c99d89c40f5676bec8cefe0614f17f0f40e916f98e345dae941807f9e" +checksum = "05144944c117db54127a8ac17a3c9a28d55e7047bfddb950bcd20b4a94c79b10" dependencies = [ "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -650,9 +655,9 @@ dependencies = [ [[package]] name = "either" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" [[package]] name = "elliptic-curve" @@ -679,7 +684,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b0641612053b2f34fc250bb63f6630ae75de46e02ade7f457268447081d709ce" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embassy-futures", "embassy-hal-internal 0.4.0", "embassy-sync", @@ -701,7 +706,7 @@ dependencies = [ "cordyceps", "cortex-m", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-executor-macros", "embassy-executor-timer-queue", @@ -716,7 +721,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -731,7 +736,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc2d050bdc5c21e0862a89256ed8029ae6c290a93aecefc73084b3002cdebb01" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -751,7 +756,7 @@ checksum = "568659fc53866d3d85c60fa33723fb751aa69e71507634fc2c19e7649432fb75" dependencies = [ "cortex-m", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "num-traits", ] @@ -778,12 +783,12 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82051f67e8a06a8faebd183f62cfade184c96be68126c5f064abb8223a591ff1" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "cfg-if", "cortex-m", "cortex-m-rt", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -817,7 +822,7 @@ dependencies = [ "cortex-m", "cortex-m-rt", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -854,11 +859,11 @@ checksum = "7bbd85cf5a5ae56bdf26f618364af642d1d0a4e245cdd75cd9aabda382f65a81" dependencies = [ "cfg-if", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io-async 0.7.0", "futures-core", "futures-sink", - "heapless 0.9.2", + "heapless 0.9.3", ] [[package]] @@ -869,7 +874,7 @@ checksum = "592b0c143ec626e821d4d90da51a2bd91d559d6c442b7c74a47d368c9e23d97a" dependencies = [ "cfg-if", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-time-driver", "embedded-hal 0.2.7", @@ -889,12 +894,12 @@ dependencies = [ [[package]] name = "embassy-time-queue-utils" -version = "0.3.0" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e2ee86063bd028a420a5fb5898c18c87a8898026da1d4c852af2c443d0a454" +checksum = "168297bf80aaf114b3c9ad589bf38b01b3009b9af7f97cd18086c5bbf96f5693" dependencies = [ "embassy-executor-timer-queue", - "heapless 0.8.0", + "heapless 0.9.3", ] [[package]] @@ -903,15 +908,15 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a25746d8b152b72fbf2a217f489a083dbbe243f281f09184a1f2cfbe9bbb245f" dependencies = [ - "bitflags 2.11.0", - "defmt 1.0.1", + "bitflags 2.13.0", + "defmt 1.1.1", "embassy-futures", "embassy-net-driver-channel", "embassy-sync", "embassy-time", "embassy-usb-driver", "embedded-io-async 0.7.0", - "heapless 0.9.2", + "heapless 0.9.3", "ssmarshal", "usbd-hid", ] @@ -922,7 +927,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa675c5f4349b6aa0fcffc4bf9b241f18cd11b97c1f8323273fb9a5449937fbd" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io-async 0.6.1", "embedded-io-async 0.7.0", ] @@ -934,7 +939,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6efd0c0e0b21bcf91b475b8fa47347c1df32c9a99728ae1e1b0e6625862dfd1a" dependencies = [ "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-sync", "embassy-time", "embassy-usb-driver", @@ -980,6 +985,12 @@ dependencies = [ "nb 1.1.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -992,7 +1003,7 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9eb1aa714776b75c7e67e1da744b81a129b3ff919c8712b5e1b32252c1f07cc7" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -1010,7 +1021,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2564b9f813c544241430e147d8bc454815ef9ac998878d30cc3055449f7fd4c0" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io 0.7.1", ] @@ -1061,9 +1072,9 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "erased-serde" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e8918065695684b2b0702da20382d5ae6065cf3327bc2d6436bd49a71ce9f3" +checksum = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec" dependencies = [ "serde", "serde_core", @@ -1088,9 +1099,9 @@ checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" [[package]] name = "fixed" -version = "1.30.0" +version = "1.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c566da967934c6c7ee0458a9773de9b2a685bd2ce26a3b28ddfc740e640182f5" +checksum = "9af2cbf772fa6d1c11358f92ef554cb6b386201210bcf0e91fb7fba8a907fb40" dependencies = [ "az", "bytemuck", @@ -1112,9 +1123,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foldhash" -version = "0.1.5" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" [[package]] name = "futures" @@ -1170,7 +1181,7 @@ checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1196,13 +1207,14 @@ dependencies = [ "futures-sink", "futures-task", "pin-project-lite", + "slab", ] [[package]] name = "generator" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52f04ae4152da20c76fe800fa48659201d5cf627c5149ca0b707b69d7eef6cf9" +checksum = "b3b854b0e584ead1a33f18b2fcad7cf7be18b3875c78816b753639aa501513ae" dependencies = [ "cc", "cfg-if", @@ -1292,26 +1304,26 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hashbrown" -version = "0.15.5" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" dependencies = [ "foldhash", ] [[package]] name = "hashbrown" -version = "0.16.1" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" [[package]] name = "hashlink" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" +checksum = "824e001ac4f3012dd16a264bec811403a67ca9deb6c102fc5049b32c4574b35f" dependencies = [ - "hashbrown 0.15.5", + "hashbrown 0.16.1", ] [[package]] @@ -1340,11 +1352,11 @@ dependencies = [ [[package]] name = "heapless" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af2455f757db2b292a9b1768c4b70186d443bcb3b316252d6b540aec1cd89ed" +checksum = "25ba4bd83f9415b58b4ed8dc5714c76e626a105be4646c02630ad730ad3b5aa4" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "hash32 0.3.1", "serde_core", "stable_deref_trait", @@ -1382,12 +1394,12 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "indexmap" -version = "2.13.0" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.16.1", + "hashbrown 0.17.1", ] [[package]] @@ -1410,17 +1422,18 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "js-sys" -version = "0.3.90" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14dc6f6450b3f6d4ed5b16327f38fed626d375a886159ca555bd7822c0c3a5a6" +checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ - "once_cell", + "cfg-if", + "futures-util", "wasm-bindgen", ] @@ -1490,9 +1503,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.182" +version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "litrs" @@ -1511,9 +1524,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.29" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" [[package]] name = "loom" @@ -1550,9 +1563,18 @@ dependencies = [ [[package]] name = "memchr" -version = "2.8.0" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" + +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] [[package]] name = "nb" @@ -1605,9 +1627,9 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" +checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26" dependencies = [ "num_enum_derive", "rustversion", @@ -1615,20 +1637,20 @@ dependencies = [ [[package]] name = "num_enum_derive" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" +checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "once_cell" -version = "1.21.3" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] name = "ordered-multimap" @@ -1657,7 +1679,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd402d00b0fb94c5aee000029204a46884b1262e0c443f166d86d2c0747e1a1a" dependencies = [ "cortex-m", - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -1697,9 +1719,9 @@ checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" [[package]] name = "pest" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662" +checksum = "47627dd7305c6a2d6c8c6bcd24c5a4c17dbbf425f4f9c5313e724b38fc9782e9" dependencies = [ "memchr", "ucd-trie", @@ -1707,9 +1729,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77" +checksum = "4b4254325ecad416ab689e27ba51da03ba01a9632bc6e108f5fe7c3c4ad29d58" dependencies = [ "pest", "pest_generator", @@ -1717,25 +1739,24 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f" +checksum = "6c4c0e91ead7a8f7acecbca6f003fc2e8282b1dbe2dd9c9d2f16aba42995e0a7" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "pest_meta" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220" +checksum = "f9744bc48116fee06334924bb5f2bad41eed5e89bd26e29b0b799f9a3f82c210" dependencies = [ "pest", - "sha2", ] [[package]] @@ -1765,9 +1786,9 @@ checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" [[package]] name = "pin-project-lite" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pio" @@ -1814,14 +1835,14 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "pkg-config" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" [[package]] name = "portable-atomic" @@ -1839,7 +1860,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", - "defmt 1.0.1", + "defmt 1.1.1", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -1853,7 +1876,7 @@ checksum = "e0232bd009a197ceec9cc881ba46f727fcd8060a2d8d6a9dde7a69030a6fe2bb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1899,7 +1922,7 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1917,23 +1940,23 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "869675ad2d7541aea90c6d88c81f46a7f4ea9af8cd0395d38f11a95126998a0d" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] name = "quote" -version = "1.0.44" +version = "1.0.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" +checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" dependencies = [ "proc-macro2", ] [[package]] name = "rand" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" dependencies = [ "rand_core 0.6.4", ] @@ -1972,14 +1995,14 @@ version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", ] [[package]] name = "regex" -version = "1.12.3" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +checksum = "2a0e75113e14dc5acb068cd0786884f214f1312650a3d36d269f5c4f3cdee8a2" dependencies = [ "aho-corasick", "memchr", @@ -1989,9 +2012,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +checksum = "1f388202e4b80542a0921078cc23b6333bcf1409c1e3f86404cae4766a6131db" dependencies = [ "aho-corasick", "memchr", @@ -2000,15 +2023,15 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rgb" -version = "0.8.52" +version = "0.8.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c6a884d2998352bb4daf0183589aec883f16a6da1f4dde84d8e2e9a5409a1ce" +checksum = "47b34b781b31e5d73e9fbc8689c70551fd1ade9a19e3e28cfec8580a79290cc4" [[package]] name = "rmk" @@ -2018,7 +2041,7 @@ dependencies = [ "byteorder", "cortex-m", "crc32fast", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -2035,7 +2058,7 @@ dependencies = [ "embedded-storage-async", "fixed", "futures", - "heapless 0.9.2", + "heapless 0.9.3", "paste", "pio", "postcard", @@ -2053,13 +2076,15 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] @@ -2073,7 +2098,7 @@ dependencies = [ "rmk-config", "rmk-types", "strum", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2082,7 +2107,7 @@ version = "0.2.0" dependencies = [ "const-gen", "cortex-m-rt", - "defmt 1.0.1", + "defmt 1.1.1", "defmt-rtt", "embassy-executor", "embassy-futures", @@ -2101,22 +2126,22 @@ name = "rmk-types" version = "0.2.2" dependencies = [ "bitfield-struct", - "defmt 1.0.1", - "heapless 0.9.2", + "defmt 1.1.1", + "heapless 0.9.3", "postcard", "rmk-config", "serde", "strum", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] name = "ron" -version = "0.12.0" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd490c5b18261893f14449cbd28cb9c0b637aebf161cd77900bfdedaff21ec32" +checksum = "81116b9531d61eabc41aeb228e4b6b2435bcca3233b98cf3b3077d4e6e9debb3" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "once_cell", "serde", "serde_derive", @@ -2168,14 +2193,14 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.27", + "semver 1.0.28", ] [[package]] name = "rustversion" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] name = "same-file" @@ -2222,9 +2247,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.27" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" dependencies = [ "serde", "serde_core", @@ -2238,11 +2263,11 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "sequential-storage" -version = "7.1.0" +version = "7.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4580ee0fa08cd41bee9f5b50ed309877e18735370fd4eef5766cc82863ef772" +checksum = "574e5a379bf43653079b34cb4cf32958404b5f42e0ed5b5adcdff02c2de04d4d" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-storage-async", "postcard", "serde", @@ -2266,7 +2291,7 @@ checksum = "2bf03b7a5281cfd4013bc788d057b0f09fc634397d83bc8973c955bd4f32727a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2298,14 +2323,14 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "serde_json" -version = "1.0.149" +version = "1.0.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" dependencies = [ "itoa", "memchr", @@ -2316,24 +2341,13 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "1.0.4" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" dependencies = [ "serde_core", ] -[[package]] -name = "sha2" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - [[package]] name = "sha2-const-stable" version = "0.1.0" @@ -2342,9 +2356,9 @@ checksum = "5f179d4e11094a893b82fff208f74d448a7512f99f5a0acbd5c679b705f83ed9" [[package]] name = "sha3" -version = "0.10.8" +version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +checksum = "77fd7028345d415a4034cf8777cd4f8ab1851274233b45f84e3d955502d93874" dependencies = [ "digest", "keccak", @@ -2361,21 +2375,27 @@ dependencies = [ [[package]] name = "shlex" -version = "1.3.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" [[package]] name = "siphasher" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e" +checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" + +[[package]] +name = "slab" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] name = "smallvec" -version = "1.15.1" +version = "1.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" [[package]] name = "smart-leds" @@ -2465,7 +2485,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2487,9 +2507,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.117" +version = "2.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" dependencies = [ "proc-macro2", "quote", @@ -2531,7 +2551,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2554,27 +2574,14 @@ dependencies = [ [[package]] name = "toml" -version = "0.9.12+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" -dependencies = [ - "serde_core", - "serde_spanned", - "toml_datetime 0.7.5+spec-1.1.0", - "toml_parser", - "winnow", -] - -[[package]] -name = "toml" -version = "1.0.3+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7614eaf19ad818347db24addfa201729cf2a9b6fdfd9eb0ab870fcacc606c0c" +checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee" dependencies = [ "indexmap", "serde_core", "serde_spanned", - "toml_datetime 1.0.0+spec-1.1.0", + "toml_datetime", "toml_parser", "toml_writer", "winnow", @@ -2582,36 +2589,27 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.7.5+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" -dependencies = [ - "serde_core", -] - -[[package]] -name = "toml_datetime" -version = "1.0.0+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32c2555c699578a4f59f0cc68e5116c8d7cabbd45e1409b989d4be085b53f13e" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" dependencies = [ "serde_core", ] [[package]] name = "toml_parser" -version = "1.0.9+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ "winnow", ] [[package]] name = "toml_writer" -version = "1.0.6+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" +checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" [[package]] name = "tracing" @@ -2632,7 +2630,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2682,13 +2680,13 @@ dependencies = [ "aes", "bt-hci", "cmac", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-futures", "embassy-sync", "embassy-time", "embedded-io 0.7.1", "futures", - "heapless 0.9.2", + "heapless 0.9.3", "p256", "rand", "rand_chacha", @@ -2708,7 +2706,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "uuid", ] @@ -2720,9 +2718,9 @@ checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" [[package]] name = "typenum" -version = "1.19.0" +version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" [[package]] name = "ucd-trie" @@ -2738,9 +2736,9 @@ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-segmentation" -version = "1.12.0" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" [[package]] name = "unicode-width" @@ -2797,15 +2795,15 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.117", + "syn 2.0.118", "usbd-hid-descriptors", ] [[package]] name = "uuid" -version = "1.21.0" +version = "1.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b672338555252d43fd2240c714dc444b8c6fb0a5c5335e65a07bba7742735ddb" +checksum = "bf80a72845275afea99e7f2b434723d3bc7e38470fcd1c7ed39a599c73319a53" dependencies = [ "js-sys", "wasm-bindgen", @@ -2862,9 +2860,9 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasm-bindgen" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60722a937f594b7fde9adb894d7c092fc1bb6612897c46368d18e7a20208eff2" +checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" dependencies = [ "cfg-if", "once_cell", @@ -2875,9 +2873,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac8c6395094b6b91c4af293f4c79371c163f9a6f56184d2c9a85f5a95f3950" +checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2885,22 +2883,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab3fabce6159dc20728033842636887e4877688ae94382766e00b180abac9d60" +checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de0e091bdb824da87dc01d967388880d017a0a9bc4f3bdc0d86ee9f9336e3bb5" +checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" dependencies = [ "unicode-ident", ] @@ -2940,9 +2938,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.14" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" +checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" dependencies = [ "memchr", ] @@ -2958,9 +2956,9 @@ dependencies = [ [[package]] name = "yaml-rust2" -version = "0.10.4" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2462ea039c445496d8793d052e13787f2b90e750b833afee748e601c17621ed9" +checksum = "631a50d867fafb7093e709d75aaee9e0e0d5deb934021fcea25ac2fe09edc51e" dependencies = [ "arraydeque", "encoding_rs", @@ -2969,29 +2967,29 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.39" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db6d35d663eadb6c932438e763b262fe1a70987f9ae936e60158176d710cae4a" +checksum = "b7cbbc0a705a0fd05cc3676525980d2bf5a9bc4adac6d6475209a7887cf59d19" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.39" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4122cd3169e94605190e77839c9a40d40ed048d305bfdc146e7df40ab0f3e517" +checksum = "e2e817b7b52d0c7358d3246da9d69935ebb18116b2b102b4230dac079b4862f5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "zeroize" -version = "1.8.2" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" [[package]] name = "zmij" diff --git a/examples/use_rust/rp2040_split_pio/Cargo.toml b/examples/use_rust/rp2040_split_pio/Cargo.toml index 66b19be16..9c716eac9 100644 --- a/examples/use_rust/rp2040_split_pio/Cargo.toml +++ b/examples/use_rust/rp2040_split_pio/Cargo.toml @@ -10,7 +10,7 @@ edition = "2024" license = "MIT OR Apache-2.0" [dependencies] -rmk = { path = "../../../rmk", features = ["split", "rp2040"] } +rmk = { path = "../../../rmk", default-features = false, features = ["defmt", "storage", "vial", "watchdog", "split", "rp2040"] } embassy-time = { version = "0.5", features = ["defmt"] } embassy-rp = { version = "0.10", features = [ "rp2040", diff --git a/examples/use_rust/rp2040_split_pio/src/central.rs b/examples/use_rust/rp2040_split_pio/src/central.rs index c0de2e0ea..81278e61c 100644 --- a/examples/use_rust/rp2040_split_pio/src/central.rs +++ b/examples/use_rust/rp2040_split_pio/src/central.rs @@ -92,15 +92,14 @@ async fn main(_spawner: Spawner) { let debouncer = DefaultDebouncer::new(); let mut matrix = Matrix::<_, _, _, 2, 2, true>::new(row_pins, col_pins, debouncer); let mut keyboard = Keyboard::new(&keymap); - let host_ctx = rmk::host::KeyboardContext::new(&keymap); - let mut host_service = HostService::new(&host_ctx, &rmk_config); + let host_service = HostService::new(&keymap, &rmk_config); - let mut usb_transport = UsbTransport::new(driver, rmk_config.device_config); + let mut usb_transport = UsbTransport::new(driver, rmk_config.device_config).with_host_service(&host_service); let mut wpm_processor = WpmProcessor::new(); // Start join( - run_all!(matrix, storage, usb_transport, wpm_processor, keyboard, host_service), + run_all!(matrix, storage, usb_transport, wpm_processor, keyboard), run_peripheral_manager::<2, 1, 2, 2, _>(0, uart_receiver), ) .await; diff --git a/examples/use_rust/rp2350/Cargo.lock b/examples/use_rust/rp2350/Cargo.lock index feca5f5cb..a5b3e51c4 100644 --- a/examples/use_rust/rp2350/Cargo.lock +++ b/examples/use_rust/rp2350/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -42,9 +48,9 @@ checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236" [[package]] name = "arrayvec" -version = "0.7.6" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" [[package]] name = "ascii-canvas" @@ -63,7 +69,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -77,9 +83,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "az" @@ -137,7 +143,7 @@ checksum = "3ca6739863c590881f038d033a146c51ddae239186a4327014839fd864f44ed5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -148,9 +154,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.11.0" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" +checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" dependencies = [ "serde_core", ] @@ -171,12 +177,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f3c66fd0a41a3b3a5906847b1bf5516048ce083e24fa9341a0fa31d3b4cd73d" dependencies = [ "btuuid", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-sync", "embedded-io 0.7.1", "embedded-io-async 0.7.0", "futures-intrusive", - "heapless 0.9.2", + "heapless 0.9.3", "serde", ] @@ -193,9 +199,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.20.2" +version = "3.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" [[package]] name = "bytemuck" @@ -215,16 +221,16 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa61aec073ec94791433ddf3df2323ff9d1711557c2a0eefb0f99cb4f8dca520" dependencies = [ - "semver 1.0.27", + "semver 1.0.28", "serde", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] name = "cc" -version = "1.2.56" +version = "1.2.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2" +checksum = "f5d6cac793997bd970000024b2934968efe83b382de4fdcf4fcb46b6ee4ad996" dependencies = [ "find-msvc-tools", "shlex", @@ -238,11 +244,11 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "chrono" -version = "0.4.44" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" +checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "num-traits", "pure-rust-locales", ] @@ -289,9 +295,9 @@ dependencies = [ [[package]] name = "config" -version = "0.15.19" +version = "0.15.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b30fa8254caad766fc03cb0ccae691e14bf3bd72bfff27f72802ce729551b3d6" +checksum = "b85f248a4de22d204ceabc6299d89d2c70fbd7f09fea53c06c852369652d8139" dependencies = [ "async-trait", "convert_case 0.6.0", @@ -302,7 +308,7 @@ dependencies = [ "serde-untagged", "serde_core", "serde_json", - "toml 0.9.12+spec-1.1.0", + "toml", "winnow", "yaml-rust2", ] @@ -410,7 +416,7 @@ checksum = "e37549a379a9e0e6e576fd208ee60394ccb8be963889eebba3ffe0980364f472" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -424,9 +430,9 @@ dependencies = [ [[package]] name = "crc-any" -version = "2.5.0" +version = "2.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62ec9ff5f7965e4d7280bd5482acd20aadb50d632cf6c1d74493856b011fa73" +checksum = "46db9f663dfb869b80fcf59e32d7a80fc6c464a4f6328f3f06a00f5e36d05f8c" dependencies = [ "debug-helper", ] @@ -505,7 +511,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -518,7 +524,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -529,7 +535,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -540,7 +546,7 @@ checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ "darling_core 0.23.0", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -554,9 +560,9 @@ dependencies = [ [[package]] name = "debug-helper" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f578e8e2c440e7297e008bb5486a3a8a194775224bbc23729b0dbdfaeebf162e" +checksum = "80a4af69c60438a1a82af89d362f4729fd38db7b73f305a237636fad31ceb2bf" [[package]] name = "defmt" @@ -564,14 +570,14 @@ version = "0.3.100" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0963443817029b2024136fc4dd07a5107eb8f977eaf18fcd1fdeb11306b64ad" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] name = "defmt" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "548d977b6da32fa1d1fda2876453da1e7df63ad0304c8b3dae4dbe7b96f39b78" +checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" dependencies = [ "bitflags 1.3.2", "defmt-macros", @@ -579,15 +585,14 @@ dependencies = [ [[package]] name = "defmt-macros" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d4fc12a85bcf441cfe44344c4b72d58493178ce635338a3f3b78943aceb258e" +checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" dependencies = [ "defmt-parser", - "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -601,12 +606,12 @@ dependencies = [ [[package]] name = "defmt-rtt" -version = "1.1.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d5a25c99d89c40f5676bec8cefe0614f17f0f40e916f98e345dae941807f9e" +checksum = "05144944c117db54127a8ac17a3c9a28d55e7047bfddb950bcd20b4a94c79b10" dependencies = [ "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -650,9 +655,9 @@ dependencies = [ [[package]] name = "either" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" [[package]] name = "elliptic-curve" @@ -679,7 +684,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b0641612053b2f34fc250bb63f6630ae75de46e02ade7f457268447081d709ce" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embassy-futures", "embassy-hal-internal 0.4.0", "embassy-sync", @@ -701,7 +706,7 @@ dependencies = [ "cordyceps", "cortex-m", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-executor-macros", "embassy-executor-timer-queue", @@ -716,7 +721,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -731,7 +736,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc2d050bdc5c21e0862a89256ed8029ae6c290a93aecefc73084b3002cdebb01" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -751,7 +756,7 @@ checksum = "568659fc53866d3d85c60fa33723fb751aa69e71507634fc2c19e7649432fb75" dependencies = [ "cortex-m", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "num-traits", ] @@ -778,12 +783,12 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82051f67e8a06a8faebd183f62cfade184c96be68126c5f064abb8223a591ff1" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "cfg-if", "cortex-m", "cortex-m-rt", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -817,7 +822,7 @@ dependencies = [ "cortex-m", "cortex-m-rt", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -855,11 +860,11 @@ checksum = "7bbd85cf5a5ae56bdf26f618364af642d1d0a4e245cdd75cd9aabda382f65a81" dependencies = [ "cfg-if", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io-async 0.7.0", "futures-core", "futures-sink", - "heapless 0.9.2", + "heapless 0.9.3", ] [[package]] @@ -870,7 +875,7 @@ checksum = "592b0c143ec626e821d4d90da51a2bd91d559d6c442b7c74a47d368c9e23d97a" dependencies = [ "cfg-if", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-time-driver", "embedded-hal 0.2.7", @@ -890,12 +895,12 @@ dependencies = [ [[package]] name = "embassy-time-queue-utils" -version = "0.3.0" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e2ee86063bd028a420a5fb5898c18c87a8898026da1d4c852af2c443d0a454" +checksum = "168297bf80aaf114b3c9ad589bf38b01b3009b9af7f97cd18086c5bbf96f5693" dependencies = [ "embassy-executor-timer-queue", - "heapless 0.8.0", + "heapless 0.9.3", ] [[package]] @@ -904,15 +909,15 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a25746d8b152b72fbf2a217f489a083dbbe243f281f09184a1f2cfbe9bbb245f" dependencies = [ - "bitflags 2.11.0", - "defmt 1.0.1", + "bitflags 2.13.0", + "defmt 1.1.1", "embassy-futures", "embassy-net-driver-channel", "embassy-sync", "embassy-time", "embassy-usb-driver", "embedded-io-async 0.7.0", - "heapless 0.9.2", + "heapless 0.9.3", "ssmarshal", "usbd-hid", ] @@ -923,7 +928,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa675c5f4349b6aa0fcffc4bf9b241f18cd11b97c1f8323273fb9a5449937fbd" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io-async 0.6.1", "embedded-io-async 0.7.0", ] @@ -935,7 +940,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6efd0c0e0b21bcf91b475b8fa47347c1df32c9a99728ae1e1b0e6625862dfd1a" dependencies = [ "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-sync", "embassy-time", "embassy-usb-driver", @@ -981,6 +986,12 @@ dependencies = [ "nb 1.1.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -993,7 +1004,7 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9eb1aa714776b75c7e67e1da744b81a129b3ff919c8712b5e1b32252c1f07cc7" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -1011,7 +1022,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2564b9f813c544241430e147d8bc454815ef9ac998878d30cc3055449f7fd4c0" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io 0.7.1", ] @@ -1062,9 +1073,9 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "erased-serde" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e8918065695684b2b0702da20382d5ae6065cf3327bc2d6436bd49a71ce9f3" +checksum = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec" dependencies = [ "serde", "serde_core", @@ -1089,9 +1100,9 @@ checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" [[package]] name = "fixed" -version = "1.30.0" +version = "1.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c566da967934c6c7ee0458a9773de9b2a685bd2ce26a3b28ddfc740e640182f5" +checksum = "9af2cbf772fa6d1c11358f92ef554cb6b386201210bcf0e91fb7fba8a907fb40" dependencies = [ "az", "bytemuck", @@ -1113,9 +1124,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foldhash" -version = "0.1.5" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" [[package]] name = "futures" @@ -1171,7 +1182,7 @@ checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1197,13 +1208,14 @@ dependencies = [ "futures-sink", "futures-task", "pin-project-lite", + "slab", ] [[package]] name = "generator" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52f04ae4152da20c76fe800fa48659201d5cf627c5149ca0b707b69d7eef6cf9" +checksum = "b3b854b0e584ead1a33f18b2fcad7cf7be18b3875c78816b753639aa501513ae" dependencies = [ "cc", "cfg-if", @@ -1293,26 +1305,26 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hashbrown" -version = "0.15.5" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" dependencies = [ "foldhash", ] [[package]] name = "hashbrown" -version = "0.16.1" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" [[package]] name = "hashlink" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" +checksum = "824e001ac4f3012dd16a264bec811403a67ca9deb6c102fc5049b32c4574b35f" dependencies = [ - "hashbrown 0.15.5", + "hashbrown 0.16.1", ] [[package]] @@ -1341,11 +1353,11 @@ dependencies = [ [[package]] name = "heapless" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af2455f757db2b292a9b1768c4b70186d443bcb3b316252d6b540aec1cd89ed" +checksum = "25ba4bd83f9415b58b4ed8dc5714c76e626a105be4646c02630ad730ad3b5aa4" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "hash32 0.3.1", "serde_core", "stable_deref_trait", @@ -1383,12 +1395,12 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "indexmap" -version = "2.13.0" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.16.1", + "hashbrown 0.17.1", ] [[package]] @@ -1411,17 +1423,18 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "js-sys" -version = "0.3.90" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14dc6f6450b3f6d4ed5b16327f38fed626d375a886159ca555bd7822c0c3a5a6" +checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ - "once_cell", + "cfg-if", + "futures-util", "wasm-bindgen", ] @@ -1491,9 +1504,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.182" +version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "litrs" @@ -1512,9 +1525,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.29" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" [[package]] name = "loom" @@ -1551,9 +1564,18 @@ dependencies = [ [[package]] name = "memchr" -version = "2.8.0" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" + +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] [[package]] name = "nb" @@ -1606,9 +1628,9 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" +checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26" dependencies = [ "num_enum_derive", "rustversion", @@ -1616,20 +1638,20 @@ dependencies = [ [[package]] name = "num_enum_derive" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" +checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "once_cell" -version = "1.21.3" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] name = "ordered-multimap" @@ -1658,7 +1680,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd402d00b0fb94c5aee000029204a46884b1262e0c443f166d86d2c0747e1a1a" dependencies = [ "cortex-m", - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -1698,9 +1720,9 @@ checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" [[package]] name = "pest" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662" +checksum = "47627dd7305c6a2d6c8c6bcd24c5a4c17dbbf425f4f9c5313e724b38fc9782e9" dependencies = [ "memchr", "ucd-trie", @@ -1708,9 +1730,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77" +checksum = "4b4254325ecad416ab689e27ba51da03ba01a9632bc6e108f5fe7c3c4ad29d58" dependencies = [ "pest", "pest_generator", @@ -1718,25 +1740,24 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f" +checksum = "6c4c0e91ead7a8f7acecbca6f003fc2e8282b1dbe2dd9c9d2f16aba42995e0a7" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "pest_meta" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220" +checksum = "f9744bc48116fee06334924bb5f2bad41eed5e89bd26e29b0b799f9a3f82c210" dependencies = [ "pest", - "sha2", ] [[package]] @@ -1766,9 +1787,9 @@ checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" [[package]] name = "pin-project-lite" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pio" @@ -1815,14 +1836,14 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "pkg-config" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" [[package]] name = "portable-atomic" @@ -1840,7 +1861,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", - "defmt 1.0.1", + "defmt 1.1.1", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -1854,7 +1877,7 @@ checksum = "e0232bd009a197ceec9cc881ba46f727fcd8060a2d8d6a9dde7a69030a6fe2bb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1900,7 +1923,7 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1918,23 +1941,23 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "869675ad2d7541aea90c6d88c81f46a7f4ea9af8cd0395d38f11a95126998a0d" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] name = "quote" -version = "1.0.44" +version = "1.0.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" +checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" dependencies = [ "proc-macro2", ] [[package]] name = "rand" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" dependencies = [ "rand_core 0.6.4", ] @@ -1973,14 +1996,14 @@ version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", ] [[package]] name = "regex" -version = "1.12.3" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +checksum = "2a0e75113e14dc5acb068cd0786884f214f1312650a3d36d269f5c4f3cdee8a2" dependencies = [ "aho-corasick", "memchr", @@ -1990,9 +2013,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +checksum = "1f388202e4b80542a0921078cc23b6333bcf1409c1e3f86404cae4766a6131db" dependencies = [ "aho-corasick", "memchr", @@ -2001,15 +2024,15 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rgb" -version = "0.8.52" +version = "0.8.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c6a884d2998352bb4daf0183589aec883f16a6da1f4dde84d8e2e9a5409a1ce" +checksum = "47b34b781b31e5d73e9fbc8689c70551fd1ade9a19e3e28cfec8580a79290cc4" [[package]] name = "rmk" @@ -2019,7 +2042,7 @@ dependencies = [ "byteorder", "cortex-m", "crc32fast", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -2033,7 +2056,7 @@ dependencies = [ "embedded-storage", "embedded-storage-async", "futures", - "heapless 0.9.2", + "heapless 0.9.3", "paste", "postcard", "rmk-macro", @@ -2050,13 +2073,15 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] @@ -2070,7 +2095,7 @@ dependencies = [ "rmk-config", "rmk-types", "strum", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2079,7 +2104,7 @@ version = "0.2.0" dependencies = [ "const-gen", "cortex-m-rt", - "defmt 1.0.1", + "defmt 1.1.1", "defmt-rtt", "embassy-executor", "embassy-rp", @@ -2096,22 +2121,22 @@ name = "rmk-types" version = "0.2.2" dependencies = [ "bitfield-struct", - "defmt 1.0.1", - "heapless 0.9.2", + "defmt 1.1.1", + "heapless 0.9.3", "postcard", "rmk-config", "serde", "strum", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] name = "ron" -version = "0.12.0" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd490c5b18261893f14449cbd28cb9c0b637aebf161cd77900bfdedaff21ec32" +checksum = "81116b9531d61eabc41aeb228e4b6b2435bcca3233b98cf3b3077d4e6e9debb3" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "once_cell", "serde", "serde_derive", @@ -2169,14 +2194,14 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.27", + "semver 1.0.28", ] [[package]] name = "rustversion" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] name = "same-file" @@ -2223,9 +2248,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.27" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" dependencies = [ "serde", "serde_core", @@ -2239,11 +2264,11 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "sequential-storage" -version = "7.1.0" +version = "7.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4580ee0fa08cd41bee9f5b50ed309877e18735370fd4eef5766cc82863ef772" +checksum = "574e5a379bf43653079b34cb4cf32958404b5f42e0ed5b5adcdff02c2de04d4d" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-storage-async", "postcard", "serde", @@ -2267,7 +2292,7 @@ checksum = "2bf03b7a5281cfd4013bc788d057b0f09fc634397d83bc8973c955bd4f32727a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2299,14 +2324,14 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "serde_json" -version = "1.0.149" +version = "1.0.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" dependencies = [ "itoa", "memchr", @@ -2317,24 +2342,13 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "1.0.4" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" dependencies = [ "serde_core", ] -[[package]] -name = "sha2" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - [[package]] name = "sha2-const-stable" version = "0.1.0" @@ -2343,9 +2357,9 @@ checksum = "5f179d4e11094a893b82fff208f74d448a7512f99f5a0acbd5c679b705f83ed9" [[package]] name = "sha3" -version = "0.10.8" +version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +checksum = "77fd7028345d415a4034cf8777cd4f8ab1851274233b45f84e3d955502d93874" dependencies = [ "digest", "keccak", @@ -2362,21 +2376,27 @@ dependencies = [ [[package]] name = "shlex" -version = "1.3.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" [[package]] name = "siphasher" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e" +checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" + +[[package]] +name = "slab" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] name = "smallvec" -version = "1.15.1" +version = "1.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" [[package]] name = "smart-leds" @@ -2466,7 +2486,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2488,9 +2508,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.117" +version = "2.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" dependencies = [ "proc-macro2", "quote", @@ -2532,7 +2552,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2555,27 +2575,14 @@ dependencies = [ [[package]] name = "toml" -version = "0.9.12+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" -dependencies = [ - "serde_core", - "serde_spanned", - "toml_datetime 0.7.5+spec-1.1.0", - "toml_parser", - "winnow", -] - -[[package]] -name = "toml" -version = "1.0.3+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7614eaf19ad818347db24addfa201729cf2a9b6fdfd9eb0ab870fcacc606c0c" +checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee" dependencies = [ "indexmap", "serde_core", "serde_spanned", - "toml_datetime 1.0.0+spec-1.1.0", + "toml_datetime", "toml_parser", "toml_writer", "winnow", @@ -2583,36 +2590,27 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.7.5+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" -dependencies = [ - "serde_core", -] - -[[package]] -name = "toml_datetime" -version = "1.0.0+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32c2555c699578a4f59f0cc68e5116c8d7cabbd45e1409b989d4be085b53f13e" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" dependencies = [ "serde_core", ] [[package]] name = "toml_parser" -version = "1.0.9+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ "winnow", ] [[package]] name = "toml_writer" -version = "1.0.6+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" +checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" [[package]] name = "tracing" @@ -2633,7 +2631,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2683,13 +2681,13 @@ dependencies = [ "aes", "bt-hci", "cmac", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-futures", "embassy-sync", "embassy-time", "embedded-io 0.7.1", "futures", - "heapless 0.9.2", + "heapless 0.9.3", "p256", "rand", "rand_chacha", @@ -2709,7 +2707,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "uuid", ] @@ -2721,9 +2719,9 @@ checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" [[package]] name = "typenum" -version = "1.19.0" +version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" [[package]] name = "ucd-trie" @@ -2739,9 +2737,9 @@ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-segmentation" -version = "1.12.0" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" [[package]] name = "unicode-width" @@ -2798,15 +2796,15 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.117", + "syn 2.0.118", "usbd-hid-descriptors", ] [[package]] name = "uuid" -version = "1.21.0" +version = "1.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b672338555252d43fd2240c714dc444b8c6fb0a5c5335e65a07bba7742735ddb" +checksum = "bf80a72845275afea99e7f2b434723d3bc7e38470fcd1c7ed39a599c73319a53" dependencies = [ "js-sys", "wasm-bindgen", @@ -2863,9 +2861,9 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasm-bindgen" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60722a937f594b7fde9adb894d7c092fc1bb6612897c46368d18e7a20208eff2" +checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" dependencies = [ "cfg-if", "once_cell", @@ -2876,9 +2874,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac8c6395094b6b91c4af293f4c79371c163f9a6f56184d2c9a85f5a95f3950" +checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2886,22 +2884,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab3fabce6159dc20728033842636887e4877688ae94382766e00b180abac9d60" +checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de0e091bdb824da87dc01d967388880d017a0a9bc4f3bdc0d86ee9f9336e3bb5" +checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" dependencies = [ "unicode-ident", ] @@ -2941,9 +2939,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.14" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" +checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" dependencies = [ "memchr", ] @@ -2959,9 +2957,9 @@ dependencies = [ [[package]] name = "yaml-rust2" -version = "0.10.4" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2462ea039c445496d8793d052e13787f2b90e750b833afee748e601c17621ed9" +checksum = "631a50d867fafb7093e709d75aaee9e0e0d5deb934021fcea25ac2fe09edc51e" dependencies = [ "arraydeque", "encoding_rs", @@ -2970,29 +2968,29 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.39" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db6d35d663eadb6c932438e763b262fe1a70987f9ae936e60158176d710cae4a" +checksum = "b7cbbc0a705a0fd05cc3676525980d2bf5a9bc4adac6d6475209a7887cf59d19" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.39" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4122cd3169e94605190e77839c9a40d40ed048d305bfdc146e7df40ab0f3e517" +checksum = "e2e817b7b52d0c7358d3246da9d69935ebb18116b2b102b4230dac079b4862f5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "zeroize" -version = "1.8.2" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" [[package]] name = "zmij" diff --git a/examples/use_rust/rp2350/Cargo.toml b/examples/use_rust/rp2350/Cargo.toml index e7ebf17ad..d619f45ea 100644 --- a/examples/use_rust/rp2350/Cargo.toml +++ b/examples/use_rust/rp2350/Cargo.toml @@ -10,7 +10,7 @@ edition = "2024" license = "MIT OR Apache-2.0" [dependencies] -rmk = { path = "../../../rmk" } +rmk = { path = "../../../rmk", default-features = false, features = ["defmt", "storage", "vial", "watchdog"] } embassy-time = { version = "0.5", features = ["defmt"] } embassy-rp = { version = "0.10", features = [ "rp235xa", diff --git a/examples/use_rust/rp2350/src/main.rs b/examples/use_rust/rp2350/src/main.rs index fc53e23b0..22827b910 100644 --- a/examples/use_rust/rp2350/src/main.rs +++ b/examples/use_rust/rp2350/src/main.rs @@ -100,12 +100,11 @@ async fn main(_spawner: Spawner) { let debouncer = DefaultDebouncer::new(); let mut matrix = Matrix::<_, _, _, ROW, COL, true>::new(row_pins, col_pins, debouncer); let mut keyboard = Keyboard::new(&keymap); - let host_ctx = rmk::host::KeyboardContext::new(&keymap); - let mut host_service = HostService::new(&host_ctx, &rmk_config); + let host_service = HostService::new(&keymap, &rmk_config); - let mut usb_transport = UsbTransport::new(driver, rmk_config.device_config); + let mut usb_transport = UsbTransport::new(driver, rmk_config.device_config).with_host_service(&host_service); let mut wpm_processor = WpmProcessor::new(); // Start - run_all!(matrix, storage, usb_transport, wpm_processor, keyboard, host_service).await; + run_all!(matrix, storage, usb_transport, wpm_processor, keyboard).await; } diff --git a/examples/use_rust/sf32lb52x_ble/Cargo.lock b/examples/use_rust/sf32lb52x_ble/Cargo.lock index 417d79530..4c62084b0 100644 --- a/examples/use_rust/sf32lb52x_ble/Cargo.lock +++ b/examples/use_rust/sf32lb52x_ble/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -991,6 +997,12 @@ dependencies = [ "nb 1.1.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -1527,6 +1539,15 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3c8dda44ff03a2f238717214da50f65d5a53b45cd213a7370424ffdb6fae815" +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] + [[package]] name = "musb" version = "0.3.0" @@ -1702,6 +1723,8 @@ checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", "defmt 1.0.1", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -1883,10 +1906,12 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", "toml 1.1.2+spec-1.1.0", diff --git a/examples/use_rust/sf32lb52x_ble/Cargo.toml b/examples/use_rust/sf32lb52x_ble/Cargo.toml index 59b647526..6fe5e6eaa 100644 --- a/examples/use_rust/sf32lb52x_ble/Cargo.toml +++ b/examples/use_rust/sf32lb52x_ble/Cargo.toml @@ -53,7 +53,7 @@ embassy-executor = { version = "0.10", features = [ ] } embassy-futures = { version = "0.1" } embassy-sync = { version = "0.8" } -cortex-m-rt = { version = "0.7.3", features = ["set-sp", "set-vtor"] } +cortex-m-rt = { version = "0.7.5", features = ["set-sp", "set-vtor"] } portable-atomic = { version = "1" } defmt = "1" defmt-rtt = "1" diff --git a/examples/use_rust/sf32lb52x_ble/src/main.rs b/examples/use_rust/sf32lb52x_ble/src/main.rs index 87c621a4e..61dceca2e 100644 --- a/examples/use_rust/sf32lb52x_ble/src/main.rs +++ b/examples/use_rust/sf32lb52x_ble/src/main.rs @@ -174,8 +174,7 @@ async fn main(_spawner: Spawner) { let debouncer = DefaultDebouncer::new(); let mut matrix = DirectPinMatrix::<_, _, ROW, COL, SIZE>::new(direct_pins, debouncer, true); let mut keyboard = Keyboard::new(&keymap); - let host_ctx = rmk::host::KeyboardContext::new(&keymap); - let mut host_service = HostService::new(&host_ctx, &rmk_config); + let host_service = HostService::new(&keymap, &rmk_config); // Rotary encoder: PA43 = phase A, PA41 = phase B. Detents short to GND, so pull-ups are required. // Resolution 4 collapses the 4 quadrature transitions per detent into a single event; @@ -249,8 +248,10 @@ async fn main(_spawner: Spawner) { info!("Starting RMK dual-mode (USB + BLE) runner..."); - let mut usb_transport = UsbTransport::new(usb_driver, rmk_config.device_config); - let mut ble_transport = BleTransport::new(&stack, rmk_config).await; + let mut usb_transport = UsbTransport::new(usb_driver, rmk_config.device_config).with_host_service(&host_service); + let mut ble_transport = BleTransport::new(&stack, rmk_config) + .await + .with_host_service(&host_service); let mut wpm_processor = WpmProcessor::new(); run_all!( @@ -263,8 +264,7 @@ async fn main(_spawner: Spawner) { usb_transport, ble_transport, wpm_processor, - keyboard, - host_service + keyboard ) .await; } diff --git a/examples/use_rust/stm32f1/Cargo.lock b/examples/use_rust/stm32f1/Cargo.lock index d2fd266b5..d11e1258d 100644 --- a/examples/use_rust/stm32f1/Cargo.lock +++ b/examples/use_rust/stm32f1/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "ahash" version = "0.8.12" @@ -55,7 +61,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -69,9 +75,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "bare-metal" @@ -108,7 +114,7 @@ checksum = "3ca6739863c590881f038d033a146c51ddae239186a4327014839fd864f44ed5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -119,22 +125,13 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.11.0" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" +checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" dependencies = [ "serde_core", ] -[[package]] -name = "block-buffer" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" -dependencies = [ - "generic-array", -] - [[package]] name = "block-device-driver" version = "0.2.0" @@ -156,16 +153,16 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa61aec073ec94791433ddf3df2323ff9d1711557c2a0eefb0f99cb4f8dca520" dependencies = [ - "semver 1.0.27", + "semver 1.0.28", "serde", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] name = "cc" -version = "1.2.56" +version = "1.2.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2" +checksum = "f5d6cac793997bd970000024b2934968efe83b382de4fdcf4fcb46b6ee4ad996" dependencies = [ "find-msvc-tools", "shlex", @@ -188,9 +185,9 @@ dependencies = [ [[package]] name = "config" -version = "0.15.19" +version = "0.15.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b30fa8254caad766fc03cb0ccae691e14bf3bd72bfff27f72802ce729551b3d6" +checksum = "b85f248a4de22d204ceabc6299d89d2c70fbd7f09fea53c06c852369652d8139" dependencies = [ "async-trait", "convert_case", @@ -201,7 +198,7 @@ dependencies = [ "serde-untagged", "serde_core", "serde_json", - "toml 0.9.12+spec-1.1.0", + "toml", "winnow", "yaml-rust2", ] @@ -295,16 +292,7 @@ checksum = "e37549a379a9e0e6e576fd208ee60394ccb8be963889eebba3ffe0980364f472" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", -] - -[[package]] -name = "cpufeatures" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" -dependencies = [ - "libc", + "syn 2.0.118", ] [[package]] @@ -328,16 +316,6 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" -[[package]] -name = "crypto-common" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" -dependencies = [ - "generic-array", - "typenum", -] - [[package]] name = "darling" version = "0.20.11" @@ -369,7 +347,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -382,7 +360,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -393,7 +371,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -404,14 +382,14 @@ checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ "darling_core 0.23.0", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "defmt" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "548d977b6da32fa1d1fda2876453da1e7df63ad0304c8b3dae4dbe7b96f39b78" +checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" dependencies = [ "bitflags 1.3.2", "defmt-macros", @@ -419,15 +397,14 @@ dependencies = [ [[package]] name = "defmt-macros" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d4fc12a85bcf441cfe44344c4b72d58493178ce635338a3f3b78943aceb258e" +checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" dependencies = [ "defmt-parser", - "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -439,16 +416,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "digest" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" -dependencies = [ - "block-buffer", - "crypto-common", -] - [[package]] name = "dlv-list" version = "0.5.2" @@ -508,7 +475,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -568,7 +535,7 @@ checksum = "486c0622deb5a519fc4d2cb8e3ef324f7568fcdfff201ff8fcab46557d663ceb" dependencies = [ "aligned", "bit_field", - "bitflags 2.11.0", + "bitflags 2.13.0", "block-device-driver", "cfg-if", "cortex-m", @@ -595,7 +562,7 @@ dependencies = [ "embedded-storage", "embedded-storage-async", "futures-util", - "heapless 0.9.2", + "heapless 0.9.3", "nb 1.1.0", "proc-macro2", "quote", @@ -622,7 +589,7 @@ dependencies = [ "embedded-io-async 0.7.0", "futures-core", "futures-sink", - "heapless 0.9.2", + "heapless 0.9.3", ] [[package]] @@ -652,12 +619,12 @@ dependencies = [ [[package]] name = "embassy-time-queue-utils" -version = "0.3.0" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e2ee86063bd028a420a5fb5898c18c87a8898026da1d4c852af2c443d0a454" +checksum = "168297bf80aaf114b3c9ad589bf38b01b3009b9af7f97cd18086c5bbf96f5693" dependencies = [ "embassy-executor-timer-queue", - "heapless 0.8.0", + "heapless 0.9.3", ] [[package]] @@ -666,36 +633,39 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a25746d8b152b72fbf2a217f489a083dbbe243f281f09184a1f2cfbe9bbb245f" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "embassy-futures", "embassy-net-driver-channel", "embassy-sync", "embassy-time", "embassy-usb-driver", "embedded-io-async 0.7.0", - "heapless 0.9.2", + "heapless 0.9.3", "ssmarshal", "usbd-hid", ] [[package]] name = "embassy-usb-driver" -version = "0.2.0" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17119855ccc2d1f7470a39756b12068454ae27a3eabb037d940b5c03d9c77b7a" +checksum = "fa675c5f4349b6aa0fcffc4bf9b241f18cd11b97c1f8323273fb9a5449937fbd" dependencies = [ "embedded-io-async 0.6.1", + "embedded-io-async 0.7.0", ] [[package]] name = "embassy-usb-synopsys-otg" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbe46f4083109c7ea12a03ca61095d1e87c76fec52c7ca9ee06a42935606dacb" +checksum = "fb205e26d59e483e8c48f91f637ec217ec7e2cfb0b61d50482301b991b4ff431" dependencies = [ "critical-section", "embassy-sync", + "embassy-time", "embassy-usb-driver", + "portable-atomic", ] [[package]] @@ -742,6 +712,12 @@ dependencies = [ "nb 1.1.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -810,9 +786,9 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "erased-serde" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e8918065695684b2b0702da20382d5ae6065cf3327bc2d6436bd49a71ce9f3" +checksum = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec" dependencies = [ "serde", "serde_core", @@ -833,9 +809,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foldhash" -version = "0.1.5" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" [[package]] name = "futures" @@ -881,7 +857,7 @@ checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -911,9 +887,9 @@ dependencies = [ [[package]] name = "generator" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52f04ae4152da20c76fe800fa48659201d5cf627c5149ca0b707b69d7eef6cf9" +checksum = "b3b854b0e584ead1a33f18b2fcad7cf7be18b3875c78816b753639aa501513ae" dependencies = [ "cc", "cfg-if", @@ -924,16 +900,6 @@ dependencies = [ "windows-result", ] -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", -] - [[package]] name = "getrandom" version = "0.2.17" @@ -980,26 +946,26 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hashbrown" -version = "0.15.5" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" dependencies = [ "foldhash", ] [[package]] name = "hashbrown" -version = "0.16.1" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" [[package]] name = "hashlink" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" +checksum = "824e001ac4f3012dd16a264bec811403a67ca9deb6c102fc5049b32c4574b35f" dependencies = [ - "hashbrown 0.15.5", + "hashbrown 0.16.1", ] [[package]] @@ -1028,9 +994,9 @@ dependencies = [ [[package]] name = "heapless" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af2455f757db2b292a9b1768c4b70186d443bcb3b316252d6b540aec1cd89ed" +checksum = "25ba4bd83f9415b58b4ed8dc5714c76e626a105be4646c02630ad730ad3b5aa4" dependencies = [ "hash32 0.3.1", "serde_core", @@ -1051,19 +1017,19 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "indexmap" -version = "2.13.0" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.16.1", + "hashbrown 0.17.1", ] [[package]] name = "itoa" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "json" @@ -1090,9 +1056,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.182" +version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "litrs" @@ -1111,9 +1077,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.29" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" [[package]] name = "loom" @@ -1150,9 +1116,18 @@ dependencies = [ [[package]] name = "memchr" -version = "2.8.0" +version = "2.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" + +[[package]] +name = "miniz_oxide" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] [[package]] name = "nb" @@ -1189,9 +1164,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.21.3" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] name = "ordered-multimap" @@ -1223,9 +1198,9 @@ checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" [[package]] name = "pest" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662" +checksum = "47627dd7305c6a2d6c8c6bcd24c5a4c17dbbf425f4f9c5313e724b38fc9782e9" dependencies = [ "memchr", "ucd-trie", @@ -1233,9 +1208,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77" +checksum = "4b4254325ecad416ab689e27ba51da03ba01a9632bc6e108f5fe7c3c4ad29d58" dependencies = [ "pest", "pest_generator", @@ -1243,38 +1218,37 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f" +checksum = "6c4c0e91ead7a8f7acecbca6f003fc2e8282b1dbe2dd9c9d2f16aba42995e0a7" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "pest_meta" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220" +checksum = "f9744bc48116fee06334924bb5f2bad41eed5e89bd26e29b0b799f9a3f82c210" dependencies = [ "pest", - "sha2", ] [[package]] name = "pin-project-lite" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pkg-config" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" [[package]] name = "portable-atomic" @@ -1289,6 +1263,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -1302,29 +1278,7 @@ checksum = "e0232bd009a197ceec9cc881ba46f727fcd8060a2d8d6a9dde7a69030a6fe2bb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", -] - -[[package]] -name = "proc-macro-error-attr2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "proc-macro-error2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" -dependencies = [ - "proc-macro-error-attr2", - "proc-macro2", - "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1338,9 +1292,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.44" +version = "1.0.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" +checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" dependencies = [ "proc-macro2", ] @@ -1359,9 +1313,9 @@ checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" [[package]] name = "regex" -version = "1.12.3" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +checksum = "2a0e75113e14dc5acb068cd0786884f214f1312650a3d36d269f5c4f3cdee8a2" dependencies = [ "aho-corasick", "memchr", @@ -1371,9 +1325,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +checksum = "1f388202e4b80542a0921078cc23b6333bcf1409c1e3f86404cae4766a6131db" dependencies = [ "aho-corasick", "memchr", @@ -1382,9 +1336,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rmk" @@ -1399,8 +1353,9 @@ dependencies = [ "embassy-usb", "embedded-hal 1.0.0", "embedded-hal-async", + "embedded-io-async 0.7.0", "futures", - "heapless 0.9.2", + "heapless 0.9.3", "paste", "postcard", "rmk-macro", @@ -1416,13 +1371,15 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] @@ -1436,7 +1393,7 @@ dependencies = [ "rmk-config", "rmk-types", "strum", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1461,21 +1418,21 @@ name = "rmk-types" version = "0.2.2" dependencies = [ "bitfield-struct", - "heapless 0.9.2", + "heapless 0.9.3", "postcard", "rmk-config", "serde", "strum", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] name = "ron" -version = "0.12.0" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd490c5b18261893f14449cbd28cb9c0b637aebf161cd77900bfdedaff21ec32" +checksum = "81116b9531d61eabc41aeb228e4b6b2435bcca3233b98cf3b3077d4e6e9debb3" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "once_cell", "serde", "serde_derive", @@ -1508,14 +1465,14 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.27", + "semver 1.0.28", ] [[package]] name = "rustversion" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] name = "scoped-tls" @@ -1546,9 +1503,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.27" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" dependencies = [ "serde", "serde_core", @@ -1562,9 +1519,9 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "sequential-storage" -version = "7.1.0" +version = "7.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4580ee0fa08cd41bee9f5b50ed309877e18735370fd4eef5766cc82863ef772" +checksum = "574e5a379bf43653079b34cb4cf32958404b5f42e0ed5b5adcdff02c2de04d4d" dependencies = [ "embedded-storage-async", "postcard", @@ -1589,7 +1546,7 @@ checksum = "2bf03b7a5281cfd4013bc788d057b0f09fc634397d83bc8973c955bd4f32727a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1621,14 +1578,14 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "serde_json" -version = "1.0.149" +version = "1.0.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" dependencies = [ "itoa", "memchr", @@ -1639,24 +1596,13 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "1.0.4" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" dependencies = [ "serde_core", ] -[[package]] -name = "sha2" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - [[package]] name = "sharded-slab" version = "0.1.7" @@ -1668,15 +1614,15 @@ dependencies = [ [[package]] name = "shlex" -version = "1.3.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" [[package]] name = "smallvec" -version = "1.15.1" +version = "1.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" [[package]] name = "spin" @@ -1761,7 +1707,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1777,9 +1723,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.117" +version = "2.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" dependencies = [ "proc-macro2", "quote", @@ -1803,7 +1749,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1826,27 +1772,14 @@ dependencies = [ [[package]] name = "toml" -version = "0.9.12+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" -dependencies = [ - "serde_core", - "serde_spanned", - "toml_datetime 0.7.5+spec-1.1.0", - "toml_parser", - "winnow", -] - -[[package]] -name = "toml" -version = "1.0.3+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7614eaf19ad818347db24addfa201729cf2a9b6fdfd9eb0ab870fcacc606c0c" +checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee" dependencies = [ "indexmap", "serde_core", "serde_spanned", - "toml_datetime 1.0.0+spec-1.1.0", + "toml_datetime", "toml_parser", "toml_writer", "winnow", @@ -1854,36 +1787,27 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.7.5+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" -dependencies = [ - "serde_core", -] - -[[package]] -name = "toml_datetime" -version = "1.0.0+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32c2555c699578a4f59f0cc68e5116c8d7cabbd45e1409b989d4be085b53f13e" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" dependencies = [ "serde_core", ] [[package]] name = "toml_parser" -version = "1.0.9+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ "winnow", ] [[package]] name = "toml_writer" -version = "1.0.6+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" +checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" [[package]] name = "tracing" @@ -1904,7 +1828,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1963,12 +1887,6 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" -[[package]] -name = "typenum" -version = "1.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" - [[package]] name = "ucd-trie" version = "0.1.7" @@ -1983,9 +1901,9 @@ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-segmentation" -version = "1.12.0" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" [[package]] name = "usb-device" @@ -2028,7 +1946,7 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.117", + "syn 2.0.118", "usbd-hid-descriptors", ] @@ -2097,9 +2015,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.14" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" +checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" dependencies = [ "memchr", ] @@ -2115,9 +2033,9 @@ dependencies = [ [[package]] name = "yaml-rust2" -version = "0.10.4" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2462ea039c445496d8793d052e13787f2b90e750b833afee748e601c17621ed9" +checksum = "631a50d867fafb7093e709d75aaee9e0e0d5deb934021fcea25ac2fe09edc51e" dependencies = [ "arraydeque", "encoding_rs", @@ -2126,22 +2044,22 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.39" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db6d35d663eadb6c932438e763b262fe1a70987f9ae936e60158176d710cae4a" +checksum = "b7cbbc0a705a0fd05cc3676525980d2bf5a9bc4adac6d6475209a7887cf59d19" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.39" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4122cd3169e94605190e77839c9a40d40ed048d305bfdc146e7df40ab0f3e517" +checksum = "e2e817b7b52d0c7358d3246da9d69935ebb18116b2b102b4230dac079b4862f5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] diff --git a/examples/use_rust/stm32f1/Cargo.toml b/examples/use_rust/stm32f1/Cargo.toml index 8e3d2a819..28cf9282b 100644 --- a/examples/use_rust/stm32f1/Cargo.toml +++ b/examples/use_rust/stm32f1/Cargo.toml @@ -24,7 +24,7 @@ embassy-executor = { version = "0.10", features = [ "executor-thread", ] } defmt = "1" -panic-halt = "1.0" +panic-halt = "1" [build-dependencies] xz2 = "0.1.7" diff --git a/examples/use_rust/stm32f4/Cargo.lock b/examples/use_rust/stm32f4/Cargo.lock index 2e86e34cd..29c0e6d47 100644 --- a/examples/use_rust/stm32f4/Cargo.lock +++ b/examples/use_rust/stm32f4/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -66,7 +72,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -80,9 +86,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "az" @@ -131,7 +137,7 @@ checksum = "3ca6739863c590881f038d033a146c51ddae239186a4327014839fd864f44ed5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -142,9 +148,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.11.0" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" +checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" dependencies = [ "serde_core", ] @@ -174,12 +180,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f3c66fd0a41a3b3a5906847b1bf5516048ce083e24fa9341a0fa31d3b4cd73d" dependencies = [ "btuuid", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-sync", "embedded-io 0.7.1", "embedded-io-async 0.7.0", "futures-intrusive", - "heapless 0.9.2", + "heapless 0.9.3", "serde", ] @@ -196,9 +202,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.20.2" +version = "3.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" [[package]] name = "bytemuck" @@ -218,16 +224,16 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa61aec073ec94791433ddf3df2323ff9d1711557c2a0eefb0f99cb4f8dca520" dependencies = [ - "semver 1.0.27", + "semver 1.0.28", "serde", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] name = "cc" -version = "1.2.56" +version = "1.2.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2" +checksum = "f5d6cac793997bd970000024b2934968efe83b382de4fdcf4fcb46b6ee4ad996" dependencies = [ "find-msvc-tools", "shlex", @@ -271,9 +277,9 @@ dependencies = [ [[package]] name = "config" -version = "0.15.19" +version = "0.15.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b30fa8254caad766fc03cb0ccae691e14bf3bd72bfff27f72802ce729551b3d6" +checksum = "b85f248a4de22d204ceabc6299d89d2c70fbd7f09fea53c06c852369652d8139" dependencies = [ "async-trait", "convert_case 0.6.0", @@ -284,7 +290,7 @@ dependencies = [ "serde-untagged", "serde_core", "serde_json", - "toml 0.9.12+spec-1.1.0", + "toml", "winnow", "yaml-rust2", ] @@ -393,7 +399,7 @@ checksum = "e37549a379a9e0e6e576fd208ee60394ccb8be963889eebba3ffe0980364f472" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -479,7 +485,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -492,7 +498,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -503,7 +509,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -514,7 +520,7 @@ checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ "darling_core 0.23.0", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -532,14 +538,14 @@ version = "0.3.100" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0963443817029b2024136fc4dd07a5107eb8f977eaf18fcd1fdeb11306b64ad" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] name = "defmt" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "548d977b6da32fa1d1fda2876453da1e7df63ad0304c8b3dae4dbe7b96f39b78" +checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" dependencies = [ "bitflags 1.3.2", "defmt-macros", @@ -547,15 +553,14 @@ dependencies = [ [[package]] name = "defmt-macros" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d4fc12a85bcf441cfe44344c4b72d58493178ce635338a3f3b78943aceb258e" +checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" dependencies = [ "defmt-parser", - "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -569,12 +574,12 @@ dependencies = [ [[package]] name = "defmt-rtt" -version = "1.1.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d5a25c99d89c40f5676bec8cefe0614f17f0f40e916f98e345dae941807f9e" +checksum = "05144944c117db54127a8ac17a3c9a28d55e7047bfddb950bcd20b4a94c79b10" dependencies = [ "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -641,7 +646,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b0641612053b2f34fc250bb63f6630ae75de46e02ade7f457268447081d709ce" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embassy-futures", "embassy-hal-internal 0.4.0", "embassy-sync", @@ -663,7 +668,7 @@ dependencies = [ "cordyceps", "cortex-m", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-executor-macros", "embassy-executor-timer-queue", @@ -678,7 +683,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -693,7 +698,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc2d050bdc5c21e0862a89256ed8029ae6c290a93aecefc73084b3002cdebb01" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -713,7 +718,7 @@ checksum = "568659fc53866d3d85c60fa33723fb751aa69e71507634fc2c19e7649432fb75" dependencies = [ "cortex-m", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "num-traits", ] @@ -743,12 +748,12 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82051f67e8a06a8faebd183f62cfade184c96be68126c5f064abb8223a591ff1" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "cfg-if", "cortex-m", "cortex-m-rt", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -779,13 +784,13 @@ checksum = "486c0622deb5a519fc4d2cb8e3ef324f7568fcdfff201ff8fcab46557d663ceb" dependencies = [ "aligned", "bit_field", - "bitflags 2.11.0", + "bitflags 2.13.0", "block-device-driver", "cfg-if", "cortex-m", "cortex-m-rt", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -796,7 +801,7 @@ dependencies = [ "embassy-time-driver", "embassy-time-queue-utils", "embassy-usb-driver", - "embassy-usb-synopsys-otg 0.3.2", + "embassy-usb-synopsys-otg 0.3.3", "embedded-can", "embedded-hal 0.2.7", "embedded-hal 1.0.0", @@ -807,7 +812,7 @@ dependencies = [ "embedded-storage", "embedded-storage-async", "futures-util", - "heapless 0.9.2", + "heapless 0.9.3", "nb 1.1.0", "proc-macro2", "quote", @@ -831,11 +836,11 @@ checksum = "7bbd85cf5a5ae56bdf26f618364af642d1d0a4e245cdd75cd9aabda382f65a81" dependencies = [ "cfg-if", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io-async 0.7.0", "futures-core", "futures-sink", - "heapless 0.9.2", + "heapless 0.9.3", ] [[package]] @@ -846,7 +851,7 @@ checksum = "592b0c143ec626e821d4d90da51a2bd91d559d6c442b7c74a47d368c9e23d97a" dependencies = [ "cfg-if", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-time-driver", "embedded-hal 0.2.7", @@ -866,12 +871,12 @@ dependencies = [ [[package]] name = "embassy-time-queue-utils" -version = "0.3.0" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e2ee86063bd028a420a5fb5898c18c87a8898026da1d4c852af2c443d0a454" +checksum = "168297bf80aaf114b3c9ad589bf38b01b3009b9af7f97cd18086c5bbf96f5693" dependencies = [ "embassy-executor-timer-queue", - "heapless 0.8.0", + "heapless 0.9.3", ] [[package]] @@ -880,15 +885,15 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a25746d8b152b72fbf2a217f489a083dbbe243f281f09184a1f2cfbe9bbb245f" dependencies = [ - "bitflags 2.11.0", - "defmt 1.0.1", + "bitflags 2.13.0", + "defmt 1.1.1", "embassy-futures", "embassy-net-driver-channel", "embassy-sync", "embassy-time", "embassy-usb-driver", "embedded-io-async 0.7.0", - "heapless 0.9.2", + "heapless 0.9.3", "ssmarshal", "usbd-hid", ] @@ -899,21 +904,23 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa675c5f4349b6aa0fcffc4bf9b241f18cd11b97c1f8323273fb9a5449937fbd" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io-async 0.6.1", "embedded-io-async 0.7.0", ] [[package]] name = "embassy-usb-synopsys-otg" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbe46f4083109c7ea12a03ca61095d1e87c76fec52c7ca9ee06a42935606dacb" +checksum = "fb205e26d59e483e8c48f91f637ec217ec7e2cfb0b61d50482301b991b4ff431" dependencies = [ "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-sync", + "embassy-time", "embassy-usb-driver", + "portable-atomic", ] [[package]] @@ -923,7 +930,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6efd0c0e0b21bcf91b475b8fa47347c1df32c9a99728ae1e1b0e6625862dfd1a" dependencies = [ "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-sync", "embassy-time", "embassy-usb-driver", @@ -978,6 +985,12 @@ dependencies = [ "nb 1.1.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -990,7 +1003,7 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9eb1aa714776b75c7e67e1da744b81a129b3ff919c8712b5e1b32252c1f07cc7" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -1008,7 +1021,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2564b9f813c544241430e147d8bc454815ef9ac998878d30cc3055449f7fd4c0" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io 0.7.1", ] @@ -1050,9 +1063,9 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "erased-serde" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e8918065695684b2b0702da20382d5ae6065cf3327bc2d6436bd49a71ce9f3" +checksum = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec" dependencies = [ "serde", "serde_core", @@ -1077,9 +1090,9 @@ checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" [[package]] name = "fixed" -version = "1.30.0" +version = "1.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c566da967934c6c7ee0458a9773de9b2a685bd2ce26a3b28ddfc740e640182f5" +checksum = "9af2cbf772fa6d1c11358f92ef554cb6b386201210bcf0e91fb7fba8a907fb40" dependencies = [ "az", "bytemuck", @@ -1095,9 +1108,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foldhash" -version = "0.1.5" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" [[package]] name = "futures" @@ -1153,7 +1166,7 @@ checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1179,13 +1192,14 @@ dependencies = [ "futures-sink", "futures-task", "pin-project-lite", + "slab", ] [[package]] name = "generator" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52f04ae4152da20c76fe800fa48659201d5cf627c5149ca0b707b69d7eef6cf9" +checksum = "b3b854b0e584ead1a33f18b2fcad7cf7be18b3875c78816b753639aa501513ae" dependencies = [ "cc", "cfg-if", @@ -1275,26 +1289,26 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hashbrown" -version = "0.15.5" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" dependencies = [ "foldhash", ] [[package]] name = "hashbrown" -version = "0.16.1" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" [[package]] name = "hashlink" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" +checksum = "824e001ac4f3012dd16a264bec811403a67ca9deb6c102fc5049b32c4574b35f" dependencies = [ - "hashbrown 0.15.5", + "hashbrown 0.16.1", ] [[package]] @@ -1323,11 +1337,11 @@ dependencies = [ [[package]] name = "heapless" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af2455f757db2b292a9b1768c4b70186d443bcb3b316252d6b540aec1cd89ed" +checksum = "25ba4bd83f9415b58b4ed8dc5714c76e626a105be4646c02630ad730ad3b5aa4" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "hash32 0.3.1", "serde_core", "stable_deref_trait", @@ -1365,12 +1379,12 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "indexmap" -version = "2.13.0" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.16.1", + "hashbrown 0.17.1", ] [[package]] @@ -1384,17 +1398,18 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "js-sys" -version = "0.3.90" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14dc6f6450b3f6d4ed5b16327f38fed626d375a886159ca555bd7822c0c3a5a6" +checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ - "once_cell", + "cfg-if", + "futures-util", "wasm-bindgen", ] @@ -1423,9 +1438,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.182" +version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "litrs" @@ -1444,9 +1459,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.29" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" [[package]] name = "loom" @@ -1483,9 +1498,18 @@ dependencies = [ [[package]] name = "memchr" -version = "2.8.0" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" + +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] [[package]] name = "nb" @@ -1532,9 +1556,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.21.3" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] name = "ordered-multimap" @@ -1563,7 +1587,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd402d00b0fb94c5aee000029204a46884b1262e0c443f166d86d2c0747e1a1a" dependencies = [ "cortex-m", - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -1580,9 +1604,9 @@ checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" [[package]] name = "pest" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662" +checksum = "47627dd7305c6a2d6c8c6bcd24c5a4c17dbbf425f4f9c5313e724b38fc9782e9" dependencies = [ "memchr", "ucd-trie", @@ -1590,9 +1614,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77" +checksum = "4b4254325ecad416ab689e27ba51da03ba01a9632bc6e108f5fe7c3c4ad29d58" dependencies = [ "pest", "pest_generator", @@ -1600,38 +1624,37 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f" +checksum = "6c4c0e91ead7a8f7acecbca6f003fc2e8282b1dbe2dd9c9d2f16aba42995e0a7" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "pest_meta" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220" +checksum = "f9744bc48116fee06334924bb5f2bad41eed5e89bd26e29b0b799f9a3f82c210" dependencies = [ "pest", - "sha2", ] [[package]] name = "pin-project-lite" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pkg-config" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" [[package]] name = "portable-atomic" @@ -1646,7 +1669,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", - "defmt 1.0.1", + "defmt 1.1.1", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -1660,7 +1685,7 @@ checksum = "e0232bd009a197ceec9cc881ba46f727fcd8060a2d8d6a9dde7a69030a6fe2bb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1681,28 +1706,6 @@ dependencies = [ "elliptic-curve", ] -[[package]] -name = "proc-macro-error-attr2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "proc-macro-error2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" -dependencies = [ - "proc-macro-error-attr2", - "proc-macro2", - "quote", - "syn 2.0.117", -] - [[package]] name = "proc-macro2" version = "1.0.106" @@ -1714,18 +1717,18 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.44" +version = "1.0.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" +checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" dependencies = [ "proc-macro2", ] [[package]] name = "rand" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" dependencies = [ "rand_core 0.6.4", ] @@ -1760,9 +1763,9 @@ checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" [[package]] name = "regex" -version = "1.12.3" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +checksum = "2a0e75113e14dc5acb068cd0786884f214f1312650a3d36d269f5c4f3cdee8a2" dependencies = [ "aho-corasick", "memchr", @@ -1772,9 +1775,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +checksum = "1f388202e4b80542a0921078cc23b6333bcf1409c1e3f86404cae4766a6131db" dependencies = [ "aho-corasick", "memchr", @@ -1783,9 +1786,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rmk" @@ -1795,7 +1798,7 @@ dependencies = [ "byteorder", "cortex-m", "crc32fast", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -1809,7 +1812,7 @@ dependencies = [ "embedded-storage", "embedded-storage-async", "futures", - "heapless 0.9.2", + "heapless 0.9.3", "paste", "postcard", "rmk-macro", @@ -1826,13 +1829,15 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] @@ -1846,7 +1851,7 @@ dependencies = [ "rmk-config", "rmk-types", "strum", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1856,7 +1861,7 @@ dependencies = [ "const-gen", "cortex-m", "cortex-m-rt", - "defmt 1.0.1", + "defmt 1.1.1", "defmt-rtt", "embassy-executor", "embassy-stm32", @@ -1873,22 +1878,22 @@ name = "rmk-types" version = "0.2.2" dependencies = [ "bitfield-struct", - "defmt 1.0.1", - "heapless 0.9.2", + "defmt 1.1.1", + "heapless 0.9.3", "postcard", "rmk-config", "serde", "strum", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] name = "ron" -version = "0.12.0" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd490c5b18261893f14449cbd28cb9c0b637aebf161cd77900bfdedaff21ec32" +checksum = "81116b9531d61eabc41aeb228e4b6b2435bcca3233b98cf3b3077d4e6e9debb3" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "once_cell", "serde", "serde_derive", @@ -1921,14 +1926,14 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.27", + "semver 1.0.28", ] [[package]] name = "rustversion" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] name = "scoped-tls" @@ -1972,9 +1977,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.27" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" dependencies = [ "serde", "serde_core", @@ -1988,11 +1993,11 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "sequential-storage" -version = "7.1.0" +version = "7.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4580ee0fa08cd41bee9f5b50ed309877e18735370fd4eef5766cc82863ef772" +checksum = "574e5a379bf43653079b34cb4cf32958404b5f42e0ed5b5adcdff02c2de04d4d" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-storage-async", "postcard", "serde", @@ -2016,7 +2021,7 @@ checksum = "2bf03b7a5281cfd4013bc788d057b0f09fc634397d83bc8973c955bd4f32727a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2048,14 +2053,14 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "serde_json" -version = "1.0.149" +version = "1.0.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" dependencies = [ "itoa", "memchr", @@ -2066,24 +2071,13 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "1.0.4" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" dependencies = [ "serde_core", ] -[[package]] -name = "sha2" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - [[package]] name = "sharded-slab" version = "0.1.7" @@ -2095,15 +2089,21 @@ dependencies = [ [[package]] name = "shlex" -version = "1.3.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" + +[[package]] +name = "slab" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] name = "smallvec" -version = "1.15.1" +version = "1.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" [[package]] name = "spin" @@ -2189,7 +2189,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2211,9 +2211,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.117" +version = "2.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" dependencies = [ "proc-macro2", "quote", @@ -2237,7 +2237,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2260,27 +2260,14 @@ dependencies = [ [[package]] name = "toml" -version = "0.9.12+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" -dependencies = [ - "serde_core", - "serde_spanned", - "toml_datetime 0.7.5+spec-1.1.0", - "toml_parser", - "winnow", -] - -[[package]] -name = "toml" -version = "1.0.3+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7614eaf19ad818347db24addfa201729cf2a9b6fdfd9eb0ab870fcacc606c0c" +checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee" dependencies = [ "indexmap", "serde_core", "serde_spanned", - "toml_datetime 1.0.0+spec-1.1.0", + "toml_datetime", "toml_parser", "toml_writer", "winnow", @@ -2288,36 +2275,27 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.7.5+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" -dependencies = [ - "serde_core", -] - -[[package]] -name = "toml_datetime" -version = "1.0.0+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32c2555c699578a4f59f0cc68e5116c8d7cabbd45e1409b989d4be085b53f13e" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" dependencies = [ "serde_core", ] [[package]] name = "toml_parser" -version = "1.0.9+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ "winnow", ] [[package]] name = "toml_writer" -version = "1.0.6+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" +checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" [[package]] name = "tracing" @@ -2338,7 +2316,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2399,13 +2377,13 @@ dependencies = [ "aes", "bt-hci", "cmac", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-futures", "embassy-sync", "embassy-time", "embedded-io 0.7.1", "futures", - "heapless 0.9.2", + "heapless 0.9.3", "p256", "rand", "rand_chacha", @@ -2425,7 +2403,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "uuid", ] @@ -2437,9 +2415,9 @@ checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" [[package]] name = "typenum" -version = "1.19.0" +version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" [[package]] name = "ucd-trie" @@ -2455,9 +2433,9 @@ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-segmentation" -version = "1.12.0" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" [[package]] name = "usb-device" @@ -2502,15 +2480,15 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.117", + "syn 2.0.118", "usbd-hid-descriptors", ] [[package]] name = "uuid" -version = "1.21.0" +version = "1.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b672338555252d43fd2240c714dc444b8c6fb0a5c5335e65a07bba7742735ddb" +checksum = "bf80a72845275afea99e7f2b434723d3bc7e38470fcd1c7ed39a599c73319a53" dependencies = [ "js-sys", "wasm-bindgen", @@ -2557,9 +2535,9 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasm-bindgen" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60722a937f594b7fde9adb894d7c092fc1bb6612897c46368d18e7a20208eff2" +checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" dependencies = [ "cfg-if", "once_cell", @@ -2570,9 +2548,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac8c6395094b6b91c4af293f4c79371c163f9a6f56184d2c9a85f5a95f3950" +checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2580,22 +2558,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab3fabce6159dc20728033842636887e4877688ae94382766e00b180abac9d60" +checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de0e091bdb824da87dc01d967388880d017a0a9bc4f3bdc0d86ee9f9336e3bb5" +checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" dependencies = [ "unicode-ident", ] @@ -2626,9 +2604,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.14" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" +checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" dependencies = [ "memchr", ] @@ -2644,9 +2622,9 @@ dependencies = [ [[package]] name = "yaml-rust2" -version = "0.10.4" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2462ea039c445496d8793d052e13787f2b90e750b833afee748e601c17621ed9" +checksum = "631a50d867fafb7093e709d75aaee9e0e0d5deb934021fcea25ac2fe09edc51e" dependencies = [ "arraydeque", "encoding_rs", @@ -2655,29 +2633,29 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.39" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db6d35d663eadb6c932438e763b262fe1a70987f9ae936e60158176d710cae4a" +checksum = "b7cbbc0a705a0fd05cc3676525980d2bf5a9bc4adac6d6475209a7887cf59d19" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.39" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4122cd3169e94605190e77839c9a40d40ed048d305bfdc146e7df40ab0f3e517" +checksum = "e2e817b7b52d0c7358d3246da9d69935ebb18116b2b102b4230dac079b4862f5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "zeroize" -version = "1.8.2" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" [[package]] name = "zmij" diff --git a/examples/use_rust/stm32f4/Cargo.toml b/examples/use_rust/stm32f4/Cargo.toml index 614095499..a3fe27d4d 100644 --- a/examples/use_rust/stm32f4/Cargo.toml +++ b/examples/use_rust/stm32f4/Cargo.toml @@ -10,7 +10,7 @@ edition = "2024" license = "MIT OR Apache-2.0" [dependencies] -rmk = { path = "../../../rmk" } +rmk = { path = "../../../rmk", default-features = false, features = ["defmt", "storage", "vial", "watchdog"] } cortex-m = { version = "0.7.7", features = ['critical-section-single-core'] } cortex-m-rt = "0.7.5" embassy-time = { version = "0.5", features = ["tick-hz-32_768", "defmt"] } diff --git a/examples/use_rust/stm32f4/src/main.rs b/examples/use_rust/stm32f4/src/main.rs index f80862012..04ba52fc2 100644 --- a/examples/use_rust/stm32f4/src/main.rs +++ b/examples/use_rust/stm32f4/src/main.rs @@ -108,12 +108,11 @@ async fn main(_spawner: Spawner) { let debouncer = DefaultDebouncer::new(); let mut matrix = Matrix::<_, _, _, ROW, COL, true>::new(row_pins, col_pins, debouncer); let mut keyboard = Keyboard::new(&keymap); - let host_ctx = rmk::host::KeyboardContext::new(&keymap); - let mut host_service = HostService::new(&host_ctx, &rmk_config); + let host_service = HostService::new(&keymap, &rmk_config); - let mut usb_transport = UsbTransport::new(driver, rmk_config.device_config); + let mut usb_transport = UsbTransport::new(driver, rmk_config.device_config).with_host_service(&host_service); let mut wpm_processor = WpmProcessor::new(); // Start - run_all!(matrix, storage, usb_transport, wpm_processor, keyboard, host_service).await; + run_all!(matrix, storage, usb_transport, wpm_processor, keyboard).await; } diff --git a/examples/use_rust/stm32g4/Cargo.lock b/examples/use_rust/stm32g4/Cargo.lock index 65c027b35..3d8c91fac 100644 --- a/examples/use_rust/stm32g4/Cargo.lock +++ b/examples/use_rust/stm32g4/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -66,7 +72,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -80,9 +86,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "az" @@ -131,7 +137,7 @@ checksum = "3ca6739863c590881f038d033a146c51ddae239186a4327014839fd864f44ed5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -142,9 +148,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.11.0" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" +checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" dependencies = [ "serde_core", ] @@ -174,12 +180,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f3c66fd0a41a3b3a5906847b1bf5516048ce083e24fa9341a0fa31d3b4cd73d" dependencies = [ "btuuid", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-sync", "embedded-io 0.7.1", "embedded-io-async 0.7.0", "futures-intrusive", - "heapless 0.9.2", + "heapless 0.9.3", "serde", ] @@ -196,9 +202,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.20.2" +version = "3.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" [[package]] name = "bytemuck" @@ -218,16 +224,16 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa61aec073ec94791433ddf3df2323ff9d1711557c2a0eefb0f99cb4f8dca520" dependencies = [ - "semver 1.0.27", + "semver 1.0.28", "serde", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] name = "cc" -version = "1.2.56" +version = "1.2.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2" +checksum = "f5d6cac793997bd970000024b2934968efe83b382de4fdcf4fcb46b6ee4ad996" dependencies = [ "find-msvc-tools", "shlex", @@ -271,9 +277,9 @@ dependencies = [ [[package]] name = "config" -version = "0.15.19" +version = "0.15.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b30fa8254caad766fc03cb0ccae691e14bf3bd72bfff27f72802ce729551b3d6" +checksum = "b85f248a4de22d204ceabc6299d89d2c70fbd7f09fea53c06c852369652d8139" dependencies = [ "async-trait", "convert_case 0.6.0", @@ -284,7 +290,7 @@ dependencies = [ "serde-untagged", "serde_core", "serde_json", - "toml 0.9.12+spec-1.1.0", + "toml", "winnow", "yaml-rust2", ] @@ -393,7 +399,7 @@ checksum = "e37549a379a9e0e6e576fd208ee60394ccb8be963889eebba3ffe0980364f472" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -479,7 +485,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -492,7 +498,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -503,7 +509,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -514,7 +520,7 @@ checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ "darling_core 0.23.0", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -532,14 +538,14 @@ version = "0.3.100" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0963443817029b2024136fc4dd07a5107eb8f977eaf18fcd1fdeb11306b64ad" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] name = "defmt" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "548d977b6da32fa1d1fda2876453da1e7df63ad0304c8b3dae4dbe7b96f39b78" +checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" dependencies = [ "bitflags 1.3.2", "defmt-macros", @@ -547,15 +553,14 @@ dependencies = [ [[package]] name = "defmt-macros" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d4fc12a85bcf441cfe44344c4b72d58493178ce635338a3f3b78943aceb258e" +checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" dependencies = [ "defmt-parser", - "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -569,12 +574,12 @@ dependencies = [ [[package]] name = "defmt-rtt" -version = "1.1.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d5a25c99d89c40f5676bec8cefe0614f17f0f40e916f98e345dae941807f9e" +checksum = "05144944c117db54127a8ac17a3c9a28d55e7047bfddb950bcd20b4a94c79b10" dependencies = [ "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -641,7 +646,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b0641612053b2f34fc250bb63f6630ae75de46e02ade7f457268447081d709ce" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embassy-futures", "embassy-hal-internal 0.4.0", "embassy-sync", @@ -663,7 +668,7 @@ dependencies = [ "cordyceps", "cortex-m", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-executor-macros", "embassy-executor-timer-queue", @@ -678,7 +683,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -693,7 +698,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc2d050bdc5c21e0862a89256ed8029ae6c290a93aecefc73084b3002cdebb01" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -713,7 +718,7 @@ checksum = "568659fc53866d3d85c60fa33723fb751aa69e71507634fc2c19e7649432fb75" dependencies = [ "cortex-m", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "num-traits", ] @@ -743,12 +748,12 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82051f67e8a06a8faebd183f62cfade184c96be68126c5f064abb8223a591ff1" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "cfg-if", "cortex-m", "cortex-m-rt", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -779,13 +784,13 @@ checksum = "486c0622deb5a519fc4d2cb8e3ef324f7568fcdfff201ff8fcab46557d663ceb" dependencies = [ "aligned", "bit_field", - "bitflags 2.11.0", + "bitflags 2.13.0", "block-device-driver", "cfg-if", "cortex-m", "cortex-m-rt", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -796,7 +801,7 @@ dependencies = [ "embassy-time-driver", "embassy-time-queue-utils", "embassy-usb-driver", - "embassy-usb-synopsys-otg 0.3.2", + "embassy-usb-synopsys-otg 0.3.3", "embedded-can", "embedded-hal 0.2.7", "embedded-hal 1.0.0", @@ -807,7 +812,7 @@ dependencies = [ "embedded-storage", "embedded-storage-async", "futures-util", - "heapless 0.9.2", + "heapless 0.9.3", "nb 1.1.0", "proc-macro2", "quote", @@ -831,11 +836,11 @@ checksum = "7bbd85cf5a5ae56bdf26f618364af642d1d0a4e245cdd75cd9aabda382f65a81" dependencies = [ "cfg-if", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io-async 0.7.0", "futures-core", "futures-sink", - "heapless 0.9.2", + "heapless 0.9.3", ] [[package]] @@ -846,7 +851,7 @@ checksum = "592b0c143ec626e821d4d90da51a2bd91d559d6c442b7c74a47d368c9e23d97a" dependencies = [ "cfg-if", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-time-driver", "embedded-hal 0.2.7", @@ -866,12 +871,12 @@ dependencies = [ [[package]] name = "embassy-time-queue-utils" -version = "0.3.0" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e2ee86063bd028a420a5fb5898c18c87a8898026da1d4c852af2c443d0a454" +checksum = "168297bf80aaf114b3c9ad589bf38b01b3009b9af7f97cd18086c5bbf96f5693" dependencies = [ "embassy-executor-timer-queue", - "heapless 0.8.0", + "heapless 0.9.3", ] [[package]] @@ -880,15 +885,15 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a25746d8b152b72fbf2a217f489a083dbbe243f281f09184a1f2cfbe9bbb245f" dependencies = [ - "bitflags 2.11.0", - "defmt 1.0.1", + "bitflags 2.13.0", + "defmt 1.1.1", "embassy-futures", "embassy-net-driver-channel", "embassy-sync", "embassy-time", "embassy-usb-driver", "embedded-io-async 0.7.0", - "heapless 0.9.2", + "heapless 0.9.3", "ssmarshal", "usbd-hid", ] @@ -899,21 +904,23 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa675c5f4349b6aa0fcffc4bf9b241f18cd11b97c1f8323273fb9a5449937fbd" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io-async 0.6.1", "embedded-io-async 0.7.0", ] [[package]] name = "embassy-usb-synopsys-otg" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbe46f4083109c7ea12a03ca61095d1e87c76fec52c7ca9ee06a42935606dacb" +checksum = "fb205e26d59e483e8c48f91f637ec217ec7e2cfb0b61d50482301b991b4ff431" dependencies = [ "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-sync", + "embassy-time", "embassy-usb-driver", + "portable-atomic", ] [[package]] @@ -923,7 +930,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6efd0c0e0b21bcf91b475b8fa47347c1df32c9a99728ae1e1b0e6625862dfd1a" dependencies = [ "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-sync", "embassy-time", "embassy-usb-driver", @@ -978,6 +985,12 @@ dependencies = [ "nb 1.1.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -990,7 +1003,7 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9eb1aa714776b75c7e67e1da744b81a129b3ff919c8712b5e1b32252c1f07cc7" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -1008,7 +1021,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2564b9f813c544241430e147d8bc454815ef9ac998878d30cc3055449f7fd4c0" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io 0.7.1", ] @@ -1050,9 +1063,9 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "erased-serde" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e8918065695684b2b0702da20382d5ae6065cf3327bc2d6436bd49a71ce9f3" +checksum = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec" dependencies = [ "serde", "serde_core", @@ -1077,9 +1090,9 @@ checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" [[package]] name = "fixed" -version = "1.30.0" +version = "1.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c566da967934c6c7ee0458a9773de9b2a685bd2ce26a3b28ddfc740e640182f5" +checksum = "9af2cbf772fa6d1c11358f92ef554cb6b386201210bcf0e91fb7fba8a907fb40" dependencies = [ "az", "bytemuck", @@ -1095,9 +1108,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foldhash" -version = "0.1.5" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" [[package]] name = "futures" @@ -1153,7 +1166,7 @@ checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1179,13 +1192,14 @@ dependencies = [ "futures-sink", "futures-task", "pin-project-lite", + "slab", ] [[package]] name = "generator" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52f04ae4152da20c76fe800fa48659201d5cf627c5149ca0b707b69d7eef6cf9" +checksum = "b3b854b0e584ead1a33f18b2fcad7cf7be18b3875c78816b753639aa501513ae" dependencies = [ "cc", "cfg-if", @@ -1275,26 +1289,26 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hashbrown" -version = "0.15.5" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" dependencies = [ "foldhash", ] [[package]] name = "hashbrown" -version = "0.16.1" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" [[package]] name = "hashlink" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" +checksum = "824e001ac4f3012dd16a264bec811403a67ca9deb6c102fc5049b32c4574b35f" dependencies = [ - "hashbrown 0.15.5", + "hashbrown 0.16.1", ] [[package]] @@ -1323,11 +1337,11 @@ dependencies = [ [[package]] name = "heapless" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af2455f757db2b292a9b1768c4b70186d443bcb3b316252d6b540aec1cd89ed" +checksum = "25ba4bd83f9415b58b4ed8dc5714c76e626a105be4646c02630ad730ad3b5aa4" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "hash32 0.3.1", "serde_core", "stable_deref_trait", @@ -1365,12 +1379,12 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "indexmap" -version = "2.13.0" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.16.1", + "hashbrown 0.17.1", ] [[package]] @@ -1384,17 +1398,18 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "js-sys" -version = "0.3.90" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14dc6f6450b3f6d4ed5b16327f38fed626d375a886159ca555bd7822c0c3a5a6" +checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ - "once_cell", + "cfg-if", + "futures-util", "wasm-bindgen", ] @@ -1423,9 +1438,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.182" +version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "litrs" @@ -1444,9 +1459,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.29" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" [[package]] name = "loom" @@ -1483,9 +1498,18 @@ dependencies = [ [[package]] name = "memchr" -version = "2.8.0" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" + +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] [[package]] name = "nb" @@ -1532,9 +1556,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.21.3" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] name = "ordered-multimap" @@ -1576,9 +1600,9 @@ checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" [[package]] name = "pest" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662" +checksum = "47627dd7305c6a2d6c8c6bcd24c5a4c17dbbf425f4f9c5313e724b38fc9782e9" dependencies = [ "memchr", "ucd-trie", @@ -1586,9 +1610,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77" +checksum = "4b4254325ecad416ab689e27ba51da03ba01a9632bc6e108f5fe7c3c4ad29d58" dependencies = [ "pest", "pest_generator", @@ -1596,38 +1620,37 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f" +checksum = "6c4c0e91ead7a8f7acecbca6f003fc2e8282b1dbe2dd9c9d2f16aba42995e0a7" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "pest_meta" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220" +checksum = "f9744bc48116fee06334924bb5f2bad41eed5e89bd26e29b0b799f9a3f82c210" dependencies = [ "pest", - "sha2", ] [[package]] name = "pin-project-lite" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pkg-config" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" [[package]] name = "portable-atomic" @@ -1642,7 +1665,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", - "defmt 1.0.1", + "defmt 1.1.1", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -1656,7 +1681,7 @@ checksum = "e0232bd009a197ceec9cc881ba46f727fcd8060a2d8d6a9dde7a69030a6fe2bb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1677,28 +1702,6 @@ dependencies = [ "elliptic-curve", ] -[[package]] -name = "proc-macro-error-attr2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "proc-macro-error2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" -dependencies = [ - "proc-macro-error-attr2", - "proc-macro2", - "quote", - "syn 2.0.117", -] - [[package]] name = "proc-macro2" version = "1.0.106" @@ -1710,18 +1713,18 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.44" +version = "1.0.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" +checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" dependencies = [ "proc-macro2", ] [[package]] name = "rand" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" dependencies = [ "rand_core 0.6.4", ] @@ -1756,9 +1759,9 @@ checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" [[package]] name = "regex" -version = "1.12.3" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +checksum = "2a0e75113e14dc5acb068cd0786884f214f1312650a3d36d269f5c4f3cdee8a2" dependencies = [ "aho-corasick", "memchr", @@ -1768,9 +1771,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +checksum = "1f388202e4b80542a0921078cc23b6333bcf1409c1e3f86404cae4766a6131db" dependencies = [ "aho-corasick", "memchr", @@ -1779,9 +1782,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rmk" @@ -1790,7 +1793,7 @@ dependencies = [ "bt-hci", "cortex-m", "crc32fast", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-futures", "embassy-nrf", @@ -1801,7 +1804,7 @@ dependencies = [ "embedded-hal-async", "embedded-io-async 0.7.0", "futures", - "heapless 0.9.2", + "heapless 0.9.3", "paste", "postcard", "rmk-macro", @@ -1818,13 +1821,15 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] @@ -1838,7 +1843,7 @@ dependencies = [ "rmk-config", "rmk-types", "strum", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1848,7 +1853,7 @@ dependencies = [ "const-gen", "cortex-m", "cortex-m-rt", - "defmt 1.0.1", + "defmt 1.1.1", "defmt-rtt", "embassy-executor", "embassy-stm32", @@ -1864,22 +1869,22 @@ name = "rmk-types" version = "0.2.2" dependencies = [ "bitfield-struct", - "defmt 1.0.1", - "heapless 0.9.2", + "defmt 1.1.1", + "heapless 0.9.3", "postcard", "rmk-config", "serde", "strum", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] name = "ron" -version = "0.12.0" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd490c5b18261893f14449cbd28cb9c0b637aebf161cd77900bfdedaff21ec32" +checksum = "81116b9531d61eabc41aeb228e4b6b2435bcca3233b98cf3b3077d4e6e9debb3" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "once_cell", "serde", "serde_derive", @@ -1912,14 +1917,14 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.27", + "semver 1.0.28", ] [[package]] name = "rustversion" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] name = "scoped-tls" @@ -1963,9 +1968,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.27" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" dependencies = [ "serde", "serde_core", @@ -1979,11 +1984,11 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "sequential-storage" -version = "7.1.0" +version = "7.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4580ee0fa08cd41bee9f5b50ed309877e18735370fd4eef5766cc82863ef772" +checksum = "574e5a379bf43653079b34cb4cf32958404b5f42e0ed5b5adcdff02c2de04d4d" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-storage-async", "postcard", "serde", @@ -2007,7 +2012,7 @@ checksum = "2bf03b7a5281cfd4013bc788d057b0f09fc634397d83bc8973c955bd4f32727a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2039,14 +2044,14 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "serde_json" -version = "1.0.149" +version = "1.0.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" dependencies = [ "itoa", "memchr", @@ -2057,24 +2062,13 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "1.0.4" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" dependencies = [ "serde_core", ] -[[package]] -name = "sha2" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - [[package]] name = "sharded-slab" version = "0.1.7" @@ -2086,15 +2080,21 @@ dependencies = [ [[package]] name = "shlex" -version = "1.3.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" + +[[package]] +name = "slab" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] name = "smallvec" -version = "1.15.1" +version = "1.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" [[package]] name = "spin" @@ -2180,7 +2180,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2202,9 +2202,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.117" +version = "2.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" dependencies = [ "proc-macro2", "quote", @@ -2228,7 +2228,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2251,27 +2251,14 @@ dependencies = [ [[package]] name = "toml" -version = "0.9.12+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" -dependencies = [ - "serde_core", - "serde_spanned", - "toml_datetime 0.7.5+spec-1.1.0", - "toml_parser", - "winnow", -] - -[[package]] -name = "toml" -version = "1.0.3+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7614eaf19ad818347db24addfa201729cf2a9b6fdfd9eb0ab870fcacc606c0c" +checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee" dependencies = [ "indexmap", "serde_core", "serde_spanned", - "toml_datetime 1.0.0+spec-1.1.0", + "toml_datetime", "toml_parser", "toml_writer", "winnow", @@ -2279,36 +2266,27 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.7.5+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" -dependencies = [ - "serde_core", -] - -[[package]] -name = "toml_datetime" -version = "1.0.0+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32c2555c699578a4f59f0cc68e5116c8d7cabbd45e1409b989d4be085b53f13e" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" dependencies = [ "serde_core", ] [[package]] name = "toml_parser" -version = "1.0.9+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ "winnow", ] [[package]] name = "toml_writer" -version = "1.0.6+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" +checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" [[package]] name = "tracing" @@ -2329,7 +2307,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2390,13 +2368,13 @@ dependencies = [ "aes", "bt-hci", "cmac", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-futures", "embassy-sync", "embassy-time", "embedded-io 0.7.1", "futures", - "heapless 0.9.2", + "heapless 0.9.3", "p256", "rand", "rand_chacha", @@ -2416,7 +2394,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "uuid", ] @@ -2428,9 +2406,9 @@ checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" [[package]] name = "typenum" -version = "1.19.0" +version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" [[package]] name = "ucd-trie" @@ -2446,9 +2424,9 @@ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-segmentation" -version = "1.12.0" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" [[package]] name = "usb-device" @@ -2493,15 +2471,15 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.117", + "syn 2.0.118", "usbd-hid-descriptors", ] [[package]] name = "uuid" -version = "1.21.0" +version = "1.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b672338555252d43fd2240c714dc444b8c6fb0a5c5335e65a07bba7742735ddb" +checksum = "bf80a72845275afea99e7f2b434723d3bc7e38470fcd1c7ed39a599c73319a53" dependencies = [ "js-sys", "wasm-bindgen", @@ -2548,9 +2526,9 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasm-bindgen" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60722a937f594b7fde9adb894d7c092fc1bb6612897c46368d18e7a20208eff2" +checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" dependencies = [ "cfg-if", "once_cell", @@ -2561,9 +2539,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac8c6395094b6b91c4af293f4c79371c163f9a6f56184d2c9a85f5a95f3950" +checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2571,22 +2549,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab3fabce6159dc20728033842636887e4877688ae94382766e00b180abac9d60" +checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de0e091bdb824da87dc01d967388880d017a0a9bc4f3bdc0d86ee9f9336e3bb5" +checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" dependencies = [ "unicode-ident", ] @@ -2617,9 +2595,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.14" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" +checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" dependencies = [ "memchr", ] @@ -2635,9 +2613,9 @@ dependencies = [ [[package]] name = "yaml-rust2" -version = "0.10.4" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2462ea039c445496d8793d052e13787f2b90e750b833afee748e601c17621ed9" +checksum = "631a50d867fafb7093e709d75aaee9e0e0d5deb934021fcea25ac2fe09edc51e" dependencies = [ "arraydeque", "encoding_rs", @@ -2646,29 +2624,29 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.39" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db6d35d663eadb6c932438e763b262fe1a70987f9ae936e60158176d710cae4a" +checksum = "b7cbbc0a705a0fd05cc3676525980d2bf5a9bc4adac6d6475209a7887cf59d19" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.39" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4122cd3169e94605190e77839c9a40d40ed048d305bfdc146e7df40ab0f3e517" +checksum = "e2e817b7b52d0c7358d3246da9d69935ebb18116b2b102b4230dac079b4862f5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "zeroize" -version = "1.8.2" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" [[package]] name = "zmij" diff --git a/examples/use_rust/stm32g4/Cargo.toml b/examples/use_rust/stm32g4/Cargo.toml index 7357d21df..38c5f0993 100644 --- a/examples/use_rust/stm32g4/Cargo.toml +++ b/examples/use_rust/stm32g4/Cargo.toml @@ -27,7 +27,7 @@ embassy-executor = { version = "0.10", features = [ ] } defmt = "1" defmt-rtt = "1" -panic-halt = "1.0" +panic-halt = "1" [build-dependencies] xz2 = "0.1.7" diff --git a/examples/use_rust/stm32h7/Cargo.lock b/examples/use_rust/stm32h7/Cargo.lock index 1f9b6e736..99f16ff64 100644 --- a/examples/use_rust/stm32h7/Cargo.lock +++ b/examples/use_rust/stm32h7/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aes" version = "0.8.4" @@ -66,7 +72,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -80,9 +86,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "az" @@ -131,7 +137,7 @@ checksum = "3ca6739863c590881f038d033a146c51ddae239186a4327014839fd864f44ed5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -142,9 +148,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.11.0" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" +checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" dependencies = [ "serde_core", ] @@ -174,12 +180,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f3c66fd0a41a3b3a5906847b1bf5516048ce083e24fa9341a0fa31d3b4cd73d" dependencies = [ "btuuid", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-sync", "embedded-io 0.7.1", "embedded-io-async 0.7.0", "futures-intrusive", - "heapless 0.9.2", + "heapless 0.9.3", "serde", ] @@ -196,9 +202,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.20.2" +version = "3.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" [[package]] name = "bytemuck" @@ -218,16 +224,16 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa61aec073ec94791433ddf3df2323ff9d1711557c2a0eefb0f99cb4f8dca520" dependencies = [ - "semver 1.0.27", + "semver 1.0.28", "serde", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] name = "cc" -version = "1.2.56" +version = "1.2.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2" +checksum = "f5d6cac793997bd970000024b2934968efe83b382de4fdcf4fcb46b6ee4ad996" dependencies = [ "find-msvc-tools", "shlex", @@ -271,9 +277,9 @@ dependencies = [ [[package]] name = "config" -version = "0.15.19" +version = "0.15.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b30fa8254caad766fc03cb0ccae691e14bf3bd72bfff27f72802ce729551b3d6" +checksum = "b85f248a4de22d204ceabc6299d89d2c70fbd7f09fea53c06c852369652d8139" dependencies = [ "async-trait", "convert_case 0.6.0", @@ -284,7 +290,7 @@ dependencies = [ "serde-untagged", "serde_core", "serde_json", - "toml 0.9.12+spec-1.1.0", + "toml", "winnow", "yaml-rust2", ] @@ -393,7 +399,7 @@ checksum = "e37549a379a9e0e6e576fd208ee60394ccb8be963889eebba3ffe0980364f472" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -479,7 +485,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -492,7 +498,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -503,7 +509,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -514,7 +520,7 @@ checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ "darling_core 0.23.0", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -532,14 +538,14 @@ version = "0.3.100" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0963443817029b2024136fc4dd07a5107eb8f977eaf18fcd1fdeb11306b64ad" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] name = "defmt" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "548d977b6da32fa1d1fda2876453da1e7df63ad0304c8b3dae4dbe7b96f39b78" +checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" dependencies = [ "bitflags 1.3.2", "defmt-macros", @@ -547,15 +553,14 @@ dependencies = [ [[package]] name = "defmt-macros" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d4fc12a85bcf441cfe44344c4b72d58493178ce635338a3f3b78943aceb258e" +checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" dependencies = [ "defmt-parser", - "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -569,12 +574,12 @@ dependencies = [ [[package]] name = "defmt-rtt" -version = "1.1.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d5a25c99d89c40f5676bec8cefe0614f17f0f40e916f98e345dae941807f9e" +checksum = "05144944c117db54127a8ac17a3c9a28d55e7047bfddb950bcd20b4a94c79b10" dependencies = [ "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -641,7 +646,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b0641612053b2f34fc250bb63f6630ae75de46e02ade7f457268447081d709ce" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embassy-futures", "embassy-hal-internal 0.4.0", "embassy-sync", @@ -663,7 +668,7 @@ dependencies = [ "cordyceps", "cortex-m", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-executor-macros", "embassy-executor-timer-queue", @@ -678,7 +683,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -693,7 +698,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc2d050bdc5c21e0862a89256ed8029ae6c290a93aecefc73084b3002cdebb01" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -713,7 +718,7 @@ checksum = "568659fc53866d3d85c60fa33723fb751aa69e71507634fc2c19e7649432fb75" dependencies = [ "cortex-m", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "num-traits", ] @@ -743,12 +748,12 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82051f67e8a06a8faebd183f62cfade184c96be68126c5f064abb8223a591ff1" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "cfg-if", "cortex-m", "cortex-m-rt", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -779,13 +784,13 @@ checksum = "486c0622deb5a519fc4d2cb8e3ef324f7568fcdfff201ff8fcab46557d663ceb" dependencies = [ "aligned", "bit_field", - "bitflags 2.11.0", + "bitflags 2.13.0", "block-device-driver", "cfg-if", "cortex-m", "cortex-m-rt", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -796,7 +801,7 @@ dependencies = [ "embassy-time-driver", "embassy-time-queue-utils", "embassy-usb-driver", - "embassy-usb-synopsys-otg 0.3.2", + "embassy-usb-synopsys-otg 0.3.3", "embedded-can", "embedded-hal 0.2.7", "embedded-hal 1.0.0", @@ -807,7 +812,7 @@ dependencies = [ "embedded-storage", "embedded-storage-async", "futures-util", - "heapless 0.9.2", + "heapless 0.9.3", "nb 1.1.0", "proc-macro2", "quote", @@ -831,11 +836,11 @@ checksum = "7bbd85cf5a5ae56bdf26f618364af642d1d0a4e245cdd75cd9aabda382f65a81" dependencies = [ "cfg-if", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io-async 0.7.0", "futures-core", "futures-sink", - "heapless 0.9.2", + "heapless 0.9.3", ] [[package]] @@ -846,7 +851,7 @@ checksum = "592b0c143ec626e821d4d90da51a2bd91d559d6c442b7c74a47d368c9e23d97a" dependencies = [ "cfg-if", "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-time-driver", "embedded-hal 0.2.7", @@ -866,12 +871,12 @@ dependencies = [ [[package]] name = "embassy-time-queue-utils" -version = "0.3.0" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e2ee86063bd028a420a5fb5898c18c87a8898026da1d4c852af2c443d0a454" +checksum = "168297bf80aaf114b3c9ad589bf38b01b3009b9af7f97cd18086c5bbf96f5693" dependencies = [ "embassy-executor-timer-queue", - "heapless 0.8.0", + "heapless 0.9.3", ] [[package]] @@ -880,15 +885,15 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a25746d8b152b72fbf2a217f489a083dbbe243f281f09184a1f2cfbe9bbb245f" dependencies = [ - "bitflags 2.11.0", - "defmt 1.0.1", + "bitflags 2.13.0", + "defmt 1.1.1", "embassy-futures", "embassy-net-driver-channel", "embassy-sync", "embassy-time", "embassy-usb-driver", "embedded-io-async 0.7.0", - "heapless 0.9.2", + "heapless 0.9.3", "ssmarshal", "usbd-hid", ] @@ -899,21 +904,23 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa675c5f4349b6aa0fcffc4bf9b241f18cd11b97c1f8323273fb9a5449937fbd" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io-async 0.6.1", "embedded-io-async 0.7.0", ] [[package]] name = "embassy-usb-synopsys-otg" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbe46f4083109c7ea12a03ca61095d1e87c76fec52c7ca9ee06a42935606dacb" +checksum = "fb205e26d59e483e8c48f91f637ec217ec7e2cfb0b61d50482301b991b4ff431" dependencies = [ "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-sync", + "embassy-time", "embassy-usb-driver", + "portable-atomic", ] [[package]] @@ -923,7 +930,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6efd0c0e0b21bcf91b475b8fa47347c1df32c9a99728ae1e1b0e6625862dfd1a" dependencies = [ "critical-section", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-sync", "embassy-time", "embassy-usb-driver", @@ -978,6 +985,12 @@ dependencies = [ "nb 1.1.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "embedded-io" version = "0.6.1" @@ -990,7 +1003,7 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9eb1aa714776b75c7e67e1da744b81a129b3ff919c8712b5e1b32252c1f07cc7" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", ] [[package]] @@ -1008,7 +1021,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2564b9f813c544241430e147d8bc454815ef9ac998878d30cc3055449f7fd4c0" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-io 0.7.1", ] @@ -1050,9 +1063,9 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "erased-serde" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e8918065695684b2b0702da20382d5ae6065cf3327bc2d6436bd49a71ce9f3" +checksum = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec" dependencies = [ "serde", "serde_core", @@ -1077,9 +1090,9 @@ checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" [[package]] name = "fixed" -version = "1.30.0" +version = "1.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c566da967934c6c7ee0458a9773de9b2a685bd2ce26a3b28ddfc740e640182f5" +checksum = "9af2cbf772fa6d1c11358f92ef554cb6b386201210bcf0e91fb7fba8a907fb40" dependencies = [ "az", "bytemuck", @@ -1095,9 +1108,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foldhash" -version = "0.1.5" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" [[package]] name = "futures" @@ -1153,7 +1166,7 @@ checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1179,13 +1192,14 @@ dependencies = [ "futures-sink", "futures-task", "pin-project-lite", + "slab", ] [[package]] name = "generator" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52f04ae4152da20c76fe800fa48659201d5cf627c5149ca0b707b69d7eef6cf9" +checksum = "b3b854b0e584ead1a33f18b2fcad7cf7be18b3875c78816b753639aa501513ae" dependencies = [ "cc", "cfg-if", @@ -1275,26 +1289,26 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hashbrown" -version = "0.15.5" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" dependencies = [ "foldhash", ] [[package]] name = "hashbrown" -version = "0.16.1" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" [[package]] name = "hashlink" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" +checksum = "824e001ac4f3012dd16a264bec811403a67ca9deb6c102fc5049b32c4574b35f" dependencies = [ - "hashbrown 0.15.5", + "hashbrown 0.16.1", ] [[package]] @@ -1323,11 +1337,11 @@ dependencies = [ [[package]] name = "heapless" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af2455f757db2b292a9b1768c4b70186d443bcb3b316252d6b540aec1cd89ed" +checksum = "25ba4bd83f9415b58b4ed8dc5714c76e626a105be4646c02630ad730ad3b5aa4" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "hash32 0.3.1", "serde_core", "stable_deref_trait", @@ -1365,12 +1379,12 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "indexmap" -version = "2.13.0" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.16.1", + "hashbrown 0.17.1", ] [[package]] @@ -1384,17 +1398,18 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "js-sys" -version = "0.3.90" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14dc6f6450b3f6d4ed5b16327f38fed626d375a886159ca555bd7822c0c3a5a6" +checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ - "once_cell", + "cfg-if", + "futures-util", "wasm-bindgen", ] @@ -1423,9 +1438,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.182" +version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "litrs" @@ -1444,9 +1459,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.29" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" [[package]] name = "loom" @@ -1483,9 +1498,18 @@ dependencies = [ [[package]] name = "memchr" -version = "2.8.0" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" + +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", +] [[package]] name = "nb" @@ -1532,9 +1556,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.21.3" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] name = "ordered-multimap" @@ -1576,9 +1600,9 @@ checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" [[package]] name = "pest" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662" +checksum = "47627dd7305c6a2d6c8c6bcd24c5a4c17dbbf425f4f9c5313e724b38fc9782e9" dependencies = [ "memchr", "ucd-trie", @@ -1586,9 +1610,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77" +checksum = "4b4254325ecad416ab689e27ba51da03ba01a9632bc6e108f5fe7c3c4ad29d58" dependencies = [ "pest", "pest_generator", @@ -1596,38 +1620,37 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f" +checksum = "6c4c0e91ead7a8f7acecbca6f003fc2e8282b1dbe2dd9c9d2f16aba42995e0a7" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "pest_meta" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220" +checksum = "f9744bc48116fee06334924bb5f2bad41eed5e89bd26e29b0b799f9a3f82c210" dependencies = [ "pest", - "sha2", ] [[package]] name = "pin-project-lite" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pkg-config" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" [[package]] name = "portable-atomic" @@ -1642,7 +1665,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", - "defmt 1.0.1", + "defmt 1.1.1", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless 0.7.17", "postcard-derive", "serde", @@ -1656,7 +1681,7 @@ checksum = "e0232bd009a197ceec9cc881ba46f727fcd8060a2d8d6a9dde7a69030a6fe2bb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1677,28 +1702,6 @@ dependencies = [ "elliptic-curve", ] -[[package]] -name = "proc-macro-error-attr2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "proc-macro-error2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" -dependencies = [ - "proc-macro-error-attr2", - "proc-macro2", - "quote", - "syn 2.0.117", -] - [[package]] name = "proc-macro2" version = "1.0.106" @@ -1710,18 +1713,18 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.44" +version = "1.0.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" +checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" dependencies = [ "proc-macro2", ] [[package]] name = "rand" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" dependencies = [ "rand_core 0.6.4", ] @@ -1756,9 +1759,9 @@ checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" [[package]] name = "regex" -version = "1.12.3" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +checksum = "2a0e75113e14dc5acb068cd0786884f214f1312650a3d36d269f5c4f3cdee8a2" dependencies = [ "aho-corasick", "memchr", @@ -1768,9 +1771,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +checksum = "1f388202e4b80542a0921078cc23b6333bcf1409c1e3f86404cae4766a6131db" dependencies = [ "aho-corasick", "memchr", @@ -1779,9 +1782,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rmk" @@ -1791,7 +1794,7 @@ dependencies = [ "byteorder", "cortex-m", "crc32fast", - "defmt 1.0.1", + "defmt 1.1.1", "document-features", "embassy-embedded-hal", "embassy-futures", @@ -1805,7 +1808,7 @@ dependencies = [ "embedded-storage", "embedded-storage-async", "futures", - "heapless 0.9.2", + "heapless 0.9.3", "paste", "postcard", "rmk-macro", @@ -1822,13 +1825,15 @@ name = "rmk-config" version = "0.6.1" dependencies = [ "config", + "miniz_oxide", "once_cell", "paste", "pest", "pest_derive", + "postcard", "serde", "serde-inline-default", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] @@ -1842,7 +1847,7 @@ dependencies = [ "rmk-config", "rmk-types", "strum", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1852,7 +1857,7 @@ dependencies = [ "const-gen", "cortex-m", "cortex-m-rt", - "defmt 1.0.1", + "defmt 1.1.1", "defmt-rtt", "embassy-executor", "embassy-stm32", @@ -1869,22 +1874,22 @@ name = "rmk-types" version = "0.2.2" dependencies = [ "bitfield-struct", - "defmt 1.0.1", - "heapless 0.9.2", + "defmt 1.1.1", + "heapless 0.9.3", "postcard", "rmk-config", "serde", "strum", - "toml 1.0.3+spec-1.1.0", + "toml", ] [[package]] name = "ron" -version = "0.12.0" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd490c5b18261893f14449cbd28cb9c0b637aebf161cd77900bfdedaff21ec32" +checksum = "81116b9531d61eabc41aeb228e4b6b2435bcca3233b98cf3b3077d4e6e9debb3" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.13.0", "once_cell", "serde", "serde_derive", @@ -1917,14 +1922,14 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.27", + "semver 1.0.28", ] [[package]] name = "rustversion" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] name = "scoped-tls" @@ -1968,9 +1973,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.27" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" dependencies = [ "serde", "serde_core", @@ -1984,11 +1989,11 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "sequential-storage" -version = "7.1.0" +version = "7.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4580ee0fa08cd41bee9f5b50ed309877e18735370fd4eef5766cc82863ef772" +checksum = "574e5a379bf43653079b34cb4cf32958404b5f42e0ed5b5adcdff02c2de04d4d" dependencies = [ - "defmt 1.0.1", + "defmt 1.1.1", "embedded-storage-async", "postcard", "serde", @@ -2012,7 +2017,7 @@ checksum = "2bf03b7a5281cfd4013bc788d057b0f09fc634397d83bc8973c955bd4f32727a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2044,14 +2049,14 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "serde_json" -version = "1.0.149" +version = "1.0.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" dependencies = [ "itoa", "memchr", @@ -2062,24 +2067,13 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "1.0.4" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" dependencies = [ "serde_core", ] -[[package]] -name = "sha2" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - [[package]] name = "sharded-slab" version = "0.1.7" @@ -2091,15 +2085,21 @@ dependencies = [ [[package]] name = "shlex" -version = "1.3.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" + +[[package]] +name = "slab" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] name = "smallvec" -version = "1.15.1" +version = "1.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" [[package]] name = "spin" @@ -2185,7 +2185,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2207,9 +2207,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.117" +version = "2.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" dependencies = [ "proc-macro2", "quote", @@ -2233,7 +2233,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2256,27 +2256,14 @@ dependencies = [ [[package]] name = "toml" -version = "0.9.12+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" -dependencies = [ - "serde_core", - "serde_spanned", - "toml_datetime 0.7.5+spec-1.1.0", - "toml_parser", - "winnow", -] - -[[package]] -name = "toml" -version = "1.0.3+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7614eaf19ad818347db24addfa201729cf2a9b6fdfd9eb0ab870fcacc606c0c" +checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee" dependencies = [ "indexmap", "serde_core", "serde_spanned", - "toml_datetime 1.0.0+spec-1.1.0", + "toml_datetime", "toml_parser", "toml_writer", "winnow", @@ -2284,36 +2271,27 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.7.5+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" -dependencies = [ - "serde_core", -] - -[[package]] -name = "toml_datetime" -version = "1.0.0+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32c2555c699578a4f59f0cc68e5116c8d7cabbd45e1409b989d4be085b53f13e" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" dependencies = [ "serde_core", ] [[package]] name = "toml_parser" -version = "1.0.9+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ "winnow", ] [[package]] name = "toml_writer" -version = "1.0.6+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" +checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" [[package]] name = "tracing" @@ -2334,7 +2312,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2395,13 +2373,13 @@ dependencies = [ "aes", "bt-hci", "cmac", - "defmt 1.0.1", + "defmt 1.1.1", "embassy-futures", "embassy-sync", "embassy-time", "embedded-io 0.7.1", "futures", - "heapless 0.9.2", + "heapless 0.9.3", "p256", "rand", "rand_chacha", @@ -2421,7 +2399,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "uuid", ] @@ -2433,9 +2411,9 @@ checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" [[package]] name = "typenum" -version = "1.19.0" +version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" [[package]] name = "ucd-trie" @@ -2451,9 +2429,9 @@ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-segmentation" -version = "1.12.0" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" [[package]] name = "usb-device" @@ -2498,15 +2476,15 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.117", + "syn 2.0.118", "usbd-hid-descriptors", ] [[package]] name = "uuid" -version = "1.21.0" +version = "1.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b672338555252d43fd2240c714dc444b8c6fb0a5c5335e65a07bba7742735ddb" +checksum = "bf80a72845275afea99e7f2b434723d3bc7e38470fcd1c7ed39a599c73319a53" dependencies = [ "js-sys", "wasm-bindgen", @@ -2553,9 +2531,9 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasm-bindgen" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60722a937f594b7fde9adb894d7c092fc1bb6612897c46368d18e7a20208eff2" +checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" dependencies = [ "cfg-if", "once_cell", @@ -2566,9 +2544,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac8c6395094b6b91c4af293f4c79371c163f9a6f56184d2c9a85f5a95f3950" +checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2576,22 +2554,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab3fabce6159dc20728033842636887e4877688ae94382766e00b180abac9d60" +checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.113" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de0e091bdb824da87dc01d967388880d017a0a9bc4f3bdc0d86ee9f9336e3bb5" +checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" dependencies = [ "unicode-ident", ] @@ -2622,9 +2600,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.14" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" +checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" dependencies = [ "memchr", ] @@ -2640,9 +2618,9 @@ dependencies = [ [[package]] name = "yaml-rust2" -version = "0.10.4" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2462ea039c445496d8793d052e13787f2b90e750b833afee748e601c17621ed9" +checksum = "631a50d867fafb7093e709d75aaee9e0e0d5deb934021fcea25ac2fe09edc51e" dependencies = [ "arraydeque", "encoding_rs", @@ -2651,29 +2629,29 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.39" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db6d35d663eadb6c932438e763b262fe1a70987f9ae936e60158176d710cae4a" +checksum = "b7cbbc0a705a0fd05cc3676525980d2bf5a9bc4adac6d6475209a7887cf59d19" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.39" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4122cd3169e94605190e77839c9a40d40ed048d305bfdc146e7df40ab0f3e517" +checksum = "e2e817b7b52d0c7358d3246da9d69935ebb18116b2b102b4230dac079b4862f5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "zeroize" -version = "1.8.2" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" [[package]] name = "zmij" diff --git a/examples/use_rust/stm32h7/Cargo.toml b/examples/use_rust/stm32h7/Cargo.toml index 624a7b517..75c092ff6 100644 --- a/examples/use_rust/stm32h7/Cargo.toml +++ b/examples/use_rust/stm32h7/Cargo.toml @@ -10,7 +10,7 @@ edition = "2024" license = "MIT OR Apache-2.0" [dependencies] -rmk = { path = "../../../rmk" } +rmk = { path = "../../../rmk", default-features = false, features = ["defmt", "storage", "vial", "watchdog"] } cortex-m = { version = "0.7.7", features = ['critical-section-single-core'] } cortex-m-rt = "0.7.5" embassy-time = { version = "0.5", features = ["tick-hz-32_768", "defmt"] } @@ -29,7 +29,7 @@ static_cell = "2" defmt = "1" defmt-rtt = "1" # panic-probe = { version = "1", features = ["print-defmt"] } -panic-halt = "1.0" +panic-halt = "1" [build-dependencies] xz2 = "0.1.7" diff --git a/examples/use_rust/stm32h7/src/main.rs b/examples/use_rust/stm32h7/src/main.rs index 7b5c3e570..7e0c08dee 100644 --- a/examples/use_rust/stm32h7/src/main.rs +++ b/examples/use_rust/stm32h7/src/main.rs @@ -127,12 +127,11 @@ async fn main(_spawner: Spawner) { let debouncer = DefaultDebouncer::new(); let mut matrix = Matrix::<_, _, _, ROW, COL, true>::new(row_pins, col_pins, debouncer); let mut keyboard = Keyboard::new(&keymap); - let host_ctx = rmk::host::KeyboardContext::new(&keymap); - let mut host_service = HostService::new(&host_ctx, &rmk_config); + let host_service = HostService::new(&keymap, &rmk_config); - let mut usb_transport = UsbTransport::new(driver, rmk_config.device_config); + let mut usb_transport = UsbTransport::new(driver, rmk_config.device_config).with_host_service(&host_service); let mut wpm_processor = WpmProcessor::new(); // Start - run_all!(matrix, storage, usb_transport, wpm_processor, keyboard, host_service).await; + run_all!(matrix, storage, usb_transport, wpm_processor, keyboard).await; } diff --git a/rmk-config/Cargo.toml b/rmk-config/Cargo.toml index db0e58d20..a47c30eed 100644 --- a/rmk-config/Cargo.toml +++ b/rmk-config/Cargo.toml @@ -18,3 +18,7 @@ once_cell = "1.19" pest = "2.8" pest_derive = "2.8" paste = "1.0.15" +# Build-time only (rmk-config never ships in the firmware binary): serialize + +# compress the layout blob. The host inflates with the same codec. +postcard = { version = "1", default-features = false, features = ["alloc"] } +miniz_oxide = "0.9" diff --git a/rmk-config/src/behavior.rs b/rmk-config/src/behavior.rs index a93ab7a07..8dbe6b4da 100644 --- a/rmk-config/src/behavior.rs +++ b/rmk-config/src/behavior.rs @@ -3,17 +3,17 @@ use crate::{BehaviorConfig, MacroOperation}; impl crate::KeyboardTomlConfig { pub(crate) fn get_behavior_config(&self) -> Result { let default = self.behavior.clone().unwrap_or_default(); - let (layout, _) = self.get_layout_config().unwrap(); + let num_layers = self.num_layers(); match self.behavior.clone() { Some(mut behavior) => { behavior.tri_layer = match behavior.tri_layer { Some(tri_layer) => { - if tri_layer.upper >= layout.layers { - return Err("keyboard.toml: Tri layer upper is larger than [layout.layers]".to_string()); - } else if tri_layer.lower >= layout.layers { - return Err("keyboard.toml: Tri layer lower is larger than [layout.layers]".to_string()); - } else if tri_layer.adjust >= layout.layers { - return Err("keyboard.toml: Tri layer adjust is larger than [layout.layers]".to_string()); + if tri_layer.upper >= num_layers { + return Err("keyboard.toml: Tri layer upper is larger than [keymap].layers".to_string()); + } else if tri_layer.lower >= num_layers { + return Err("keyboard.toml: Tri layer lower is larger than [keymap].layers".to_string()); + } else if tri_layer.adjust >= num_layers { + return Err("keyboard.toml: Tri layer adjust is larger than [keymap].layers".to_string()); } Some(tri_layer) } @@ -34,10 +34,10 @@ impl crate::KeyboardTomlConfig { )); } if let Some(layer) = c.layer - && layer >= layout.layers + && layer >= num_layers { return Err(format!( - "keyboard.toml: layer in combo #{} is greater than [layout.layers]", + "keyboard.toml: layer in combo #{} is greater than [keymap].layers", i )); } @@ -93,10 +93,10 @@ impl crate::KeyboardTomlConfig { } let mut seen_device_ids: Vec> = Vec::new(); for entry in entries { - if entry.target_layer >= layout.layers { + if entry.target_layer >= num_layers { return Err(format!( - "keyboard.toml: [[behavior.auto_mouse_layer]].target_layer must be a valid layer index (< [layout.layers] = {}), got {}", - layout.layers, entry.target_layer + "keyboard.toml: [[behavior.auto_mouse_layer]].target_layer must be a valid layer index (< [keymap].layers = {}), got {}", + num_layers, entry.target_layer )); } if entry.threshold == Some(0) { diff --git a/rmk-config/src/board.rs b/rmk-config/src/board.rs index 68d9b68b3..a69581df7 100644 --- a/rmk-config/src/board.rs +++ b/rmk-config/src/board.rs @@ -1,4 +1,6 @@ -use crate::{InputDeviceConfig, KeyboardTomlConfig, MatrixConfig, MatrixType, SplitConfig}; +use crate::{ + InputDeviceConfig, KeyboardTomlConfig, LayoutTomlConfig, MatrixConfig, MatrixType, SplitConfig, SplitConnection, +}; #[derive(Clone, Debug)] #[allow(clippy::large_enum_variant)] @@ -21,7 +23,7 @@ impl Default for BoardConfig { impl BoardConfig { /// Get number of peripherals - pub fn get_num_periphreal(&self) -> usize { + pub fn get_num_peripheral(&self) -> usize { match self { BoardConfig::Split(split_config) => split_config.peripheral.len(), BoardConfig::UniBody(_) => 0, @@ -68,6 +70,131 @@ impl BoardConfig { } } +/// Check a matrix's pin counts against its declared `rows`/`cols`. `row2col` only flips +/// scan direction (In/Out pins), never the pin-list lengths, so there is no swap here. +fn validate_matrix_dims(matrix: &MatrixConfig, rows: usize, cols: usize, ctx: &str) -> Result<(), String> { + match matrix.matrix_type { + MatrixType::Normal => { + let row_pins = matrix.row_pins.as_ref().map_or(0, |v| v.len()); + let col_pins = matrix.col_pins.as_ref().map_or(0, |v| v.len()); + if row_pins != rows { + return Err(format!( + "keyboard.toml: {ctx} has {row_pins} row_pins but rows = {rows}" + )); + } + if col_pins != cols { + return Err(format!( + "keyboard.toml: {ctx} has {col_pins} col_pins but cols = {cols}" + )); + } + } + MatrixType::DirectPin => { + let direct = matrix.direct_pins.as_ref(); + let n_rows = direct.map_or(0, |v| v.len()); + if n_rows != rows { + return Err(format!( + "keyboard.toml: {ctx} direct_pins has {n_rows} rows but rows = {rows}" + )); + } + if let Some(direct) = direct { + for (r, row) in direct.iter().enumerate() { + if row.len() != cols { + return Err(format!( + "keyboard.toml: {ctx} direct_pins row {r} has {} pins but cols = {cols}", + row.len() + )); + } + } + } + } + } + Ok(()) +} + +/// Split invariants that per-board dimension checks don't cover: the transport +/// fields must be consistent with `split.connection`, and every board's region +/// of the unified matrix must fit `[layout]` without overlapping another board. +fn validate_split_config(split: &SplitConfig, layout: Option<&LayoutTomlConfig>) -> Result<(), String> { + let boards = || { + std::iter::once((&split.central, "[split.central]".to_string())).chain( + split + .peripheral + .iter() + .enumerate() + .map(|(i, p)| (p, format!("[[split.peripheral]] #{i}"))), + ) + }; + + match split.connection { + SplitConnection::Serial => { + for (board, ctx) in boards() { + if board.ble_addr.is_some() { + return Err(format!( + "keyboard.toml: {ctx} sets `ble_addr`, but split.connection = \"serial\"" + )); + } + } + let central_ports = split.central.serial.as_ref().map_or(0, |s| s.len()); + if central_ports < split.peripheral.len() { + return Err(format!( + "keyboard.toml: [split.central] defines {central_ports} serial port(s) for {} peripheral(s) — one port per peripheral is required, in peripheral order", + split.peripheral.len() + )); + } + for (i, peri) in split.peripheral.iter().enumerate() { + let n = peri.serial.as_ref().map_or(0, |s| s.len()); + if n != 1 { + return Err(format!( + "keyboard.toml: [[split.peripheral]] #{i} must define exactly 1 serial port, got {n}" + )); + } + } + } + SplitConnection::Ble => { + for (board, ctx) in boards() { + if board.serial.is_some() { + return Err(format!( + "keyboard.toml: {ctx} sets `serial`, but split.connection = \"ble\"" + )); + } + } + } + } + + let regions: Vec<_> = boards() + .map(|(b, ctx)| { + ( + b.row_offset, + b.row_offset + b.rows, + b.col_offset, + b.col_offset + b.cols, + ctx, + ) + }) + .collect(); + if let Some(layout) = layout { + let (rows, cols) = (layout.rows as usize, layout.cols as usize); + for (r0, r1, c0, c1, ctx) in ®ions { + if *r1 > rows || *c1 > cols { + return Err(format!( + "keyboard.toml: {ctx} occupies rows {r0}..{r1}, cols {c0}..{c1}, which exceeds [layout] ({rows} rows x {cols} cols)" + )); + } + } + } + for (i, a) in regions.iter().enumerate() { + for b in ®ions[i + 1..] { + if a.0 < b.1 && b.0 < a.1 && a.2 < b.3 && b.2 < a.3 { + return Err(format!( + "keyboard.toml: {} and {} overlap in the unified matrix — adjust row_offset/col_offset", + a.4, b.4 + )); + } + } + } + Ok(()) +} + impl KeyboardTomlConfig { pub(crate) fn get_board_config(&self) -> Result { let matrix = self.matrix.clone(); @@ -75,6 +202,11 @@ impl KeyboardTomlConfig { let input_device = self.input_device.clone(); match (matrix, split) { (None, Some(s)) => { + validate_split_config(&s, self.layout.as_ref())?; + validate_matrix_dims(&s.central.matrix, s.central.rows, s.central.cols, "[split.central]")?; + for (i, peri) in s.peripheral.iter().enumerate() { + validate_matrix_dims(&peri.matrix, peri.rows, peri.cols, &format!("[[split.peripheral]] #{i}"))?; + } Ok(BoardConfig::Split(s)) }, (Some(m), None) => { @@ -90,6 +222,9 @@ impl KeyboardTomlConfig { } }, } + if let Some(layout) = &self.layout { + validate_matrix_dims(&m, layout.rows as usize, layout.cols as usize, "[matrix]")?; + } // Top-level input_device applies only to unibody configs. Ok(BoardConfig::UniBody(UniBodyConfig{matrix: m, input_device: input_device.unwrap_or_default()})) }, @@ -98,3 +233,142 @@ impl KeyboardTomlConfig { } } } + +#[cfg(test)] +mod tests { + use super::{validate_matrix_dims, validate_split_config}; + use crate::{ + LayoutTomlConfig, MatrixConfig, MatrixType, SerialConfig, SplitBoardConfig, SplitConfig, SplitConnection, + }; + + fn normal(rows: &[&str], cols: &[&str]) -> MatrixConfig { + MatrixConfig { + matrix_type: MatrixType::Normal, + row_pins: Some(rows.iter().map(|s| s.to_string()).collect()), + col_pins: Some(cols.iter().map(|s| s.to_string()).collect()), + ..Default::default() + } + } + + #[test] + fn normal_matrix_dims_must_match_pins() { + let m = normal(&["r0", "r1"], &["c0", "c1", "c2"]); + assert!(validate_matrix_dims(&m, 2, 3, "[matrix]").is_ok()); + assert!(validate_matrix_dims(&m, 3, 3, "[matrix]").is_err()); // too many rows + assert!(validate_matrix_dims(&m, 2, 2, "[matrix]").is_err()); // too few cols + } + + #[test] + fn direct_pin_dims_must_match_grid() { + let m = MatrixConfig { + matrix_type: MatrixType::DirectPin, + direct_pins: Some(vec![vec!["a".into(), "b".into()], vec!["c".into(), "d".into()]]), + ..Default::default() + }; + assert!(validate_matrix_dims(&m, 2, 2, "[matrix]").is_ok()); + assert!(validate_matrix_dims(&m, 3, 2, "[matrix]").is_err()); + assert!(validate_matrix_dims(&m, 2, 3, "[matrix]").is_err()); + } + + #[test] + fn direct_pin_rejects_jagged_rows() { + let m = MatrixConfig { + matrix_type: MatrixType::DirectPin, + direct_pins: Some(vec![vec!["a".into(), "b".into()], vec!["c".into()]]), + ..Default::default() + }; + assert!(validate_matrix_dims(&m, 2, 2, "[matrix]").is_err()); + } + + fn board(rows: usize, cols: usize, row_offset: usize, col_offset: usize) -> SplitBoardConfig { + SplitBoardConfig { + rows, + cols, + row_offset, + col_offset, + ..Default::default() + } + } + + fn ble_split() -> SplitConfig { + SplitConfig { + connection: SplitConnection::Ble, + central: board(2, 2, 0, 0), + peripheral: vec![board(2, 1, 2, 2)], + } + } + + fn layout_4x3() -> LayoutTomlConfig { + LayoutTomlConfig { + rows: 4, + cols: 3, + map: None, + default_variant: None, + shapes: None, + variant: None, + } + } + + #[test] + fn ble_split_without_addr_is_valid() { + // Dongle-style setups omit ble_addr entirely + assert!(validate_split_config(&ble_split(), Some(&layout_4x3())).is_ok()); + } + + #[test] + fn transport_must_match_connection() { + let mut split = ble_split(); + split.peripheral[0].serial = Some(vec![SerialConfig::default()]); + let err = validate_split_config(&split, None).unwrap_err(); + assert!(err.contains("sets `serial`"), "{err}"); + + let mut split = ble_split(); + split.connection = SplitConnection::Serial; + split.central.serial = Some(vec![SerialConfig::default()]); + split.peripheral[0].serial = Some(vec![SerialConfig::default()]); + split.peripheral[0].ble_addr = Some([0; 6]); + let err = validate_split_config(&split, None).unwrap_err(); + assert!(err.contains("sets `ble_addr`"), "{err}"); + } + + #[test] + fn serial_ports_must_cover_peripherals() { + let mut split = ble_split(); + split.connection = SplitConnection::Serial; + split.central.serial = Some(vec![SerialConfig::default()]); + split.peripheral = vec![board(2, 1, 2, 2), board(2, 1, 2, 0)]; + split.peripheral[0].serial = Some(vec![SerialConfig::default()]); + split.peripheral[1].serial = Some(vec![SerialConfig::default()]); + let err = validate_split_config(&split, None).unwrap_err(); + assert!(err.contains("1 serial port(s) for 2 peripheral(s)"), "{err}"); + + // Extra central ports beyond the peripheral count are fine + split.central.serial = Some(vec![SerialConfig::default(); 3]); + assert!(validate_split_config(&split, None).is_ok()); + } + + #[test] + fn peripheral_needs_exactly_one_serial_port() { + let mut split = ble_split(); + split.connection = SplitConnection::Serial; + split.central.serial = Some(vec![SerialConfig::default()]); + let err = validate_split_config(&split, None).unwrap_err(); + assert!(err.contains("exactly 1 serial port, got 0"), "{err}"); + } + + #[test] + fn regions_must_fit_layout() { + let mut split = ble_split(); + split.peripheral[0].row_offset = 3; // rows 3..5 exceeds 4 + let err = validate_split_config(&split, Some(&layout_4x3())).unwrap_err(); + assert!(err.contains("exceeds [layout]"), "{err}"); + } + + #[test] + fn overlapping_regions_are_rejected() { + let mut split = ble_split(); + split.peripheral.push(board(2, 1, 2, 2)); // identical to peripheral #0 + let err = validate_split_config(&split, Some(&layout_4x3())).unwrap_err(); + assert!(err.contains("overlap"), "{err}"); + } +} diff --git a/rmk-config/src/chip.rs b/rmk-config/src/chip.rs index 10cc11264..f3465b188 100644 --- a/rmk-config/src/chip.rs +++ b/rmk-config/src/chip.rs @@ -61,7 +61,10 @@ impl ChipModel { impl KeyboardTomlConfig { pub(crate) fn get_chip_model(&self) -> Result { - let keyboard = self.keyboard.as_ref().unwrap(); + let keyboard = self + .keyboard + .as_ref() + .ok_or_else(|| "[keyboard] section is required in keyboard.toml".to_string())?; if keyboard.board.is_none() == keyboard.chip.is_none() { return Err("Either \"board\" or \"chip\" should be set in keyboard.toml, but not both".to_string()); } @@ -80,7 +83,9 @@ impl KeyboardTomlConfig { chip: "rp2040".to_string(), board: Some(board), }), - _ => Err(format!("Unsupported board: {}", board)), + _ => Err(format!( + "Unsupported board \"{board}\" — supported boards are nice!nano, nice!nano_v2, XIAO BLE, nrfmicro, bluemicro840, puchi_ble and Pi Pico W; for other hardware set `chip` instead" + )), } } else if let Some(chip) = keyboard.chip.clone() { if chip.to_lowercase().starts_with("stm32") { @@ -108,7 +113,9 @@ impl KeyboardTomlConfig { board: None, }) } else { - Err(format!("Unsupported chip: {}", chip)) + Err(format!( + "Unsupported chip \"{chip}\" — supported chip families are stm32*, nrf52*, rp2040 and esp32*" + )) } } else { Err("Neither board nor chip is specified".to_string()) @@ -116,10 +123,14 @@ impl KeyboardTomlConfig { } pub(crate) fn get_chip_config(&self) -> ChipConfig { - let chip_name = &self.get_chip_model().unwrap().chip; + // An unresolvable chip is reported by the resolution entry points; here it just + // means there is no chip-specific config to look up. + let Ok(chip_model) = self.get_chip_model() else { + return ChipConfig::default(); + }; self.chip .as_ref() - .and_then(|chip_configs| chip_configs.get(chip_name)) + .and_then(|chip_configs| chip_configs.get(&chip_model.chip)) .cloned() .unwrap_or_default() } diff --git a/rmk-config/src/communication.rs b/rmk-config/src/communication.rs index cce1e36b3..1c71fa33b 100644 --- a/rmk-config/src/communication.rs +++ b/rmk-config/src/communication.rs @@ -76,8 +76,22 @@ impl CommunicationConfig { impl KeyboardTomlConfig { pub(crate) fn get_communication_config(&self) -> Result { let usb_enabled = self.keyboard.clone().unwrap_or_default().usb_enable.unwrap_or(false); - let chip = self.get_chip_model().unwrap(); - let usb_info = if usb_enabled { get_usb_info(&chip.chip) } else { None }; + let chip = self.get_chip_model()?; + // Distinguish "USB not enabled" from "chip unknown to the USB map": + // silently dropping USB here would misreport the user's config as the cause. + let usb_info = if usb_enabled { + match get_usb_info(&chip.chip) { + Some(info) => Some(info), + None => { + return Err(format!( + "`usb_enable = true`, but chip \"{}\" has no USB mapping in RMK — set `usb_enable = false` in [keyboard], or report the missing chip at https://github.com/HaoboGu/rmk/issues", + chip.chip + )); + } + } + } else { + None + }; let ble_config = self.ble.clone(); match (usb_info, ble_config) { @@ -89,14 +103,11 @@ impl KeyboardTomlConfig { Ok(CommunicationConfig::Both(usb_info, ble_config)) } } - (None, Some(c)) => { - if !c.enabled { - Err("You must enable at least one of usb or ble".to_string()) - } else { - Ok(CommunicationConfig::Ble(c)) - } - } - _ => Err("You must enable at least one of usb or ble".to_string()), + (None, Some(c)) if c.enabled => Ok(CommunicationConfig::Ble(c)), + _ => Err( + "keyboard.toml: no transport is enabled — set `usb_enable = true` in [keyboard], or `enabled = true` in [ble]" + .to_string(), + ), } } } diff --git a/rmk-config/src/default_config/nrf52810.toml b/rmk-config/src/default_config/nrf52810.toml index 6c6743f42..d60af58ec 100644 --- a/rmk-config/src/default_config/nrf52810.toml +++ b/rmk-config/src/default_config/nrf52810.toml @@ -1,5 +1,5 @@ -[usb] -enabled = false +[keyboard] +usb_enable = false [ble] enabled = true diff --git a/rmk-config/src/default_config/nrf52832.toml b/rmk-config/src/default_config/nrf52832.toml index ba7bb5b8e..b63a3d5c4 100644 --- a/rmk-config/src/default_config/nrf52832.toml +++ b/rmk-config/src/default_config/nrf52832.toml @@ -1,5 +1,5 @@ -[usb] -enabled = false +[keyboard] +usb_enable = false [ble] enabled = true diff --git a/rmk-config/src/default_config/subscriber_default.toml b/rmk-config/src/default_config/subscriber_default.toml index a1acda963..4c6824616 100644 --- a/rmk-config/src/default_config/subscriber_default.toml +++ b/rmk-config/src/default_config/subscriber_default.toml @@ -21,6 +21,7 @@ events = [ { name = "sleep_state" }, { name = "layer_change" }, { name = "battery_status" }, + { name = "led_indicator" }, ] [[subscriber]] @@ -36,8 +37,8 @@ events = [ # split/driver.rs: each PeripheralManager subscribes when display is enabled # (gated on #[cfg(feature = "display")] in driver.rs) # Covers up to 2 peripherals; for 3+ peripherals override subs in keyboard.toml - { name = "wpm_update" }, - { name = "sleep_state" }, + { name = "wpm_update", count = 2 }, + { name = "sleep_state", count = 2 }, ] # --- BLE-gated internal subscribers --- @@ -55,6 +56,32 @@ events = [ { name = "pointing" }, ] +# Rynk sessions subscribe to these topics; USB+BLE boards need two slots. + +[[subscriber]] +features = ["rynk"] +events = [ + { name = "layer_change" }, + { name = "wpm_update" }, + { name = "connection_status_change" }, + { name = "sleep_state" }, + { name = "led_indicator" }, +] + +[[subscriber]] +features = ["rynk", "_ble"] +events = [ + # battery_status is only subscribed under `_ble`; needs one slot per + # concurrent session (USB + BLE = 2). + { name = "battery_status", count = 2 }, + # Second session slot for the always-on topics on dual-transport boards. + { name = "layer_change" }, + { name = "wpm_update" }, + { name = "connection_status_change" }, + { name = "sleep_state" }, + { name = "led_indicator" }, +] + # --- Split-gated internal subscribers --- [[subscriber]] @@ -65,7 +92,8 @@ events = [ # split/peripheral.rs: PointingEvent::subscriber() { name = "pointing" }, # split/driver.rs: LedIndicatorEvent::subscriber() - { name = "led_indicator" }, + # Covers up to 2 peripherals; for 3+ peripherals override subs in keyboard.toml + { name = "led_indicator", count = 2 }, # split/driver.rs: LayerChangeEvent::subscriber() { name = "layer_change" }, # split/driver.rs: ConnectionStatusChangeEvent::subscriber() diff --git a/rmk-config/src/keymap.pest b/rmk-config/src/keymap.pest index 4fbe9b73b..89ada6468 100644 --- a/rmk-config/src/keymap.pest +++ b/rmk-config/src/keymap.pest @@ -3,9 +3,6 @@ // Define default whitespace handling (space, tab, newline, carriage return) WHITESPACE = _{ " " | "\t" | "\n" | "\r" } -// Optional comments -COMMENT = _{ "//" ~ (!"\n" ~ ANY)* } - // --- Helper Rules --- strict_identifier = @{ (ASCII_ALPHA | "_") ~ (ASCII_ALPHANUMERIC | "_")* } @@ -127,17 +124,30 @@ key_action = _{ // Consume surrounding whitespace/comments implicitly // The entire key map string: Start, zero or more key actions, End. key_map = { SOI ~ key_action* ~ EOI } -// ============================================================================ -// rules for matrix_map parsing +// `[layout].map`: newline is significant, so spacing is parsed explicitly. left_hand = { ^"L" | ^"LH" | ^"Left" } right_hand = { ^"R" | ^"RH" | ^"Right" } bilateral_hand = { "*" | ^"Bilateral" } hand = _{ left_hand | right_hand | bilateral_hand } -// Define the key_info structure, capturing row and col numbers, and optionally some extra key information -keypos_info = { "(" ~ number ~ "," ~ number ~ ("," ~ hand)? ~ ")" } - -// The main rule: Start, zero or more key_info or whitespace occurrences, End. -// This ensures the entire string consists *only* of valid key_info tuples and whitespace. -matrix_map = { SOI ~ (keypos_info | WHITESPACE)* ~ EOI } +// Layout-map tokens (positions, shapes, gaps). +unit = @{ ASCII_DIGIT+ ~ ("." ~ ASCII_DIGIT+)? } // non-negative float, for [n] +signed_unit = @{ "-"? ~ ASCII_DIGIT+ ~ ("." ~ ASCII_DIGIT+)? } // may be negative, for [y=n] +shape_name = @{ (ASCII_ALPHANUMERIC | "_" | ".")+ } // stock (2u/1.5u) or custom (iso_enter) +shape_ref = ${ "@" ~ shape_name } // @name into [layout.shapes] +hws = _{ " " | "\t" } // spaces/tabs between tokens (silent) +newline = @{ "\r"? ~ "\n" } // significant row break +spacer = ${ "[" ~ hws? ~ unit ~ hws? ~ "]" } // gap +vertical = ${ "[" ~ hws? ~ "y" ~ hws? ~ "=" ~ hws? ~ signed_unit ~ hws? ~ "]" } // extra y for next row +// Rotation applies until the next [r=...]; only [r=0] may omit a pivot. +rotation = ${ "[" ~ hws? ~ "r" ~ hws? ~ "=" ~ hws? ~ signed_unit ~ (hws? ~ "@" ~ hws? ~ "(" ~ hws? ~ signed_unit ~ hws? ~ "," ~ hws? ~ signed_unit ~ hws? ~ ")")? ~ hws? ~ "]" } + +// A key: (row, col[, hand][, @shape]). `hws?` between fields so `(0, 1)` parses too. +keypos_info = ${ "(" ~ hws? ~ number ~ hws? ~ "," ~ hws? ~ number ~ (hws? ~ "," ~ hws? ~ hand)? ~ (hws? ~ "," ~ hws? ~ shape_ref)? ~ hws? ~ ")" } +// An encoder: (e, id). A fixed 1u knob — no shape, so no `@shape`. +encoder_info = ${ "(" ~ hws? ~ "e" ~ hws? ~ "," ~ hws? ~ number ~ hws? ~ ")" } + +// The whole string: significant newlines, explicit hws. Order matters: +// vertical/rotation before spacer (all start `[`), encoder before keypos (both start `(`). +layout_map = ${ SOI ~ (hws | newline | vertical | rotation | spacer | encoder_info | keypos_info)* ~ EOI } diff --git a/rmk-config/src/keymap.rs b/rmk-config/src/keymap.rs new file mode 100644 index 000000000..1c640677c --- /dev/null +++ b/rmk-config/src/keymap.rs @@ -0,0 +1,861 @@ +use std::collections::HashMap; + +use pest::Parser; + +use crate::layout::{ConfigParser, MapToken, Rule, parse_map}; +use crate::{KeyInfo, KeyboardTomlConfig, KeymapConfig, LayerTomlConfig}; + +// Prevent alias cycles. +const MAX_ALIAS_RESOLUTION_DEPTH: usize = 10; + +type GridCoordinate = (u8, u8); +type KeyGrid = Vec>; + +struct LayerBuildContext<'a> { + sequence_to_grid: &'a [GridCoordinate], + aliases: &'a HashMap, + layer_names: &'a HashMap, + num_layers: u8, + rows: u8, + cols: u8, +} + +impl KeyboardTomlConfig { + /// The resolved layer count: explicit `[keymap].layers`, else the number of + /// `[[keymap.layer]]` blocks (0 when there's no `[keymap]`). The check that an + /// explicit count isn't *below* the block count lives in [`get_keymap_config`]. + /// + /// [`get_keymap_config`]: Self::get_keymap_config + pub(crate) fn num_layers(&self) -> u8 { + self.keymap + .as_ref() + .map(|k| k.layers.unwrap_or(k.layer.len() as u8)) + .unwrap_or_default() + } + + /// Resolve `[keymap]` into a dense per-layer action grid plus per-key info. + /// + /// `[layout].map` fixes the write-order of keys; each `[[keymap.layer]]` lists its + /// actions in that order, which we scatter back onto the `rows × cols` grid. Layers + /// beyond those defined are padded transparent up to `[keymap].layers`. + pub(crate) fn get_keymap_config(&self) -> Result<(KeymapConfig, Vec>), String> { + let aliases = self.aliases.clone().unwrap_or_default(); + let keymap_cfg = self.keymap.as_ref().ok_or_else(|| { + "keyboard.toml: [keymap] section is required — add `[keymap]` with at least one [[keymap.layer]]" + .to_string() + })?; + let layout = self.layout.as_ref().ok_or_else(|| { + "keyboard.toml: [layout] section is required — add `[layout]` with `rows`, `cols` and a `map`".to_string() + })?; + let layers = &keymap_cfg.layer; + + // Aliases are referenced as `@name`, and the name ends at whitespace or a + // delimiter — a key containing one of those could never be matched. + for key in aliases.keys() { + if key.chars().any(|c| c.is_whitespace() || "(),@".contains(c)) { + return Err(format!( + "keyboard.toml: Alias key '{}' must not contain whitespace or any of `(`, `)`, `,`, `@`", + key + )); + } + } + + // Explicit layer count may reserve empty layers, not hide defined ones. + if let Some(n) = keymap_cfg.layers + && (layers.len() as u8) > n + { + return Err(format!( + "keyboard.toml: {} [[keymap.layer]] entries exceed [keymap].layers = {}", + layers.len(), + n + )); + } + let num_layers = self.num_layers(); + if num_layers == 0 { + return Err( + "keyboard.toml: [keymap] must define at least one layer using `[[keymap.layer]]` or `layers`" + .to_string(), + ); + } + + // Defined layers need `[layout].map`; explicitly reserved layers are transparent. + let mut keymap = Vec::with_capacity(num_layers as usize); + let key_info = match layout.map.as_deref() { + Some(map) => { + let (sequence_to_grid, key_info) = Self::build_key_grid(map, layout.rows, layout.cols)?; + let layer_names = Self::collect_layer_names(layers)?; + let context = LayerBuildContext { + sequence_to_grid: &sequence_to_grid, + aliases: &aliases, + layer_names: &layer_names, + num_layers, + rows: layout.rows, + cols: layout.cols, + }; + for (index, layer) in layers.iter().enumerate() { + keymap.push(Self::build_layer_grid(index, layer, &context)?); + } + key_info + } + None if layers.is_empty() => { + vec![vec![KeyInfo::default(); layout.cols as usize]; layout.rows as usize] + } + None => { + return Err("keyboard.toml: `[layout].map` is required to place `[[keymap.layer]]` keys".to_string()); + } + }; + + // Pad undefined layers with transparent keys up to the configured count. + for _ in keymap.len()..num_layers as usize { + keymap.push(vec![vec!["_".to_string(); layout.cols as usize]; layout.rows as usize]); + } + + let encoder_map = Self::resolve_encoders(layers, &aliases)?; + + Ok(( + KeymapConfig { + rows: layout.rows, + cols: layout.cols, + layers: num_layers, + keymap, + encoder_map, + }, + key_info, + )) + } + + /// Build the write-order → grid-coordinate sequence and per-key info (hand) from + /// `[layout].map`. `parse_map` (shared with the layout blob) already bounds-checks + /// and de-dupes the coordinates, so here we just keep the `Key` tokens in order. + fn build_key_grid(map: &str, rows: u8, cols: u8) -> Result<(Vec, KeyGrid), String> { + let mut key_info = vec![vec![KeyInfo::default(); cols as usize]; rows as usize]; + let mut sequence_to_grid = Vec::new(); + for token in parse_map(map, rows, cols)? { + if let MapToken::Key { row, col, hand, .. } = token { + key_info[row as usize][col as usize] = KeyInfo { hand }; + sequence_to_grid.push((row, col)); + } + } + Ok((sequence_to_grid, key_info)) + } + + /// Map each named layer to its index, rejecting duplicate names. + fn collect_layer_names(layers: &[LayerTomlConfig]) -> Result, String> { + let mut layer_names = HashMap::new(); + for (index, layer) in layers.iter().enumerate() { + if let Some(name) = &layer.name + && layer_names.insert(name.clone(), index as u32).is_some() + { + return Err(format!( + "keyboard.toml: Duplicate layer name '{}' found in `[[keymap.layer]]`", + name + )); + } + } + Ok(layer_names) + } + + /// Scatter one layer's alias-resolved key sequence onto a `rows × cols` grid in the + /// order fixed by `[layout].map`. An exact count match is required: an under-filled + /// layer silently shifting every following action onto the wrong key is the worst + /// keymap failure mode, so missing positions must be explicit (`_`). + fn build_layer_grid( + index: usize, + layer: &LayerTomlConfig, + context: &LayerBuildContext<'_>, + ) -> Result>, String> { + let layer_display = match &layer.name { + Some(name) => format!("layer {index} ('{name}')"), + None => format!("layer {index}"), + }; + let key_actions = Self::keymap_parser(&layer.keys, context.aliases, context.layer_names, context.num_layers) + .map_err(|e| format!("keyboard.toml: Error in `[[keymap.layer]]` {layer_display}: {e}"))?; + if key_actions.len() != context.sequence_to_grid.len() { + return Err(format!( + "keyboard.toml: {layer_display} has {} keys but `layout.map` defines {} positions — every mapped position needs an action (use `_` for transparent)", + key_actions.len(), + context.sequence_to_grid.len() + )); + } + + let mut grid = vec![vec!["No".to_string(); context.cols as usize]; context.rows as usize]; + for ((row, col), action) in context.sequence_to_grid.iter().zip(key_actions) { + grid[*row as usize][*col as usize] = action; + } + Ok(grid) + } + + /// Resolve `[[keymap.layer]].encoders` (alias-expanded), one entry per layer. + fn resolve_encoders( + layers: &[LayerTomlConfig], + aliases: &HashMap, + ) -> Result>, String> { + let mut encoder_map = Vec::with_capacity(layers.len()); + for layer in layers { + let mut encoders = layer.encoders.clone().unwrap_or_default(); + for [cw, ccw] in &mut encoders { + *cw = Self::alias_resolver(cw, aliases)?; + *ccw = Self::alias_resolver(ccw, aliases)?; + } + encoder_map.push(encoders); + } + Ok(encoder_map) + } + + fn alias_resolver(keys: &str, aliases: &HashMap) -> Result { + let mut current_keys = keys.to_string(); + + let mut iterations = 0; + + loop { + let mut next_keys = String::with_capacity(current_keys.capacity()); + let mut made_replacement = false; + let mut last_index = 0; + + while let Some(at_index) = current_keys[last_index..].find('@') { + let start_index = last_index + at_index; + + next_keys.push_str(¤t_keys[last_index..start_index]); + + // The name ends at the grammar's delimiters, so `LM(1, @mods)` + // resolves `mods` — not a bogus `mods)`. + let mut end_index = start_index + 1; + while let Some(&c) = current_keys.as_bytes().get(end_index) { + if c.is_ascii_whitespace() || matches!(c, b'(' | b')' | b',' | b'@') { + break; + } + end_index += 1; + } + + let alias_key = ¤t_keys[start_index + 1..end_index]; + if alias_key.is_empty() { + // A bare `@` (trailing, or right before a delimiter) is literal. + next_keys.push('@'); + last_index = start_index + 1; + continue; + } + match aliases.get(alias_key) { + Some(value) => { + next_keys.push_str(value); + made_replacement = true; + } + None => return Err(format!("Undefined alias: {}", alias_key)), + } + last_index = end_index; + } + + next_keys.push_str(¤t_keys[last_index..]); + + iterations += 1; + if iterations >= MAX_ALIAS_RESOLUTION_DEPTH { + return Err(format!( + "Alias resolution exceeded maximum depth ({}), potential infinite loop detected in '{}'", + MAX_ALIAS_RESOLUTION_DEPTH, keys + )); + } + + if !made_replacement { + break; + } + + current_keys = next_keys; + } + + Ok(current_keys) + } + + /// Reconstruct an action string from a parsed pair, resolving every named + /// layer reference (`MO(base)`) to its numeric index (`MO(0)`). + /// + /// Layer names may appear at any nesting depth (e.g. inside the tap slot of + /// `TH(MO(nav), A)`), so this walks the whole subtree, collects the source + /// span of each `layer_name`, and rewrites those spans in place. Actions + /// without layer names are returned verbatim. + fn resolve_layer_names( + pair: &pest::iterators::Pair, + layer_names: &HashMap, + num_layers: u8, + ) -> Result { + let base = pair.as_span().start(); + let mut replacements: Vec<(usize, usize, String)> = Vec::new(); + Self::collect_layer_name_spans(pair.clone(), layer_names, num_layers, &mut replacements)?; + + // Apply right-to-left so earlier byte offsets stay valid. + replacements.sort_by_key(|(start, _, _)| *start); + let mut result = pair.as_str().to_string(); + for (start, end, replacement) in replacements.into_iter().rev() { + result.replace_range(start - base..end - base, &replacement); + } + Ok(result) + } + + /// Recursively collect `(start, end, resolved_number)` for every `layer_name` + /// in the subtree, validating each against the known layer names. Numeric + /// layer references are range-checked on the same walk — an out-of-range + /// index would otherwise compile fine and produce a dead key at runtime. + fn collect_layer_name_spans( + pair: pest::iterators::Pair, + layer_names: &HashMap, + num_layers: u8, + out: &mut Vec<(usize, usize, String)>, + ) -> Result<(), String> { + match pair.as_rule() { + Rule::layer_name => { + let layer_name = pair.as_str(); + match layer_names.get(layer_name) { + Some(layer_number) => { + let span = pair.as_span(); + out.push((span.start(), span.end(), layer_number.to_string())); + } + None => return Err(format!("Invalid layer name: {}", layer_name)), + } + return Ok(()); + } + Rule::layer_number => { + let n: u32 = pair + .as_str() + .parse() + .map_err(|_| format!("Invalid layer number: {}", pair.as_str()))?; + if n >= num_layers as u32 { + return Err(format!( + "layer {n} in `{}` is out of range — the keymap defines {num_layers} layer(s), valid indices are 0..={}", + pair.as_str(), + num_layers.saturating_sub(1) + )); + } + return Ok(()); + } + _ => {} + } + for inner in pair.into_inner() { + Self::collect_layer_name_spans(inner, layer_names, num_layers, out)?; + } + Ok(()) + } + + fn keymap_parser( + layer_keys: &str, + aliases: &HashMap, + layer_names: &HashMap, + num_layers: u8, + ) -> Result, String> { + // Resolve aliases first, since the grammar below doesn't know about them. + let layer_keys = Self::alias_resolver(layer_keys, aliases)?; + + let pairs = + ConfigParser::parse(Rule::key_map, &layer_keys).map_err(|e| format!("Invalid keymap format: {}", e))?; + + let mut key_action_sequence = Vec::new(); + for pair in pairs { + if pair.as_rule() == Rule::key_map { + for inner_pair in pair.into_inner() { + match inner_pair.as_rule() { + Rule::EOI | Rule::WHITESPACE => {} + // Resolve layer names even when nested inside an action. + _ => { + key_action_sequence.push(Self::resolve_layer_names(&inner_pair, layer_names, num_layers)?); + } + } + } + } + } + + Ok(key_action_sequence) + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_no_action_parsing() { + let test_cases = vec![ + ("No ", vec!["No"]), + ("No\n", vec!["No"]), + ("No\t", vec!["No"]), + ("No A", vec!["No", "A"]), + ("A No B", vec!["A", "No", "B"]), + ("No No No", vec!["No", "No", "No"]), + ]; + + for (input, expected) in test_cases { + let result = ConfigParser::parse(Rule::key_map, input); + assert!(result.is_ok(), "Failed to parse: {}", input); + + let mut actions = Vec::new(); + for pair in result.unwrap() { + if pair.as_rule() == Rule::key_map { + for inner_pair in pair.into_inner() { + match inner_pair.as_rule() { + Rule::no_action | Rule::simple_keycode => { + actions.push(inner_pair.as_str().to_string()); + } + Rule::EOI | Rule::WHITESPACE => {} + _ => {} + } + } + } + } + + assert_eq!(actions, expected, "Input: {}", input); + } + } + + #[test] + fn test_no_vs_no_prefixed_keycodes() { + let test_cases = vec![ + ("No", Rule::no_action), + ("NoUsSlash", Rule::simple_keycode), + ("NonUsSlash", Rule::simple_keycode), + ("NoReturn", Rule::simple_keycode), + ("NoBrake", Rule::simple_keycode), + ]; + + for (input, expected_rule) in test_cases { + let result = ConfigParser::parse(Rule::key_map, input); + assert!(result.is_ok(), "Failed to parse: {}", input); + + let mut found_rule = None; + for pair in result.unwrap() { + if pair.as_rule() == Rule::key_map { + for inner_pair in pair.into_inner() { + match inner_pair.as_rule() { + Rule::no_action | Rule::simple_keycode => { + found_rule = Some(inner_pair.as_rule()); + } + _ => {} + } + } + } + } + + assert_eq!( + found_rule, + Some(expected_rule), + "Input: {} should be parsed as {:?}", + input, + expected_rule + ); + } + } + + #[test] + fn test_keymap_parser_with_no_actions() { + let aliases = HashMap::new(); + let layer_names = HashMap::new(); + + let keymap = "A B No C No NoUsSlash NonUsSlash D No"; + let result = KeyboardTomlConfig::keymap_parser(keymap, &aliases, &layer_names, 8); + + assert!(result.is_ok()); + let actions = result.unwrap(); + assert_eq!( + actions, + vec!["A", "B", "No", "C", "No", "NoUsSlash", "NonUsSlash", "D", "No"] + ); + } + + #[test] + fn test_keymap_parser_with_comma_alias() { + let aliases = HashMap::new(); + let layer_names = HashMap::new(); + + let keymap = "A , SHIFTED(,) B"; + let result = KeyboardTomlConfig::keymap_parser(keymap, &aliases, &layer_names, 8); + + assert!(result.is_ok()); + let actions = result.unwrap(); + assert_eq!(actions, vec!["A", ",", "SHIFTED(,)", "B"]); + } + + #[test] + fn test_comma_separator_compatibility_in_multi_arg_actions() { + let aliases = HashMap::new(); + let layer_names = HashMap::new(); + + // Comma keeps working as argument separator in multi-argument actions. + let keymap = "TH(A, B) TH(Comma, B) TH(A, Comma)"; + let result = KeyboardTomlConfig::keymap_parser(keymap, &aliases, &layer_names, 8); + + assert!(result.is_ok()); + let actions = result.unwrap(); + assert_eq!(actions, vec!["TH(A, B)", "TH(Comma, B)", "TH(A, Comma)"]); + } + + #[test] + fn test_multi_arg_actions_reject_symbol_comma_as_key_argument() { + let invalid_cases = ["TH(A, ,)", "TH(, ,)", "WM(, LShift)", "LT(1, ,)", "MT(, LShift)"]; + + for input in invalid_cases { + let result = ConfigParser::parse(Rule::key_map, input); + assert!(result.is_err(), "Input should be rejected: {}", input); + } + } + + #[test] + fn malformed_layer_returns_err_not_panic() { + // A keymap the grammar can't parse returns Err rather than panicking the + // build (keymap_parser used to `panic!` on the pest error). + let aliases = HashMap::new(); + let layer_names = HashMap::new(); + let result = KeyboardTomlConfig::keymap_parser("TH(A, ,)", &aliases, &layer_names, 8); + assert!(result.is_err(), "unparseable keymap must be Err, not a panic"); + } + + #[test] + fn test_single_key_arg_actions_accept_symbol_comma() { + let valid_cases = ["SHIFTED(,)", "SHIFTED(Comma)", ","]; + + for input in valid_cases { + let result = ConfigParser::parse(Rule::key_map, input); + assert!(result.is_ok(), "Input should be accepted: {}", input); + } + } + + #[test] + fn test_morse_action_parsing() { + let aliases = HashMap::new(); + let layer_names = HashMap::new(); + + let keymap = "A TD(0) B TD(1) C TD(255)"; + let result = KeyboardTomlConfig::keymap_parser(keymap, &aliases, &layer_names, 8); + + assert!(result.is_ok()); + let actions = result.unwrap(); + assert_eq!(actions, vec!["A", "TD(0)", "B", "TD(1)", "C", "TD(255)"]); + } + + #[test] + fn test_macro_trigger_action_parsing() { + let aliases = std::collections::HashMap::new(); + let layer_names = std::collections::HashMap::new(); + + let keymap = "A Macro(0) B MACRO(1) C macro(255)"; + let result = KeyboardTomlConfig::keymap_parser(keymap, &aliases, &layer_names, 8); + + assert!(result.is_ok()); + let actions = result.unwrap(); + assert_eq!(actions, vec!["A", "Macro(0)", "B", "MACRO(1)", "C", "macro(255)"]); + } + + #[test] + fn test_held_modifier_action_parsing() { + let aliases = HashMap::new(); + let layer_names = HashMap::new(); + + let keymap = "MOD(LCtrl | LAlt | LGui) mod(RShift)"; + let result = KeyboardTomlConfig::keymap_parser(keymap, &aliases, &layer_names, 8); + + assert_eq!(result.unwrap(), vec!["MOD(LCtrl | LAlt | LGui)", "mod(RShift)"]); + } + + #[test] + fn test_morse_action_grammar() { + let test_cases = vec![ + ("TD(0)", Rule::morse_action), + ("TD(1)", Rule::morse_action), + ("TD(255)", Rule::morse_action), + ("td(0)", Rule::morse_action), // Case insensitive + ("td(1)", Rule::morse_action), + ("MORSE(0)", Rule::morse_action), + ("MORSE(1)", Rule::morse_action), + ("MORSE(255)", Rule::morse_action), + ("Morse(0)", Rule::morse_action), // Case insensitive + ("morse(1)", Rule::morse_action), + ]; + + for (input, expected_rule) in test_cases { + let result = ConfigParser::parse(Rule::key_map, input); + assert!(result.is_ok(), "Failed to parse: {}", input); + + let mut found_rule = None; + for pair in result.unwrap() { + if pair.as_rule() == Rule::key_map { + for inner_pair in pair.into_inner() { + if inner_pair.as_rule() == Rule::morse_action { + found_rule = Some(inner_pair.as_rule()); + } + } + } + } + + assert_eq!( + found_rule, + Some(expected_rule), + "Input: {} should be parsed as {:?}", + input, + expected_rule + ); + } + } + + #[test] + fn test_macro_grammar() { + let test_cases = vec![ + ("Macro(0)", Rule::trigger_macro_action), + ("Macro(1)", Rule::trigger_macro_action), + ("Macro(255)", Rule::trigger_macro_action), + ("MACRO(0)", Rule::trigger_macro_action), // Case insensitive + ("MACRO(1)", Rule::trigger_macro_action), + ("macro(0)", Rule::trigger_macro_action), // Case insensitive + ("macro(1)", Rule::trigger_macro_action), + ("macro(255)", Rule::trigger_macro_action), + ]; + + for (input, expected_rule) in test_cases { + let result = ConfigParser::parse(Rule::key_map, input); + assert!(result.is_ok(), "Failed to parse: {}", input); + + let mut found_rule = None; + for pair in result.unwrap() { + if pair.as_rule() == Rule::key_map { + for inner_pair in pair.into_inner() { + if inner_pair.as_rule() == Rule::trigger_macro_action { + found_rule = Some(inner_pair.as_rule()); + } + } + } + } + + assert_eq!( + found_rule, + Some(expected_rule), + "Input: {} should be parsed as {:?}", + input, + expected_rule + ); + } + } + + #[test] + fn test_nested_actions_in_tap_hold_slots() { + let aliases = HashMap::new(); + let layer_names = HashMap::new(); + + // Single-action forms can appear in the tap/hold slots of + // MT/TH/LT and is forwarded verbatim for the proc-macro to expand. + let keymap = "MT(WM(P, RAlt), LShift, HRM) TH(WM(A, LShift), MO(2)) LT(1, MOD(LCtrl | LGui))"; + let result = KeyboardTomlConfig::keymap_parser(keymap, &aliases, &layer_names, 8); + + assert!(result.is_ok(), "{:?}", result); + assert_eq!( + result.unwrap(), + vec![ + "MT(WM(P, RAlt), LShift, HRM)", + "TH(WM(A, LShift), MO(2))", + "LT(1, MOD(LCtrl | LGui))", + ] + ); + } + + #[test] + fn test_layer_name_resolution_nested() { + let aliases = HashMap::new(); + let mut layer_names = HashMap::new(); + layer_names.insert("nav".to_string(), 3u32); + + // Layer names are resolved to indices even when nested inside a slot. + let keymap = "MO(nav) TH(A, MO(nav))"; + let result = KeyboardTomlConfig::keymap_parser(keymap, &aliases, &layer_names, 8); + + assert!(result.is_ok(), "{:?}", result); + assert_eq!(result.unwrap(), vec!["MO(3)", "TH(A, MO(3))"]); + } + + #[test] + fn test_composite_actions_rejected_in_slots() { + // Tap-hold / morse forms are not single `Action`s, so they cannot nest + // inside a slot. The grammar must reject these. + let invalid_cases = ["MT(MT(A, LCtrl), LShift)", "TH(TD(0), B)", "MT(LT(1, A), LShift)"]; + + for input in invalid_cases { + let result = ConfigParser::parse(Rule::key_map, input); + assert!(result.is_err(), "Input should be rejected: {}", input); + } + } + + #[test] + fn double_slash_is_not_a_comment() { + let aliases = HashMap::new(); + let layer_names = HashMap::new(); + // `keys` is data-only now: `//` is no longer a comment, just (garbage) tokens. + let result = KeyboardTomlConfig::keymap_parser("A // B", &aliases, &layer_names, 8); + assert_eq!(result.unwrap(), vec!["A", "//", "B"]); + } + + fn config(toml: &str) -> KeyboardTomlConfig { + toml::from_str(toml).expect("parse test config") + } + + #[test] + fn layers_defaults_to_block_count() { + let cfg = config( + "[layout]\nrows = 1\ncols = 2\nmap = \"(0,0) (0,1)\"\n\ + [keymap]\n[[keymap.layer]]\nkeys = \"A B\"\n[[keymap.layer]]\nkeys = \"C D\"\n", + ); + let (km, _) = cfg.get_keymap_config().unwrap(); + assert_eq!(km.layers, 2); + assert_eq!(km.keymap.len(), 2); + } + + #[test] + fn explicit_layers_reserves_extra_transparent_layers() { + let cfg = config( + "[layout]\nrows = 1\ncols = 1\nmap = \"(0,0)\"\n\ + [keymap]\nlayers = 4\n[[keymap.layer]]\nkeys = \"A\"\n", + ); + let (km, _) = cfg.get_keymap_config().unwrap(); + assert_eq!(km.layers, 4); + assert_eq!(km.keymap.len(), 4); + assert_eq!(km.keymap[3][0][0], "_"); // reserved layers are transparent + } + + #[test] + fn explicit_layers_below_block_count_is_rejected() { + let cfg = config( + "[layout]\nrows = 1\ncols = 1\nmap = \"(0,0)\"\n\ + [keymap]\nlayers = 1\n[[keymap.layer]]\nkeys = \"A\"\n[[keymap.layer]]\nkeys = \"B\"\n", + ); + assert!(cfg.get_keymap_config().is_err()); + } + + #[test] + fn empty_keymap_is_rejected() { + let cfg = config("[layout]\nrows = 1\ncols = 1\nmap = \"(0,0)\"\n[keymap]\n"); + let Err(err) = cfg.get_keymap_config() else { + panic!("empty keymap must be rejected"); + }; + assert!(err.contains("must define at least one layer")); + } + + #[test] + fn explicit_zero_layers_is_rejected() { + let cfg = config("[layout]\nrows = 1\ncols = 1\nmap = \"(0,0)\"\n[keymap]\nlayers = 0\n"); + let Err(err) = cfg.get_keymap_config() else { + panic!("zero keymap layers must be rejected"); + }; + assert!(err.contains("must define at least one layer")); + } + + #[test] + fn layer_with_more_encoders_than_hardware_is_rejected() { + // Reject layer encoders that exceed the board hardware. + let cfg = config( + "[matrix]\nrow_pins = [\"r0\"]\ncol_pins = [\"c0\"]\n\ + [layout]\nrows = 1\ncols = 1\nmap = \"(0,0)\"\n\ + [keymap]\n[[keymap.layer]]\nkeys = \"A\"\nencoders = [[\"Up\", \"Down\"]]\n", + ); + assert!(cfg.keymap().is_err()); + } + + /// A board with two physical encoders (declared via top-level `[[input_device.encoder]]`). + fn two_encoder_config(encoders_line: &str) -> KeyboardTomlConfig { + config(&format!( + "[matrix]\nrow_pins = [\"r0\"]\ncol_pins = [\"c0\"]\n\ + [layout]\nrows = 1\ncols = 1\nmap = \"(0,0)\"\n\ + [keymap]\n[[keymap.layer]]\nkeys = \"A\"\n{encoders_line}\n\ + [[input_device.encoder]]\npin_a = \"a0\"\npin_b = \"b0\"\n\ + [[input_device.encoder]]\npin_a = \"a1\"\npin_b = \"b1\"\n" + )) + } + + #[test] + fn layer_with_partial_encoders_is_rejected() { + // Partial encoder maps would silently drop hardware. + assert!(two_encoder_config("encoders = [[\"Up\", \"Down\"]]").keymap().is_err()); + } + + #[test] + fn layer_with_all_encoders_is_accepted() { + assert!( + two_encoder_config("encoders = [[\"Up\", \"Down\"], [\"Left\", \"Right\"]]") + .keymap() + .is_ok() + ); + } + + #[test] + fn layer_with_no_encoders_is_accepted() { + // Omitted encoder maps default to No. + assert!(two_encoder_config("").keymap().is_ok()); + } + + #[test] + fn numeric_layer_reference_must_be_in_range() { + let aliases = HashMap::new(); + let layer_names = HashMap::new(); + // Out-of-range layer refs would be dead keys at runtime. + let err = KeyboardTomlConfig::keymap_parser("MO(2)", &aliases, &layer_names, 2).unwrap_err(); + assert!(err.contains("out of range"), "{err}"); + // In-range references pass, including nested ones. + assert!(KeyboardTomlConfig::keymap_parser("MO(1) LT(0, A) TH(MO(1), B)", &aliases, &layer_names, 2).is_ok()); + } + + #[test] + fn under_filled_layer_is_rejected() { + let aliases = HashMap::new(); + let layer_names = HashMap::new(); + let layer = LayerTomlConfig { + name: None, + keys: "A B".to_string(), + encoders: None, + }; + let seq = vec![(0u8, 0u8), (0, 1), (0, 2)]; + let context = LayerBuildContext { + sequence_to_grid: &seq, + aliases: &aliases, + layer_names: &layer_names, + num_layers: 1, + rows: 1, + cols: 3, + }; + let err = KeyboardTomlConfig::build_layer_grid(0, &layer, &context).unwrap_err(); + assert!(err.contains("has 2 keys but `layout.map` defines 3 positions"), "{err}"); + } + + #[test] + fn alias_ends_at_delimiters() { + let aliases = HashMap::from([ + ("mods".to_string(), "LShift | LGui".to_string()), + ("a".to_string(), "A".to_string()), + ("b".to_string(), "B".to_string()), + ]); + + // The motivating case: an alias directly before `)` resolves. + assert_eq!( + KeyboardTomlConfig::alias_resolver("LM(1, @mods)", &aliases).unwrap(), + "LM(1, LShift | LGui)" + ); + // Aliases directly inside parens and before commas. + assert_eq!( + KeyboardTomlConfig::alias_resolver("WM(@a, LShift) TH(@a, @b)", &aliases).unwrap(), + "WM(A, LShift) TH(A, B)" + ); + // Adjacent aliases resolve independently. + assert_eq!(KeyboardTomlConfig::alias_resolver("@a@b", &aliases).unwrap(), "AB"); + } + + #[test] + fn bare_at_is_literal() { + let aliases = HashMap::from([("a".to_string(), "A".to_string())]); + // Trailing, before whitespace, and before a delimiter: all literal. + assert_eq!(KeyboardTomlConfig::alias_resolver("X @", &aliases).unwrap(), "X @"); + assert_eq!(KeyboardTomlConfig::alias_resolver("@ X", &aliases).unwrap(), "@ X"); + assert_eq!(KeyboardTomlConfig::alias_resolver("X@)", &aliases).unwrap(), "X@)"); + } + + #[test] + fn undefined_alias_reports_bare_name() { + let aliases = HashMap::new(); + let err = KeyboardTomlConfig::alias_resolver("LM(1, @mods)", &aliases).unwrap_err(); + assert_eq!(err, "Undefined alias: mods"); + } + + #[test] + fn alias_recursion_depth_is_bounded() { + let aliases = HashMap::from([("loop".to_string(), "@loop".to_string())]); + let err = KeyboardTomlConfig::alias_resolver("@loop", &aliases).unwrap_err(); + assert!(err.contains("maximum depth"), "{err}"); + } +} diff --git a/rmk-config/src/layout.rs b/rmk-config/src/layout.rs index 758f03a8c..10fb551a0 100644 --- a/rmk-config/src/layout.rs +++ b/rmk-config/src/layout.rs @@ -1,725 +1,1168 @@ -use std::collections::HashMap; +//! Build-time physical key layout. +//! +//! Walk `[layout].map`, apply variants, and build the compressed `GetLayout` +//! blob. Firmware streams the blob; hosts inflate and decode it. +//! +//! The serialized mirror types must match `rynk::layout::*`; cross-crate +//! round-trip tests guard that hand-maintained contract. + +use std::collections::{HashMap, HashSet}; use pest::Parser; use pest_derive::Parser; +use serde::{Deserialize, Serialize}; -use crate::{KeyInfo, KeyboardTomlConfig, LayoutConfig}; +use crate::LayoutTomlConfig; -// Pest parser using the grammar files #[derive(Parser)] #[grammar = "keymap.pest"] -struct ConfigParser; +pub(crate) struct ConfigParser; + +#[derive(Clone, Copy, Debug, PartialEq, Serialize, Deserialize)] +struct Rect { + x: f32, + y: f32, + w: f32, + h: f32, +} -// Max alias resolution depth to prevent infinite loops -const MAX_ALIAS_RESOLUTION_DEPTH: usize = 10; +#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] +struct Key { + row: u8, + col: u8, + rect: Rect, + r: f32, + rect2: Option, +} -impl KeyboardTomlConfig { - /// Layout is a mandatory field in toml, so we mainly check the sizes - pub(crate) fn get_layout_config(&self) -> Result<(LayoutConfig, Vec>), String> { - let aliases = self.aliases.clone().unwrap_or_default(); - let layers = self.layer.clone().unwrap_or_default(); - let mut layout = self.layout.clone().expect("layout config is required"); +// Encoders are always 1u; center is enough. +#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] +struct Encoder { + id: u8, + x: f32, + y: f32, +} - // Temporarily allow both matrix_map and keymap to be set and append the obsolete layout.keymap based layer configurations - // to the new [[layer]] based layer configurations in the resulting LayoutConfig +#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] +struct Variant { + name: String, + keys: Vec, + encoders: Vec, +} - // Check alias keys for whitespace - for key in aliases.keys() { - if key.chars().any(char::is_whitespace) { - return Err(format!( - "keyboard.toml: Alias key '{}' must not contain whitespace characters", - key - )); - } +#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] +struct LayoutInfo { + default_variant: u8, + variants: Vec, +} + +/// A resolved shape: every default applied. `rect2` is the L-key's second +/// rectangle stored as center-relative offsets — its `x`/`y` are offsets from +/// the primary center, not absolute positions (the walk resolves them). +#[derive(Clone, Copy, Debug)] +struct Shape { + w: f32, + h: f32, + x: f32, + y: f32, + r: f32, + rect2: Option, +} + +impl Default for Shape { + fn default() -> Self { + Shape { + w: 1.0, + h: 1.0, + x: 0.0, + y: 0.0, + r: 0.0, + rect2: None, + } + } +} + +impl From<&crate::ShapeToml> for Shape { + fn from(t: &crate::ShapeToml) -> Self { + let rect2 = t.w2.map(|w2| Rect { + w: w2, + h: t.h2.unwrap_or(1.0), + x: t.x2.unwrap_or(0.0), + y: t.y2.unwrap_or(0.0), + }); + Shape { + w: t.w.unwrap_or(1.0), + h: t.h.unwrap_or(1.0), + x: t.x.unwrap_or(0.0), + y: t.y.unwrap_or(0.0), + r: t.r.unwrap_or(0.0), + rect2, } + } +} - let mut final_layers = Vec::>>::new(); - let mut key_info: Vec> = - vec![vec![KeyInfo::default(); layout.cols as usize]; layout.rows as usize]; - let mut sequence_to_grid: Option> = None; - if let Some(matrix_map) = &layout.matrix_map { - // process matrix_map first to build mapping between the electronic grid and the configuration sequence of keys - let mut sequence_number = 0u32; - let mut grid_to_sequence: Vec>> = - vec![vec![None; layout.cols as usize]; layout.rows as usize]; - match Self::parse_matrix_map(matrix_map) { - Ok(info) => { - let mut coords = Vec::<(u8, u8)>::new(); - for (row, col, hand) in &info { - if *row >= layout.rows || *col >= layout.cols { - return Err(format!( - "keyboard.toml: Coordinate ({},{}) in `layout.matrix_map` is out of bounds: ([0..{}], [0..{}]) is the expected range", - row, - col, - layout.rows - 1, - layout.cols - 1 - )); - } - if grid_to_sequence[*row as usize][*col as usize].is_some() { - return Err(format!( - "keyboard.toml: Duplicate coordinate ({},{}) found in `layout.matrix_map`", - row, col - )); - } else { - // Separate coordinates from key info - coords.push((*row, *col)); - grid_to_sequence[*row as usize][*col as usize] = Some(sequence_number); - key_info[*row as usize][*col as usize] = KeyInfo { hand: *hand }; +/// RMK's shipped stock widths (`@Nu`): N units wide, 1u tall. The single source +/// of truth shared with the KLE converter in `rynk-kle`, which matches against +/// these to emit a `@Nu` reference instead of a generated shape — the two must +/// agree on names or a token the converter emits would fail to resolve here. +pub const STOCK_WIDTHS: &[(&str, f32)] = &[ + ("1.25u", 1.25), + ("1.5u", 1.5), + ("1.75u", 1.75), + ("2u", 2.0), + ("2.25u", 2.25), + ("2.75u", 2.75), + ("3u", 3.0), + ("6.25u", 6.25), + ("7u", 7.0), +]; + +/// The shipped stock shapes (`@2u`, `@1.5u`, …, `@iso_enter`, …). Keyed without +/// the leading `@`. User `[layout.shapes]` entries of the same name override. +fn stock_shapes() -> HashMap { + let d = Shape::default(); + let mut m = HashMap::new(); + // Width family: `@Nu` is N units wide, 1u tall. + for &(name, w) in STOCK_WIDTHS { + m.insert(name.to_string(), Shape { w, ..d }); + } + // Tall numpad Plus/Enter. + m.insert("2u_tall".to_string(), Shape { h: 2.0, ..d }); + // Stepped Caps keeps a single 1.75u footprint. + m.insert("stepped_caps".to_string(), Shape { w: 1.75, ..d }); + // ISO Enter uses center-relative rect2 offsets, not KLE top-left offsets. + m.insert( + "iso_enter".to_string(), + Shape { + w: 1.25, + h: 2.0, + y: -1.0, + rect2: Some(Rect { + w: 1.5, + h: 1.0, + x: -0.125, + y: -0.5, + }), + ..d + }, + ); + // Big-ass Enter: bottom bar plus right-aligned upper cap. + m.insert( + "bae".to_string(), + Shape { + w: 2.25, + rect2: Some(Rect { + w: 1.5, + h: 1.0, + x: 0.375, + y: -1.0, + }), + ..d + }, + ); + m +} + +/// One token of the `[layout].map` grammar. The single shared representation: +/// keymap resolution takes the `Key` write-order + `hand`, the render walk +/// takes every token (and ignores `hand`). +pub(crate) enum MapToken { + Key { + row: u8, + col: u8, + hand: char, + shape: Option, + }, + Encoder { + id: u8, + }, + /// A `[n]` horizontal gap, in key-units. + Gap(f32), + /// A `[y=n]` extra vertical step for the next row. + VStep(f32), + /// A `[r=deg@(x,y)]` rotation region: keys and encoders after it rotate + /// `deg` clockwise about the pivot until the next `[r=...]`. `[r=0]` + /// (pivot optional) returns to the flat frame. + Rot { + deg: f32, + px: f32, + py: f32, + }, + Newline, +} + +fn parse_u8(s: &str, what: &str) -> Result { + s.parse::() + .map_err(|e| format!("keyboard.toml: bad {what} '{s}' in layout.map: {e}")) +} + +fn parse_f32(s: &str, what: &str) -> Result { + s.parse::() + .map_err(|e| format!("keyboard.toml: bad {what} '{s}' in layout.map: {e}")) +} + +/// The `@`-stripped name inside a `shape_ref` pair. +fn shape_name_of(pair: pest::iterators::Pair) -> String { + pair.into_inner() + .next() + .map(|p| p.as_str().to_string()) + .unwrap_or_default() +} + +/// Parse the `[layout].map` string into its token stream, validating that every +/// key coordinate is in bounds and unique. This is the single source of truth for +/// both keymap resolution (`get_keymap_config`) and the render walk, so the two +/// can never disagree on which positions are keys or in what order. +pub(crate) fn parse_map(map: &str, rows: u8, cols: u8) -> Result, String> { + let pairs = + ConfigParser::parse(Rule::layout_map, map).map_err(|e| format!("keyboard.toml: Error in `layout.map`: {e}"))?; + let mut tokens = Vec::new(); + let mut seen: HashSet<(u8, u8)> = HashSet::new(); + for pair in pairs { + if pair.as_rule() != Rule::layout_map { + continue; + } + for inner in pair.into_inner() { + match inner.as_rule() { + Rule::keypos_info => { + let mut it = inner.into_inner(); + let row = parse_u8(it.next().ok_or("missing row")?.as_str(), "row")?; + let col = parse_u8(it.next().ok_or("missing col")?.as_str(), "col")?; + let mut hand = 'C'; + let mut shape = None; + for part in it { + match part.as_rule() { + Rule::left_hand => hand = 'L', + Rule::right_hand => hand = 'R', + Rule::bilateral_hand => hand = '*', + Rule::shape_ref => shape = Some(shape_name_of(part)), + _ => {} } - sequence_number += 1; } - sequence_to_grid = Some(coords); - } - Err(parse_err) => { - // Pest error already includes details about the invalid format - return Err(format!("keyboard.toml: Error in `layout.matrix_map`: {}", parse_err)); - } - } - } else if !layers.is_empty() { - return Err("layout.matrix_map is need to be defined to process [[layer]] based key maps".to_string()); - } - if let Some(sequence_to_grid) = &sequence_to_grid { - // collect layer names first - let mut layer_names = HashMap::::new(); - for (layer_number, layer) in layers.iter().enumerate() { - if let Some(name) = &layer.name { - if layer_names.contains_key(name) { + if row >= rows || col >= cols { return Err(format!( - "keyboard.toml: Duplicate layer name '{}' found in `layout.keymap`", - name + "keyboard.toml: layout.map coordinate ({row},{col}) is out of bounds ([0..{}], [0..{}])", + rows.saturating_sub(1), + cols.saturating_sub(1) )); } - layer_names.insert(name.clone(), layer_number as u32); - } - } - if layers.len() > layout.layers as usize { - return Err("keyboard.toml: Number of [[layer]] entries is larger than layout.layers".to_string()); - } - // Parse each explicitly defined [[layer]] with pest into the final_layers vector - // using the previously defined sequence_to_grid mapping to fill in the - // grid shaped classic keymaps - let layer_names = layer_names; - for (layer_number, layer) in layers.iter().enumerate() { - // each layer should contain a sequence of keymap entries - // their number and order should match the number and order of the above parsed matrix map - match Self::keymap_parser(&layer.keys, &aliases, &layer_names) { - Ok(key_action_sequence) => { - let mut legacy_keymap = - vec![vec!["No".to_string(); layout.cols as usize]; layout.rows as usize]; - for (sequence_number, key_action) in key_action_sequence.into_iter().enumerate() { - if sequence_number >= sequence_to_grid.len() { - return Err(format!( - "keyboard.toml: {} layer #{} contains too many entries (must match layout.matrix_map)", - layer.name.clone().unwrap_or_default(), - layer_number - )); - } - let (row, col) = sequence_to_grid[sequence_number]; - legacy_keymap[row as usize][col as usize] = key_action.clone(); - } - final_layers.push(legacy_keymap); - } - Err(parse_err) => { - return Err(format!("keyboard.toml: Error in `layout.keymap`: {}", parse_err)); + if !seen.insert((row, col)) { + return Err(format!( + "keyboard.toml: duplicate coordinate ({row},{col}) in layout.map" + )); } + tokens.push(MapToken::Key { row, col, hand, shape }); } - } - } - // Handle the deprecated `keymap` field if present - if let Some(keymap) = &mut layout.keymap { - final_layers.append(keymap); - } - // The required number of layers is less than what's set in keymap - // Fill the rest with empty keys - if final_layers.len() <= layout.layers as usize { - for _ in final_layers.len()..layout.layers as usize { - // Add 2D vector of empty keys - final_layers.push(vec![vec!["_".to_string(); layout.cols as usize]; layout.rows as usize]); - } - } else { - return Err(format!( - "keyboard.toml: The actual number of layers is larger than {} [layout.layers]: {} [[Layer]] entries + {} layers in layout.keymap", - layout.layers, - layers.len(), - layout.keymap.as_ref().map(|keymap| keymap.len()).unwrap_or_default() - )); - } - // Row - if final_layers.iter().any(|r| r.len() as u8 != layout.rows) { - return Err("keyboard.toml: Row number in keymap doesn't match with [layout.row]".to_string()); - } - // Col - if final_layers - .iter() - .any(|r| r.iter().any(|c| c.len() as u8 != layout.cols)) - { - return Err("keyboard.toml: Col number in keymap doesn't match with [layout.col]".to_string()); - } - - // Process encoder map - let mut encoder_map: Vec> = vec![]; - if let Some(deprecated_encoder_map) = &mut layout.encoder_map { - encoder_map.append(deprecated_encoder_map); - } else { - for layer in &layers { - let mut encoders = layer.encoders.clone().unwrap_or_default(); - for [cw, ccw] in &mut encoders { - *cw = Self::alias_resolver(cw, &aliases)?; - *ccw = Self::alias_resolver(ccw, &aliases)?; + Rule::encoder_info => { + let id = parse_u8( + inner.into_inner().next().ok_or("missing encoder id")?.as_str(), + "encoder id", + )?; + tokens.push(MapToken::Encoder { id }); } - encoder_map.push(encoders); - } - } - - Ok(( - LayoutConfig { - rows: layout.rows, - cols: layout.cols, - layers: layout.layers, - keymap: final_layers, - encoder_map, - }, - key_info, - )) - } - - /// Parses and validates a matrix_map string using Pest. - /// Ensures the string contains only valid coordinates and whitespace. - fn parse_matrix_map(matrix_map: &str) -> Result, String> { - match ConfigParser::parse(Rule::matrix_map, matrix_map) { - Ok(pairs) => { - let mut key_info = Vec::new(); - // The top-level pair is 'matrix_map'. We need to iterate its inner content. - for pair in pairs { - // Should only be one pair matching Rule::matrix_map - if pair.as_rule() == Rule::matrix_map { - for inner_pair in pair.into_inner() { - match inner_pair.as_rule() { - Rule::keypos_info => { - let mut items = inner_pair.into_inner(); // Should contain two 'number' pairs - - let row_str = items.next().ok_or("Missing row coordinate")?.as_str(); - let col_str = items.next().ok_or("Missing col coordinate")?.as_str(); - - let row = row_str - .parse::() - .map_err(|e| format!("Failed to parse row '{}': {}", row_str, e))?; - let col = col_str - .parse::() - .map_err(|e| format!("Failed to parse col '{}': {}", col_str, e))?; - - let mut hand = 'C'; // C for center (not specified) - - for part in items { - match part.as_rule() { - Rule::left_hand => hand = 'L', - Rule::right_hand => hand = 'R', - Rule::bilateral_hand => hand = '*', - _ => {} - } - } - - key_info.push((row, col, hand)); - } - Rule::EOI | Rule::WHITESPACE => { - // Ignore End Of Input marker - } - _ => { - // This case should not be reached - return Err(format!( - "Unexpected rule encountered during layout.matrix_map processing: {:?}", - inner_pair.as_rule() - )); - } - } + Rule::spacer => { + let u = inner.into_inner().next().ok_or("missing gap")?.as_str(); + tokens.push(MapToken::Gap(parse_f32(u, "gap")?)); + } + Rule::vertical => { + let u = inner.into_inner().next().ok_or("missing y-step")?.as_str(); + tokens.push(MapToken::VStep(parse_f32(u, "y-step")?)); + } + Rule::rotation => { + let vals = inner + .into_inner() + .map(|p| parse_f32(p.as_str(), "rotation")) + .collect::, String>>()?; + let (deg, px, py) = match vals.as_slice() { + [deg, px, py] => (*deg, *px, *py), + [deg] if *deg == 0.0 => (0.0, 0.0, 0.0), + [deg] => { + return Err(format!( + "keyboard.toml: [r={deg}] in layout.map needs a pivot — write \ + [r={deg}@(x,y)]; only [r=0] (end of region) may omit it" + )); } + _ => return Err("keyboard.toml: malformed [r=...] in layout.map".to_string()), + }; + if ![deg, px, py].iter().all(|v| v.is_finite()) { + return Err("keyboard.toml: non-finite value in layout.map [r=...]".to_string()); } + tokens.push(MapToken::Rot { deg, px, py }); } - Ok(key_info) + Rule::newline => tokens.push(MapToken::Newline), + _ => {} } - Err(e) => Err(format!("Invalid layout.matrix_map format: {}", e)), } } + Ok(tokens) +} - fn alias_resolver(keys: &str, aliases: &HashMap) -> Result { - let mut current_keys = keys.to_string(); - - let mut iterations = 0; - - loop { - let mut next_keys = String::with_capacity(current_keys.capacity()); - let mut made_replacement = false; - let mut last_index = 0; // Keep track of where we are in current_keys - - while let Some(at_index) = current_keys[last_index..].find('@') { - let start_index = last_index + at_index; +/// Cursor state. A row's baseline `y` is the TOP of the row; a key stores its +/// center. The advance to the next row is *lazy*: a newline only arms a break +/// (so a lone `[y=n]` line doesn't itself consume a row), and the next key / +/// encoder / gap performs the `1 + pending_vstep` drop. +struct Walker { + cursor_x: f32, + baseline_y: f32, + row_has_content: bool, + break_pending: bool, + pending_vstep: f32, +} - // Append the text before the '@' - next_keys.push_str(¤t_keys[last_index..start_index]); +impl Walker { + fn new() -> Self { + Walker { + cursor_x: 0.0, + baseline_y: 0.0, + row_has_content: false, + break_pending: false, + pending_vstep: 0.0, + } + } - // Check if it's a valid alias start (@ followed by a non whitespace) - if let Some(first_char) = current_keys.as_bytes().get(start_index + 1) { - if !first_char.is_ascii_whitespace() { - // Find the end of the alias identifier - let mut end_index = start_index + 2; - while let Some(c) = current_keys.as_bytes().get(end_index) { - if c.is_ascii_whitespace() { - break; - } else { - end_index += 1; - } - } + fn advance_if_pending(&mut self) { + if self.break_pending { + self.baseline_y += 1.0 + self.pending_vstep; + self.pending_vstep = 0.0; + self.cursor_x = 0.0; + self.break_pending = false; + self.row_has_content = false; + } + } +} - // Extract the alias key (except the starting '@') - let alias_key = ¤t_keys[start_index + 1..end_index]; +fn resolve_shape(name: Option<&str>, shapes: &HashMap) -> Result { + match name { + None => Ok(Shape::default()), + Some(n) => shapes + .get(n) + .copied() + .ok_or_else(|| format!("keyboard.toml: unknown shape '@{n}' in layout.map")), + } +} - // Look up and replace - match aliases.get(alias_key) { - Some(value) => { - next_keys.push_str(value); - made_replacement = true; - } - None => return Err(format!("Undefined alias: {}", alias_key)), - } - last_index = end_index; // Move past the processed alias - } else { - // Not a valid alias start, treat '@' literally - next_keys.push('@'); - last_index = start_index + 1; - } - } else { - // '@' was the last character, treat it literally - next_keys.push('@'); - last_index = start_index + 1; - break; // No more characters after '@' +/// Walk one variant: `overrides` reshape a key, `hidden` drop it from the walk +/// (so following keys reflow). Returns this variant's keys and encoders — a +/// hidden key before an encoder reflows the encoder along with the keys. +fn walk( + tokens: &[MapToken], + shapes: &HashMap, + overrides: &HashMap<(u8, u8), String>, + hidden: &HashSet<(u8, u8)>, +) -> Result<(Vec, Vec), String> { + let mut w = Walker::new(); + let mut keys = Vec::new(); + let mut encoders = Vec::new(); + // Active rotation region; cursor coordinates stay flat. + let mut rot: Option<(f32, f32, f32)> = None; + let swing = |x: f32, y: f32, rot: &Option<(f32, f32, f32)>| -> (f32, f32) { + match rot { + None => (x, y), + Some((deg, px, py)) => { + let (sin, cos) = deg.to_radians().sin_cos(); + let (dx, dy) = (x - px, y - py); + (px + dx * cos - dy * sin, py + dx * sin + dy * cos) + } + } + }; + for tok in tokens { + match tok { + MapToken::Newline => { + if w.row_has_content { + w.break_pending = true; + } + } + MapToken::VStep(n) => { + // `[y=n]` affects only the next real row break. + if w.row_has_content { + w.pending_vstep += n; } } + MapToken::Gap(g) => { + w.advance_if_pending(); + w.cursor_x += g; + } + MapToken::Key { row, col, shape, .. } => { + w.advance_if_pending(); + // Hidden keys do not advance the cursor. + if hidden.contains(&(*row, *col)) { + continue; + } + let name = overrides.get(&(*row, *col)).map(String::as_str).or(shape.as_deref()); + let s = resolve_shape(name, shapes)?; + let (cx, cy) = swing(w.cursor_x + s.w / 2.0 + s.x, w.baseline_y + s.h / 2.0 + s.y, &rot); + // rect2 stays in the key frame; region and shape angles add. + let rect2 = s.rect2.map(|r2| Rect { + x: cx + r2.x, + y: cy + r2.y, + w: r2.w, + h: r2.h, + }); + keys.push(Key { + row: *row, + col: *col, + rect: Rect { + x: cx, + y: cy, + w: s.w, + h: s.h, + }, + r: s.r + rot.map_or(0.0, |(deg, ..)| deg), + rect2, + }); + w.cursor_x += s.w; + w.row_has_content = true; + } + MapToken::Encoder { id } => { + w.advance_if_pending(); + // Encoders are fixed 1u knobs. + let (x, y) = swing(w.cursor_x + 0.5, w.baseline_y + 0.5, &rot); + encoders.push(Encoder { id: *id, x, y }); + w.cursor_x += 1.0; + w.row_has_content = true; + } + MapToken::Rot { deg, px, py } => { + // Rotation markers consume no row by themselves. + rot = (*deg != 0.0).then_some((*deg, *px, *py)); + } + } + } + Ok((keys, encoders)) +} - // Append any remaining part of the string after the last '@' or if no '@' was found - next_keys.push_str(¤t_keys[last_index..]); +/// Parse a quoted `"(r,c)"` overlay key into `(row, col)`. +fn parse_rc(s: &str) -> Result<(u8, u8), String> { + let inner = s.trim().trim_start_matches('(').trim_end_matches(')'); + let mut it = inner.split(','); + let r = parse_u8(it.next().unwrap_or("").trim(), "variant target row")?; + let c = parse_u8(it.next().unwrap_or("").trim(), "variant target col")?; + Ok((r, c)) +} - // Check for termination conditions - iterations += 1; - if iterations >= MAX_ALIAS_RESOLUTION_DEPTH { - return Err(format!( - "Alias resolution exceeded maximum depth ({}), potential infinite loop detected in '{}'", - MAX_ALIAS_RESOLUTION_DEPTH, keys - )); // Show original keys for context - } +/// Every f32 dimension of a shape is finite (rejects `nan`/`inf` from TOML). +fn shape_is_finite(s: &Shape) -> bool { + [s.w, s.h, s.x, s.y, s.r].iter().all(|v| v.is_finite()) + && s.rect2 + .is_none_or(|r| [r.x, r.y, r.w, r.h].iter().all(|v| v.is_finite())) +} - if !made_replacement { - break; // No more replacements needed +/// `expected_encoders` is the board's physical encoder count (`Some` from the +/// real build, `None` from the standalone TOML helper which has no board). +fn build_layout_info( + layout: &LayoutTomlConfig, + expected_encoders: Option, +) -> Result, String> { + let Some(map) = &layout.map else { + return Ok(None); + }; + let tokens = parse_map(map, layout.rows, layout.cols)?; + + // Variant overlays must target real map keys. + let key_coords: HashSet<(u8, u8)> = tokens + .iter() + .filter_map(|tok| match tok { + MapToken::Key { row, col, .. } => Some((*row, *col)), + _ => None, + }) + .collect(); + + let mut shapes = stock_shapes(); + if let Some(user) = &layout.shapes { + for (k, v) in user { + let s = Shape::from(v); + if !shape_is_finite(&s) { + return Err(format!( + "keyboard.toml: shape '{k}' has a non-finite (nan/inf) dimension" + )); } - - // Prepare for the next iteration - current_keys = next_keys; + shapes.insert(k.clone(), s); } + } - Ok(current_keys) - } - - /// Reconstruct an action string from a parsed pair, resolving every named - /// layer reference (`MO(base)`) to its numeric index (`MO(0)`). - /// - /// Layer names may appear at any nesting depth (e.g. inside the tap slot of - /// `TH(MO(nav), A)`), so this walks the whole subtree, collects the source - /// span of each `layer_name`, and rewrites those spans in place. Actions - /// without layer names are returned verbatim. - fn resolve_layer_names( - pair: &pest::iterators::Pair, - layer_names: &HashMap, - ) -> Result { - let base = pair.as_span().start(); - let mut replacements: Vec<(usize, usize, String)> = Vec::new(); - Self::collect_layer_name_spans(pair.clone(), layer_names, &mut replacements)?; - - // Apply right-to-left so earlier byte offsets stay valid. - replacements.sort_by_key(|(start, _, _)| *start); - let mut result = pair.as_str().to_string(); - for (start, end, replacement) in replacements.into_iter().rev() { - result.replace_range(start - base..end - base, &replacement); - } - Ok(result) - } - - /// Recursively collect `(start, end, resolved_number)` for every `layer_name` - /// in the subtree, validating each against the known layer names. - fn collect_layer_name_spans( - pair: pest::iterators::Pair, - layer_names: &HashMap, - out: &mut Vec<(usize, usize, String)>, - ) -> Result<(), String> { - if pair.as_rule() == Rule::layer_name { - let layer_name = pair.as_str(); - match layer_names.get(layer_name) { - Some(layer_number) => { - let span = pair.as_span(); - out.push((span.start(), span.end(), layer_number.to_string())); - } - None => return Err(format!("Invalid layer name: {}", layer_name)), + let no_variants = Vec::new(); + let variants_toml = layout.variant.as_ref().unwrap_or(&no_variants); + // `default_variant` is serialized as a u8 index, so at most 256 variants. + if variants_toml.len() > u8::MAX as usize + 1 { + return Err(format!( + "keyboard.toml: too many [[layout.variant]] ({}); at most {}", + variants_toml.len(), + u8::MAX as usize + 1 + )); + } + // Reject overlay targets that would otherwise be silent no-ops. + for v in variants_toml { + let targets = v + .shapes + .iter() + .flatten() + .map(|(k, _)| k) + .chain(v.hidden.iter().flatten()); + for rc in targets { + let coord = parse_rc(rc)?; + if !key_coords.contains(&coord) { + return Err(format!( + "keyboard.toml: variant '{}' targets ({},{}) which is not a key in layout.map", + v.name, coord.0, coord.1 + )); } - return Ok(()); } - for inner in pair.into_inner() { - Self::collect_layer_name_spans(inner, layer_names, out)?; - } - Ok(()) - } - - fn keymap_parser( - layer_keys: &str, - aliases: &HashMap, - layer_names: &HashMap, - ) -> Result, String> { - //resolve aliases first - let layer_keys = Self::alias_resolver(layer_keys, aliases)?; - - let mut key_action_sequence = Vec::new(); - - // Parse the keymap using Pest - match ConfigParser::parse(Rule::key_map, &layer_keys) { - Ok(pairs) => { - // The top-level pair is 'key_map'. We need to iterate its inner content. - for pair in pairs { - // Should only be one pair matching Rule::key_map - if pair.as_rule() == Rule::key_map { - for inner_pair in pair.into_inner() { - match inner_pair.as_rule() { - Rule::EOI | Rule::WHITESPACE => { - // Ignore End of input marker - } - // Every key action is forwarded as its (alias-resolved) source - // text, with any named layer references resolved to indices. - // This handles layer names nested at any depth, e.g. the tap - // slot of `TH(MO(nav), A)`. - _ => { - key_action_sequence.push(Self::resolve_layer_names(&inner_pair, layer_names)?); - } - } - } - } - } + } + + // Each variant is complete; hidden keys reflow later keys and encoders. + let mut variants: Vec = Vec::new(); + if variants_toml.is_empty() { + let (keys, encoders) = walk(&tokens, &shapes, &HashMap::new(), &HashSet::new())?; + variants.push(Variant { + name: "default".to_string(), + keys, + encoders, + }); + } else { + for v in variants_toml { + let mut overrides = HashMap::new(); + for (rc, name) in v.shapes.iter().flatten() { + overrides.insert(parse_rc(rc)?, name.trim_start_matches('@').to_string()); } - Err(e) => { - panic!("Invalid keymap format: {}", e); + let mut hidden = HashSet::new(); + for rc in v.hidden.iter().flatten() { + hidden.insert(parse_rc(rc)?); } + let (keys, encoders) = walk(&tokens, &shapes, &overrides, &hidden)?; + variants.push(Variant { + name: v.name.clone(), + keys, + encoders, + }); } + } - Ok(key_action_sequence) + // Unknown default variant names fall back to variant 0. + let default_variant = layout + .default_variant + .as_ref() + .and_then(|name| variants.iter().position(|v| &v.name == name)) + .unwrap_or(0) as u8; + + // Encoder ids are variant-invariant; validate one dense 0..N list. + let encoders = &variants[0].encoders; + let mut ids: Vec = encoders.iter().map(|e| e.id).collect(); + ids.sort_unstable(); + for (expected, &id) in ids.iter().enumerate() { + if id as usize != expected { + return Err(format!( + "keyboard.toml: encoder ids in layout.map must be unique and cover 0..{} (got {ids:?})", + ids.len() + )); + } + } + if let Some(n) = expected_encoders + && !encoders.is_empty() + && encoders.len() != n + { + return Err(format!( + "keyboard.toml: layout.map has {} encoder (e,id) tokens but the board declares {n}", + encoders.len() + )); } + + Ok(Some(LayoutInfo { + default_variant, + variants, + })) +} + +/// Build the compressed layout blob from a `[layout]`-section TOML string. +/// +/// Exposed for cross-crate end-to-end tests (the host crate decodes the result), +/// so the producer here and the host-decode types can't drift unnoticed. +pub fn layout_blob_from_toml(layout_toml: &str) -> Result, String> { + let layout: LayoutTomlConfig = toml::from_str(layout_toml).map_err(|e| e.to_string())?; + build_layout_blob(&layout, None) +} + +/// Build the compressed, opaque layout blob (empty when there's no `map`). +/// `expected_encoders` is the board's physical encoder count, or `None` to skip +/// that cross-check (the standalone TOML helper has no board). +pub(crate) fn build_layout_blob( + layout: &LayoutTomlConfig, + expected_encoders: Option, +) -> Result, String> { + let Some(info) = build_layout_info(layout, expected_encoders)? else { + return Ok(Vec::new()); + }; + let bytes = + postcard::to_allocvec(&info).map_err(|e| format!("keyboard.toml: layout blob serialize failed: {e}"))?; + // Compression runs at build time; hosts use the matching raw DEFLATE decoder. + Ok(miniz_oxide::deflate::compress_to_vec(&bytes, 10)) } #[cfg(test)] mod tests { use super::*; - #[test] - fn test_no_action_parsing() { - // Test "No" followed by whitespace - let test_cases = vec![ - ("No ", vec!["No"]), - ("No\n", vec!["No"]), - ("No\t", vec!["No"]), - ("No A", vec!["No", "A"]), - ("A No B", vec!["A", "No", "B"]), - ("No No No", vec!["No", "No", "No"]), - ]; - - for (input, expected) in test_cases { - let result = ConfigParser::parse(Rule::key_map, input); - assert!(result.is_ok(), "Failed to parse: {}", input); - - let mut actions = Vec::new(); - for pair in result.unwrap() { - if pair.as_rule() == Rule::key_map { - for inner_pair in pair.into_inner() { - match inner_pair.as_rule() { - Rule::no_action | Rule::simple_keycode => { - actions.push(inner_pair.as_str().to_string()); - } - Rule::EOI | Rule::WHITESPACE => {} - _ => {} - } - } - } - } + fn approx(a: f32, b: f32) -> bool { + (a - b).abs() < 1e-4 + } + + fn info_of(toml: &str) -> LayoutInfo { + let cfg: LayoutTomlConfig = toml::from_str(toml).unwrap(); + build_layout_info(&cfg, None).unwrap().unwrap() + } - assert_eq!(actions, expected, "Input: {}", input); + fn key(v: &Variant, row: u8, col: u8) -> &Key { + v.keys + .iter() + .find(|k| k.row == row && k.col == col) + .expect("key present") + } + + #[test] + fn bare_keys_make_a_unit_grid() { + let info = info_of("rows = 1\ncols = 3\nmap = \"(0,0) (0,1) (0,2)\""); + let v = &info.variants[0]; + assert_eq!(v.name, "default"); + for (i, k) in v.keys.iter().enumerate() { + assert!(approx(k.rect.x, i as f32 + 0.5), "center x"); + assert!(approx(k.rect.y, 0.5), "center y"); + assert!(approx(k.rect.w, 1.0) && approx(k.rect.h, 1.0)); + assert!(k.rect2.is_none()); } } #[test] - fn test_no_vs_no_prefixed_keycodes() { - // Test that "No" is parsed as no_action but "NoUsSlash" is parsed as simple_keycode - let test_cases = vec![ - ("No", Rule::no_action), - ("NoUsSlash", Rule::simple_keycode), - ("NonUsSlash", Rule::simple_keycode), - ("NoReturn", Rule::simple_keycode), - ("NoBrake", Rule::simple_keycode), - ]; - - for (input, expected_rule) in test_cases { - let result = ConfigParser::parse(Rule::key_map, input); - assert!(result.is_ok(), "Failed to parse: {}", input); - - let mut found_rule = None; - for pair in result.unwrap() { - if pair.as_rule() == Rule::key_map { - for inner_pair in pair.into_inner() { - match inner_pair.as_rule() { - Rule::no_action | Rule::simple_keycode => { - found_rule = Some(inner_pair.as_rule()); - } - _ => {} - } - } - } - } + fn duplicate_coord_is_rejected() { + // Blob and keymap paths must reject duplicate cells consistently. + let cfg: LayoutTomlConfig = toml::from_str("rows = 1\ncols = 2\nmap = \"(0,0) (0,0)\"").unwrap(); + assert!(build_layout_blob(&cfg, None).is_err(), "duplicate (0,0) must fail"); + } - assert_eq!( - found_rule, - Some(expected_rule), - "Input: {} should be parsed as {:?}", - input, - expected_rule - ); - } + #[test] + fn stock_width_moves_the_cursor() { + // A 2u key advances the next key to x=2.5. + let info = info_of("rows = 1\ncols = 2\nmap = \"(0,0,@2u) (0,1)\""); + let v = &info.variants[0]; + assert!(approx(key(v, 0, 0).rect.x, 1.0) && approx(key(v, 0, 0).rect.w, 2.0)); + assert!(approx(key(v, 0, 1).rect.x, 2.5)); } #[test] - fn test_keymap_parser_with_no_actions() { - let aliases = HashMap::new(); - let layer_names = HashMap::new(); - - // Test parsing a keymap string with "No" actions - let keymap = "A B No C No NoUsSlash NonUsSlash D No"; - let result = KeyboardTomlConfig::keymap_parser(keymap, &aliases, &layer_names); - - assert!(result.is_ok()); - let actions = result.unwrap(); - assert_eq!( - actions, - vec!["A", "B", "No", "C", "No", "NoUsSlash", "NonUsSlash", "D", "No"] + fn stock_iso_enter_is_a_true_l() { + // rect2 offsets are center-to-center; the overhang aligns right. + let info = info_of("rows = 1\ncols = 1\nmap = \"(0,0,@iso_enter)\""); + let k = key(&info.variants[0], 0, 0); + let r2 = k.rect2.expect("two rects"); + assert!(approx(r2.w, 1.5) && approx(r2.h, 1.0)); + assert!( + approx(k.rect.x + k.rect.w / 2.0, r2.x + r2.w / 2.0), + "right edges flush: bar {} vs overhang {}", + k.rect.x + k.rect.w / 2.0, + r2.x + r2.w / 2.0 + ); + assert!( + approx(r2.y, k.rect.y - 0.5), + "overhang on the upper row: {} vs {}", + r2.y, + k.rect.y - 0.5 ); } #[test] - fn test_keymap_parser_with_comma_alias() { - let aliases = HashMap::new(); - let layer_names = HashMap::new(); - - let keymap = "A , SHIFTED(,) B"; - let result = KeyboardTomlConfig::keymap_parser(keymap, &aliases, &layer_names); + fn y_step_is_one_shot_and_lazy() { + // Row 1 lands 1.25u below row 0. + let info = info_of("rows = 2\ncols = 2\nmap = \"\"\"\n(0,0) (0,1)\n[y=0.25]\n(1,0) (1,1)\n\"\"\""); + let v = &info.variants[0]; + assert!(approx(key(v, 0, 0).rect.y, 0.5)); + assert!(approx(key(v, 1, 0).rect.y, 1.75)); // 0.5 + 1.25 + } - assert!(result.is_ok()); - let actions = result.unwrap(); - assert_eq!(actions, vec!["A", ",", "SHIFTED(,)", "B"]); + #[test] + fn leading_y_step_is_dropped() { + // Leading `[y=n]` must not leak into the first real row break. + let info = info_of("rows = 3\ncols = 1\nmap = \"\"\"\n[y=0.5]\n(0,0)\n(1,0)\n(2,0)\n\"\"\""); + let v = &info.variants[0]; + assert!(approx(key(v, 0, 0).rect.y, 0.5)); + assert!(approx(key(v, 1, 0).rect.y, 1.5)); // not 2.0 + assert!(approx(key(v, 2, 0).rect.y, 2.5)); // not 3.0 } #[test] - fn test_comma_separator_compatibility_in_multi_arg_actions() { - let aliases = HashMap::new(); - let layer_names = HashMap::new(); + fn unknown_default_variant_falls_back_to_zero() { + // Unknown default names fall back instead of failing the build. + let info = info_of( + "rows = 1\ncols = 1\ndefault_variant = \"typo\"\nmap = \"(0,0)\"\n[[variant]]\nname = \"a\"\n[[variant]]\nname = \"b\"", + ); + assert_eq!(info.default_variant, 0); + // No variants still resolves to default variant 0. + let info2 = info_of("rows = 1\ncols = 1\ndefault_variant = \"x\"\nmap = \"(0,0)\""); + assert_eq!(info2.default_variant, 0); + } - // Comma keeps working as argument separator in multi-argument actions. - let keymap = "TH(A, B) TH(Comma, B) TH(A, Comma)"; - let result = KeyboardTomlConfig::keymap_parser(keymap, &aliases, &layer_names); + #[test] + fn encoder_ids_must_be_unique_and_dense() { + let ok = info_of("rows = 1\ncols = 2\nmap = \"(0,0) (e,0) (0,1) (e,1)\""); + assert_eq!(ok.variants[0].encoders.len(), 2); + let dup: LayoutTomlConfig = toml::from_str("rows = 1\ncols = 1\nmap = \"(0,0) (e,0) (e,0)\"").unwrap(); + assert!(build_layout_info(&dup, None).is_err(), "duplicate encoder id must fail"); + let gap: LayoutTomlConfig = toml::from_str("rows = 1\ncols = 1\nmap = \"(0,0) (e,0) (e,2)\"").unwrap(); + assert!( + build_layout_info(&gap, None).is_err(), + "non-dense encoder ids must fail" + ); + } - assert!(result.is_ok()); - let actions = result.unwrap(); - assert_eq!(actions, vec!["TH(A, B)", "TH(Comma, B)", "TH(A, Comma)"]); + #[test] + fn encoder_shape_is_rejected() { + // Encoders are fixed 1u knobs, so shapes are invalid. + let cfg: LayoutTomlConfig = toml::from_str("rows = 1\ncols = 1\nmap = \"(0,0) (e,0,@2u)\"").unwrap(); + assert!(build_layout_blob(&cfg, None).is_err(), "(e,id,@shape) must be rejected"); } #[test] - fn test_multi_arg_actions_reject_symbol_comma_as_key_argument() { - let invalid_cases = ["TH(A, ,)", "TH(, ,)", "WM(, LShift)", "LT(1, ,)", "MT(, LShift)"]; + fn out_of_bounds_coord_is_rejected() { + let cfg: LayoutTomlConfig = toml::from_str("rows = 1\ncols = 1\nmap = \"(0,0) (0,5)\"").unwrap(); + assert!(build_layout_info(&cfg, None).is_err()); + } - for input in invalid_cases { - let result = ConfigParser::parse(Rule::key_map, input); - assert!(result.is_err(), "Input should be rejected: {}", input); - } + #[test] + fn non_finite_shape_is_rejected() { + let nan: LayoutTomlConfig = + toml::from_str("rows = 1\ncols = 1\nmap = \"(0,0,@bad)\"\n[shapes]\nbad = { w = nan }").unwrap(); + assert!(build_layout_info(&nan, None).is_err(), "nan width must fail"); + let inf: LayoutTomlConfig = + toml::from_str("rows = 1\ncols = 1\nmap = \"(0,0,@big)\"\n[shapes]\nbig = { x = inf }").unwrap(); + assert!(build_layout_info(&inf, None).is_err(), "inf nudge must fail"); } #[test] - fn test_single_key_arg_actions_accept_symbol_comma() { - let valid_cases = ["SHIFTED(,)", "SHIFTED(Comma)", ","]; + fn variant_target_must_be_a_real_key() { + // `hidden` names a non-key. + let cfg: LayoutTomlConfig = toml::from_str( + "rows = 1\ncols = 2\nmap = \"(0,0) (0,1)\"\n[[variant]]\nname = \"a\"\nhidden = [\"(0,9)\"]", + ) + .unwrap(); + assert!(build_layout_info(&cfg, None).is_err()); + } - for input in valid_cases { - let result = ConfigParser::parse(Rule::key_map, input); - assert!(result.is_ok(), "Input should be accepted: {}", input); - } + #[test] + fn encoders_reflow_per_variant() { + // Hidden keys reflow following encoder positions too. + let info = info_of( + "rows = 1\ncols = 2\nmap = \"(0,0) (0,1) (e,0)\"\n[[variant]]\nname = \"full\"\n[[variant]]\nname = \"mini\"\nhidden = [\"(0,0)\"]", + ); + let full = info.variants.iter().find(|v| v.name == "full").unwrap(); + let mini = info.variants.iter().find(|v| v.name == "mini").unwrap(); + assert_eq!(full.encoders.len(), 1); + assert!(approx(full.encoders[0].x, 2.5), "full knob x = {}", full.encoders[0].x); + assert!( + approx(mini.encoders[0].x, 1.5), + "mini knob x = {} (reflowed after hiding (0,0))", + mini.encoders[0].x + ); + assert!( + mini.keys.iter().all(|k| !(k.row == 0 && k.col == 0)), + "(0,0) is hidden in mini" + ); } #[test] - fn test_morse_action_parsing() { - let aliases = HashMap::new(); - let layer_names = HashMap::new(); + fn encoder_count_must_match_board() { + // One encoder token cannot cover two board encoders. + let one: LayoutTomlConfig = toml::from_str("rows = 1\ncols = 1\nmap = \"(0,0) (e,0)\"").unwrap(); + assert!( + build_layout_blob(&one, Some(2)).is_err(), + "1 token vs 2 board encoders must fail" + ); + assert!(build_layout_blob(&one, Some(1)).is_ok(), "matching count is fine"); + // Omitting encoder positions opts out of layout placement. + let none: LayoutTomlConfig = toml::from_str("rows = 1\ncols = 1\nmap = \"(0,0)\"").unwrap(); + assert!( + build_layout_blob(&none, Some(3)).is_ok(), + "opting out of encoder positions is allowed" + ); + } - // Test parsing a keymap string with TD actions - let keymap = "A TD(0) B TD(1) C TD(255)"; - let result = KeyboardTomlConfig::keymap_parser(keymap, &aliases, &layer_names); + const CORNE_SPLIT: &str = r#" +rows = 4 +cols = 12 +default_variant = "corne42" +map = """ +(0,0,L,@cP) (0,1,L,@cR) (0,2,L,@cM) (0,3,L,@cI) (0,4,L,@cI) (0,5,L,@cX) [1.0] (0,6,R,@cX) (0,7,R,@cI) (0,8,R,@cI) (0,9,R,@cM) (0,10,R,@cR) (0,11,R,@cP) +(1,0,L,@cP) (1,1,L,@cR) (1,2,L,@cM) (1,3,L,@cI) (1,4,L,@cI) (1,5,L,@cX) [1.0] (1,6,R,@cX) (1,7,R,@cI) (1,8,R,@cI) (1,9,R,@cM) (1,10,R,@cR) (1,11,R,@cP) +(2,0,L,@cP) (2,1,L,@cR) (2,2,L,@cM) (2,3,L,@cI) (2,4,L,@cI) (2,5,L,@cX) [1.0] (2,6,R,@cX) (2,7,R,@cI) (2,8,R,@cI) (2,9,R,@cM) (2,10,R,@cR) (2,11,R,@cP) +[y=0.05] +[3.5] (3,3,L,@thumbL) (3,4,L) (3,5,L,@thumbR) [1.0] (3,6,R,@thumbL) (3,7,R) (3,8,R,@thumbR) +""" + +[shapes] +cP = { y = 0.55 } +cR = { y = 0.25 } +cM = { y = 0.0 } +cI = { y = 0.10 } +cX = { y = 0.25 } +thumbL = { r = 15.0 } +thumbR = { r = -15.0 } + +[[variant]] +name = "corne42" + +[[variant]] +name = "corne36" +hidden = ["(0,0)", "(1,0)", "(2,0)", "(0,11)", "(1,11)", "(2,11)"] +"#; - assert!(result.is_ok()); - let actions = result.unwrap(); - assert_eq!(actions, vec!["A", "TD(0)", "B", "TD(1)", "C", "TD(255)"]); + #[test] + fn rotation_region_swings_keys_about_the_pivot() { + // Rotation swings both keys onto the same vertical. + let info = info_of("rows = 1\ncols = 3\nmap = \"(0,0) [1.5] [r=90@(2.5,0)] (0,1) (0,2)\""); + let v = &info.variants[0]; + assert!(approx(key(v, 0, 0).rect.x, 0.5) && approx(key(v, 0, 0).r, 0.0)); + let k1 = key(v, 0, 1); + assert!( + approx(k1.rect.x, 2.0) && approx(k1.rect.y, 0.5) && approx(k1.r, 90.0), + "k1 ({}, {}, r={})", + k1.rect.x, + k1.rect.y, + k1.r + ); + let k2 = key(v, 0, 2); + assert!( + approx(k2.rect.x, 2.0) && approx(k2.rect.y, 1.5) && approx(k2.r, 90.0), + "k2 ({}, {}, r={})", + k2.rect.x, + k2.rect.y, + k2.r + ); } #[test] - fn test_macro_trigger_action_parsing() { - let aliases = std::collections::HashMap::new(); - let layer_names = std::collections::HashMap::new(); - - // Test parsing a keymap string with macro trigger actions - let keymap = "A Macro(0) B MACRO(1) C macro(255)"; - let result = KeyboardTomlConfig::keymap_parser(keymap, &aliases, &layer_names); + fn rotation_is_rigid_across_rows() { + // One region applies a rigid transform across rows. + let info = + info_of("rows = 2\ncols = 2\nmap = \"\"\"\n[3.5] [r=25@(3.5,0)] (0,0) (0,1)\n[3.5] (1,0) (1,1)\n\"\"\""); + let v = &info.variants[0]; + assert!(v.keys.iter().all(|k| approx(k.r, 25.0)), "all keys carry the angle"); + let d = |a: &Key, b: &Key| ((a.rect.x - b.rect.x).powi(2) + (a.rect.y - b.rect.y).powi(2)).sqrt(); + assert!(approx(d(key(v, 0, 0), key(v, 0, 1)), 1.0)); + assert!(approx(d(key(v, 0, 0), key(v, 1, 0)), 1.0)); + assert!(approx(d(key(v, 0, 0), key(v, 1, 1)), 2f32.sqrt())); + // Verify the actual rotated center. + let (sin, cos) = 25f32.to_radians().sin_cos(); + let k = key(v, 0, 0); + assert!( + approx(k.rect.x, 3.5 + 0.5 * cos - 0.5 * sin) && approx(k.rect.y, 0.5 * sin + 0.5 * cos), + "got ({}, {})", + k.rect.x, + k.rect.y + ); + } - assert!(result.is_ok()); - let actions = result.unwrap(); - assert_eq!(actions, vec!["A", "Macro(0)", "B", "MACRO(1)", "C", "macro(255)"]); + #[test] + fn rotation_zero_ends_the_region() { + // `[r=0]` returns to the flat cursor frame. + let info = info_of("rows = 1\ncols = 3\nmap = \"(0,0) [r=15@(1,0)] (0,1) [r=0] (0,2)\""); + let v = &info.variants[0]; + let k2 = key(v, 0, 2); + assert!(approx(k2.rect.x, 2.5) && approx(k2.rect.y, 0.5) && approx(k2.r, 0.0)); + // The reset also holds across lines. + let info = info_of("rows = 2\ncols = 1\nmap = \"\"\"\n[r=30@(0,0)] (0,0)\n[r=0] (1,0)\n\"\"\""); + let v = &info.variants[0]; + assert!(approx(key(v, 1, 0).rect.x, 0.5) && approx(key(v, 1, 0).rect.y, 1.5)); } #[test] - fn test_held_modifier_action_parsing() { - let aliases = HashMap::new(); - let layer_names = HashMap::new(); + fn rotation_composes_with_shape_r_and_swings_encoders() { + let toml = "rows = 1\ncols = 1\nmap = \"[r=15@(0,0)] (0,0,@tilt) (e,0)\"\n[shapes]\ntilt = { r = 10.0 }"; + let info = info_of(toml); + let v = &info.variants[0]; + // Region and shape angles add. + assert!(approx(key(v, 0, 0).r, 25.0), "r = {}", key(v, 0, 0).r); + // Encoder centers swing with the active region. + let (sin, cos) = 15f32.to_radians().sin_cos(); + let e = &v.encoders[0]; + assert!( + approx(e.x, 1.5 * cos - 0.5 * sin) && approx(e.y, 1.5 * sin + 0.5 * cos), + "knob ({}, {})", + e.x, + e.y + ); + } - let keymap = "MOD(LCtrl | LAlt | LGui) mod(RShift)"; - let result = KeyboardTomlConfig::keymap_parser(keymap, &aliases, &layer_names); + #[test] + fn rotation_without_pivot_is_rejected() { + let cfg: LayoutTomlConfig = toml::from_str("rows = 1\ncols = 1\nmap = \"[r=15] (0,0)\"").unwrap(); + let err = build_layout_info(&cfg, None).unwrap_err(); + assert!(err.contains("pivot"), "{err}"); + } - assert_eq!(result.unwrap(), vec!["MOD(LCtrl | LAlt | LGui)", "mod(RShift)"]); + #[test] + fn hidden_keys_reflow_inside_a_rotation_region() { + // Hidden-key reflow happens before rotation. + let toml = "rows = 1\ncols = 2\nmap = \"[1.0] [r=20@(1,0)] (0,0) (0,1)\"\n[[variant]]\nname = \"full\"\n[[variant]]\nname = \"mini\"\nhidden = [\"(0,0)\"]"; + let info = info_of(toml); + let full = info.variants.iter().find(|v| v.name == "full").unwrap(); + let mini = info.variants.iter().find(|v| v.name == "mini").unwrap(); + let (a, b) = (&key(full, 0, 0).rect, &key(mini, 0, 1).rect); + assert!( + approx(a.x, b.x) && approx(a.y, b.y), + "({}, {}) vs ({}, {})", + a.x, + a.y, + b.x, + b.y + ); } #[test] - fn test_morse_action_grammar() { - // Test that TD actions are parsed correctly by the grammar - let test_cases = vec![ - ("TD(0)", Rule::morse_action), - ("TD(1)", Rule::morse_action), - ("TD(255)", Rule::morse_action), - ("td(0)", Rule::morse_action), // Case insensitive - ("td(1)", Rule::morse_action), - ("MORSE(0)", Rule::morse_action), - ("MORSE(1)", Rule::morse_action), - ("MORSE(255)", Rule::morse_action), - ("Morse(0)", Rule::morse_action), // Case insensitive - ("morse(1)", Rule::morse_action), - ]; - - for (input, expected_rule) in test_cases { - let result = ConfigParser::parse(Rule::key_map, input); - assert!(result.is_ok(), "Failed to parse: {}", input); - - let mut found_rule = None; - for pair in result.unwrap() { - if pair.as_rule() == Rule::key_map { - for inner_pair in pair.into_inner() { - match inner_pair.as_rule() { - Rule::morse_action => { - found_rule = Some(inner_pair.as_rule()); - } - _ => {} - } - } - } - } + fn y_step_shifts_every_row_below() { + // Baseline shifts accumulate below `[y=1]`. + let info = info_of("rows = 3\ncols = 1\nmap = \"\"\"\n(0,0)\n[y=1]\n(1,0)\n(2,0)\n\"\"\""); + let v = &info.variants[0]; + // Stored y is the key center. + assert!(approx(key(v, 0, 0).rect.y, 0.5)); // top 0 + assert!(approx(key(v, 1, 0).rect.y, 2.5)); // top 2 (= 1 + 1 shift) + assert!(approx(key(v, 2, 0).rect.y, 3.5)); // top 3 (= 2 + 1 shift) + } - assert_eq!( - found_rule, - Some(expected_rule), - "Input: {} should be parsed as {:?}", - input, - expected_rule - ); + #[test] + fn blob_sizes_stay_firmware_friendly() { + for (name, toml) in [ + ("60% ANSI/ISO/split-bs", ANSI_ISO_60), + ("Corne split (42/36)", CORNE_SPLIT), + ] { + let cfg: LayoutTomlConfig = toml::from_str(toml).unwrap(); + let compressed = build_layout_blob(&cfg, None).unwrap().len(); + assert!(compressed < 2048, "{name} blob {compressed} B exceeds 2 KB"); } } #[test] - fn test_macro_grammar() { - // Test that macro actions are parsed correctly by the grammar - let test_cases = vec![ - ("Macro(0)", Rule::trigger_macro_action), - ("Macro(1)", Rule::trigger_macro_action), - ("Macro(255)", Rule::trigger_macro_action), - ("MACRO(0)", Rule::trigger_macro_action), // Case insensitive - ("MACRO(1)", Rule::trigger_macro_action), - ("macro(0)", Rule::trigger_macro_action), // Case insensitive - ("macro(1)", Rule::trigger_macro_action), - ("macro(255)", Rule::trigger_macro_action), - ]; - - for (input, expected_rule) in test_cases { - let result = ConfigParser::parse(Rule::key_map, input); - assert!(result.is_ok(), "Failed to parse: {}", input); - - let mut found_rule = None; - for pair in result.unwrap() { - if pair.as_rule() == Rule::key_map { - for inner_pair in pair.into_inner() { - match inner_pair.as_rule() { - Rule::trigger_macro_action => { - found_rule = Some(inner_pair.as_rule()); - } - _ => {} - } - } - } - } - - assert_eq!( - found_rule, - Some(expected_rule), - "Input: {} should be parsed as {:?}", - input, - expected_rule - ); - } + fn corne_worked_example() { + // Cover nudge, split gap, and thumb rotation in one fixture. + let toml = r#" +rows = 4 +cols = 12 +map = """ +(0,0,L,@cP) (0,1,L,@cR) (0,2,L,@cM) (0,3,L,@cI) (0,4,L,@cI) (0,5,L,@cX) [1.0] (0,6,R,@cX) (0,7,R,@cI) (0,8,R,@cI) (0,9,R,@cM) (0,10,R,@cR) (0,11,R,@cP) +(1,0,L,@cP) (1,1,L,@cR) (1,2,L,@cM) (1,3,L,@cI) (1,4,L,@cI) (1,5,L,@cX) [1.0] (1,6,R,@cX) (1,7,R,@cI) (1,8,R,@cI) (1,9,R,@cM) (1,10,R,@cR) (1,11,R,@cP) +(2,0,L,@cP) (2,1,L,@cR) (2,2,L,@cM) (2,3,L,@cI) (2,4,L,@cI) (2,5,L,@cX) [1.0] (2,6,R,@cX) (2,7,R,@cI) (2,8,R,@cI) (2,9,R,@cM) (2,10,R,@cR) (2,11,R,@cP) +[y=0.05] +[3.5] (3,3,L,@thumbL) (3,4,L) (3,5,L,@thumbR) [1.0] (3,6,R,@thumbL) (3,7,R) (3,8,R,@thumbR) +""" + +[shapes] +cP = { y = 0.55 } +cR = { y = 0.25 } +cM = { y = 0.0 } +cI = { y = 0.10 } +cX = { y = 0.25 } +thumbL = { r = 15.0 } +thumbR = { r = -15.0 } +"#; + let info = info_of(toml); + let v = &info.variants[0]; + // Shape nudge affects the center. + let k00 = key(v, 0, 0); + assert!( + approx(k00.rect.x, 0.5) && approx(k00.rect.y, 1.05), + "got ({}, {})", + k00.rect.x, + k00.rect.y + ); + // The split gap moves the right half. + assert!(approx(key(v, 0, 6).rect.x, 7.5), "right half x"); + // Thumb shape carries its angle. + let t = key(v, 3, 3); + assert!( + approx(t.rect.x, 4.0) && approx(t.rect.y, 3.55), + "thumb ({}, {})", + t.rect.x, + t.rect.y + ); + assert!(approx(t.r, 15.0)); + // 36 grid keys plus 6 thumbs. + assert_eq!(v.keys.len(), 42); } #[test] - fn test_nested_actions_in_tap_hold_slots() { - let aliases = HashMap::new(); - let layer_names = HashMap::new(); - - // Single-action forms can appear in the tap/hold slots of - // MT/TH/LT and is forwarded verbatim for the proc-macro to expand. - let keymap = "MT(WM(P, RAlt), LShift, HRM) TH(WM(A, LShift), MO(2)) LT(1, MOD(LCtrl | LGui))"; - let result = KeyboardTomlConfig::keymap_parser(keymap, &aliases, &layer_names); - - assert!(result.is_ok(), "{:?}", result); - assert_eq!( - result.unwrap(), - vec![ - "MT(WM(P, RAlt), LShift, HRM)", - "TH(WM(A, LShift), MO(2))", - "LT(1, MOD(LCtrl | LGui))", - ] + fn iso_variant_reflows_to_match_ansi() { + // ANSI and ISO should keep the first alpha aligned. + let toml = r#" +rows = 4 +cols = 16 +map = """ +(3,0,@2.25u) (3,14,@isokey) (3,1) (3,2) +""" + +[shapes] +isokey = { w = 1.0 } +lsft_iso = { w = 1.25 } + +[[variant]] +name = "ansi" +hidden = ["(3,14)"] + +[[variant]] +name = "iso" +shapes = { "(3,0)" = "@lsft_iso" } +"#; + let info = info_of(toml); + let ansi = &info.variants[0]; + let iso = &info.variants[1]; + // First alpha key aligns across variants. + assert!( + approx(key(ansi, 3, 1).rect.x, key(iso, 3, 1).rect.x), + "ansi {} vs iso {}", + key(ansi, 3, 1).rect.x, + key(iso, 3, 1).rect.x ); + // ISO-only key visibility differs by variant. + assert!(ansi.keys.iter().all(|k| !(k.row == 3 && k.col == 14))); + assert!(iso.keys.iter().any(|k| k.row == 3 && k.col == 14)); } #[test] - fn test_layer_name_resolution_nested() { - let aliases = HashMap::new(); - let mut layer_names = HashMap::new(); - layer_names.insert("nav".to_string(), 3u32); + fn blob_round_trips_through_compression() { + let info = info_of("rows = 1\ncols = 2\nmap = \"(0,0,@iso_enter) (0,1)\""); + let bytes = postcard::to_allocvec(&info).unwrap(); + let compressed = miniz_oxide::deflate::compress_to_vec(&bytes, 6); + let back = miniz_oxide::inflate::decompress_to_vec(&compressed).unwrap(); + let decoded: LayoutInfo = postcard::from_bytes(&back).unwrap(); + assert_eq!(decoded, info); + // ISO Enter carries a second rectangle. + assert!(decoded.variants[0].keys[0].rect2.is_some()); + } + + /// ANSI/ISO/split-bs 60%: one keymap, three render variants over the superset map. + const ANSI_ISO_60: &str = r#" +rows = 5 +cols = 16 +default_variant = "ansi" +map = """ +(0,0) (0,1) (0,2) (0,3) (0,4) (0,5) (0,6) (0,7) (0,8) (0,9) (0,10) (0,11) (0,12) (0,13,@bs) (0,14,@bsr) +(1,0,@tab) (1,1) (1,2) (1,3) (1,4) (1,5) (1,6) (1,7) (1,8) (1,9) (1,10) (1,11) (1,12) (1,13) +(2,0,@caps) (2,1) (2,2) (2,3) (2,4) (2,5) (2,6) (2,7) (2,8) (2,9) (2,10) (2,11) (2,12,@enter) +(3,0,@lsft) (3,14,@isokey) (3,1) (3,2) (3,3) (3,4) (3,5) (3,6) (3,7) (3,8) (3,9) (3,10) (3,11,@rsft) +(4,0,@mod) (4,1,@mod) (4,2,@mod) (4,3,@space) (4,9,@mod) (4,10,@mod) (4,11,@mod) (4,12,@mod) +""" + +[shapes] +bs = { w = 2.0 } +bsr = { w = 1.0 } +bsl = { w = 1.0 } +tab = { w = 1.5 } +caps = { w = 1.75 } +enter = { w = 2.25 } +isoenter = { w = 1.25, h = 2.0, y = -1.0, w2 = 1.5, h2 = 1.0, x2 = -0.125, y2 = -0.5 } +lsft = { w = 2.25 } +lsft_iso = { w = 1.25 } +isokey = { w = 1.0 } +rsft = { w = 2.75 } +mod = { w = 1.25 } +space = { w = 6.25 } + +[[variant]] +name = "ansi" +hidden = ["(3,14)", "(0,14)"] + +[[variant]] +name = "iso" +shapes = { "(2,12)" = "@isoenter", "(3,0)" = "@lsft_iso" } +hidden = ["(0,14)"] + +[[variant]] +name = "split-bs" +shapes = { "(0,13)" = "@bsl" } +hidden = ["(3,14)"] +"#; - // Layer names are resolved to indices even when nested inside a slot. - let keymap = "MO(nav) TH(A, MO(nav))"; - let result = KeyboardTomlConfig::keymap_parser(keymap, &aliases, &layer_names); + #[test] + fn multi_variant_60_percent() { + let info = info_of(ANSI_ISO_60); + // Three render variants over one superset. + assert_eq!(info.variants.len(), 3); + let names: Vec<_> = info.variants.iter().map(|v| v.name.as_str()).collect(); + assert_eq!(names, ["ansi", "iso", "split-bs"]); + assert_eq!(info.default_variant, 0); + + let ansi = &info.variants[0]; + let iso = &info.variants[1]; + let splitbs = &info.variants[2]; + + // Variant visibility changes without changing key identity. + let has = |v: &Variant, r, c| v.keys.iter().any(|k| k.row == r && k.col == c); + assert!(!has(ansi, 3, 14) && !has(ansi, 0, 14)); + assert!(has(iso, 3, 14) && !has(iso, 0, 14)); + assert!(has(splitbs, 0, 14) && !has(splitbs, 3, 14)); + + // ISO Enter is L-shaped only in the ISO variant. + assert!(key(iso, 2, 12).rect2.is_some()); + assert!(key(ansi, 2, 12).rect2.is_none()); + assert!(approx(key(iso, 3, 0).rect.w, 1.25)); // LShift shrank for the extra key + + // Reflow keeps the first alpha aligned. + assert!( + approx(key(ansi, 3, 1).rect.x, key(iso, 3, 1).rect.x), + "row-3 alpha must align: ansi {} vs iso {}", + key(ansi, 3, 1).rect.x, + key(iso, 3, 1).rect.x + ); - assert!(result.is_ok(), "{:?}", result); - assert_eq!(result.unwrap(), vec!["MO(3)", "TH(A, MO(3))"]); + // Row-width keys preserve the classic stagger. + assert!(key(ansi, 1, 1).rect.x > key(ansi, 0, 1).rect.x); + assert!(key(ansi, 2, 1).rect.x > key(ansi, 1, 1).rect.x); } #[test] - fn test_composite_actions_rejected_in_slots() { - // Tap-hold / morse forms are not single `Action`s, so they cannot nest - // inside a slot. The grammar must reject these. - let invalid_cases = ["MT(MT(A, LCtrl), LShift)", "TH(TD(0), B)", "MT(LT(1, A), LShift)"]; - - for input in invalid_cases { - let result = ConfigParser::parse(Rule::key_map, input); - assert!(result.is_err(), "Input should be rejected: {}", input); - } + fn multi_variant_60_blob_is_small() { + let cfg: LayoutTomlConfig = toml::from_str(ANSI_ISO_60).unwrap(); + let blob = build_layout_blob(&cfg, None).unwrap(); + // Keep the blob BLE-friendly. + assert!(!blob.is_empty() && blob.len() < 2048, "blob len = {}", blob.len()); + // The blob decodes back to the same layout. + let back = miniz_oxide::inflate::decompress_to_vec(&blob).unwrap(); + let decoded: LayoutInfo = postcard::from_bytes(&back).unwrap(); + assert_eq!(decoded, build_layout_info(&cfg, None).unwrap().unwrap()); + } + + #[test] + fn example_nrf52840_numpad_layout() { + // Mirror the shipped numpad example that uses stock shapes. + let toml = r#" +rows = 5 +cols = 4 +map = """ +(0,0) (0,1) (0,2) (0,3) +(1,0) (1,1) (1,2) (1,3,@2u_tall) +(2,0) (2,1) (2,2) +(3,0) (3,1) (3,2) (3,3,@2u_tall) + (4,0,@2u) (4,1) +""" +"#; + let info = info_of(toml); + let v = &info.variants[0]; + assert_eq!(v.keys.len(), 17); // 4 + 4 + 3 + 4 + 2 + // Plus and Enter are 2u tall. + assert!(approx(key(v, 1, 3).rect.h, 2.0) && approx(key(v, 1, 3).rect.y, 2.0)); + assert!(approx(key(v, 3, 3).rect.h, 2.0) && approx(key(v, 3, 3).rect.y, 4.0)); + // Zero is 2u wide; dot follows it. + assert!(approx(key(v, 4, 0).rect.w, 2.0) && approx(key(v, 4, 0).rect.x, 1.0)); + assert!(approx(key(v, 4, 1).rect.x, 2.5)); + } + + #[test] + fn split_corne_36_key_variant() { + // The 36-key view hides outer pinky columns only. + let info = info_of(CORNE_SPLIT); + assert_eq!(info.variants.len(), 2); + let full = &info.variants[0]; + let mini = &info.variants[1]; + assert_eq!(full.keys.len(), 42); // 36 grid + 6 thumbs + assert_eq!(mini.keys.len(), 36); // outer pinky columns hidden + + // The split gap separates the inner columns. + assert!(key(full, 0, 6).rect.x - key(full, 0, 5).rect.x > 1.5); + + // Hiding the left pinky reflows row 0 by 1u. + assert!(approx(key(full, 0, 1).rect.x - key(mini, 0, 1).rect.x, 1.0)); } } diff --git a/rmk-config/src/lib.rs b/rmk-config/src/lib.rs index e221fe6e4..bca451b5e 100644 --- a/rmk-config/src/lib.rs +++ b/rmk-config/src/lib.rs @@ -19,7 +19,9 @@ pub(crate) mod dfu; pub(crate) mod display; pub(crate) mod host; pub(crate) mod keycode_alias; +pub(crate) mod keymap; pub(crate) mod layout; +pub use layout::{STOCK_WIDTHS, layout_blob_from_toml}; pub(crate) mod light; pub(crate) mod storage; @@ -27,7 +29,7 @@ pub(crate) mod storage; /// /// These define the maximum values any firmware may use for protocol /// Vec capacities (`COMBO_SIZE`, `MORSE_SIZE`, etc.). The host tool compiles -/// against these as upper bounds. Any firmware with `rmk_protocol` enabled +/// against these as upper bounds. Any firmware with `rynk` enabled /// must satisfy `value <= ceiling` at compile time. /// /// Constant names mirror the generated constants with a `MAX_` prefix: @@ -39,12 +41,41 @@ pub mod protocol_limits { pub const MAX_MORSE_SIZE: usize = 32; /// Max bytes per macro data chunk — ceiling for `MACRO_DATA_SIZE` pub const MAX_MACRO_DATA_SIZE: usize = 256; - /// Max items per bulk transfer message — ceiling for `BULK_SIZE` - pub const MAX_BULK_SIZE: usize = 16; + /// Max key positions in an unlock challenge. + pub const MAX_UNLOCK_KEYS_SIZE: usize = 4; +} + +pub(crate) fn validate_unlock_keys( + section: &str, + unlock_keys: &[[u8; 2]], + layout: Option<&LayoutTomlConfig>, +) -> Result<(), String> { + if unlock_keys.len() > protocol_limits::MAX_UNLOCK_KEYS_SIZE { + return Err(format!( + "{section}.unlock_keys has {} entries, the max is {}", + unlock_keys.len(), + protocol_limits::MAX_UNLOCK_KEYS_SIZE + )); + } + + if let Some(layout) = layout { + for key in unlock_keys { + let (row, col) = (key[0], key[1]); + if row >= layout.rows || col >= layout.cols { + return Err(format!( + "{section}.unlock_keys position ({row}, {col}) is outside the {}x{} matrix", + layout.rows, layout.cols + )); + } + } + } + + Ok(()) } /// Configurations for RMK keyboard. #[derive(Clone, Debug, Deserialize)] +#[serde(deny_unknown_fields)] #[allow(unused)] pub struct KeyboardTomlConfig { /// Basic keyboard info @@ -53,10 +84,10 @@ pub struct KeyboardTomlConfig { matrix: Option, // Aliases for key maps aliases: Option>, - // Layers of key maps - layer: Option>, - /// Layout config. - /// For split keyboard, the total row/col should be defined in this section + /// Keymap config: layer count and the per-layer key actions (`[[keymap.layer]]`). + keymap: Option, + /// Layout config: the physical key arrangement (`map`) plus the rendered layout. + /// For split keyboards, the total row/col is defined in this section. layout: Option, /// Behavior config behavior: Option, @@ -135,7 +166,10 @@ impl KeyboardTomlConfig { // This allows user's keyboard.toml to omit [event] section. let user_config = Self::parse_from_toml_path(path, None); - let default_config_str = user_config.get_chip_model().unwrap().get_default_config_str().unwrap(); + let default_config_str = user_config + .get_chip_model() + .and_then(|chip| chip.get_default_config_str()) + .unwrap_or_else(|e| panic!("❌ keyboard.toml error: {e}")); // Second pass: load with all three config sources // Config priority (later sources override earlier ones): @@ -232,6 +266,10 @@ pub(crate) struct RmkConstantsConfig { #[serde_inline_default(8)] #[serde(deserialize_with = "check_morse_max_num")] pub morse_max_num: usize, + /// Capacity of the morse profile table (named profiles in `[behavior.morse.profiles]`) + #[serde_inline_default(16)] + #[serde(deserialize_with = "check_morse_profile_max_num")] + pub morse_profile_max_num: usize, /// Maximum number of patterns a morse key can handle #[serde_inline_default(8)] #[serde(deserialize_with = "check_max_patterns_per_key")] @@ -257,13 +295,9 @@ pub(crate) struct RmkConstantsConfig { /// The number of available BLE profiles #[serde_inline_default(3)] pub ble_profiles_num: usize, - /// BLE Split Central sleep timeout in minutes (0 = disabled) + /// BLE Split Central sleep timeout in seconds (0 = disabled) #[serde_inline_default(0)] pub split_central_sleep_timeout_seconds: u32, - /// Maximum number of key actions in a bulk keymap transfer (protocol). - /// Smaller values reduce firmware RAM usage but require more round-trips. - #[serde_inline_default(8)] - pub protocol_max_bulk_size: usize, /// Maximum macro data chunk size for protocol transfers (bytes). /// Smaller values reduce firmware RAM usage but require more round-trips. #[serde_inline_default(64)] @@ -271,6 +305,10 @@ pub(crate) struct RmkConstantsConfig { /// Maximum number of auto mouse layer entries; auto-derived from `[[behavior.auto_mouse_layer]]` if unset. #[serde(default)] pub auto_mouse_layer_max_num: Option, + /// Exact RAM of each Rynk RX/TX frame buffer (bytes), payload capacity and bulk counts derive from it. + /// Default 488 fills exactly two BLE notifications. + #[serde_inline_default(488)] + pub rynk_buffer_size: usize, } fn check_combo_max_num<'de, D>(deserializer: D) -> Result @@ -278,8 +316,10 @@ where D: de::Deserializer<'de>, { let value = Deserialize::deserialize(deserializer)?; - if value > 256 { - panic!("❌ Parse `keyboard.toml` error: combo_max_num must be between 0 and 256, got {value}"); + if value > u8::MAX as usize { + return Err(de::Error::custom(format!( + "combo_max_num must be between 0 and 255, got {value}" + ))); } Ok(value) } @@ -289,8 +329,24 @@ where D: de::Deserializer<'de>, { let value = Deserialize::deserialize(deserializer)?; - if value > 256 { - panic!("❌ Parse `keyboard.toml` error: morse_max_num must be between 0 and 256, got {value}"); + if value > u8::MAX as usize { + return Err(de::Error::custom(format!( + "morse_max_num must be between 0 and 255, got {value}" + ))); + } + Ok(value) +} + +/// The profile index is a `u8` in `KeyAction::TapHold` and an index with no +/// table entry means "use the default profile", so the table may never cover +/// the full `u8` range: capacity ≤ 255 keeps at least one index always vacant. +fn check_morse_profile_max_num<'de, D>(deserializer: D) -> Result +where + D: de::Deserializer<'de>, +{ + let value = Deserialize::deserialize(deserializer)?; + if value > 255 { + panic!("❌ Parse `keyboard.toml` error: morse_profile_max_num must be between 0 and 255, got {value}"); } Ok(value) } @@ -301,7 +357,9 @@ where { let value = Deserialize::deserialize(deserializer)?; if !(4..=65536).contains(&value) { - panic!("❌ Parse `keyboard.toml` error: max_patterns_per_key must be between 4 and 65536, got {value}"); + return Err(de::Error::custom(format!( + "max_patterns_per_key must be between 4 and 65536, got {value}" + ))); } Ok(value) } @@ -311,8 +369,10 @@ where D: de::Deserializer<'de>, { let value = Deserialize::deserialize(deserializer)?; - if value > 256 { - panic!("❌ Parse `keyboard.toml` error: fork_max_num must be between 0 and 256, got {value}"); + if value > u8::MAX as usize { + return Err(de::Error::custom(format!( + "fork_max_num must be between 0 and 255, got {value}" + ))); } Ok(value) } @@ -327,6 +387,7 @@ impl Default for RmkConstantsConfig { combo_max_length: 4, fork_max_num: 8, morse_max_num: 8, + morse_profile_max_num: 16, max_patterns_per_key: 8, macro_space_size: 256, debounce_time: 20, @@ -336,9 +397,9 @@ impl Default for RmkConstantsConfig { split_peripherals_num: 0, ble_profiles_num: 3, split_central_sleep_timeout_seconds: 0, - protocol_max_bulk_size: 8, protocol_macro_chunk_size: 64, auto_mouse_layer_max_num: None, + rynk_buffer_size: 488, } } } @@ -422,19 +483,64 @@ define_event_config!( action, ); -/// Configurations for keyboard layout +/// The `[layout]` section: the physical key arrangement plus the rendered layout. #[derive(Clone, Debug, Deserialize)] +#[serde(deny_unknown_fields)] #[allow(unused)] pub(crate) struct LayoutTomlConfig { pub rows: u8, pub cols: u8, - pub layers: u8, - pub keymap: Option>>>, // Will be deprecated in the future - pub matrix_map: Option, // Temporarily allow both matrix_map and keymap to be set - pub encoder_map: Option>>, // Will be deprecated together with keymap + /// The physical arrangement: an ordered map of `(row,col)` positions with + /// optional hand, shape (`@2u`), gaps (`[1.5]`), row-steps (`[y=]`), and + /// encoders (`(e,0)`). Its order also defines the order of `[[keymap.layer]]`. + pub map: Option, + // Rendered-layout fields. + pub default_variant: Option, + pub shapes: Option>, + pub variant: Option>, +} + +/// A named shape from `[layout.shapes]`. Every field optional; widths/ +/// heights default to 1u, nudges/rotation to 0, and `w2/h2/x2/y2` are an +/// optional second rectangle for L-shaped caps. +#[derive(Clone, Debug, Default, Deserialize)] +#[serde(deny_unknown_fields)] +pub(crate) struct ShapeToml { + pub w: Option, + pub h: Option, + pub x: Option, + pub y: Option, + pub r: Option, + pub w2: Option, + pub h2: Option, + pub x2: Option, + pub y2: Option, +} + +/// One `[[layout.variant]]` render overlay: reshape some keys, hide others. +#[derive(Clone, Debug, Deserialize)] +#[serde(deny_unknown_fields)] +pub(crate) struct VariantToml { + pub name: String, + pub shapes: Option>, + pub hidden: Option>, +} + +/// The `[keymap]` section: layer count plus the per-layer key actions. +#[derive(Clone, Debug, Default, Deserialize)] +#[serde(deny_unknown_fields)] +#[allow(unused)] +pub(crate) struct KeymapTomlConfig { + /// Total layer count. Optional — defaults to the number of `[[keymap.layer]]` + /// blocks; set it larger to reserve extra empty layers (e.g. for Vial/Rynk). + pub layers: Option, + /// Per-layer key actions: `[[keymap.layer]]`. + #[serde(default)] + pub layer: Vec, } #[derive(Clone, Debug, Deserialize)] +#[serde(deny_unknown_fields)] #[allow(unused)] pub(crate) struct LayerTomlConfig { pub name: Option, @@ -444,6 +550,7 @@ pub(crate) struct LayerTomlConfig { /// Configurations for keyboard info #[derive(Clone, Debug, Default, Deserialize)] +#[serde(deny_unknown_fields)] pub(crate) struct KeyboardInfo { /// Keyboard name pub name: String, @@ -474,7 +581,16 @@ pub enum MatrixType { DirectPin, } +#[derive(Clone, Copy, Debug, Default, Deserialize, PartialEq)] +#[serde(rename_all = "lowercase")] +pub enum DebouncerType { + #[default] + Default, + Fast, +} + #[derive(Clone, Debug, Default, Deserialize)] +#[serde(deny_unknown_fields)] pub struct MatrixConfig { #[serde(default)] pub matrix_type: MatrixType, @@ -485,7 +601,8 @@ pub struct MatrixConfig { pub direct_pin_low_active: bool, #[serde(default = "default_false")] pub row2col: bool, - pub debouncer: Option, + #[serde(default)] + pub debouncer: DebouncerType, pub bootmagic: Option<(u8, u8)>, } @@ -555,6 +672,15 @@ pub const DEFAULT_PASSKEY_ENTRY_TIMEOUT_SECS: u32 = 120; /// Minimum passkey entry timeout in seconds. pub const MIN_PASSKEY_ENTRY_TIMEOUT_SECS: u32 = 30; +/// nRF52840 DCDC REG0 output voltage +#[derive(Clone, Copy, Debug, Deserialize, PartialEq)] +pub enum DcdcReg0Voltage { + #[serde(rename = "3V3")] + V3_3, + #[serde(rename = "1V8")] + V1_8, +} + /// Config for chip-specific settings #[derive(Clone, Default, Debug, Deserialize)] #[serde(deny_unknown_fields)] @@ -564,8 +690,7 @@ pub struct ChipConfig { /// DCDC regulator 1 enabled (for nrf52840, nrf52833) pub dcdc_reg1: Option, /// DCDC regulator 0 voltage (for nrf52840) - /// Values: "3V3" or "1V8" - pub dcdc_reg0_voltage: Option, + pub dcdc_reg0_voltage: Option, } /// Config for lights @@ -600,10 +725,9 @@ impl Default for DependencyConfig { } } -/// Configurations for keyboard layout -#[derive(Clone, Debug, Default, Deserialize)] -#[serde(deny_unknown_fields)] -pub(crate) struct LayoutConfig { +/// Intermediate resolved keymap grid (rows/cols/layers + per-layer actions). +/// Built once by `get_keymap_config` and unpacked into `Keymap`; never (de)serialized. +pub(crate) struct KeymapConfig { pub rows: u8, pub cols: u8, pub layers: u8, @@ -665,6 +789,7 @@ pub(crate) struct AutoMouseLayerConfig { /// Per Key configurations profiles for morse, tap-hold, etc. /// overrides the defaults given in TapHoldConfig #[derive(Clone, Debug, Deserialize, Default)] +#[serde(deny_unknown_fields)] pub(crate) struct MorseProfile { pub enable_flow_tap: Option, @@ -722,6 +847,7 @@ pub(crate) struct CombosConfig { /// Configurations for combo #[derive(Clone, Debug, Deserialize)] +#[serde(deny_unknown_fields)] pub(crate) struct ComboConfig { pub actions: Vec, pub output: String, @@ -737,6 +863,7 @@ pub(crate) struct MacrosConfig { /// Configurations for macro #[derive(Clone, Debug, Deserialize)] +#[serde(deny_unknown_fields)] pub(crate) struct MacroConfig { pub operations: Vec, } @@ -831,18 +958,29 @@ pub(crate) struct MorseActionPair { pub action: String, // "B" } +/// Split connection transport +#[derive(Clone, Copy, Debug, Default, Deserialize, PartialEq)] +#[serde(rename_all = "lowercase")] +pub enum SplitConnection { + #[default] + Ble, + Serial, +} + /// Configurations for split keyboards #[derive(Clone, Debug, Default, Deserialize)] #[serde(deny_unknown_fields)] pub struct SplitConfig { - pub connection: String, + pub connection: SplitConnection, pub central: SplitBoardConfig, pub peripheral: Vec, } /// Configurations for each split board /// -/// Either ble_addr or serial must be set, but not both. +/// The transport field must match `split.connection`: `serial` is required for +/// serial splits and forbidden for BLE splits; `ble_addr` is optional for BLE +/// splits (dongle setups omit it) and forbidden for serial splits. #[derive(Clone, Debug, Default, Deserialize)] #[serde(deny_unknown_fields)] pub struct SplitBoardConfig { @@ -884,6 +1022,7 @@ pub struct SplitBoardConfig { /// Serial port config #[derive(Clone, Debug, Default, Deserialize)] +#[serde(deny_unknown_fields)] pub struct SerialConfig { pub instance: String, pub tx_pin: String, @@ -933,20 +1072,32 @@ pub(crate) struct HostConfig { /// Whether Vial is enabled #[serde_inline_default(true)] pub vial_enabled: bool, - /// Unlock keys for Vial (optional) + /// Whether the RMK-native Rynk protocol is enabled. Mutually exclusive + /// with `vial_enabled` (the underlying Cargo features conflict). + #[serde_inline_default(false)] + pub rynk_enabled: bool, + /// Physical keys (row, col) held simultaneously to unlock (optional). + /// Shared by the Vial lock and the Rynk lock gate. pub unlock_keys: Option>, - /// Start Vial unlocked, bypassing the unlock-key combo (default: false). - /// Only has effect with the `vial_lock` feature. + /// Start (and stay) unlocked, bypassing the unlock-key combo (default: + /// false). Renamed from `vial_insecure`; the old name still parses. + #[serde(alias = "vial_insecure")] #[serde_inline_default(false)] - pub vial_insecure: bool, + pub insecure: bool, + /// Move the Rynk config-write tier (`SetKeyAction`, `SetMacro`, …) into the + /// locked set, so writes also require unlock (default: false). + #[serde_inline_default(false)] + pub write_requires_unlock: bool, } impl Default for HostConfig { fn default() -> Self { Self { vial_enabled: true, + rynk_enabled: false, unlock_keys: None, - vial_insecure: false, + insecure: false, + write_requires_unlock: false, } } } @@ -1113,10 +1264,12 @@ pub struct EncoderConfig { // Phase is the working mode of the rotary encoders. // Available mode: // - default: resolution = 1 + // - e8h7: phase table tuned for E8H7 encoders // - resolution: customized resolution, the resolution value and reverse should be specified // A typical [EC11 encoder](https://tech.alpsalpine.com/cms.media/product_catalog_ec_01_ec11e_en_611f078659.pdf)'s resolution is 2 // In resolution mode, you can also specify the number of detent and pulses, the resolution will be calculated by `pulse * 4 / detent` - pub phase: Option, + #[serde(default)] + pub phase: EncoderPhase, // Resolution pub resolution: Option, // The number of detent @@ -1133,6 +1286,16 @@ pub struct EncoderConfig { pub debounce_ms: Option, } +/// Rotary encoder phase (decoding) mode +#[derive(Clone, Copy, Debug, Default, Deserialize, PartialEq)] +#[serde(rename_all = "lowercase")] +pub enum EncoderPhase { + #[default] + Default, + E8h7, + Resolution, +} + #[derive(Clone, Debug, Deserialize)] #[serde(deny_unknown_fields, untagged)] pub enum EncoderResolution { @@ -1162,6 +1325,7 @@ pub enum CommunicationProtocol { /// SPI config #[derive(Clone, Debug, Default, Deserialize)] +#[serde(deny_unknown_fields)] pub struct SpiConfig { pub instance: String, pub sck: String, @@ -1175,6 +1339,7 @@ pub struct SpiConfig { /// I2C config #[derive(Clone, Debug, Default, Deserialize)] +#[serde(deny_unknown_fields)] pub struct I2cConfig { pub instance: String, pub sda: String, @@ -1304,6 +1469,32 @@ channel_size = 32 assert_eq!(config.event.layer_change.subs, 1); } + #[test] + fn rmk_count_limits_fit_u8_capability_fields() { + let ok: KeyboardTomlConfig = toml::from_str( + r#" +[rmk] +combo_max_num = 255 +morse_max_num = 255 +fork_max_num = 255 +"#, + ) + .unwrap(); + assert_eq!(ok.rmk.combo_max_num, 255); + assert_eq!(ok.rmk.morse_max_num, 255); + assert_eq!(ok.rmk.fork_max_num, 255); + + for (field, message) in [ + ("combo_max_num", "combo_max_num must be between 0 and 255"), + ("morse_max_num", "morse_max_num must be between 0 and 255"), + ("fork_max_num", "fork_max_num must be between 0 and 255"), + ] { + let toml = format!("[rmk]\n{field} = 256\n"); + let err = toml::from_str::(&toml).unwrap_err(); + assert!(err.to_string().contains(message), "{err}"); + } + } + #[test] fn test_event_config_partial_override_with_event_defaults_loader() { let user_toml = r#" diff --git a/rmk-config/src/resolved/behavior.rs b/rmk-config/src/resolved/behavior.rs index f3ee52b82..5f57221d2 100644 --- a/rmk-config/src/resolved/behavior.rs +++ b/rmk-config/src/resolved/behavior.rs @@ -225,6 +225,18 @@ impl crate::KeyboardTomlConfig { } }); + // Named profiles are interned into the fixed-capacity morse profile + // table; overflowing it would silently drop profiles at runtime. + if let Some(m) = &morse + && m.profiles.len() > self.rmk.morse_profile_max_num + { + return Err(format!( + "behavior.morse.profiles defines {} profiles, but `[rmk] morse_profile_max_num` is {}. Raise it in keyboard.toml", + m.profiles.len(), + self.rmk.morse_profile_max_num + )); + } + let auto_mouse_layer = toml_behavior .auto_mouse_layer .unwrap_or_default() @@ -291,12 +303,13 @@ mod tests { [layout] rows = 1 cols = 1 +map = "(0,0)" + +[keymap] layers = 1 -keymap = [ - [ - ["A"], - ], -] + +[[keymap.layer]] +keys = "A" [behavior.morse] enable_flow_tap = true @@ -326,4 +339,46 @@ hold_timeout = "200ms" assert_eq!(morse.profiles["flow_off"].enable_flow_tap, Some(false)); assert_eq!(morse.profiles["inherit"].enable_flow_tap, None); } + + #[test] + fn morse_profiles_overflowing_morse_profile_max_num_is_an_error() { + let toml = r#" +[rmk] +morse_profile_max_num = 1 + +[layout] +rows = 1 +cols = 1 +map = "(0,0)" + +[keymap] +layers = 1 + +[[keymap.layer]] +keys = "A" + +[behavior.morse.profiles.p1] +hold_timeout = "200ms" + +[behavior.morse.profiles.p2] +hold_timeout = "300ms" +"#; + + let unique = SystemTime::now().duration_since(UNIX_EPOCH).unwrap().as_nanos(); + let path = std::env::temp_dir().join(format!( + "rmk-config-profile-overflow-{}-{}.toml", + std::process::id(), + unique + )); + + fs::write(&path, toml).unwrap(); + let config = KeyboardTomlConfig::new_from_toml_path_with_event_defaults(&path); + let _ = fs::remove_file(&path); + + let err = match config.behavior() { + Ok(_) => panic!("expected the profile-overflow error"), + Err(e) => e, + }; + assert!(err.contains("morse_profile_max_num"), "unexpected error: {err}"); + } } diff --git a/rmk-config/src/resolved/build_constants.rs b/rmk-config/src/resolved/build_constants.rs index 21a8b96f5..7c4ef3f54 100644 --- a/rmk-config/src/resolved/build_constants.rs +++ b/rmk-config/src/resolved/build_constants.rs @@ -35,6 +35,7 @@ pub struct BuildConstants { pub combo_max_length: usize, pub fork_max_num: usize, pub morse_max_num: usize, + pub morse_profile_max_num: usize, pub max_patterns_per_key: usize, pub macro_space_size: usize, pub debounce_time: u16, @@ -46,9 +47,10 @@ pub struct BuildConstants { pub split_peripherals_num: usize, pub ble_profiles_num: usize, pub split_central_sleep_timeout_seconds: u32, - pub protocol_max_bulk_size: usize, pub protocol_macro_chunk_size: usize, pub auto_mouse_layer_max_num: usize, + /// Rynk RX/TX buffer size (bytes). + pub rynk_buffer_size: usize, pub events: Vec, pub passkey: Option, } @@ -149,14 +151,6 @@ impl crate::KeyboardTomlConfig { protocol_limits::MAX_MACRO_DATA_SIZE )); } - if rmk.protocol_max_bulk_size > protocol_limits::MAX_BULK_SIZE { - return Err(format!( - "protocol_max_bulk_size ({}) exceeds protocol ceiling MAX_BULK_SIZE ({})", - rmk.protocol_max_bulk_size, - protocol_limits::MAX_BULK_SIZE - )); - } - let auto_mouse_layer_max_num = rmk .auto_mouse_layer_max_num .unwrap_or(crate::resolved::behavior::DEFAULT_AUTO_MOUSE_LAYER_MAX_NUM); @@ -178,11 +172,19 @@ impl crate::KeyboardTomlConfig { } } + // Host capability fields are u8/u16 on the wire; check the values no deserializer bound + // covers (morse_max_num and split_peripherals_num can also be auto-raised past 255). + validate_u8_capability("morse_max_num", rmk.morse_max_num)?; + validate_u8_capability("split_peripherals_num", split_peripherals_num)?; + validate_u8_capability("ble_profiles_num", rmk.ble_profiles_num)?; + validate_u16_capability("macro_space_size", rmk.macro_space_size)?; + validate_u16_capability("rynk_buffer_size", rmk.rynk_buffer_size)?; Ok(BuildConstants { combo_max_num: rmk.combo_max_num, combo_max_length: rmk.combo_max_length, fork_max_num: rmk.fork_max_num, morse_max_num: rmk.morse_max_num, + morse_profile_max_num: rmk.morse_profile_max_num, max_patterns_per_key: rmk.max_patterns_per_key, macro_space_size: rmk.macro_space_size, debounce_time: rmk.debounce_time, @@ -194,15 +196,33 @@ impl crate::KeyboardTomlConfig { split_peripherals_num, ble_profiles_num: rmk.ble_profiles_num, split_central_sleep_timeout_seconds: rmk.split_central_sleep_timeout_seconds, - protocol_max_bulk_size: rmk.protocol_max_bulk_size, protocol_macro_chunk_size: rmk.protocol_macro_chunk_size, auto_mouse_layer_max_num, + rynk_buffer_size: rmk.rynk_buffer_size, events, passkey, }) } } +fn validate_u8_capability(name: &str, value: usize) -> Result<(), String> { + if value > u8::MAX as usize { + return Err(format!( + "{name} ({value}) exceeds the u8 host capability field (max 255)" + )); + } + Ok(()) +} + +fn validate_u16_capability(name: &str, value: usize) -> Result<(), String> { + if value > u16::MAX as usize { + return Err(format!( + "{name} ({value}) exceeds the u16 host capability field (max 65535)" + )); + } + Ok(()) +} + /// Bump event subscriber counts based on feature flags declared in `subscriber_default.toml`. /// /// `active_features` contains lowercase feature names (e.g. `"split"`, `"_ble"`). @@ -241,8 +261,22 @@ fn resolve_passkey_enabled(ble: &crate::BleConfig) -> Result { #[cfg(test)] mod tests { - use super::{BuildConstants, resolve_passkey_enabled}; - use crate::{BleConfig, DEFAULT_PASSKEY_ENTRY_TIMEOUT_SECS, MIN_PASSKEY_ENTRY_TIMEOUT_SECS}; + use super::{BuildConstants, resolve_passkey_enabled, validate_u8_capability, validate_u16_capability}; + use crate::{BleConfig, DEFAULT_PASSKEY_ENTRY_TIMEOUT_SECS, KeyboardTomlConfig, MIN_PASSKEY_ENTRY_TIMEOUT_SECS}; + + #[test] + fn reserves_led_subscribers_for_display_split_and_dual_rynk_sessions() { + let config: KeyboardTomlConfig = toml::from_str("").unwrap(); + let constants = config.build_constants(&["display", "split", "rynk", "_ble"]).unwrap(); + let led_indicator = constants + .events + .iter() + .find(|event| event.name == "led_indicator") + .unwrap(); + + // Three indicator processors, the display, two split peripherals, and USB/BLE Rynk sessions. + assert_eq!(led_indicator.subs, 8); + } #[test] fn validates_passkey_timeout() { @@ -328,4 +362,19 @@ mod tests { ); } } + + #[test] + fn validates_capability_wire_widths() { + assert!(validate_u8_capability("ble_profiles_num", 255).is_ok()); + assert_eq!( + validate_u8_capability("ble_profiles_num", 256), + Err("ble_profiles_num (256) exceeds the u8 host capability field (max 255)".to_string()) + ); + + assert!(validate_u16_capability("macro_space_size", 65535).is_ok()); + assert_eq!( + validate_u16_capability("macro_space_size", 65536), + Err("macro_space_size (65536) exceeds the u16 host capability field (max 65535)".to_string()) + ); + } } diff --git a/rmk-config/src/resolved/hardware.rs b/rmk-config/src/resolved/hardware.rs index 1383692e7..d544834ef 100644 --- a/rmk-config/src/resolved/hardware.rs +++ b/rmk-config/src/resolved/hardware.rs @@ -3,10 +3,10 @@ //! Leaf types are re-exported directly from the TOML configuration types //! Only types with genuine structural transformation are defined here. -// Re-export leaf types from TOML config (now properly named and `pub`) pub use crate::board::{BoardConfig, UniBodyConfig}; pub use crate::chip::{ChipModel, ChipSeries}; pub use crate::communication::{CommunicationConfig, UsbInfo}; +use crate::validate_unlock_keys; pub use crate::{ BleConfig, ChipConfig, CommunicationProtocol, DependencyConfig, DisplayConfig, DisplayDriver, EncoderConfig, EncoderResolution, I2cConfig, InputDeviceConfig, Iqs5xxConfig, Iqs5xxI2cConfig, JoystickConfig, KeyInfo, @@ -78,6 +78,9 @@ impl crate::KeyboardTomlConfig { ); } + let unlock_keys = d.unlock_keys.clone().unwrap_or_default(); + validate_unlock_keys("[dfu]", &unlock_keys, self.layout.as_ref())?; + if all_set { ( Some(DfuConfig { @@ -87,7 +90,7 @@ impl crate::KeyboardTomlConfig { dfu_size: d.dfu_size.unwrap(), page_size: d.page_size.unwrap_or(4096), led: d.led.clone().map(|pin| PinConfig { pin, low_active: false }), - unlock_keys: d.unlock_keys.clone().unwrap_or_default(), + unlock_keys, }), false, ) @@ -109,7 +112,7 @@ impl crate::KeyboardTomlConfig { dfu_size: active_size + page_size, page_size, led: d.led.clone().map(|pin| PinConfig { pin, low_active: false }), - unlock_keys: d.unlock_keys.clone().unwrap_or_default(), + unlock_keys, }), true, ) diff --git a/rmk-config/src/resolved/host.rs b/rmk-config/src/resolved/host.rs index 70e37c29a..7c7f35104 100644 --- a/rmk-config/src/resolved/host.rs +++ b/rmk-config/src/resolved/host.rs @@ -1,18 +1,29 @@ +use crate::validate_unlock_keys; + /// Resolved host-tool configuration. pub struct Host { pub vial_enabled: bool, + pub rynk_enabled: bool, pub unlock_keys: Vec<[u8; 2]>, - pub vial_insecure: bool, + pub insecure: bool, + pub write_requires_unlock: bool, } impl crate::KeyboardTomlConfig { /// Resolve host-tool configuration from TOML config. pub fn host(&self) -> Host { let host_toml = self.get_host_config(); + let unlock_keys = host_toml.unlock_keys.unwrap_or_default(); + + validate_unlock_keys("[host]", &unlock_keys, self.layout.as_ref()) + .unwrap_or_else(|err| panic!("❌ Parse `keyboard.toml` error: {err}")); + Host { vial_enabled: host_toml.vial_enabled, - unlock_keys: host_toml.unlock_keys.unwrap_or_default(), - vial_insecure: host_toml.vial_insecure, + rynk_enabled: host_toml.rynk_enabled, + unlock_keys, + insecure: host_toml.insecure, + write_requires_unlock: host_toml.write_requires_unlock, } } } diff --git a/rmk-config/src/resolved/keymap.rs b/rmk-config/src/resolved/keymap.rs new file mode 100644 index 000000000..b84f14efc --- /dev/null +++ b/rmk-config/src/resolved/keymap.rs @@ -0,0 +1,44 @@ +use crate::KeyInfo; + +/// Resolved keymap for keymap generation: layer count, per-layer actions, +/// encoder map, plus the matrix-derived per-key info and grid dimensions. +pub struct Keymap { + pub rows: u8, + pub cols: u8, + pub layers: u8, + pub keymap: Vec>>, + pub encoder_map: Vec>, + pub key_info: Vec>, + /// Total number of encoders on the board. + pub num_encoder: usize, +} + +impl crate::KeyboardTomlConfig { + /// Resolve the keymap configuration from TOML config. + pub fn keymap(&self) -> Result { + let (keymap_config, key_info) = self.get_keymap_config()?; + // Encoders may be spread across split halves; only the board-wide total is used downstream. + let num_encoder: usize = self.get_board_config()?.get_num_encoder().iter().sum(); + + // Encoder maps are all-or-none; partial lists would leave encoders dead. + for (i, encoders) in keymap_config.encoder_map.iter().enumerate() { + if !encoders.is_empty() && encoders.len() != num_encoder { + return Err(format!( + "keyboard.toml: [[keymap.layer]] #{i} lists {} encoders but the board has \ + {num_encoder} (configure all {num_encoder} or none)", + encoders.len() + )); + } + } + + Ok(Keymap { + rows: keymap_config.rows, + cols: keymap_config.cols, + layers: keymap_config.layers, + keymap: keymap_config.keymap, + encoder_map: keymap_config.encoder_map, + key_info, + num_encoder, + }) + } +} diff --git a/rmk-config/src/resolved/layout.rs b/rmk-config/src/resolved/layout.rs index afde7c20f..1a16aa563 100644 --- a/rmk-config/src/resolved/layout.rs +++ b/rmk-config/src/resolved/layout.rs @@ -1,29 +1,19 @@ -use crate::KeyInfo; - -/// Resolved layout configuration for keymap generation. +/// Resolved physical layout: the compressed, opaque blob the firmware streams +/// verbatim over `GetLayout`. Empty when there's no `[layout].map`. pub struct Layout { - pub rows: u8, - pub cols: u8, - pub layers: u8, - pub keymap: Vec>>, - pub encoder_map: Vec>, - pub key_info: Vec>, - pub encoder_counts: Vec, + pub blob: Vec, } impl crate::KeyboardTomlConfig { - /// Resolve layout configuration from TOML config. + /// Resolve the physical layout blob from the `[layout]` section. pub fn layout(&self) -> Result { - let (layout_config, key_info) = self.get_layout_config()?; - let board = self.get_board_config()?; - Ok(Layout { - rows: layout_config.rows, - cols: layout_config.cols, - layers: layout_config.layers, - keymap: layout_config.keymap, - encoder_map: layout_config.encoder_map, - key_info, - encoder_counts: board.get_num_encoder(), - }) + let blob = match &self.layout { + Some(l) => { + let encoder_counts = self.get_board_config()?.get_num_encoder(); + crate::layout::build_layout_blob(l, Some(encoder_counts.iter().sum()))? + } + None => Vec::new(), + }; + Ok(Layout { blob }) } } diff --git a/rmk-config/src/resolved/mod.rs b/rmk-config/src/resolved/mod.rs index abb23597c..e5957ded6 100644 --- a/rmk-config/src/resolved/mod.rs +++ b/rmk-config/src/resolved/mod.rs @@ -3,14 +3,15 @@ //! These types represent the final, validated, defaults-applied output of the //! 3-layer TOML merge (event defaults → chip defaults → user config). //! -//! There are six resolved entry points, each consumed at a different stage: +//! There are seven resolved entry points, each consumed at a different stage: //! //! - [`BuildConstants`] — compile-time constants emitted by `rmk-types/build.rs` //! - [`Identity`] — keyboard identity for USB descriptors and BLE advertising //! - [`Hardware`] — complete hardware config for proc-macro code generation //! - [`Host`] — host-tool configuration such as Vial support //! - [`Behavior`] — behavioral config (combos, macros, morse, forks, etc.) -//! - [`Layout`] — keymap and encoder layout for keymap generation +//! - [`Keymap`] — keymap and encoder data for keymap generation +//! - [`Layout`] — the physical layout blob streamed over `GetLayout` //! //! Consumers call resolution methods on [`KeyboardTomlConfig`](crate::KeyboardTomlConfig): //! - `.build_constants(active_features)` → `Result` @@ -18,6 +19,7 @@ //! - `.hardware()` → `Result` //! - `.host()` → `Host` //! - `.behavior()` → `Result` +//! - `.keymap()` → `Result` //! - `.layout()` → `Result` //! //! Supporting types stay namespaced under their module to avoid flattening the @@ -28,6 +30,7 @@ pub mod build_constants; pub mod hardware; pub mod host; pub mod identity; +pub mod keymap; pub mod layout; pub use behavior::Behavior; @@ -35,6 +38,7 @@ pub use build_constants::BuildConstants; pub use hardware::Hardware; pub use host::Host; pub use identity::Identity; +pub use keymap::Keymap; pub use layout::Layout; // Re-export constants used by codegen diff --git a/rmk-config/tests/keyboard_toml_validation.rs b/rmk-config/tests/keyboard_toml_validation.rs new file mode 100644 index 000000000..f4fa4f311 --- /dev/null +++ b/rmk-config/tests/keyboard_toml_validation.rs @@ -0,0 +1,226 @@ +//! Keyboard TOML validation through the same public config views +//! `#[rmk_keyboard]` consumes. Every bundled `use_config` example must parse +//! and resolve, which guards the whole authoring surface: +//! unknown keys anywhere trip `deny_unknown_fields`, a stale legacy +//! `keymap = [[[…]]]` is rejected, and a mis-sized `map` fails keymap +//! resolution. + +use std::path::Path; + +use rmk_config::KeyboardTomlConfig; + +const MINIMAL_KEYBOARD_TOML: &str = r#" +[keyboard] +name = "RMK Test" +vendor_id = 0x4c4b +product_id = 0x4643 +chip = "rp2040" + +[matrix] +row_pins = ["PIN_0", "PIN_1"] +col_pins = ["PIN_2", "PIN_3"] + +[layout] +rows = 2 +cols = 2 +"#; + +fn write_temp_keyboard_toml(name: &str, extra_toml: &str) -> std::path::PathBuf { + let path = std::env::temp_dir().join(format!( + "rmk-{name}-{}-{}.toml", + std::process::id(), + std::time::SystemTime::now() + .duration_since(std::time::UNIX_EPOCH) + .unwrap() + .as_nanos() + )); + std::fs::write(&path, format!("{MINIMAL_KEYBOARD_TOML}\n{extra_toml}")).unwrap(); + path +} + +fn panic_message(payload: Box) -> String { + payload + .downcast_ref::() + .map(String::as_str) + .or_else(|| payload.downcast_ref::<&str>().copied()) + .unwrap_or("") + .to_string() +} + +#[test] +fn all_use_config_examples_resolve() { + let root = Path::new(env!("CARGO_MANIFEST_DIR")).join("../examples/use_config"); + + let mut dirs: Vec<_> = std::fs::read_dir(&root) + .expect("read examples/use_config") + .map(|e| e.expect("dir entry").path()) + .filter(|p| p.join("keyboard.toml").exists()) + .collect(); + dirs.sort(); + + // `new_from_toml_path` panics on bad config, so collect per-example results + // to report every failure at once instead of aborting on the first. + std::panic::set_hook(Box::new(|_| {})); + let mut failures = Vec::new(); + for dir in dirs { + let name = dir.file_name().unwrap().to_string_lossy().to_string(); + let toml = dir.join("keyboard.toml"); + let outcome = std::panic::catch_unwind(|| { + let config = KeyboardTomlConfig::new_from_toml_path(&toml); + config.identity().unwrap_or_else(|e| panic!("identity(): {e}")); + config.hardware().unwrap_or_else(|e| panic!("hardware(): {e}")); + config.behavior().unwrap_or_else(|e| panic!("behavior(): {e}")); + config.keymap().unwrap_or_else(|e| panic!("keymap(): {e}")); + config.layout().unwrap_or_else(|e| panic!("layout(): {e}")); + config.host(); + }); + if let Err(payload) = outcome { + let msg = payload + .downcast_ref::() + .map(String::as_str) + .or_else(|| payload.downcast_ref::<&str>().copied()) + .unwrap_or(""); + failures.push(format!("{name}: {msg}")); + } + } + let _ = std::panic::take_hook(); + + assert!( + failures.is_empty(), + "examples failed to resolve:\n{}", + failures.join("\n") + ); +} + +#[test] +fn host_unlock_keys_reject_too_many_entries() { + let path = write_temp_keyboard_toml( + "host-unlock-too-many", + r#" +[host] +unlock_keys = [[0, 0], [0, 1], [1, 0], [1, 1], [0, 0]] +"#, + ); + let config = KeyboardTomlConfig::new_from_toml_path(&path); + + std::panic::set_hook(Box::new(|_| {})); + let result = std::panic::catch_unwind(|| config.host()); + let _ = std::panic::take_hook(); + std::fs::remove_file(path).ok(); + + let Err(payload) = result else { + panic!("host unlock_keys over max must panic"); + }; + let msg = panic_message(payload); + assert!( + msg.contains("[host].unlock_keys has 5 entries") && msg.contains("max is 4"), + "unexpected error: {msg}" + ); +} + +#[test] +fn dfu_unlock_keys_reject_too_many_entries() { + let path = write_temp_keyboard_toml( + "dfu-unlock-too-many", + r#" +[dfu] +unlock_keys = [[0, 0], [0, 1], [1, 0], [1, 1], [0, 0]] +"#, + ); + let config = KeyboardTomlConfig::new_from_toml_path(&path); + let result = config.hardware(); + std::fs::remove_file(path).ok(); + + let Err(msg) = result else { + panic!("dfu unlock_keys over max must fail hardware resolution"); + }; + assert!( + msg.contains("[dfu].unlock_keys has 5 entries") && msg.contains("max is 4"), + "unexpected error: {msg}" + ); +} + +#[test] +fn dfu_unlock_keys_reject_positions_outside_layout() { + let path = write_temp_keyboard_toml( + "dfu-unlock-outside-layout", + r#" +[dfu] +unlock_keys = [[0, 0], [2, 0]] +"#, + ); + let config = KeyboardTomlConfig::new_from_toml_path(&path); + let result = config.hardware(); + std::fs::remove_file(path).ok(); + + let Err(msg) = result else { + panic!("dfu unlock_keys outside layout must fail hardware resolution"); + }; + assert!( + msg.contains("[dfu].unlock_keys position (2, 0)") && msg.contains("outside the 2x2 matrix"), + "unexpected error: {msg}" + ); +} + +/// Unknown keys in the sections users edit most must be rejected, not +/// silently dropped (pre-fix they surfaced as a misleading "X is required" +/// error that never named the typo). +#[test] +fn unknown_keys_are_rejected() { + let cases = [ + ("top-level section typo", "[matirx]\nrow_pins = []\n", "matirx"), + ("[matrix] field typo", "[matrix]\nrow_pin = [\"P0_01\"]\n", "row_pin"), + ( + "[keyboard] field typo", + "[keyboard]\nname = \"x\"\nvendor_di = 1\n", + "vendor_di", + ), + ]; + + std::panic::set_hook(Box::new(|_| {})); + for (case, toml, typo) in cases { + let path = std::env::temp_dir().join(format!("rmk-deny-{}-{typo}.toml", std::process::id())); + std::fs::write(&path, toml).unwrap(); + let result = std::panic::catch_unwind(|| KeyboardTomlConfig::new_from_toml_path_with_event_defaults(&path)); + std::fs::remove_file(&path).ok(); + + let payload = result.err().unwrap_or_else(|| panic!("{case}: accepted silently")); + let msg = payload + .downcast_ref::() + .map(String::as_str) + .or_else(|| payload.downcast_ref::<&str>().copied()) + .unwrap_or(""); + assert!( + msg.contains("unknown field") && msg.contains(typo), + "{case}: error should name `{typo}`, got: {msg}" + ); + } + let _ = std::panic::take_hook(); +} + +#[test] +fn alias_keys_reject_delimiter_characters() { + let path = write_temp_keyboard_toml( + "alias-bad-key", + r#" +[aliases] +"bad(name" = "A" + +[keymap] + +[[keymap.layer]] +keys = "A A A A" +"#, + ); + let config = KeyboardTomlConfig::new_from_toml_path(&path); + let result = config.keymap(); + std::fs::remove_file(path).ok(); + + let Err(msg) = result else { + panic!("alias key with a delimiter must fail keymap resolution"); + }; + assert!( + msg.contains("bad(name") && msg.contains("must not contain"), + "unexpected error: {msg}" + ); +} diff --git a/rmk-macro/src/codegen/action_parser.rs b/rmk-macro/src/codegen/action_parser.rs index 8aa352c39..df6aea90c 100644 --- a/rmk-macro/src/codegen/action_parser.rs +++ b/rmk-macro/src/codegen/action_parser.rs @@ -451,16 +451,43 @@ pub(crate) fn parse_key( } } -/// Expand the optional trailing morse profile argument of a tap-hold action, -/// falling back to the const default when omitted. +/// Named profiles sorted by name, giving each a stable index into the runtime +/// morse profile table: a name at sorted position `i` is table index `i`. +pub(crate) fn sorted_profile_names( + profiles: &Option>, +) -> Vec { + match profiles { + Some(p) => { + let mut names: Vec = p.keys().cloned().collect(); + names.sort(); + names + } + None => Vec::new(), + } +} + +/// Expand the optional trailing profile argument of a tap-hold action into its +/// morse profile table index. When omitted, emit `u8::MAX`: an index with no +/// table entry falls back to the default profile at runtime (the table +/// capacity is validated to be ≤ 255, so `u8::MAX` is always vacant). fn morse_profile( profile_name: Option<&String>, profiles: &Option>, ) -> TokenStream2 { - match profile_name { - Some(name) => expand_profile_name(name, profiles), - None => quote! { ::rmk::types::morse::MorseProfile::const_default() }, - } + let Some(name) = profile_name else { + return quote! { ::core::primitive::u8::MAX }; + }; + let idx = match sorted_profile_names(profiles) + .iter() + .position(|n| n == name) + { + Some(pos) => pos as u8, + None => panic!( + "\n\u{274c} `{:?}` profile name is not found in behavior.morse.profiles", + name + ), + }; + quote! { #idx } } /// Parse the single layer-index argument of a call-form layer action, e.g. `MO(1)`. diff --git a/rmk-macro/src/codegen/behavior.rs b/rmk-macro/src/codegen/behavior.rs index d2ccbd9ba..429872e1c 100644 --- a/rmk-macro/src/codegen/behavior.rs +++ b/rmk-macro/src/codegen/behavior.rs @@ -9,7 +9,9 @@ use rmk_config::resolved::behavior::{ MorseProfile, OneShot, }; -use super::action_parser::{expand_profile, expand_profile_name, get_key_with_alias, parse_key}; +use super::action_parser::{ + expand_profile, expand_profile_name, get_key_with_alias, parse_key, sorted_profile_names, +}; fn expand_tri_layer(tri_layer: &Option<[u8; 3]>) -> proc_macro2::TokenStream { match tri_layer { @@ -118,11 +120,35 @@ fn expand_morse(morse: &Option) -> proc_macro2::TokenStream { }; let morses = expand_morses(&config.morses, &profiles_ref); + // Interned morse profile table, in the same sorted-name order used by + // `morse_profile` when it emits per-key indices. The pushes can't overflow: + // the profile count is validated against the capacity in `behavior()`. + let profile_names = sorted_profile_names(&profiles_ref); + let profiles_token = if profile_names.is_empty() { + quote! {} + } else { + let profile_tokens = profile_names.into_iter().map(|name| { + let profile = profiles_ref + .as_ref() + .and_then(|m| m.get(&name)) + .expect("name from same map"); + expand_profile(profile) + }); + quote! { + profiles: { + let mut v = ::rmk::heapless::Vec::new(); + #( let _ = v.push(#profile_tokens); )* + v + }, + } + }; + quote! { ::rmk::config::MorsesConfig { #enable_flow_tap_token #prior_idle_time_token default_profile: #default_profile, + #profiles_token #morses ..Default::default() } diff --git a/rmk-macro/src/codegen/chip/bind_interrupt.rs b/rmk-macro/src/codegen/chip/bind_interrupt.rs index e1f8686f5..f8cf93a8a 100644 --- a/rmk-macro/src/codegen/chip/bind_interrupt.rs +++ b/rmk-macro/src/codegen/chip/bind_interrupt.rs @@ -169,7 +169,7 @@ pub(crate) fn bind_interrupt_default(hardware: &Hardware, item_mod: &ItemMod) -> // nrf-sdc interrupt config let nrf_sdc_config = match &board { BoardConfig::Split(_) => { - let num_peri = board.get_num_periphreal() as u8; + let num_peri = board.get_num_peripheral() as u8; quote! { ::nrf_sdc::Builder::new()? .support_scan() diff --git a/rmk-macro/src/codegen/chip/chip_init.rs b/rmk-macro/src/codegen/chip/chip_init.rs index d450c8fdd..81c4808a7 100644 --- a/rmk-macro/src/codegen/chip/chip_init.rs +++ b/rmk-macro/src/codegen/chip/chip_init.rs @@ -1,6 +1,7 @@ use darling::FromMeta; use proc_macro2::TokenStream as TokenStream2; use quote::{ToTokens, quote}; +use rmk_config::DcdcReg0Voltage; use rmk_config::resolved::Hardware; use rmk_config::resolved::hardware::{BoardConfig, ChipModel, ChipSeries, CommunicationConfig}; use syn::{ItemFn, ItemMod}; @@ -48,7 +49,7 @@ pub(crate) fn expand_chip_init( pub(crate) fn chip_init_default(hardware: &Hardware, peripheral_id: Option) -> TokenStream2 { let chip = &hardware.chip; let communication = &hardware.communication; - let peri_num = hardware.board.get_num_periphreal(); + let peri_num = hardware.board.get_num_peripheral(); let set_io_capabilities = if peripheral_id.is_none() { quote! { if ::rmk::ble::passkey::passkey_entry_enabled() { @@ -68,16 +69,11 @@ pub(crate) fn chip_init_default(hardware: &Hardware, peripheral_id: Option quote! { ::embassy_nrf::config::Reg0Voltage::_3V3 }, - "1V8" => quote! { ::embassy_nrf::config::Reg0Voltage::_1V8 }, - _ => { - panic!( - "Invalid dcdc_reg0_voltage: {}. Must be \"3V3\" or \"1V8\"", - reg0_voltage_str - ); + let (reg0_voltage, reg0_voltage_str) = match chip_cfg.dcdc_reg0_voltage { + Some(DcdcReg0Voltage::V1_8) => { + (quote! { ::embassy_nrf::config::Reg0Voltage::_1V8 }, "1V8") } + _ => (quote! { ::embassy_nrf::config::Reg0Voltage::_3V3 }, "3V3"), }; quote! { config.dcdc.reg0_voltage = Some(#reg0_voltage); diff --git a/rmk-macro/src/codegen/entry.rs b/rmk-macro/src/codegen/entry.rs index 7c2685d79..c4f1a94e0 100644 --- a/rmk-macro/src/codegen/entry.rs +++ b/rmk-macro/src/codegen/entry.rs @@ -1,6 +1,7 @@ use darling::FromMeta; use proc_macro2::TokenStream as TokenStream2; use quote::{format_ident, quote}; +use rmk_config::SplitConnection; use rmk_config::resolved::hardware::{BoardConfig, CommunicationConfig}; use rmk_config::resolved::{Behavior, Hardware, Host}; use syn::{ItemFn, ItemMod}; @@ -101,14 +102,9 @@ pub(crate) fn rmk_entry_select( } }; - let host_service_task = if host.vial_enabled { - Some(quote! { host_service.run() }) - } else { - None - }; let board = &hardware.board; let communication = &hardware.communication; - let (transport_prelude, transport_tasks) = transport_setup(communication); + let (transport_prelude, transport_tasks) = transport_setup(host, communication); let entry = match board { BoardConfig::Split(split_config) => { @@ -117,98 +113,93 @@ pub(crate) fn rmk_entry_select( }; let mut tasks = vec![devices_task, keyboard_task]; tasks.extend(registered_processors); - if let Some(t) = host_service_task { - tasks.push(t); - } tasks.extend(transport_tasks); if let Some(t) = &watchdog_task { tasks.push(t.clone()); } - if split_config.connection == "ble" { - if !processors.is_empty() { - tasks.push(processors_task); - }; - split_config.peripheral.iter().enumerate().for_each(|(idx, p)| { - let row = p.rows; - let col = p.cols; - let row_offset = p.row_offset; - let col_offset = p.col_offset; - tasks.push(quote! { - ::rmk::split::central::run_peripheral_manager::<#row, #col, #row_offset, #col_offset, _>( - #idx, - &peripheral_addrs, - &stack, - ) + match split_config.connection { + SplitConnection::Ble => { + if !processors.is_empty() { + tasks.push(processors_task); + }; + split_config.peripheral.iter().enumerate().for_each(|(idx, p)| { + let row = p.rows; + let col = p.cols; + let row_offset = p.row_offset; + let col_offset = p.col_offset; + tasks.push(quote! { + ::rmk::split::central::run_peripheral_manager::<#row, #col, #row_offset, #col_offset, _>( + #idx, + &peripheral_addrs, + &stack, + ) + }); }); - }); - let scan_task = quote! { - ::rmk::split::ble::central::scan_peripherals(&stack, &peripheral_addrs) - }; - tasks.push(scan_task); - let joined = join_all_tasks(tasks); - quote! { - #transport_prelude - #auto_mouse_layer_prelude - #joined + let scan_task = quote! { + ::rmk::split::ble::central::scan_peripherals(&stack, &peripheral_addrs) + }; + tasks.push(scan_task); + let joined = join_all_tasks(tasks); + quote! { + #transport_prelude + #auto_mouse_layer_prelude + #joined + } } - } else if split_config.connection == "serial" { - if !processors.is_empty() { - tasks.push(processors_task); - }; - let central_serials = split_config - .central - .serial - .clone() - .expect("No serial defined for central"); - split_config.peripheral.iter().enumerate().for_each(|(idx, p)| { - let row = p.rows; - let col = p.cols; - let row_offset = p.row_offset; - let col_offset = p.col_offset; - let uart_instance = format_ident!( - "{}", - central_serials - .get(idx) - .expect("No or not enough serial defined for peripheral in central") - .instance - .to_lowercase() - ); - let rmk_features = get_rmk_features(); - let dfu_split_enabled = is_feature_enabled(&rmk_features, "dfu_split"); - let policy = if dfu_split_enabled { - match p.update_policy.as_deref() { - Some("force") => quote! { ::rmk::split::central::UpdatePolicy::Force }, - _ => quote! { ::rmk::split::central::UpdatePolicy::MatchHash }, - } - } else { - quote! {} + SplitConnection::Serial => { + if !processors.is_empty() { + tasks.push(processors_task); }; - tasks.push(quote! { - ::rmk::split::central::run_peripheral_manager::<#row, #col, #row_offset, #col_offset, _>( - #idx, - #uart_instance, - #policy - ) + let central_serials = split_config + .central + .serial + .clone() + .expect("No serial defined for central"); + split_config.peripheral.iter().enumerate().for_each(|(idx, p)| { + let row = p.rows; + let col = p.cols; + let row_offset = p.row_offset; + let col_offset = p.col_offset; + let uart_instance = format_ident!( + "{}", + central_serials + .get(idx) + .expect("No or not enough serial defined for peripheral in central") + .instance + .to_lowercase() + ); + let rmk_features = get_rmk_features(); + let dfu_split_enabled = is_feature_enabled(&rmk_features, "dfu_split"); + let policy = if dfu_split_enabled { + match p.update_policy.as_deref() { + Some("force") => quote! { ::rmk::split::central::UpdatePolicy::Force }, + _ => quote! { ::rmk::split::central::UpdatePolicy::MatchHash }, + } + } else { + quote! {} + }; + tasks.push(quote! { + ::rmk::split::central::run_peripheral_manager::<#row, #col, #row_offset, #col_offset, _>( + #idx, + #uart_instance, + #policy + ) + }); }); - }); - let joined = join_all_tasks(tasks); - quote! { - #transport_prelude - #auto_mouse_layer_prelude - #joined + + let joined = join_all_tasks(tasks); + quote! { + #transport_prelude + #auto_mouse_layer_prelude + #joined + } } - } else { - panic!( - "Invalid split connection type: {}, only \"ble\" and \"serial\" are supported", - split_config.connection - ); } } BoardConfig::UniBody(_) => rmk_entry_unibody( transport_prelude, auto_mouse_layer_prelude, transport_tasks, - host_service_task, devices_task, processors_task, registered_processors, @@ -227,7 +218,6 @@ pub(crate) fn rmk_entry_unibody( transport_prelude: TokenStream2, auto_mouse_layer_prelude: Option, transport_tasks: Vec, - host_service_task: Option, devices_task: TokenStream2, processors_task: TokenStream2, registered_processors: Vec, @@ -238,9 +228,6 @@ pub(crate) fn rmk_entry_unibody( }; let mut tasks = vec![devices_task, keyboard_task]; - if let Some(t) = host_service_task { - tasks.push(t); - } if !processors_task.is_empty() { tasks.push(processors_task); } @@ -261,31 +248,50 @@ pub(crate) fn rmk_entry_unibody( /// active communication config. The prelude must be emitted before the join so /// that `transport.run()` can borrow each transport for the lifetime of the /// program. -fn transport_setup(communication: &CommunicationConfig) -> (TokenStream2, Vec) { +fn transport_setup( + host: &Host, + communication: &CommunicationConfig, +) -> (TokenStream2, Vec) { let wpm_prelude = quote! { let mut wpm_processor = ::rmk::processor::builtin::wpm::WpmProcessor::new(); }; let wpm_task = quote! { wpm_processor.run() }; + + let host_active = host.vial_enabled || host.rynk_enabled; + + let with_host = if host_active { + quote! { .with_host_service(&host_service) } + } else { + quote! {} + }; + + let usb_prelude = quote! { + let mut usb_transport = ::rmk::usb::UsbTransport::new(driver, rmk_config.device_config)#with_host; + }; + let ble_prelude = quote! { + let mut ble_transport = ::rmk::ble::BleTransport::new(&stack, rmk_config).await #with_host; + }; + match communication { CommunicationConfig::Usb(_) => { let prelude = quote! { #wpm_prelude - let mut usb_transport = ::rmk::usb::UsbTransport::new(driver, rmk_config.device_config); + #usb_prelude }; (prelude, vec![quote! { usb_transport.run() }, wpm_task]) } CommunicationConfig::Ble(_) => { let prelude = quote! { #wpm_prelude - let mut ble_transport = ::rmk::ble::BleTransport::new(&stack, rmk_config).await; + #ble_prelude }; (prelude, vec![quote! { ble_transport.run() }, wpm_task]) } CommunicationConfig::Both(_, _) => { let prelude = quote! { #wpm_prelude - let mut usb_transport = ::rmk::usb::UsbTransport::new(driver, rmk_config.device_config); - let mut ble_transport = ::rmk::ble::BleTransport::new(&stack, rmk_config).await; + #usb_prelude + #ble_prelude }; ( prelude, diff --git a/rmk-macro/src/codegen/feature.rs b/rmk-macro/src/codegen/feature.rs index b663ec13c..fbee7e104 100644 --- a/rmk-macro/src/codegen/feature.rs +++ b/rmk-macro/src/codegen/feature.rs @@ -25,12 +25,14 @@ pub(crate) fn get_rmk_features() -> Option> { let mut feature_set = dep.req_features().to_vec(); - // Add default features to the feature list + // Add default features to the feature list. + // Must mirror `default = [...]` in rmk/Cargo.toml. if default_features { feature_set.push("defmt".to_string()); feature_set.push("storage".to_string()); feature_set.push("vial".to_string()); - feature_set.push("vial_lock".to_string()); + feature_set.push("host_lock".to_string()); + feature_set.push("watchdog".to_string()); } feature_set }), diff --git a/rmk-macro/src/codegen/input_device/encoder.rs b/rmk-macro/src/codegen/input_device/encoder.rs index 7acd205be..525823e11 100644 --- a/rmk-macro/src/codegen/input_device/encoder.rs +++ b/rmk-macro/src/codegen/input_device/encoder.rs @@ -1,4 +1,5 @@ use quote::{format_ident, quote}; +use rmk_config::EncoderPhase; use rmk_config::resolved::hardware::{ChipModel, EncoderConfig, EncoderResolution}; use super::Initializer; @@ -41,8 +42,8 @@ pub(crate) fn expand_encoder_device( }; // Create different types of encoders based on the phase field - let encoder_device = match encoder.phase.as_deref() { - Some("e8h7") => { + let encoder_device = match encoder.phase { + EncoderPhase::E8h7 => { quote! { let mut #encoder_name = ::rmk::input_device::rotary_encoder::RotaryEncoder::with_phase( #pin_a, @@ -52,7 +53,7 @@ pub(crate) fn expand_encoder_device( )#debounce_chain; } } - Some("resolution") => { + EncoderPhase::Resolution => { // When phase is "resolution", ensure resolution and reverse are set let resolution = match encoder.resolution.clone().expect( "`resolution` field needs to be set when the encoder's mode is 'resolution'", @@ -72,8 +73,7 @@ pub(crate) fn expand_encoder_device( )#debounce_chain; } } - Some("default") => { - // Default phase + EncoderPhase::Default => { quote! { let mut #encoder_name = ::rmk::input_device::rotary_encoder::RotaryEncoder::with_phase( #pin_a, @@ -83,9 +83,6 @@ pub(crate) fn expand_encoder_device( )#debounce_chain; } } - _ => { - panic!("Invalid rotary encoder phase, available phase: default, resolution, e8h7"); - } }; device_initializer.push(Initializer { diff --git a/rmk-macro/src/codegen/keyboard_config.rs b/rmk-macro/src/codegen/keyboard_config.rs index edef03d16..e134a252e 100644 --- a/rmk-macro/src/codegen/keyboard_config.rs +++ b/rmk-macro/src/codegen/keyboard_config.rs @@ -1,6 +1,6 @@ use quote::quote; use rmk_config::KeyboardTomlConfig; -use rmk_config::resolved::{Host, Identity, Layout}; +use rmk_config::resolved::{Host, Identity, Keymap}; pub(crate) fn read_keyboard_toml_config() -> KeyboardTomlConfig { // Get the path of the keyboard config file from the environment variable @@ -12,7 +12,7 @@ pub(crate) fn read_keyboard_toml_config() -> KeyboardTomlConfig { pub(crate) fn expand_keyboard_info( identity: &Identity, - layout: &Layout, + keymap: &Keymap, ) -> proc_macro2::TokenStream { let pid = identity.product_id; let vid = identity.vendor_id; @@ -23,11 +23,10 @@ pub(crate) fn expand_keyboard_info( None => quote! { ::rmk::config::RMK_BUILD_INFO }, }; - let num_col = layout.cols as usize; - let num_row = layout.rows as usize; - let num_layer = layout.layers as usize; - let num_encoder = &layout.encoder_counts; - let total_num_encoder: usize = num_encoder.iter().sum(); + let num_col = keymap.cols as usize; + let num_row = keymap.rows as usize; + let num_layer = keymap.layers as usize; + let total_num_encoder = keymap.num_encoder; quote! { pub(crate) const COL: usize = #num_col; pub(crate) const ROW: usize = #num_row; @@ -43,32 +42,48 @@ pub(crate) fn expand_keyboard_info( } } +/// The `[host].unlock_keys` list as a `&'static [(u8, u8)]` literal (empty when unset). +fn unlock_keys_tokens(host: &Host) -> proc_macro2::TokenStream { + if host.unlock_keys.is_empty() { + return quote! { &[] }; + } + let keys_expr = host.unlock_keys.iter().map(|key| { + let row = key[0]; + let col = key[1]; + quote! { (#row, #col) } + }); + quote! { &[#(#keys_expr),*] } +} + pub(crate) fn expand_vial_config(host: &Host) -> proc_macro2::TokenStream { if !host.vial_enabled { return quote! {}; } - let unlock_keys = if !host.unlock_keys.is_empty() { - let keys_expr = host - .unlock_keys - .iter() - .map(|key| { - let row = key[0]; - let col = key[1]; - quote! { (#row, #col) } - }) - .collect::>(); - quote! { &[#(#keys_expr), *] } - } else { - quote! { &[] } - }; - let vial_insecure = host.vial_insecure; + let unlock_keys = unlock_keys_tokens(host); + let insecure = host.insecure; quote! { include!(concat!(env!("OUT_DIR"), "/config_generated.rs")); const VIAL_CONFIG: ::rmk::config::VialConfig = ::rmk::config::VialConfig { vial_keyboard_id: &VIAL_KEYBOARD_ID, vial_keyboard_def: &VIAL_KEYBOARD_DEF, unlock_keys: #unlock_keys, - vial_insecure: #vial_insecure, + insecure: #insecure, + }; + } +} + +pub(crate) fn expand_lock_config(host: &Host) -> proc_macro2::TokenStream { + if !host.rynk_enabled { + return quote! {}; + } + let unlock_keys = unlock_keys_tokens(host); + let insecure = host.insecure; + let write_requires_unlock = host.write_requires_unlock; + quote! { + const LOCK_CONFIG: ::rmk::config::LockConfig = ::rmk::config::LockConfig { + unlock_keys: #unlock_keys, + insecure: #insecure, + write_requires_unlock: #write_requires_unlock, }; } } diff --git a/rmk-macro/src/codegen/layout.rs b/rmk-macro/src/codegen/keymap.rs similarity index 90% rename from rmk-macro/src/codegen/layout.rs rename to rmk-macro/src/codegen/keymap.rs index e6aba2e0b..c7afb40a8 100644 --- a/rmk-macro/src/codegen/layout.rs +++ b/rmk-macro/src/codegen/keymap.rs @@ -4,29 +4,29 @@ use std::collections::HashMap; use proc_macro2::TokenStream as TokenStream2; use quote::quote; use rmk_config::resolved::behavior::MorseProfile; -use rmk_config::resolved::{Behavior, Layout}; +use rmk_config::resolved::{Behavior, Keymap}; use super::action_parser::parse_key; /// Read the default keymap setting in `keyboard.toml` and add as a `get_default_keymap` function /// Also add `get_default_encoder_map` -pub(crate) fn expand_default_keymap(layout: &Layout, behavior: &Behavior) -> TokenStream2 { +pub(crate) fn expand_default_keymap(keymap: &Keymap, behavior: &Behavior) -> TokenStream2 { let profiles: Option> = behavior .morse .as_ref() .map(|m| m.profiles.clone()) .filter(|p| !p.is_empty()); - let num_encoder: usize = layout.encoder_counts.iter().sum(); + let num_encoder = keymap.num_encoder; let mut layers = vec![]; let mut encoder_map = vec![]; - for layer in &layout.keymap { + for layer in &keymap.keymap { layers.push(expand_layer(layer.clone(), &profiles)); } - for encoder_layer in &layout.encoder_map { + for encoder_layer in &keymap.encoder_map { encoder_map.push(expand_encoder_layer( encoder_layer.clone(), num_encoder, @@ -34,7 +34,7 @@ pub(crate) fn expand_default_keymap(layout: &Layout, behavior: &Behavior) -> Tok )); } encoder_map.resize( - layout.keymap.len(), + keymap.keymap.len(), quote! { [::rmk::encoder!(::rmk::k!(No), ::rmk::k!(No)); NUM_ENCODER] }, ); diff --git a/rmk-macro/src/codegen/mod.rs b/rmk-macro/src/codegen/mod.rs index 32249e147..c4a243a3d 100644 --- a/rmk-macro/src/codegen/mod.rs +++ b/rmk-macro/src/codegen/mod.rs @@ -7,7 +7,7 @@ pub(crate) mod feature; pub(crate) mod import; pub(crate) mod input_device; pub(crate) mod keyboard_config; -pub(crate) mod layout; +pub(crate) mod keymap; pub(crate) mod matrix; pub(crate) mod orchestrator; pub(crate) mod override_helper; diff --git a/rmk-macro/src/codegen/orchestrator.rs b/rmk-macro/src/codegen/orchestrator.rs index c71bd8f55..4476eb022 100644 --- a/rmk-macro/src/codegen/orchestrator.rs +++ b/rmk-macro/src/codegen/orchestrator.rs @@ -1,9 +1,10 @@ use proc_macro2::TokenStream as TokenStream2; use quote::quote; +use rmk_config::DebouncerType; use rmk_config::resolved::hardware::{ BoardConfig, ChipSeries, KeyInfo, MatrixConfig, MatrixType, UniBodyConfig, }; -use rmk_config::resolved::{Behavior, Hardware, Host, Identity, Layout}; +use rmk_config::resolved::{Behavior, Hardware, Host, Identity, Keymap, Layout}; use super::behavior::expand_behavior_config; use super::chip::bind_interrupt::expand_bind_interrupt; @@ -17,8 +18,10 @@ use super::entry::expand_rmk_entry; use super::feature::{get_rmk_features, is_feature_enabled}; use super::import::expand_custom_imports; use super::input_device::expand_input_device_config; -use super::keyboard_config::{expand_keyboard_info, expand_vial_config, read_keyboard_toml_config}; -use super::layout::expand_default_keymap; +use super::keyboard_config::{ + expand_keyboard_info, expand_lock_config, expand_vial_config, read_keyboard_toml_config, +}; +use super::keymap::expand_default_keymap; use super::matrix::{expand_bootmagic_check, expand_matrix_config}; use super::registered_processor::expand_registered_processor_init; use super::split::central::expand_split_central_config; @@ -41,27 +44,31 @@ pub(crate) fn parse_keyboard_mod(item_mod: syn::ItemMod) -> TokenStream2 { let behavior = keyboard_config .behavior() .expect("failed to resolve behavior config"); + let keymap = keyboard_config + .keymap() + .expect("failed to resolve keymap config"); let layout = keyboard_config .layout() .expect("failed to resolve layout config"); validate_feature_config_parity( + &rmk_features, hardware.storage.is_some(), - is_feature_enabled(&rmk_features, "storage"), host.vial_enabled, - is_feature_enabled(&rmk_features, "vial"), + host.rynk_enabled, ) .unwrap_or_else(|err| panic!("{err}")); // Generate imports and statics let imports_and_statics = - expand_imports_and_constants(&identity, &host, &hardware, &behavior, &layout); + expand_imports_and_constants(&identity, &host, &hardware, &behavior, &keymap); // Generate main function body let main_function = expand_main( &host, &hardware, &behavior, + &keymap, &layout, item_mod, &rmk_features, @@ -75,30 +82,35 @@ pub(crate) fn parse_keyboard_mod(item_mod: syn::ItemMod) -> TokenStream2 { } fn validate_feature_config_parity( - storage_enabled_in_config: bool, - storage_enabled_in_features: bool, - vial_enabled_in_config: bool, - vial_enabled_in_features: bool, -) -> Result<(), &'static str> { - if storage_enabled_in_config != storage_enabled_in_features { - if storage_enabled_in_config { - return Err( - "If the \"storage\" Cargo feature is disabled, `storage.enabled` must be set to false in keyboard.toml.", - ); + rmk_features: &Option>, + storage_in_config: bool, + vial_in_config: bool, + rynk_in_config: bool, +) -> Result<(), String> { + // A feature enabled in keyboard.toml must have its rmk Cargo feature enabled, and vice versa. + // (Cargo feature, keyboard.toml field, enabled in keyboard.toml?) + for (feature, config_field, in_config) in [ + ("storage", "storage.enabled", storage_in_config), + ("vial", "host.vial_enabled", vial_in_config), + ("rynk", "host.rynk_enabled", rynk_in_config), + ] { + if in_config == is_feature_enabled(rmk_features, feature) { + continue; } - return Err( - "`storage.enabled = false` in keyboard.toml requires disabling the \"storage\" Cargo feature for rmk in Cargo.toml (for example with `default-features = false` and explicitly re-enabling the features you need).", - ); + return Err(if in_config { + format!( + "If the \"{feature}\" Cargo feature is disabled, `{config_field}` must be set to false in keyboard.toml." + ) + } else { + format!( + "`{config_field} = false` in keyboard.toml requires disabling the \"{feature}\" Cargo feature for rmk in Cargo.toml (for example with `default-features = false` and explicitly re-enabling the features you need)." + ) + }); } - if vial_enabled_in_config != vial_enabled_in_features { - if vial_enabled_in_config { - return Err( - "If the \"vial\" Cargo feature is disabled, `host.vial_enabled` must be set to false in keyboard.toml.", - ); - } + if vial_in_config && rynk_in_config { return Err( - "`host.vial_enabled = false` in keyboard.toml requires disabling the \"vial\" Cargo feature for rmk in Cargo.toml (for example with `default-features = false` and explicitly re-enabling the features you need).", + "`host.vial_enabled` and `host.rynk_enabled` are mutually exclusive — set exactly one to true (the underlying Cargo features for rmk also conflict).".to_string(), ); } @@ -110,14 +122,16 @@ pub(crate) fn expand_imports_and_constants( host: &Host, hardware: &Hardware, behavior: &Behavior, - layout: &Layout, + keymap: &Keymap, ) -> TokenStream2 { // Generate keyboard info and number of rows/cols/layers - let keyboard_info_static_var = expand_keyboard_info(identity, layout); + let keyboard_info_static_var = expand_keyboard_info(identity, keymap); // Generate default keymap - let default_keymap = expand_default_keymap(layout, behavior); + let default_keymap = expand_default_keymap(keymap, behavior); // Generate vial config let vial_static_var = expand_vial_config(host); + // Generate rynk lock-gate config + let lock_static_var = expand_lock_config(host); // Generate extra imports, panic handler and logger let imports = match hardware.chip.series { @@ -156,6 +170,7 @@ pub(crate) fn expand_imports_and_constants( #keyboard_info_static_var #vial_static_var + #lock_static_var #default_keymap } } @@ -164,16 +179,30 @@ pub(crate) fn expand_imports_and_constants( mod tests { use super::validate_feature_config_parity; + /// Build the enabled-Cargo-features list that `validate_feature_config_parity` reads. + fn features(enabled: &[&str]) -> Option> { + Some(enabled.iter().map(|f| f.to_string()).collect()) + } + #[test] - fn accepts_matching_storage_and_vial_feature_states() { - assert!(validate_feature_config_parity(true, true, true, true).is_ok()); - assert!(validate_feature_config_parity(false, false, false, false).is_ok()); - assert!(validate_feature_config_parity(true, true, false, false).is_ok()); + fn accepts_matching_storage_vial_rynk_feature_states() { + assert!( + validate_feature_config_parity(&features(&["storage", "vial"]), true, true, false) + .is_ok() + ); + assert!(validate_feature_config_parity(&features(&[]), false, false, false).is_ok()); + assert!( + validate_feature_config_parity(&features(&["storage"]), true, false, false).is_ok() + ); + assert!( + validate_feature_config_parity(&features(&["storage", "rynk"]), true, false, true) + .is_ok() + ); } #[test] fn rejects_storage_enabled_in_config_without_feature() { - let err = validate_feature_config_parity(true, false, false, false).unwrap_err(); + let err = validate_feature_config_parity(&features(&[]), true, false, false).unwrap_err(); assert_eq!( err, "If the \"storage\" Cargo feature is disabled, `storage.enabled` must be set to false in keyboard.toml." @@ -182,7 +211,8 @@ mod tests { #[test] fn rejects_storage_feature_without_config() { - let err = validate_feature_config_parity(false, true, false, false).unwrap_err(); + let err = validate_feature_config_parity(&features(&["storage"]), false, false, false) + .unwrap_err(); assert_eq!( err, "`storage.enabled = false` in keyboard.toml requires disabling the \"storage\" Cargo feature for rmk in Cargo.toml (for example with `default-features = false` and explicitly re-enabling the features you need)." @@ -191,7 +221,7 @@ mod tests { #[test] fn rejects_vial_enabled_in_config_without_feature() { - let err = validate_feature_config_parity(false, false, true, false).unwrap_err(); + let err = validate_feature_config_parity(&features(&[]), false, true, false).unwrap_err(); assert_eq!( err, "If the \"vial\" Cargo feature is disabled, `host.vial_enabled` must be set to false in keyboard.toml." @@ -200,18 +230,49 @@ mod tests { #[test] fn rejects_vial_feature_without_config() { - let err = validate_feature_config_parity(false, false, false, true).unwrap_err(); + let err = + validate_feature_config_parity(&features(&["vial"]), false, false, false).unwrap_err(); assert_eq!( err, "`host.vial_enabled = false` in keyboard.toml requires disabling the \"vial\" Cargo feature for rmk in Cargo.toml (for example with `default-features = false` and explicitly re-enabling the features you need)." ); } + + #[test] + fn rejects_rynk_enabled_in_config_without_feature() { + let err = validate_feature_config_parity(&features(&[]), false, false, true).unwrap_err(); + assert_eq!( + err, + "If the \"rynk\" Cargo feature is disabled, `host.rynk_enabled` must be set to false in keyboard.toml." + ); + } + + #[test] + fn rejects_rynk_feature_without_config() { + let err = + validate_feature_config_parity(&features(&["rynk"]), false, false, false).unwrap_err(); + assert_eq!( + err, + "`host.rynk_enabled = false` in keyboard.toml requires disabling the \"rynk\" Cargo feature for rmk in Cargo.toml (for example with `default-features = false` and explicitly re-enabling the features you need)." + ); + } + + #[test] + fn rejects_vial_and_rynk_both_enabled() { + let err = validate_feature_config_parity(&features(&["vial", "rynk"]), false, true, true) + .unwrap_err(); + assert_eq!( + err, + "`host.vial_enabled` and `host.rynk_enabled` are mutually exclusive — set exactly one to true (the underlying Cargo features for rmk also conflict)." + ); + } } fn expand_main( host: &Host, hardware: &Hardware, behavior: &Behavior, + keymap: &Keymap, layout: &Layout, item_mod: syn::ItemMod, rmk_features: &Option>, @@ -226,7 +287,7 @@ fn expand_main( let matrix_config = expand_matrix_config(hardware, rmk_features); let output_config = expand_output_config(hardware); let (ble_config, set_ble_config) = expand_ble_config(hardware); - let keymap_and_storage = expand_keymap_and_storage(hardware, layout); + let keymap_and_storage = expand_keymap_and_storage(hardware, keymap); let split_central_config = expand_split_central_config(hardware); let (input_device_config, devices, processors) = expand_input_device_config(hardware); let matrix_and_keyboard = expand_matrix_and_keyboard_init(hardware); @@ -275,10 +336,22 @@ fn expand_main( quote! {} }; - let host_service_init = if host.vial_enabled { + // Rynk-only: bake the physical-layout blob as a compile-time const and enable + // the lock gate. Both fields land adjacently in the `RmkConfig` literal below. + let (layout_blob_static, rynk_layout_field, lock_config) = if host.rynk_enabled { + let blob_lit = proc_macro2::Literal::byte_string(&layout.blob); + ( + quote! { static LAYOUT_BLOB: &[u8] = #blob_lit; }, + quote! { layout_blob: LAYOUT_BLOB, }, + quote! { lock_config: LOCK_CONFIG, }, + ) + } else { + (quote! {}, quote! {}, quote! {}) + }; + + let host_service_init = if host.rynk_enabled || host.vial_enabled { quote! { - let host_ctx = ::rmk::host::KeyboardContext::new(&keymap); - let mut host_service = ::rmk::host::HostService::new(&host_ctx, &rmk_config); + let host_service = ::rmk::host::HostService::new(&keymap, &rmk_config); } } else { quote! {} @@ -309,6 +382,8 @@ fn expand_main( let rmk_config = ::rmk::config::RmkConfig { device_config: KEYBOARD_DEVICE_CONFIG, #vial_config + #lock_config + #rynk_layout_field storage_config, #set_ble_config ..Default::default() @@ -320,6 +395,8 @@ fn expand_main( let rmk_config = ::rmk::config::RmkConfig { device_config: KEYBOARD_DEVICE_CONFIG, #vial_config + #lock_config + #rynk_layout_field #set_ble_config ..Default::default() }; @@ -365,6 +442,9 @@ fn expand_main( // Initialize ble config as `ble_battery_config` #ble_config + // Bake the physical-layout blob (rynk) as a compile-time const + #layout_blob_static + // Set all keyboard config #rmk_config @@ -377,7 +457,7 @@ fn expand_main( // Initialize the matrix + keyboard, as `matrix` and `keyboard` #matrix_and_keyboard - // Initialize the host (Vial) service, as `host_service` + // Initialize the host (Vial / Rynk) service, as `host_service` #host_service_init // Initialize input device config as `input_device_config` and processor as `processor` @@ -442,12 +522,12 @@ fn expand_split_firmware_init(board: &BoardConfig) -> TokenStream2 { } // TODO: move this function to a separate folder -pub(crate) fn expand_keymap_and_storage(hardware: &Hardware, layout: &Layout) -> TokenStream2 { - let row = layout.rows as usize; - let col = layout.cols as usize; +pub(crate) fn expand_keymap_and_storage(hardware: &Hardware, keymap: &Keymap) -> TokenStream2 { + let row = keymap.rows as usize; + let col = keymap.cols as usize; - let initialize_positional_config = if layout.key_info.is_empty() - || layout.key_info.iter().all(|row| { + let initialize_positional_config = if keymap.key_info.is_empty() + || keymap.key_info.iter().all(|row| { row.iter().all(|key| { key.hand != 'L' && key.hand != 'l' @@ -456,16 +536,16 @@ pub(crate) fn expand_keymap_and_storage(hardware: &Hardware, layout: &Layout) -> && key.hand != '*' }) }) - || layout.key_info.len() != row - || layout.key_info[0].len() != col + || keymap.key_info.len() != row + || keymap.key_info[0].len() != col { quote! { let per_key_config = ::rmk::config::PositionalConfig::default(); } } else { - let key_info_config = expand_key_info(&layout.key_info); + let key_info_config = expand_key_info(&keymap.key_info); quote! { let per_key_config = ::rmk::config::PositionalConfig::new(#key_info_config); } }; - let total_num_encoders: usize = layout.encoder_counts.iter().sum(); + let total_num_encoders = keymap.num_encoder; let keymap_data_init = if total_num_encoders == 0 { quote! { @@ -599,13 +679,8 @@ fn expand_key_info_row(row: &Vec) -> proc_macro2::TokenStream { /// Get debouncer type pub(crate) fn get_debouncer_type(matrix_config: &MatrixConfig) -> TokenStream2 { - match matrix_config - .debouncer - .clone() - .unwrap_or("default".to_string()) - { - s if s == "fast" => quote! { ::rmk::debounce::fast_debouncer::FastDebouncer }, - s if s == "default" => quote! { ::rmk::debounce::default_debouncer::DefaultDebouncer }, - _ => panic!("Invalid debouncer type, supported debouncer types are `default` and `fast`"), + match matrix_config.debouncer { + DebouncerType::Fast => quote! { ::rmk::debounce::fast_debouncer::FastDebouncer }, + DebouncerType::Default => quote! { ::rmk::debounce::default_debouncer::DefaultDebouncer }, } } diff --git a/rmk-macro/src/codegen/split/central.rs b/rmk-macro/src/codegen/split/central.rs index a9ec7815a..ce0ea280b 100644 --- a/rmk-macro/src/codegen/split/central.rs +++ b/rmk-macro/src/codegen/split/central.rs @@ -2,6 +2,7 @@ use core::panic; use proc_macro2::TokenStream as TokenStream2; use quote::{format_ident, quote}; +use rmk_config::SplitConnection; use rmk_config::resolved::Hardware; use rmk_config::resolved::hardware::{ BoardConfig, ChipModel, ChipSeries, SerialConfig, SplitConfig, @@ -16,8 +17,8 @@ pub(crate) fn expand_split_central_config(hardware: &Hardware) -> proc_macro2::T } fn expand_split_communication_config(chip: &ChipModel, split_config: &SplitConfig) -> TokenStream2 { - match &split_config.connection[..] { - "ble" => { + match split_config.connection { + SplitConnection::Ble => { // We need to create addrs for BLE let num_peripheral = split_config.peripheral.len(); quote! { @@ -25,7 +26,7 @@ fn expand_split_communication_config(chip: &ChipModel, split_config: &SplitConfi let peripheral_addrs = storage.read_peripheral_addresses::<#num_peripheral>().await; } } - "serial" => { + SplitConnection::Serial => { // We need to initialize serial instance for serial let serial_config: Vec = split_config .central @@ -34,7 +35,6 @@ fn expand_split_communication_config(chip: &ChipModel, split_config: &SplitConfi .expect("central.serial is required"); expand_serial_init(chip, serial_config) } - _ => panic!("Invalid connection type for split"), } } diff --git a/rmk-macro/src/codegen/split/peripheral.rs b/rmk-macro/src/codegen/split/peripheral.rs index 8f961ac6b..e70e7e5d5 100644 --- a/rmk-macro/src/codegen/split/peripheral.rs +++ b/rmk-macro/src/codegen/split/peripheral.rs @@ -1,5 +1,6 @@ use proc_macro2::TokenStream as TokenStream2; use quote::{format_ident, quote}; +use rmk_config::SplitConnection; use rmk_config::resolved::Hardware; use rmk_config::resolved::hardware::{ BleConfig, BoardConfig, ChipModel, ChipSeries, CommunicationConfig, InputDeviceConfig, @@ -326,8 +327,8 @@ fn expand_split_peripheral( let imports = expand_custom_imports(&item_mod); let mut chip_init = expand_chip_init(hardware, Some(id), &item_mod); - - if split_config.connection == "ble" { + if split_config.connection == SplitConnection::Ble { + // Add storage when using BLE split let flash_init = expand_flash_init(hardware); chip_init.extend(quote! { #flash_init @@ -529,7 +530,7 @@ fn expand_split_peripheral_entry( // Add matrix to devices, and run all devices let mut devs = devices.clone(); devs.push(quote! {matrix}); - if split_config.connection == "ble" { + if split_config.connection == SplitConnection::Ble { devs.push(quote! {storage}); } let device_task = quote! { @@ -549,69 +550,70 @@ fn expand_split_peripheral_entry( quote! {} }; - if split_config.connection == "ble" { - let peripheral_run = quote! { - ::rmk::split::peripheral::run_rmk_split_peripheral( - #id, - &stack, - ) - }; - // Build task list: device, processor (if any), peripheral, registered_processors, dfu - let mut tasks = vec![device_task]; - if !processors.is_empty() { - tasks.push(processor_task); - } - tasks.push(peripheral_run); - tasks.extend(registered_processors); - if let Some(t) = &watchdog_task { - tasks.push(t.clone()); - } - if let Some(t) = &dfu_task_future { - tasks.push(t.clone()); - } - let run_rmk_peripheral = join_all_tasks(tasks); - quote! { - #run_rmk_peripheral - } - } else if split_config.connection == "serial" { - let peripheral_serial = peripheral_config - .serial - .clone() - .expect("Missing peripheral serial config"); - if peripheral_serial.len() != 1 { - panic!("Peripheral should have only one serial config"); + match split_config.connection { + SplitConnection::Ble => { + let peripheral_run = quote! { + ::rmk::split::peripheral::run_rmk_split_peripheral( + #id, + &stack, + ) + }; + // Build task list: device, processor (if any), peripheral, registered_processors, dfu + let mut tasks = vec![device_task]; + if !processors.is_empty() { + tasks.push(processor_task); + } + tasks.push(peripheral_run); + tasks.extend(registered_processors); + if let Some(t) = &watchdog_task { + tasks.push(t.clone()); + } + if let Some(t) = &dfu_task_future { + tasks.push(t.clone()); + } + let run_rmk_peripheral = join_all_tasks(tasks); + quote! { + #run_rmk_peripheral + } } - let serial_init = expand_serial_init(chip, peripheral_serial); - - let uart_instance = format_ident!( - "{}", - peripheral_config + SplitConnection::Serial => { + let peripheral_serial = peripheral_config .serial - .as_ref() - .expect("Missing peripheral serial config") - .first() - .expect("Peripheral should have only one serial config") - .instance - .to_lowercase() - ); - let peripheral_run = quote! { - ::rmk::split::peripheral::run_rmk_split_peripheral(#uart_instance) - }; - let mut tasks = vec![device_task, peripheral_run]; - tasks.extend(registered_processors); - if let Some(t) = &watchdog_task { - tasks.push(t.clone()); - } - if let Some(t) = &dfu_task_future { - tasks.push(t.clone()); - } - let run_rmk_peripheral = join_all_tasks(tasks); - quote! { - #serial_init - #run_rmk_peripheral + .clone() + .expect("Missing peripheral serial config"); + if peripheral_serial.len() != 1 { + panic!("Peripheral should have only one serial config"); + } + let serial_init = expand_serial_init(chip, peripheral_serial); + + let uart_instance = format_ident!( + "{}", + peripheral_config + .serial + .as_ref() + .expect("Missing peripheral serial config") + .first() + .expect("Peripheral should have only one serial config") + .instance + .to_lowercase() + ); + let peripheral_run = quote! { + ::rmk::split::peripheral::run_rmk_split_peripheral(#uart_instance) + }; + let mut tasks = vec![device_task, peripheral_run]; + tasks.extend(registered_processors); + if let Some(t) = &watchdog_task { + tasks.push(t.clone()); + } + if let Some(t) = &dfu_task_future { + tasks.push(t.clone()); + } + let run_rmk_peripheral = join_all_tasks(tasks); + quote! { + #serial_init + #run_rmk_peripheral + } } - } else { - panic!("Invalid split connection type: {}", split_config.connection); } } diff --git a/rmk-types/Cargo.toml b/rmk-types/Cargo.toml index 3afdf4e8b..9b60c1131 100644 --- a/rmk-types/Cargo.toml +++ b/rmk-types/Cargo.toml @@ -10,17 +10,22 @@ license = "MIT OR Apache-2.0" resolver = "2" [dependencies] -defmt = { version = "1.0", optional = true } +defmt = { version = "1", optional = true } serde = { version = "1", default-features = false, features = ["derive"] } -postcard = { version = "1", features = ["experimental-derive"] } -postcard-schema = { version = "0.2", default-features = false, features = ["derive", "heapless-v0_9"], optional = true } -postcard-rpc = { version = "0.12", default-features = false, optional = true } +postcard = { version = "1", default-features = false, features = ["experimental-derive"] } +# COBS framing for the Rynk transport; core-only (no alloc/std). Enabled by `rynk`. +cobs = { version = "0.3", default-features = false, optional = true } heapless = { version = "0.9", default-features = false, features = ["serde"] } strum = { version = "0.28", default-features = false, features = ["derive"] } bitfield-struct = "0.13" +# TypeScript type + wasm-bindgen ABI generation for the web client +tsify = { version = "0.5", optional = true, default-features = false, features = ["js"] } +wasm-bindgen = { version = "0.2", optional = true } +serde-wasm-bindgen = { version = "0.6", optional = true } + [build-dependencies] rmk-config = { path = "../rmk-config", version = "=0.6.1" } toml = "1" @@ -34,16 +39,14 @@ defmt = [ ] # Feature for proc-macro code generation only, not included in firmware _codegen = [] -# Feature for RMK native protocol schema/endpoint support -rmk_protocol = ["dep:postcard-rpc", "dep:postcard-schema"] -# Bulk transfer endpoints for MCUs with sufficient RAM. -# Enables multi-element bulk keymap/combo/morse endpoints and BULK_SIZE constant. -bulk = ["rmk_protocol"] -# Host tool: uses protocol ceiling values for Vec capacities. -# Enables all optional endpoint groups so the host can talk to any firmware. -host = ["rmk_protocol", "bulk", "_ble", "split"] +# Enable RMK's Rynk protocol +rynk = ["dep:cobs"] +# Host tool +host = ["rynk", "_ble", "split", "steno", "serde/alloc"] +# TypeScript type + wasm ABI export for the web client. Enabled by a codegen/wasm +# build, never by firmware. +wasm = ["dep:tsify", "dep:wasm-bindgen", "dep:serde-wasm-bindgen", "host"] # Build-time only features: forwarded from rmk to control constant generation in build.rs. -# Also used as `#[cfg(feature = "...")]` guards for protocol endpoint/topic gating. _ble = [] split = [] display = [] diff --git a/rmk-types/build.rs b/rmk-types/build.rs index d2fb0a39f..56d1f497c 100644 --- a/rmk-types/build.rs +++ b/rmk-types/build.rs @@ -9,9 +9,7 @@ fn main() { println!("cargo:rerun-if-env-changed=KEYBOARD_TOML_PATH"); println!("cargo:rerun-if-env-changed=VIAL_JSON_PATH"); - // Load keyboard.toml if it's present. - // - // Build-time constants only need [rmk] + [event]. Keep event defaults support + // Build-time constants only need [rmk] + [event], so load event defaults // without requiring [keyboard.board]/[keyboard.chip]. let toml_path = std::env::var("KEYBOARD_TOML_PATH").ok(); let config: KeyboardTomlConfig = if let Some(toml_path) = &toml_path { @@ -21,8 +19,7 @@ fn main() { toml::from_str("").expect("Failed to parse empty keyboard config\n") }; - // Collect active feature flags. - // The number of event subscribers bumps according to the enabled feature. + // Enabled features drive constant resolution (notably event subscriber counts). let active_features = collect_active_features(); let feature_refs: Vec<&str> = active_features.iter().map(|s| s.as_str()).collect(); @@ -31,7 +28,6 @@ fn main() { .unwrap_or_else(|err| panic!("Failed to resolve build constants: {err}")); let output = generate_constants(&bc); - // Write to constants.rs file let out_dir = env::var("OUT_DIR").unwrap(); let dest_path = Path::new(&out_dir).join("constants.rs"); fs::write(&dest_path, output).expect("Failed to write constants.rs file"); @@ -76,6 +72,10 @@ fn generate_constants(bc: &BuildConstants) -> String { bc.split_central_sleep_timeout_seconds )); lines.push(format!("pub const MORSE_MAX_NUM: usize = {};", bc.morse_max_num)); + lines.push(format!( + "pub const MORSE_PROFILE_MAX_NUM: usize = {};", + bc.morse_profile_max_num + )); lines.push(format!( "pub const AUTO_MOUSE_LAYER_MAX_NUM: usize = {};", bc.auto_mouse_layer_max_num @@ -85,29 +85,8 @@ fn generate_constants(bc: &BuildConstants) -> String { bc.max_patterns_per_key )); - // Protocol Vec capacity constants. - // - // There are two kinds of constants here: - // - // - **Internal capacity constants** (e.g., `COMBO_MAX_LENGTH`, `MAX_PATTERNS_PER_KEY`, - // `MACRO_SPACE_SIZE`) define how many combo keys, morse patterns, or macro bytes the - // firmware can store and process. - // - // - **Message Vec-capacity constants** (e.g., `COMBO_SIZE`, `MORSE_SIZE`, - // `MACRO_DATA_SIZE`, `BULK_SIZE`) define the maximum Vec capacity in protocol - // messages — how many elements can fit in a single request/response. - // - // On firmware, message capacities are typically set equal to their corresponding - // internal constants (e.g., `COMBO_SIZE = COMBO_MAX_LENGTH`), because a single - // protocol message needs to carry at most one full config. - // - // On the host side, message capacities use fixed upper bounds (e.g., 16, 32, 256) so - // the host can deserialize responses from any firmware regardless of its config. - // - // `BULK_SIZE` is different: it controls multi-element bulk transfer (multiple - // keys/combos/morses per message) and is only available behind the `bulk` feature. + // Host uses protocol ceilings; firmware uses keyboard.toml/default capacities. let is_host = env::var("CARGO_FEATURE_HOST").is_ok(); - let is_bulk = env::var("CARGO_FEATURE_BULK").is_ok(); // Protocol ceilings — always emitted so rmk-types source code can reference them. lines.push(format!( @@ -122,10 +101,6 @@ fn generate_constants(bc: &BuildConstants) -> String { "pub const MAX_MACRO_DATA_SIZE: usize = {};", protocol_limits::MAX_MACRO_DATA_SIZE )); - lines.push(format!( - "pub const MAX_BULK_SIZE: usize = {};", - protocol_limits::MAX_BULK_SIZE - )); if is_host { // Host: Vec capacities equal protocol ceilings for wire compatibility with any firmware. @@ -141,11 +116,6 @@ fn generate_constants(bc: &BuildConstants) -> String { "pub const MACRO_DATA_SIZE: usize = {};", protocol_limits::MAX_MACRO_DATA_SIZE )); - // Host always has bulk (host implies bulk feature) - lines.push(format!( - "pub const BULK_SIZE: usize = {};", - protocol_limits::MAX_BULK_SIZE - )); } else { // Firmware: per-item constants from keyboard.toml / defaults. lines.push(format!("pub const COMBO_SIZE: usize = {};", bc.combo_max_length)); @@ -154,19 +124,18 @@ fn generate_constants(bc: &BuildConstants) -> String { "pub const MACRO_DATA_SIZE: usize = {};", bc.protocol_macro_chunk_size )); - // Compile-time check: firmware Vec sizes must not exceed protocol ceilings. - // Only enforce when the rmk_protocol feature is active. - if env::var("CARGO_FEATURE_RMK_PROTOCOL").is_ok() { + // Firmware Vec sizes must not exceed protocol ceilings (rynk builds only). + if env::var("CARGO_FEATURE_RYNK").is_ok() { lines.push("const _: () = assert!(COMBO_SIZE <= MAX_COMBO_SIZE, \"firmware COMBO_SIZE exceeds protocol ceiling MAX_COMBO_SIZE\");".to_string()); lines.push("const _: () = assert!(MORSE_SIZE <= MAX_MORSE_SIZE, \"firmware MORSE_SIZE exceeds protocol ceiling MAX_MORSE_SIZE\");".to_string()); lines.push("const _: () = assert!(MACRO_DATA_SIZE <= MAX_MACRO_DATA_SIZE, \"firmware MACRO_DATA_SIZE exceeds protocol ceiling MAX_MACRO_DATA_SIZE\");".to_string()); } + } - // Bulk constant only when bulk feature is active - if is_bulk { - lines.push(format!("pub const BULK_SIZE: usize = {};", bc.protocol_max_bulk_size)); - lines.push("const _: () = assert!(BULK_SIZE <= MAX_BULK_SIZE, \"firmware BULK_SIZE exceeds protocol ceiling MAX_BULK_SIZE\");".to_string()); - } + // The exact RAM of each rynk frame buffer; the payload budget and bulk + // capacities derive from it in `protocol::rynk`. + if env::var("CARGO_FEATURE_RYNK").is_ok() { + lines.push(format!("pub const RYNK_BUFFER_SIZE: usize = {};", bc.rynk_buffer_size)); } // Event channels @@ -201,11 +170,10 @@ fn generate_constants(bc: &BuildConstants) -> String { lines.join("\n") } -/// Collect active Cargo feature flags from environment variables. +/// Active Cargo feature flags, lowercased to match `subscriber_default.toml`. /// -/// Cargo sets `CARGO_FEATURE_` for each enabled feature (with the name -/// uppercased and `-` replaced by `_`). We reverse that to get lowercase names -/// matching the convention used in `subscriber_default.toml`. +/// Cargo exposes each enabled feature as `CARGO_FEATURE_` (uppercased, +/// `-` → `_`); we reverse that. fn collect_active_features() -> Vec { env::vars() .filter_map(|(key, _)| key.strip_prefix("CARGO_FEATURE_").map(|f| f.to_lowercase())) diff --git a/rmk-types/src/action/encoder.rs b/rmk-types/src/action/encoder.rs index 212e720cf..a309fe2a5 100644 --- a/rmk-types/src/action/encoder.rs +++ b/rmk-types/src/action/encoder.rs @@ -1,8 +1,6 @@ //! Rotary encoder actions. use postcard::experimental::max_size::MaxSize; -#[cfg(feature = "rmk_protocol")] -use postcard_schema::Schema; use serde::{Deserialize, Serialize}; use super::KeyAction; @@ -12,7 +10,8 @@ use super::KeyAction; /// Both fields default to `KeyAction::No` (no action). #[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize, MaxSize)] #[cfg_attr(feature = "defmt", derive(defmt::Format))] -#[cfg_attr(feature = "rmk_protocol", derive(Schema))] +#[cfg_attr(feature = "wasm", derive(tsify::Tsify))] +#[cfg_attr(feature = "wasm", tsify(into_wasm_abi, from_wasm_abi))] pub struct EncoderAction { /// Action triggered when the encoder is rotated clockwise. pub clockwise: KeyAction, diff --git a/rmk-types/src/action/key_action.rs b/rmk-types/src/action/key_action.rs index 6679edc87..6f84e8a36 100644 --- a/rmk-types/src/action/key_action.rs +++ b/rmk-types/src/action/key_action.rs @@ -1,19 +1,17 @@ //! Composite key actions stored in the keymap. use postcard::experimental::max_size::MaxSize; -#[cfg(feature = "rmk_protocol")] -use postcard_schema::Schema; use serde::{Deserialize, Serialize}; use super::Action; -use crate::morse::MorseProfile; /// A KeyAction is the action at a keyboard position, stored in keymap. /// It can be a single action like triggering a key, or a composite keyboard action like tap/hold #[derive(Debug, Copy, Clone, Eq, Serialize, Deserialize, MaxSize)] #[cfg_attr(feature = "defmt", derive(defmt::Format))] -#[cfg_attr(feature = "rmk_protocol", derive(Schema))] #[non_exhaustive] +#[cfg_attr(feature = "wasm", derive(tsify::Tsify))] +#[cfg_attr(feature = "wasm", tsify(into_wasm_abi, from_wasm_abi))] pub enum KeyAction { /// No action No, @@ -23,9 +21,10 @@ pub enum KeyAction { Single(Action), /// Don't wait the release of the key, auto-release after a time threshold. Tap(Action), - /// Tap hold action - TapHold(Action, Action, MorseProfile), - + /// Tap hold action. The `u8` indexes the morse profile table; an index + /// with no table entry (e.g. `u8::MAX`, which the default-profile macros + /// emit) falls back to the default [`crate::morse::MorseProfile`]. + TapHold(Action, Action, u8), /// Morse action, references a morse configuration by index. Morse(u8), } @@ -52,12 +51,12 @@ impl KeyAction { } /// Combo and fork trigger matching compares key actions by their "identity" — -/// the tap/hold actions — ignoring the `MorseProfile` timing configuration. +/// the tap/hold actions — ignoring the profile-table index. /// -/// This is intentional: a combo or fork may store a trigger with `Profile1`, -/// but if the user later rebinds the key's profile to `Profile2`, the -/// trigger should still match. The profile is a per-key timing config, -/// not part of the key's logical identity. +/// This is intentional: a combo or fork may store a trigger with one profile +/// index, but if the user later rebinds the key's profile, the trigger should +/// still match. The profile is a per-key timing config, not part of the key's +/// logical identity. impl PartialEq for KeyAction { fn eq(&self, other: &Self) -> bool { match (self, other) { diff --git a/rmk-types/src/action/keyboard.rs b/rmk-types/src/action/keyboard.rs index a3abed2c8..b7e2de613 100644 --- a/rmk-types/src/action/keyboard.rs +++ b/rmk-types/src/action/keyboard.rs @@ -1,16 +1,15 @@ //! Keyboard control actions. use postcard::experimental::max_size::MaxSize; -#[cfg(feature = "rmk_protocol")] -use postcard_schema::Schema; use serde::{Deserialize, Serialize}; /// Actions for controlling the keyboard or changing the keyboard's state, for example, enable/disable a particular function #[derive(Debug, Copy, Clone, PartialEq, Eq, Serialize, Deserialize, MaxSize)] #[cfg_attr(feature = "defmt", derive(defmt::Format))] -#[cfg_attr(feature = "rmk_protocol", derive(Schema))] #[cfg_attr(feature = "_codegen", derive(strum::VariantNames))] #[non_exhaustive] +#[cfg_attr(feature = "wasm", derive(tsify::Tsify))] +#[cfg_attr(feature = "wasm", tsify(into_wasm_abi, from_wasm_abi))] pub enum KeyboardAction { Bootloader, Reboot, diff --git a/rmk-types/src/action/light.rs b/rmk-types/src/action/light.rs index 2e75d9463..5ea4b2c82 100644 --- a/rmk-types/src/action/light.rs +++ b/rmk-types/src/action/light.rs @@ -1,16 +1,15 @@ //! Light control actions. use postcard::experimental::max_size::MaxSize; -#[cfg(feature = "rmk_protocol")] -use postcard_schema::Schema; use serde::{Deserialize, Serialize}; /// Actions for controlling lights #[derive(Debug, Copy, Clone, PartialEq, Eq, Serialize, Deserialize, MaxSize)] #[cfg_attr(feature = "defmt", derive(defmt::Format))] -#[cfg_attr(feature = "rmk_protocol", derive(Schema))] #[cfg_attr(feature = "_codegen", derive(strum::VariantNames))] #[non_exhaustive] +#[cfg_attr(feature = "wasm", derive(tsify::Tsify))] +#[cfg_attr(feature = "wasm", tsify(into_wasm_abi, from_wasm_abi))] pub enum LightAction { BacklightOn, BacklightOff, diff --git a/rmk-types/src/action/mod.rs b/rmk-types/src/action/mod.rs index 450c81eb2..f50f9b10b 100644 --- a/rmk-types/src/action/mod.rs +++ b/rmk-types/src/action/mod.rs @@ -22,8 +22,6 @@ pub use key_action::KeyAction; pub use keyboard::KeyboardAction; pub use light::LightAction; use postcard::experimental::max_size::MaxSize; -#[cfg(feature = "rmk_protocol")] -use postcard_schema::Schema; use serde::{Deserialize, Serialize}; use crate::keycode::{HidKeyCode, KeyCode, SpecialKey}; @@ -34,8 +32,9 @@ use crate::steno::StenoKey; /// A single basic action that a keyboard can execute. #[derive(Debug, Copy, Clone, PartialEq, Eq, Serialize, Deserialize, MaxSize)] #[cfg_attr(feature = "defmt", derive(defmt::Format))] -#[cfg_attr(feature = "rmk_protocol", derive(Schema))] #[non_exhaustive] +#[cfg_attr(feature = "wasm", derive(tsify::Tsify))] +#[cfg_attr(feature = "wasm", tsify(into_wasm_abi, from_wasm_abi))] pub enum Action { /// Default action, no action. No, diff --git a/rmk-types/src/battery.rs b/rmk-types/src/battery.rs index f6afdcbdd..3768c5b09 100644 --- a/rmk-types/src/battery.rs +++ b/rmk-types/src/battery.rs @@ -1,14 +1,13 @@ //! Battery status types. use postcard::experimental::max_size::MaxSize; -#[cfg(feature = "rmk_protocol")] -use postcard_schema::Schema; use serde::{Deserialize, Serialize}; /// Charge state of the battery. #[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, MaxSize)] -#[cfg_attr(feature = "rmk_protocol", derive(Schema))] #[cfg_attr(feature = "defmt", derive(defmt::Format))] +#[cfg_attr(feature = "wasm", derive(tsify::Tsify))] +#[cfg_attr(feature = "wasm", tsify(into_wasm_abi, from_wasm_abi))] pub enum ChargeState { Charging, Discharging, @@ -28,8 +27,9 @@ impl From for ChargeState { /// Battery status used for both status queries and event notifications. #[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, MaxSize)] -#[cfg_attr(feature = "rmk_protocol", derive(Schema))] #[cfg_attr(feature = "defmt", derive(defmt::Format))] +#[cfg_attr(feature = "wasm", derive(tsify::Tsify))] +#[cfg_attr(feature = "wasm", tsify(into_wasm_abi, from_wasm_abi))] pub enum BatteryStatus { Unavailable, Available { diff --git a/rmk-types/src/ble.rs b/rmk-types/src/ble.rs index 3deba148e..e38658147 100644 --- a/rmk-types/src/ble.rs +++ b/rmk-types/src/ble.rs @@ -1,14 +1,13 @@ //! BLE status types. use postcard::experimental::max_size::MaxSize; -#[cfg(feature = "rmk_protocol")] -use postcard_schema::Schema; use serde::{Deserialize, Serialize}; /// BLE state (what the BLE subsystem is currently doing). #[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, MaxSize)] -#[cfg_attr(feature = "rmk_protocol", derive(Schema))] #[cfg_attr(feature = "defmt", derive(defmt::Format))] +#[cfg_attr(feature = "wasm", derive(tsify::Tsify))] +#[cfg_attr(feature = "wasm", tsify(into_wasm_abi, from_wasm_abi))] pub enum BleState { /// The BLE is advertising. Advertising, @@ -20,8 +19,9 @@ pub enum BleState { /// Unified BLE status: which profile is active and what the BLE is doing. #[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, MaxSize)] -#[cfg_attr(feature = "rmk_protocol", derive(Schema))] #[cfg_attr(feature = "defmt", derive(defmt::Format))] +#[cfg_attr(feature = "wasm", derive(tsify::Tsify))] +#[cfg_attr(feature = "wasm", tsify(into_wasm_abi, from_wasm_abi))] pub struct BleStatus { pub profile: u8, pub state: BleState, diff --git a/rmk-types/src/combo.rs b/rmk-types/src/combo.rs index 13193d95f..ee2ac0cd4 100644 --- a/rmk-types/src/combo.rs +++ b/rmk-types/src/combo.rs @@ -2,8 +2,6 @@ use heapless::Vec; use postcard::experimental::max_size::MaxSize; -#[cfg(feature = "rmk_protocol")] -use postcard_schema::Schema; use serde::{Deserialize, Serialize}; use crate::action::KeyAction; @@ -19,9 +17,11 @@ use crate::constants::COMBO_SIZE; /// Note: `COMBO_SIZE` is a **wire-format** capacity — on firmware it equals /// `COMBO_MAX_LENGTH` (from `keyboard.toml`), on host it's a fixed upper bound. #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] -#[cfg_attr(feature = "rmk_protocol", derive(Schema))] #[cfg_attr(feature = "defmt", derive(defmt::Format))] +#[cfg_attr(feature = "wasm", derive(tsify::Tsify))] +#[cfg_attr(feature = "wasm", tsify(into_wasm_abi, from_wasm_abi))] pub struct Combo { + #[cfg_attr(feature = "wasm", tsify(type = "KeyAction[]"))] pub actions: Vec, pub output: KeyAction, pub layer: Option, diff --git a/rmk-types/src/connection.rs b/rmk-types/src/connection.rs index 6e01d7ed7..037a2cc2c 100644 --- a/rmk-types/src/connection.rs +++ b/rmk-types/src/connection.rs @@ -1,16 +1,15 @@ //! Shared connection type definitions used across RMK crates. use postcard::experimental::max_size::MaxSize; -#[cfg(feature = "rmk_protocol")] -use postcard_schema::Schema; use serde::{Deserialize, Serialize}; use crate::ble::{BleState, BleStatus}; /// Connection type for the keyboard. #[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, MaxSize)] -#[cfg_attr(feature = "rmk_protocol", derive(Schema))] #[cfg_attr(feature = "defmt", derive(defmt::Format))] +#[cfg_attr(feature = "wasm", derive(tsify::Tsify))] +#[cfg_attr(feature = "wasm", tsify(into_wasm_abi, from_wasm_abi))] pub enum ConnectionType { Usb, Ble, @@ -20,9 +19,10 @@ pub enum ConnectionType { /// the bus is enumerated but transmission is gated on remote wakeup — the /// first key still needs to reach the USB writer to trigger that wakeup. #[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, MaxSize)] -#[cfg_attr(feature = "rmk_protocol", derive(Schema))] #[cfg_attr(feature = "defmt", derive(defmt::Format))] #[derive(Default)] +#[cfg_attr(feature = "wasm", derive(tsify::Tsify))] +#[cfg_attr(feature = "wasm", tsify(into_wasm_abi, from_wasm_abi))] pub enum UsbState { #[default] Disabled, @@ -35,8 +35,9 @@ pub enum UsbState { /// availability and routing. The active transport is derived on demand via /// [`Self::decide_active`] from the input fields below. #[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, MaxSize)] -#[cfg_attr(feature = "rmk_protocol", derive(Schema))] #[cfg_attr(feature = "defmt", derive(defmt::Format))] +#[cfg_attr(feature = "wasm", derive(tsify::Tsify))] +#[cfg_attr(feature = "wasm", tsify(into_wasm_abi, from_wasm_abi))] pub struct ConnectionStatus { pub usb: UsbState, pub ble: BleStatus, diff --git a/rmk-types/src/dfu.rs b/rmk-types/src/dfu.rs index 6e53f66cd..060b5faea 100644 --- a/rmk-types/src/dfu.rs +++ b/rmk-types/src/dfu.rs @@ -1,13 +1,10 @@ //! DFU status types. use postcard::experimental::max_size::MaxSize; -#[cfg(feature = "rmk_protocol")] -use postcard_schema::Schema; use serde::{Deserialize, Serialize}; /// DFU status. #[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, MaxSize)] -#[cfg_attr(feature = "rmk_protocol", derive(Schema))] #[cfg_attr(feature = "defmt", derive(defmt::Format))] pub enum DfuStatus { /// DFU idle / no download active diff --git a/rmk-types/src/fmt.rs b/rmk-types/src/fmt.rs index e557f2722..618dac6de 100644 --- a/rmk-types/src/fmt.rs +++ b/rmk-types/src/fmt.rs @@ -33,3 +33,104 @@ macro_rules! impl_debug_list { } }; } + +/// Bridges a `#[bitfield(u8)]` type to a non-bitfield TypeScript object: Serialize / +/// Deserialize (a named-bool object for human-readable formats, the packed `u8` on the +/// wire), the `.d.ts` decl, and the self-describing wasm ABI — all from one field table. +#[macro_export] +macro_rules! bitfield_named_serde { + ($bitfield:ident, $typescript_type:literal, { $( $field:ident = $setter:ident ),+ $(,)? }) => { + impl serde::Serialize for $bitfield { + fn serialize(&self, serializer: S) -> ::core::result::Result { + if serializer.is_human_readable() { + #[derive(serde::Serialize)] + struct Repr { $($field: bool,)+ } + serde::Serialize::serialize(&Repr { $($field: self.$field(),)+ }, serializer) + } else { + serializer.serialize_u8(self.into_bits()) + } + } + } + + impl<'de> serde::Deserialize<'de> for $bitfield { + fn deserialize>(deserializer: D) -> ::core::result::Result { + if deserializer.is_human_readable() { + #[derive(serde::Deserialize)] + struct Repr { $($field: bool,)+ } + let r = ::deserialize(deserializer)?; + ::core::result::Result::Ok(Self::new() $(.$setter(r.$field))+) + } else { + ::core::result::Result::Ok(Self::from_bits(::deserialize(deserializer)?)) + } + } + } + + // Static `.d.ts` shape, built from the same field table. + #[cfg(feature = "wasm")] + const _: () = { + #[::wasm_bindgen::prelude::wasm_bindgen(typescript_custom_section)] + const TS_APPEND_CONTENT: &'static str = concat!( + "export type ", stringify!($bitfield), " = {", + $( " ", stringify!($field), ": boolean;", )+ + " };" + ); + }; + + // Self-describing wasm ABI, marshaled via the human-readable `Serialize` object. + $crate::wasm_object_abi!($bitfield, $typescript_type); + }; +} + +/// Gives a type the wasm ABI to be returned to JS as an object, keeping its own name +/// in the generated `.d.ts` — so a `#[wasm_bindgen]` fn returning it needs no +/// `unchecked_return_type`. +/// +/// The value is converted with `serde_wasm_bindgen`, so the type must impl +/// `Serialize`/`Deserialize` (whose human-readable form is that object) and declare +/// its TS shape with a `typescript_custom_section` (`export type = …`). +#[macro_export] +macro_rules! wasm_object_abi { + ($ty:ident, $typescript_type:literal) => { + #[cfg(feature = "wasm")] + const _: () = { + use ::wasm_bindgen::convert::{IntoWasmAbi, OptionIntoWasmAbi}; + use ::wasm_bindgen::describe::WasmDescribe; + use ::wasm_bindgen::prelude::*; + + #[wasm_bindgen] + extern "C" { + #[wasm_bindgen(typescript_type = $typescript_type)] + type WasmObject; + } + + impl From<$ty> for JsValue { + #[inline] + fn from(value: $ty) -> Self { + ::serde_wasm_bindgen::to_value(&value).unwrap_throw() + } + } + + impl WasmDescribe for $ty { + #[inline] + fn describe() { + WasmObject::describe(); + } + } + + impl IntoWasmAbi for $ty { + type Abi = ::Abi; + #[inline] + fn into_abi(self) -> Self::Abi { + JsValue::from(self).into_abi() + } + } + + impl OptionIntoWasmAbi for $ty { + #[inline] + fn none() -> Self::Abi { + ::none() + } + } + }; + }; +} diff --git a/rmk-types/src/fork.rs b/rmk-types/src/fork.rs index c00cd7557..65f9f29d1 100644 --- a/rmk-types/src/fork.rs +++ b/rmk-types/src/fork.rs @@ -3,8 +3,6 @@ use core::ops::{BitAnd, BitOr, Not}; use postcard::experimental::max_size::MaxSize; -#[cfg(feature = "rmk_protocol")] -use postcard_schema::Schema; use serde::{Deserialize, Serialize}; use crate::action::KeyAction; @@ -16,8 +14,9 @@ use crate::mouse_button::MouseButtons; /// /// A zero (default) value means "match nothing" — no modifiers, LEDs, or mouse buttons. #[derive(Debug, Clone, Copy, PartialEq, Eq, Default, Serialize, Deserialize, MaxSize)] -#[cfg_attr(feature = "rmk_protocol", derive(Schema))] #[cfg_attr(feature = "defmt", derive(defmt::Format))] +#[cfg_attr(feature = "wasm", derive(tsify::Tsify))] +#[cfg_attr(feature = "wasm", tsify(into_wasm_abi, from_wasm_abi))] pub struct StateBits { /// Active modifier combination to match. pub modifiers: ModifierCombination, @@ -75,8 +74,9 @@ impl StateBits { /// When the trigger key is pressed, the fork checks current state against `match_any` /// and `match_none` to decide between `positive_output` and `negative_output`. #[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize, MaxSize)] -#[cfg_attr(feature = "rmk_protocol", derive(Schema))] #[cfg_attr(feature = "defmt", derive(defmt::Format))] +#[cfg_attr(feature = "wasm", derive(tsify::Tsify))] +#[cfg_attr(feature = "wasm", tsify(into_wasm_abi, from_wasm_abi))] pub struct Fork { /// The key action that activates this fork. Should not be `KeyAction::Transparent`. pub trigger: KeyAction, diff --git a/rmk-types/src/keycode/consumer.rs b/rmk-types/src/keycode/consumer.rs index b1e8f9299..c6ca97a0e 100644 --- a/rmk-types/src/keycode/consumer.rs +++ b/rmk-types/src/keycode/consumer.rs @@ -1,8 +1,6 @@ //! Consumer page keycodes. use postcard::experimental::max_size::MaxSize; -#[cfg(feature = "rmk_protocol")] -use postcard_schema::Schema; use serde::{Deserialize, Serialize}; use super::hid::HidKeyCode; @@ -12,7 +10,8 @@ use super::hid::HidKeyCode; #[non_exhaustive] #[derive(Debug, Copy, Clone, PartialEq, Eq, Serialize, Deserialize, PartialOrd, Ord, MaxSize)] #[cfg_attr(feature = "defmt", derive(defmt::Format))] -#[cfg_attr(feature = "rmk_protocol", derive(Schema))] +#[cfg_attr(feature = "wasm", derive(tsify::Tsify))] +#[cfg_attr(feature = "wasm", tsify(into_wasm_abi, from_wasm_abi))] pub enum ConsumerKey { No, // 15.5 Display Controls diff --git a/rmk-types/src/keycode/hid.rs b/rmk-types/src/keycode/hid.rs index 17a29b5a2..cecf5b793 100644 --- a/rmk-types/src/keycode/hid.rs +++ b/rmk-types/src/keycode/hid.rs @@ -1,8 +1,6 @@ //! USB HID keycodes. use postcard::experimental::max_size::MaxSize; -#[cfg(feature = "rmk_protocol")] -use postcard_schema::Schema; use serde::{Deserialize, Serialize}; use strum::FromRepr; @@ -14,7 +12,8 @@ use crate::modifier::ModifierCombination; #[repr(u8)] #[derive(Debug, Copy, Clone, PartialEq, Eq, Serialize, Deserialize, PartialOrd, Ord, FromRepr, MaxSize)] #[cfg_attr(feature = "defmt", derive(defmt::Format))] -#[cfg_attr(feature = "rmk_protocol", derive(Schema))] +#[cfg_attr(feature = "wasm", derive(tsify::Tsify))] +#[cfg_attr(feature = "wasm", tsify(into_wasm_abi, from_wasm_abi))] pub enum HidKeyCode { /// Reserved, no-key. No = 0x0000, diff --git a/rmk-types/src/keycode/mod.rs b/rmk-types/src/keycode/mod.rs index f77b48371..6f0c480ee 100644 --- a/rmk-types/src/keycode/mod.rs +++ b/rmk-types/src/keycode/mod.rs @@ -9,17 +9,16 @@ pub use ascii::{from_ascii, to_ascii}; pub use consumer::ConsumerKey; pub use hid::HidKeyCode; use postcard::experimental::max_size::MaxSize; -#[cfg(feature = "rmk_protocol")] -use postcard_schema::Schema; use serde::{Deserialize, Serialize}; pub use system_control::SystemControlKey; /// Key codes which are not in the HID spec, but still commonly used #[derive(Debug, Copy, Clone, PartialEq, Eq, Serialize, Deserialize, PartialOrd, Ord, MaxSize)] #[cfg_attr(feature = "defmt", derive(defmt::Format))] -#[cfg_attr(feature = "rmk_protocol", derive(Schema))] #[cfg_attr(feature = "_codegen", derive(strum::VariantNames))] #[non_exhaustive] +#[cfg_attr(feature = "wasm", derive(tsify::Tsify))] +#[cfg_attr(feature = "wasm", tsify(into_wasm_abi, from_wasm_abi))] pub enum SpecialKey { // GraveEscape GraveEscape, @@ -29,8 +28,9 @@ pub enum SpecialKey { #[derive(Debug, Copy, Clone, PartialEq, Eq, Serialize, Deserialize, PartialOrd, Ord, MaxSize)] #[cfg_attr(feature = "defmt", derive(defmt::Format))] -#[cfg_attr(feature = "rmk_protocol", derive(Schema))] #[non_exhaustive] +#[cfg_attr(feature = "wasm", derive(tsify::Tsify))] +#[cfg_attr(feature = "wasm", tsify(into_wasm_abi, from_wasm_abi))] pub enum KeyCode { Hid(HidKeyCode), Consumer(ConsumerKey), diff --git a/rmk-types/src/keycode/system_control.rs b/rmk-types/src/keycode/system_control.rs index c8385065e..735600a2d 100644 --- a/rmk-types/src/keycode/system_control.rs +++ b/rmk-types/src/keycode/system_control.rs @@ -1,8 +1,6 @@ //! System control keycodes. use postcard::experimental::max_size::MaxSize; -#[cfg(feature = "rmk_protocol")] -use postcard_schema::Schema; use serde::{Deserialize, Serialize}; use super::hid::HidKeyCode; @@ -13,7 +11,8 @@ use super::hid::HidKeyCode; #[repr(u8)] #[derive(Debug, Copy, Clone, PartialEq, Eq, Serialize, Deserialize, PartialOrd, Ord, MaxSize)] #[cfg_attr(feature = "defmt", derive(defmt::Format))] -#[cfg_attr(feature = "rmk_protocol", derive(Schema))] +#[cfg_attr(feature = "wasm", derive(tsify::Tsify))] +#[cfg_attr(feature = "wasm", tsify(into_wasm_abi, from_wasm_abi))] pub enum SystemControlKey { No = 0x00, PowerDown = 0x81, diff --git a/rmk-types/src/led_indicator.rs b/rmk-types/src/led_indicator.rs index 26ef28801..545bc6f57 100644 --- a/rmk-types/src/led_indicator.rs +++ b/rmk-types/src/led_indicator.rs @@ -6,12 +6,6 @@ use core::ops::{BitAnd, BitAndAssign, BitOr, BitOrAssign, Not}; use bitfield_struct::bitfield; use postcard::experimental::max_size::MaxSize; -#[cfg(feature = "rmk_protocol")] -use postcard_schema::{ - Schema, - schema::{DataModelType, NamedType}, -}; -use serde::{Deserialize, Serialize}; /// Indicators defined in the HID spec 11.1 #[derive(Debug)] @@ -25,7 +19,7 @@ pub enum LedIndicatorType { } #[bitfield(u8, defmt = cfg(feature = "defmt"))] -#[derive(Eq, PartialEq, Serialize, Deserialize, MaxSize)] +#[derive(Eq, PartialEq, MaxSize)] pub struct LedIndicator { #[bits(1)] pub num_lock: bool, @@ -41,13 +35,14 @@ pub struct LedIndicator { _reserved: u8, } -#[cfg(feature = "rmk_protocol")] -impl Schema for LedIndicator { - const SCHEMA: &'static NamedType = &NamedType { - name: "LedIndicator", - ty: &DataModelType::U8, - }; -} +// u8 on the wire (postcard); named bools on serde-wasm-bindgen / serde_json (TS). +crate::bitfield_named_serde!(LedIndicator, "LedIndicator", { + num_lock = with_num_lock, + caps_lock = with_caps_lock, + scroll_lock = with_scroll_lock, + compose = with_compose, + kana = with_kana, +}); impl BitOr for LedIndicator { type Output = Self; diff --git a/rmk-types/src/lib.rs b/rmk-types/src/lib.rs index cc80e4e8a..a89065883 100644 --- a/rmk-types/src/lib.rs +++ b/rmk-types/src/lib.rs @@ -23,12 +23,17 @@ //! //! ### Protocol //! - [`protocol::vial`] — Vial/Via protocol types -//! - [`protocol::rmk`] — RMK native protocol ICD (feature-gated: `rmk_protocol`) +//! - [`protocol::rynk`] — RMK native protocol ICD (feature-gated: `rynk`) //! //! ### Build-time //! - [`constants`] — Generated from `keyboard.toml` by `build.rs` -#![no_std] +#![cfg_attr(not(feature = "wasm"), no_std)] + +// The host build (no_std, but on an allocator-backed platform) uses `alloc::Vec` +// for bulk message fields, which are unbounded there — see `protocol::rynk`. +#[cfg(feature = "host")] +extern crate alloc; pub mod action; pub mod battery; diff --git a/rmk-types/src/modifier.rs b/rmk-types/src/modifier.rs index 423ec91e3..89720b27f 100644 --- a/rmk-types/src/modifier.rs +++ b/rmk-types/src/modifier.rs @@ -7,18 +7,12 @@ use core::ops::{BitAnd, BitAndAssign, BitOr, BitOrAssign, Not}; use bitfield_struct::bitfield; use postcard::experimental::max_size::MaxSize; -#[cfg(feature = "rmk_protocol")] -use postcard_schema::{ - Schema, - schema::{DataModelType, NamedType}, -}; -use serde::{Deserialize, Serialize}; use crate::keycode::HidKeyCode; /// The bit representation of the modifier combination. #[bitfield(u8, order = Lsb, debug = false)] -#[derive(Serialize, Deserialize, MaxSize, Eq, PartialEq)] +#[derive(MaxSize, Eq, PartialEq)] pub struct ModifierCombination { #[bits(1)] pub left_ctrl: bool, @@ -51,13 +45,17 @@ crate::impl_debug_list!(ModifierCombination, |self| [ .into_iter() .filter_map(|(state, label)| state.then_some(label))); -#[cfg(feature = "rmk_protocol")] -impl Schema for ModifierCombination { - const SCHEMA: &'static NamedType = &NamedType { - name: "ModifierCombination", - ty: &DataModelType::U8, - }; -} +// u8 on the wire (postcard); named bools on serde-wasm-bindgen / serde_json (TS). +crate::bitfield_named_serde!(ModifierCombination, "ModifierCombination", { + left_ctrl = with_left_ctrl, + left_shift = with_left_shift, + left_alt = with_left_alt, + left_gui = with_left_gui, + right_ctrl = with_right_ctrl, + right_shift = with_right_shift, + right_alt = with_right_alt, + right_gui = with_right_gui, +}); impl BitOr for ModifierCombination { type Output = Self; diff --git a/rmk-types/src/morse.rs b/rmk-types/src/morse.rs index cc762acf1..a0cbb8060 100644 --- a/rmk-types/src/morse.rs +++ b/rmk-types/src/morse.rs @@ -7,10 +7,6 @@ use heapless::LinearMap; use postcard::experimental::max_size::MaxSize; -#[cfg(feature = "rmk_protocol")] -use postcard_schema::Schema; -#[cfg(feature = "rmk_protocol")] -use postcard_schema::schema::{DataModelType, NamedType, NamedValue}; use serde::{Deserialize, Serialize}; use crate::action::Action; @@ -23,10 +19,11 @@ use crate::constants::MORSE_SIZE; /// Mode for morse key behavior #[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize, MaxSize)] #[cfg_attr(feature = "defmt", derive(defmt::Format))] -#[cfg_attr(feature = "rmk_protocol", derive(Schema))] #[repr(u8)] +#[cfg_attr(feature = "wasm", derive(tsify::Tsify))] +#[cfg_attr(feature = "wasm", tsify(into_wasm_abi, from_wasm_abi))] pub enum MorseMode { - /// Same as QMK's permissive hold: https://docs.qmk.fm/tap_hold#tap-or-hold-decision-modes + /// Same as QMK's permissive hold: /// When another key is pressed and released during the current morse key is held, /// the hold action of current morse key will be triggered PermissiveHold, @@ -55,9 +52,8 @@ pub enum MorseMode { /// - `gap_timeout` (bits 29-17): gap timeout in ms (0 = None, max 8191) /// - `uni_tap` (bits 16-15): `00`/`01` = None, `10` = Some(false), `11` = Some(true) /// - `hold_timeout` (bits 12-0): hold timeout in ms (0 = None, max 8191) -#[derive(PartialEq, Eq, Clone, Copy, Debug, Serialize, Deserialize, MaxSize)] +#[derive(PartialEq, Eq, Clone, Copy, Debug, MaxSize)] #[cfg_attr(feature = "defmt", derive(defmt::Format))] -#[cfg_attr(feature = "rmk_protocol", derive(Schema))] pub struct MorseProfile(u64); const TIMEOUT_MASK: u64 = 0x1FFF; @@ -251,6 +247,66 @@ impl From for u64 { } } +// Wire stays packed; human-readable serializers expose named fields. +impl Serialize for MorseProfile { + fn serialize(&self, serializer: S) -> Result { + if serializer.is_human_readable() { + #[derive(Serialize)] + struct Repr { + unilateral_tap: Option, + enable_flow_tap: Option, + mode: Option, + hold_timeout_ms: Option, + gap_timeout_ms: Option, + quick_tap_timeout_ms: Option, + } + Repr { + unilateral_tap: self.unilateral_tap(), + enable_flow_tap: self.enable_flow_tap(), + mode: self.mode(), + hold_timeout_ms: self.hold_timeout_ms(), + gap_timeout_ms: self.gap_timeout_ms(), + quick_tap_timeout_ms: self.quick_tap_timeout_ms(), + } + .serialize(serializer) + } else { + serializer.serialize_u64(self.0) + } + } +} + +impl<'de> Deserialize<'de> for MorseProfile { + fn deserialize>(deserializer: D) -> Result { + if deserializer.is_human_readable() { + #[derive(Deserialize)] + struct Repr { + unilateral_tap: Option, + enable_flow_tap: Option, + mode: Option, + hold_timeout_ms: Option, + gap_timeout_ms: Option, + quick_tap_timeout_ms: Option, + } + let r = Repr::deserialize(deserializer)?; + Ok( + MorseProfile::new(r.unilateral_tap, r.mode, r.hold_timeout_ms, r.gap_timeout_ms) + .with_enable_flow_tap(r.enable_flow_tap) + .with_quick_tap_timeout_ms(r.quick_tap_timeout_ms), + ) + } else { + Ok(MorseProfile(u64::deserialize(deserializer)?)) + } + } +} + +// TS shape mirrors the `Repr` above; `Option` renders as `T | undefined`. +#[cfg(feature = "wasm")] +const _: () = { + #[::wasm_bindgen::prelude::wasm_bindgen(typescript_custom_section)] + const TS_APPEND_CONTENT: &'static str = "export type MorseProfile = { unilateral_tap: boolean | undefined; enable_flow_tap: boolean | undefined; mode: MorseMode | undefined; hold_timeout_ms: number | undefined; gap_timeout_ms: number | undefined; quick_tap_timeout_ms: number | undefined; };"; +}; +crate::wasm_object_abi!(MorseProfile, "MorseProfile"); + // --------------------------------------------------------------------------- // MorsePattern & Morse — pattern encoding and key definition // --------------------------------------------------------------------------- @@ -258,8 +314,9 @@ impl From for u64 { /// MorsePattern is a sequence of maximum 15 taps or holds that can be encoded into an u16: /// 0x1 when empty, then 0 for tap or 1 for hold shifted from the right #[derive(Debug, Copy, Clone, PartialEq, Eq, Serialize, Deserialize, MaxSize)] -#[cfg_attr(feature = "rmk_protocol", derive(Schema))] #[cfg_attr(feature = "defmt", derive(defmt::Format))] +#[cfg_attr(feature = "wasm", derive(tsify::Tsify))] +#[cfg_attr(feature = "wasm", tsify(into_wasm_abi, from_wasm_abi))] pub struct MorsePattern(u16); pub const TAP: MorsePattern = MorsePattern(0b10); @@ -346,12 +403,15 @@ impl MorsePattern { /// Note: `MORSE_SIZE` is a **wire-format** capacity — on firmware it equals /// `MAX_PATTERNS_PER_KEY` (from `keyboard.toml`), on host it's a fixed upper bound. #[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[cfg_attr(feature = "wasm", derive(tsify::Tsify))] +#[cfg_attr(feature = "wasm", tsify(into_wasm_abi, from_wasm_abi))] pub struct Morse { /// The profile of this morse key, which defines the timing parameters, etc. /// If some of its fields are filled with None, the global default value will be used. pub profile: MorseProfile, /// The list of pattern -> action pairs, which can be triggered #[serde(with = "morse_actions_serde")] + #[cfg_attr(feature = "wasm", tsify(type = "[number, Action][]"))] pub actions: LinearMap, } @@ -386,36 +446,9 @@ impl PartialEq for Morse { impl Eq for Morse {} -/// Manual Schema impl because Morse uses custom serde for LinearMap. -/// The wire format is: (MorseProfile, Vec<(u16, Action)>). -/// -/// **Important:** This must stay in sync with the custom serde impl in -/// `morse_actions_serde`. If the wire format changes, update this Schema -/// accordingly. The `morse_schema_matches_wire_format` test validates -/// this invariant. -#[cfg(feature = "rmk_protocol")] -impl Schema for Morse { - const SCHEMA: &'static NamedType = &NamedType { - name: "Morse", - ty: &DataModelType::Struct(&[ - &NamedValue { - name: "profile", - ty: ::SCHEMA, - }, - &NamedValue { - name: "actions", - ty: &NamedType { - name: "MorseActions", - ty: &DataModelType::Seq(&NamedType { - name: "MorseActionEntry", - ty: &DataModelType::Tuple(&[::SCHEMA, ::SCHEMA]), - }), - }, - }, - ]), - }; -} - +/// Wire format note: `Morse` uses a custom serde impl for the `LinearMap` +/// of actions. The on-wire shape is `(MorseProfile, Vec<(u16, Action)>)`. +/// The `morse_wire_format` test below pins this contract. impl Morse { pub fn new_from_vial( tap: Action, @@ -815,15 +848,36 @@ mod tests { assert_eq!(profile.mode(), Some(MorseMode::PermissiveHold)); } - /// Validates that the manual Schema impl matches the actual serde wire format. - /// - /// The Schema claims Morse serializes as: - /// struct { profile: MorseProfile, actions: Vec<(u16, Action)> } + /// The human-readable serde goes `MorseProfile` -> decoded parts -> `new()`. + /// All 32 bits are covered by the five fields, so that path must be lossless. + #[test] + fn morse_profile_parts_roundtrip() { + for p in [ + MorseProfile::new( + Some(false), + Some(MorseMode::HoldOnOtherPress), + Some(TIMEOUT_MAX_MS), + Some(1), + ) + .with_enable_flow_tap(Some(false)), + MorseProfile::new(Some(true), Some(MorseMode::Normal), Some(200), Some(150)) + .with_enable_flow_tap(Some(true)), + MorseProfile::const_default(), + ] { + let parts = MorseProfile::new(p.unilateral_tap(), p.mode(), p.hold_timeout_ms(), p.gap_timeout_ms()) + .with_enable_flow_tap(p.enable_flow_tap()); + assert_eq!(p, parts); + } + } + + /// Pins the on-wire shape of `Morse`: + /// `(MorseProfile, Vec<(u16, Action)>)` /// - /// We verify this by checking that a Morse value can be reconstructed by - /// manually deserializing its two fields in order using the same bytes. + /// `Morse` uses a custom serde impl for the `LinearMap` of actions; this + /// test verifies a Morse value can be reconstructed by manually + /// deserializing those two fields from the same byte stream. #[test] - fn morse_schema_matches_wire_format() { + fn morse_wire_format() { use postcard::to_slice; // Build a Morse with known data diff --git a/rmk-types/src/mouse_button.rs b/rmk-types/src/mouse_button.rs index 29a5a17e0..bcfd9ab5e 100644 --- a/rmk-types/src/mouse_button.rs +++ b/rmk-types/src/mouse_button.rs @@ -6,16 +6,10 @@ use core::ops::{BitAnd, BitAndAssign, BitOr, BitOrAssign, Not}; use bitfield_struct::bitfield; use postcard::experimental::max_size::MaxSize; -#[cfg(feature = "rmk_protocol")] -use postcard_schema::{ - Schema, - schema::{DataModelType, NamedType}, -}; -use serde::{Deserialize, Serialize}; /// Mouse buttons #[bitfield(u8, order = Lsb, defmt = cfg(feature = "defmt"))] -#[derive(Eq, PartialEq, Serialize, Deserialize, MaxSize)] +#[derive(Eq, PartialEq, MaxSize)] pub struct MouseButtons { #[bits(1)] pub button1: bool, //left @@ -35,6 +29,18 @@ pub struct MouseButtons { pub button8: bool, } +// u8 on the wire (postcard); named bools on serde-wasm-bindgen / serde_json (TS). +crate::bitfield_named_serde!(MouseButtons, "MouseButtons", { + button1 = with_button1, + button2 = with_button2, + button3 = with_button3, + button4 = with_button4, + button5 = with_button5, + button6 = with_button6, + button7 = with_button7, + button8 = with_button8, +}); + impl BitOr for MouseButtons { type Output = Self; @@ -99,11 +105,3 @@ impl MouseButtons { .with_button8(button8) } } - -#[cfg(feature = "rmk_protocol")] -impl Schema for MouseButtons { - const SCHEMA: &'static NamedType = &NamedType { - name: "MouseButtons", - ty: &DataModelType::U8, - }; -} diff --git a/rmk-types/src/protocol/mod.rs b/rmk-types/src/protocol/mod.rs index 062a837e5..560bcdf9f 100644 --- a/rmk-types/src/protocol/mod.rs +++ b/rmk-types/src/protocol/mod.rs @@ -4,14 +4,13 @@ //! //! - [`vial`] — Legacy Vial/Via protocol for compatibility with the Vial GUI. //! Always available. -//! - [`rmk`] — RMK native protocol built on postcard-rpc. Provides typed -//! endpoints for keymap, combo, morse, fork, encoder, macro, and status -//! queries over COBS-framed byte streams (USB bulk or BLE serial). -//! Enabled by the `rmk_protocol` feature. +//! - [`rynk`] — RMK native protocol. Carries `KeyAction`, `Combo`, `Morse`, +//! `Fork`, `EncoderAction`, `BatteryStatus`, `BleStatus` on the wire over +//! a 3-byte fixed header + postcard payload, COBS-framed. Enabled by the `rynk` feature. //! //! The two protocols are mutually exclusive at the firmware level -//! (`rmk_protocol` and `vial` features cannot be enabled together). +//! (`rynk` and `vial` features cannot be enabled together). -#[cfg(feature = "rmk_protocol")] -pub mod rmk; +#[cfg(feature = "rynk")] +pub mod rynk; pub mod vial; diff --git a/rmk-types/src/protocol/rmk/combo.rs b/rmk-types/src/protocol/rmk/combo.rs deleted file mode 100644 index 94889aa5d..000000000 --- a/rmk-types/src/protocol/rmk/combo.rs +++ /dev/null @@ -1,137 +0,0 @@ -//! Combo endpoint types. - -use postcard::experimental::max_size::MaxSize; -use postcard_schema::Schema; -use serde::{Deserialize, Serialize}; - -use crate::combo::Combo; - -/// Request payload for `SetCombo`. -#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, MaxSize, Schema)] -pub struct SetComboRequest { - pub index: u8, - pub config: Combo, -} - -// Bulk transfer types live in the `bulk` submodule below and are re-exported -// when the `bulk` feature is enabled. Gating the entire submodule once avoids -// repeating `#[cfg(feature = "bulk")]` on every type, impl, and import. -#[cfg(feature = "bulk")] -mod bulk { - use heapless::Vec; - use postcard::experimental::max_size::MaxSize; - use postcard_schema::Schema; - use serde::{Deserialize, Serialize}; - - use crate::combo::Combo; - use crate::constants::BULK_SIZE; - - /// Request payload for `GetComboBulk`. - #[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, MaxSize, Schema)] - pub struct GetComboBulkRequest { - pub start_index: u8, - pub count: u8, - } - - /// Bulk request payload for setting multiple combos at once. - #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Schema)] - pub struct SetComboBulkRequest { - pub start_index: u8, - pub configs: Vec, - } - - impl MaxSize for SetComboBulkRequest { - const POSTCARD_MAX_SIZE: usize = u8::POSTCARD_MAX_SIZE + crate::heapless_vec_max_size::(); - } - - /// Bulk response for getting multiple combos at once. - #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Schema)] - pub struct GetComboBulkResponse { - pub configs: Vec, - } - - impl MaxSize for GetComboBulkResponse { - const POSTCARD_MAX_SIZE: usize = crate::heapless_vec_max_size::(); - } -} - -#[cfg(feature = "bulk")] -pub use bulk::*; - -#[cfg(test)] -mod tests { - use super::*; - use crate::action::KeyAction; - use crate::constants::COMBO_SIZE; - use crate::protocol::rmk::test_utils::{assert_max_size_bound, round_trip}; - - /// Build a `Combo` filled to `COMBO_SIZE` actions plus a `Some` layer — - /// the worst case for the manual `MaxSize` impl on `Combo`. - fn full_combo() -> Combo { - let actions = core::iter::repeat_n( - KeyAction::Single(crate::action::Action::Key(crate::keycode::KeyCode::Hid( - crate::keycode::HidKeyCode::A, - ))), - COMBO_SIZE, - ); - Combo::new(actions, KeyAction::No, Some(u8::MAX)) - } - - #[test] - fn round_trip_combo() { - round_trip(&Combo::new([KeyAction::No], KeyAction::No, Some(1))); - round_trip(&Combo::empty()); - } - - #[test] - fn round_trip_set_combo_request() { - round_trip(&SetComboRequest { - index: 3, - config: Combo::new([KeyAction::No], KeyAction::No, Some(1)), - }); - } - - #[test] - fn round_trip_combo_max_capacity() { - let c = full_combo(); - assert_eq!(c.actions.len(), COMBO_SIZE); - round_trip(&c); - assert_max_size_bound(&c); - } - - #[cfg(feature = "bulk")] - mod bulk { - use heapless::Vec; - - use super::super::*; - use super::full_combo; - use crate::combo::Combo; - use crate::constants::BULK_SIZE; - use crate::protocol::rmk::test_utils::{assert_max_size_bound, round_trip}; - - #[test] - fn round_trip_set_combo_bulk_request_max_capacity() { - let mut configs: Vec = Vec::new(); - for _ in 0..BULK_SIZE { - configs.push(full_combo()).unwrap(); - } - let req = SetComboBulkRequest { - start_index: u8::MAX, - configs, - }; - round_trip(&req); - assert_max_size_bound(&req); - } - - #[test] - fn round_trip_get_combo_bulk_response_max_capacity() { - let mut configs: Vec = Vec::new(); - for _ in 0..BULK_SIZE { - configs.push(full_combo()).unwrap(); - } - let resp = GetComboBulkResponse { configs }; - round_trip(&resp); - assert_max_size_bound(&resp); - } - } -} diff --git a/rmk-types/src/protocol/rmk/endpoints.rs b/rmk-types/src/protocol/rmk/endpoints.rs deleted file mode 100644 index 05d72bc28..000000000 --- a/rmk-types/src/protocol/rmk/endpoints.rs +++ /dev/null @@ -1,446 +0,0 @@ -//! Endpoint declarations for the RMK protocol. -//! -//! Each `endpoints!` block declares one logical group. Feature-gated groups -//! provide an empty fallback constant when their feature is disabled, so the -//! combined `ENDPOINT_LIST` always type-checks. -//! -//! ## Adding a new conditional endpoint group -//! -//! 1. Add the `endpoints!` block with its `#[cfg(...)]` guard. -//! 2. Add a `#[cfg(not(...))]` empty fallback constant (`EndpointMap` with empty slices). -//! 3. Add the list to the single `ENDPOINT_LIST` definition. -//! 4. Add the group's endpoints to `endpoint_list_contains_all_non_bulk_endpoints` test. -//! 5. If feature-gated, add the group to the matching `endpoint_keys_*_locked` snapshot test. - -// The postcard-rpc endpoints! macro performs heavy const-eval for type uniqueness checks. -#![allow(long_running_const_eval)] - -use postcard_rpc::endpoints; - -use super::*; -use crate::action::{EncoderAction, KeyAction}; -#[cfg(feature = "_ble")] -use crate::battery::BatteryStatus; -#[cfg(feature = "_ble")] -use crate::ble::BleStatus; -use crate::combo::Combo; -use crate::connection::ConnectionType; -use crate::fork::Fork; -use crate::morse::Morse; - -endpoints! { - list = SYSTEM_ENDPOINT_LIST; - omit_std = true; - | EndpointTy | RequestTy | ResponseTy | Path | - | ---------- | --------- | ---------- | ---- | - | GetVersion | () | ProtocolVersion | "sys/version" | - | GetCapabilities | () | DeviceCapabilities | "sys/caps" | - | GetLockStatus | () | LockStatus | "sys/lock_status" | - | UnlockRequest | () | UnlockChallenge | "sys/unlock" | - | LockRequest | () | () | "sys/lock" | - | Reboot | () | () | "sys/reboot" | - | BootloaderJump | () | () | "sys/bootloader" | - | StorageReset | StorageResetMode | () | "sys/storage_reset" | -} - -endpoints! { - list = KEYMAP_ENDPOINT_LIST; - omit_std = true; - | EndpointTy | RequestTy | ResponseTy | Path | - | ---------- | --------- | ---------- | ---- | - | GetKeyAction | KeyPosition | KeyAction | "keymap/get" | - | SetKeyAction | SetKeyRequest | RmkResult | "keymap/set" | - | GetDefaultLayer | () | u8 | "keymap/default_layer" | - | SetDefaultLayer | u8 | RmkResult | "keymap/set_default_layer" | -} - -#[cfg(feature = "bulk")] -endpoints! { - list = KEYMAP_BULK_ENDPOINT_LIST; - omit_std = true; - | EndpointTy | RequestTy | ResponseTy | Path | - | ---------- | --------- | ---------- | ---- | - | GetKeymapBulk | GetKeymapBulkRequest | GetKeymapBulkResponse | "keymap/bulk_get" | - | SetKeymapBulk | SetKeymapBulkRequest | RmkResult | "keymap/bulk_set" | -} - -#[cfg(not(feature = "bulk"))] -pub const KEYMAP_BULK_ENDPOINT_LIST: postcard_rpc::EndpointMap = postcard_rpc::EndpointMap { - types: &[], - endpoints: &[], -}; - -endpoints! { - list = ENCODER_ENDPOINT_LIST; - omit_std = true; - | EndpointTy | RequestTy | ResponseTy | Path | - | ---------- | --------- | ---------- | ---- | - | GetEncoderAction | GetEncoderRequest | EncoderAction | "encoder/get" | - | SetEncoderAction | SetEncoderRequest | RmkResult | "encoder/set" | -} - -endpoints! { - list = MACRO_ENDPOINT_LIST; - omit_std = true; - | EndpointTy | RequestTy | ResponseTy | Path | - | ---------- | --------- | ---------- | ---- | - | GetMacro | GetMacroRequest | MacroData | "macro/get" | - | SetMacro | SetMacroRequest | RmkResult | "macro/set" | -} - -endpoints! { - list = COMBO_ENDPOINT_LIST; - omit_std = true; - | EndpointTy | RequestTy | ResponseTy | Path | - | ---------- | --------- | ---------- | ---- | - | GetCombo | u8 | Combo | "combo/get" | - | SetCombo | SetComboRequest | RmkResult | "combo/set" | -} - -#[cfg(feature = "bulk")] -endpoints! { - list = COMBO_BULK_ENDPOINT_LIST; - omit_std = true; - | EndpointTy | RequestTy | ResponseTy | Path | - | ---------- | --------- | ---------- | ---- | - | GetComboBulk | GetComboBulkRequest | GetComboBulkResponse | "combo/bulk_get" | - | SetComboBulk | SetComboBulkRequest | RmkResult | "combo/bulk_set" | -} - -#[cfg(not(feature = "bulk"))] -pub const COMBO_BULK_ENDPOINT_LIST: postcard_rpc::EndpointMap = postcard_rpc::EndpointMap { - types: &[], - endpoints: &[], -}; - -endpoints! { - list = MORSE_ENDPOINT_LIST; - omit_std = true; - | EndpointTy | RequestTy | ResponseTy | Path | - | ---------- | --------- | ---------- | ---- | - | GetMorse | u8 | Morse | "morse/get" | - | SetMorse | SetMorseRequest | RmkResult | "morse/set" | -} - -#[cfg(feature = "bulk")] -endpoints! { - list = MORSE_BULK_ENDPOINT_LIST; - omit_std = true; - | EndpointTy | RequestTy | ResponseTy | Path | - | ---------- | --------- | ---------- | ---- | - | GetMorseBulk | GetMorseBulkRequest | GetMorseBulkResponse | "morse/bulk_get" | - | SetMorseBulk | SetMorseBulkRequest | RmkResult | "morse/bulk_set" | -} - -#[cfg(not(feature = "bulk"))] -pub const MORSE_BULK_ENDPOINT_LIST: postcard_rpc::EndpointMap = postcard_rpc::EndpointMap { - types: &[], - endpoints: &[], -}; - -endpoints! { - list = FORK_ENDPOINT_LIST; - omit_std = true; - | EndpointTy | RequestTy | ResponseTy | Path | - | ---------- | --------- | ---------- | ---- | - | GetFork | u8 | Fork | "fork/get" | - | SetFork | SetForkRequest | RmkResult | "fork/set" | -} - -endpoints! { - list = BEHAVIOR_ENDPOINT_LIST; - omit_std = true; - | EndpointTy | RequestTy | ResponseTy | Path | - | ---------- | --------- | ---------- | ---- | - | GetBehaviorConfig | () | BehaviorConfig | "behavior/get" | - | SetBehaviorConfig | BehaviorConfig | RmkResult | "behavior/set" | -} - -endpoints! { - list = CONNECTION_ENDPOINT_LIST; - omit_std = true; - | EndpointTy | RequestTy | ResponseTy | Path | - | ---------- | --------- | ---------- | ---- | - | GetConnectionType | () | ConnectionType | "conn/type" | - | SetConnectionType | ConnectionType | RmkResult | "conn/set_type" | -} - -endpoints! { - list = STATUS_ENDPOINT_LIST; - omit_std = true; - | EndpointTy | RequestTy | ResponseTy | Path | - | ---------- | --------- | ---------- | ---- | - | GetCurrentLayer | () | u8 | "status/layer/get" | - | GetMatrixState | () | MatrixState | "status/matrix/get" | -} - -#[cfg(feature = "_ble")] -endpoints! { - list = BLE_CONNECTION_ENDPOINT_LIST; - omit_std = true; - | EndpointTy | RequestTy | ResponseTy | Path | - | ---------- | --------- | ---------- | ---- | - | GetBleStatus | () | BleStatus | "conn/ble" | - | SwitchBleProfile | u8 | RmkResult | "conn/switch_ble" | - | ClearBleProfile | u8 | RmkResult | "conn/clear_ble" | -} - -/// Empty endpoint list for when BLE is not available. -#[cfg(not(feature = "_ble"))] -pub const BLE_CONNECTION_ENDPOINT_LIST: postcard_rpc::EndpointMap = postcard_rpc::EndpointMap { - types: &[], - endpoints: &[], -}; - -#[cfg(feature = "_ble")] -endpoints! { - list = BLE_STATUS_ENDPOINT_LIST; - omit_std = true; - | EndpointTy | RequestTy | ResponseTy | Path | - | ---------- | --------- | ---------- | ---- | - | GetBatteryStatus | () | BatteryStatus | "status/battery/get" | -} - -#[cfg(not(feature = "_ble"))] -pub const BLE_STATUS_ENDPOINT_LIST: postcard_rpc::EndpointMap = postcard_rpc::EndpointMap { - types: &[], - endpoints: &[], -}; - -#[cfg(all(feature = "_ble", feature = "split"))] -endpoints! { - list = SPLIT_STATUS_ENDPOINT_LIST; - omit_std = true; - | EndpointTy | RequestTy | ResponseTy | Path | - | ---------- | --------- | ---------- | ---- | - | GetPeripheralStatus | u8 | PeripheralStatus | "status/peripheral/get" | -} - -#[cfg(not(all(feature = "_ble", feature = "split")))] -pub const SPLIT_STATUS_ENDPOINT_LIST: postcard_rpc::EndpointMap = postcard_rpc::EndpointMap { - types: &[], - endpoints: &[], -}; - -/// Build an `EndpointMap` from a list of endpoint group constants. -/// -/// Each argument must be a `postcard_rpc::EndpointList` (as produced by `endpoints!`). -/// The standard ICD endpoints are always included automatically. -macro_rules! build_endpoint_map { - ($($list:expr),* $(,)?) => { - const { - use postcard_rpc::postcard_schema::schema::{DataModelType, NamedType}; - use postcard_rpc::{EndpointMap, Key}; - - const NULL_KEY: Key = unsafe { Key::from_bytes([0u8; 8]) }; - const NULL_TY: &NamedType = &NamedType { - name: "", - ty: &DataModelType::Unit, - }; - - const TYPE_SLICES: &[&[&NamedType]] = &[ - postcard_rpc::standard_icd::STANDARD_ICD_ENDPOINTS.types, - $($list.types,)* - ]; - const TYPE_LEN: usize = postcard_rpc::uniques::total_len(TYPE_SLICES); - const TYPES: [&NamedType; TYPE_LEN] = - postcard_rpc::uniques::combine_with_copy(TYPE_SLICES, NULL_TY); - - const EP_SLICES: &[&[(&str, Key, Key)]] = &[ - postcard_rpc::standard_icd::STANDARD_ICD_ENDPOINTS.endpoints, - $($list.endpoints,)* - ]; - const EP_LEN: usize = postcard_rpc::uniques::total_len(EP_SLICES); - const EPS: [(&str, Key, Key); EP_LEN] = - postcard_rpc::uniques::combine_with_copy(EP_SLICES, ("", NULL_KEY, NULL_KEY)); - - EndpointMap { - types: TYPES.as_slice(), - endpoints: EPS.as_slice(), - } - } - }; -} - -/// Full endpoint map for the RMK protocol. -/// -/// Assembled from smaller endpoint groups to avoid very large const-eval -/// workloads in a single `endpoints!` invocation. -/// Feature-gated groups (bulk, BLE, split) use empty fallback constants -/// when the corresponding feature is disabled. -pub const ENDPOINT_LIST: postcard_rpc::EndpointMap = build_endpoint_map!( - SYSTEM_ENDPOINT_LIST, - KEYMAP_ENDPOINT_LIST, - KEYMAP_BULK_ENDPOINT_LIST, - ENCODER_ENDPOINT_LIST, - MACRO_ENDPOINT_LIST, - COMBO_ENDPOINT_LIST, - COMBO_BULK_ENDPOINT_LIST, - MORSE_ENDPOINT_LIST, - MORSE_BULK_ENDPOINT_LIST, - FORK_ENDPOINT_LIST, - BEHAVIOR_ENDPOINT_LIST, - CONNECTION_ENDPOINT_LIST, - BLE_CONNECTION_ENDPOINT_LIST, - STATUS_ENDPOINT_LIST, - BLE_STATUS_ENDPOINT_LIST, - SPLIT_STATUS_ENDPOINT_LIST, -); - -#[cfg(test)] -mod tests { - extern crate alloc; - - use postcard_rpc::{Endpoint, Key}; - - use super::*; - use crate::protocol::rmk::snapshot; - - /// Collect (path, req_bytes, resp_bytes) entries for a set of endpoint groups. - fn collect<'a>(groups: &[&'a [(&'a str, Key, Key)]]) -> alloc::vec::Vec<(&'a str, [u8; 8], [u8; 8])> { - groups - .iter() - .flat_map(|g| g.iter()) - .map(|(path, req, resp)| (*path, req.to_bytes(), resp.to_bytes())) - .collect() - } - - /// `sys/version` is the protocol's gate: its REQ/RESP keys must be immortal. - /// Every host — regardless of age — relies on this endpoint being callable - /// and returning a shape it can decode. Changing these bytes strands every - /// older host, which is why this test does NOT honor `UPDATE_SNAPSHOTS`: - /// the constants below may only be edited as part of an explicit protocol - /// break with design review and a documented major bump. - /// - /// See the "Protocol Handshake" section in `protocol/rmk/mod.rs` for the - /// full versioning rule. - #[test] - fn sys_version_frozen() { - assert_eq!( - GetVersion::REQ_KEY.to_bytes(), - [0xd6, 0xee, 0xc1, 0xcd, 0xd6, 0x16, 0xfc, 0x29], - "sys/version REQ_KEY changed — forbidden. This key is the protocol's \ - compatibility gate and must never change; see protocol/rmk/mod.rs.", - ); - assert_eq!( - GetVersion::RESP_KEY.to_bytes(), - [0x82, 0xc8, 0xf1, 0x04, 0xc9, 0x4e, 0x7e, 0x8a], - "sys/version RESP_KEY changed — forbidden. Changing ProtocolVersion's \ - shape breaks every older host; see protocol/rmk/mod.rs.", - ); - } - - /// Lock down endpoint schema fingerprints for the always-on groups. - /// Each Key is an 8-byte hash of (path, postcard schema of req/resp). - /// Any change to a request/response type — including transitively-referenced - /// types — flips the corresponding Key, and this snapshot fails. - /// Update the snapshot intentionally with `UPDATE_SNAPSHOTS=1`. - #[test] - fn endpoint_keys_base_locked() { - let entries = collect(&[ - SYSTEM_ENDPOINT_LIST.endpoints, - KEYMAP_ENDPOINT_LIST.endpoints, - ENCODER_ENDPOINT_LIST.endpoints, - MACRO_ENDPOINT_LIST.endpoints, - COMBO_ENDPOINT_LIST.endpoints, - MORSE_ENDPOINT_LIST.endpoints, - FORK_ENDPOINT_LIST.endpoints, - BEHAVIOR_ENDPOINT_LIST.endpoints, - CONNECTION_ENDPOINT_LIST.endpoints, - STATUS_ENDPOINT_LIST.endpoints, - ]); - let actual = snapshot::format_endpoint_keys("snapshots/endpoint_keys_base.snap", &entries); - snapshot::assert_snapshot("snapshots/endpoint_keys_base.snap", actual); - } - - #[cfg(feature = "bulk")] - #[test] - fn endpoint_keys_bulk_locked() { - let entries = collect(&[ - KEYMAP_BULK_ENDPOINT_LIST.endpoints, - COMBO_BULK_ENDPOINT_LIST.endpoints, - MORSE_BULK_ENDPOINT_LIST.endpoints, - ]); - let actual = snapshot::format_endpoint_keys("snapshots/endpoint_keys_bulk.snap", &entries); - snapshot::assert_snapshot("snapshots/endpoint_keys_bulk.snap", actual); - } - - #[cfg(feature = "_ble")] - #[test] - fn endpoint_keys_ble_locked() { - let entries = collect(&[ - BLE_CONNECTION_ENDPOINT_LIST.endpoints, - BLE_STATUS_ENDPOINT_LIST.endpoints, - ]); - let actual = snapshot::format_endpoint_keys("snapshots/endpoint_keys_ble.snap", &entries); - snapshot::assert_snapshot("snapshots/endpoint_keys_ble.snap", actual); - } - - #[cfg(all(feature = "_ble", feature = "split"))] - #[test] - fn endpoint_keys_ble_split_locked() { - let entries = collect(&[SPLIT_STATUS_ENDPOINT_LIST.endpoints]); - let actual = snapshot::format_endpoint_keys("snapshots/endpoint_keys_ble_split.snap", &entries); - snapshot::assert_snapshot("snapshots/endpoint_keys_ble_split.snap", actual); - } - - /// Verify that every non-bulk endpoint is present in the combined ENDPOINT_LIST. - /// This catches divergence when new endpoint groups are added to one cfg block - /// but not the other. - #[test] - fn endpoint_list_contains_all_non_bulk_endpoints() { - let endpoint_paths: alloc::collections::BTreeSet<&str> = - ENDPOINT_LIST.endpoints.iter().map(|(path, _, _)| *path).collect(); - - let non_bulk_groups: &[&[(&str, Key, Key)]] = &[ - postcard_rpc::standard_icd::STANDARD_ICD_ENDPOINTS.endpoints, - SYSTEM_ENDPOINT_LIST.endpoints, - KEYMAP_ENDPOINT_LIST.endpoints, - ENCODER_ENDPOINT_LIST.endpoints, - MACRO_ENDPOINT_LIST.endpoints, - COMBO_ENDPOINT_LIST.endpoints, - MORSE_ENDPOINT_LIST.endpoints, - FORK_ENDPOINT_LIST.endpoints, - BEHAVIOR_ENDPOINT_LIST.endpoints, - CONNECTION_ENDPOINT_LIST.endpoints, - BLE_CONNECTION_ENDPOINT_LIST.endpoints, - STATUS_ENDPOINT_LIST.endpoints, - BLE_STATUS_ENDPOINT_LIST.endpoints, - SPLIT_STATUS_ENDPOINT_LIST.endpoints, - ]; - - for group in non_bulk_groups { - for (path, _, _) in *group { - assert!( - endpoint_paths.contains(path), - "Endpoint '{}' missing from ENDPOINT_LIST — update both cfg blocks in endpoints.rs", - path - ); - } - } - } - - /// Verify that every bulk endpoint is present in the combined ENDPOINT_LIST. - #[cfg(feature = "bulk")] - #[test] - fn endpoint_list_contains_all_bulk_endpoints() { - let endpoint_paths: alloc::collections::BTreeSet<&str> = - ENDPOINT_LIST.endpoints.iter().map(|(path, _, _)| *path).collect(); - - let bulk_groups: &[&[(&str, Key, Key)]] = &[ - KEYMAP_BULK_ENDPOINT_LIST.endpoints, - COMBO_BULK_ENDPOINT_LIST.endpoints, - MORSE_BULK_ENDPOINT_LIST.endpoints, - ]; - - for group in bulk_groups { - for (path, _, _) in *group { - assert!( - endpoint_paths.contains(path), - "Bulk endpoint '{}' missing from ENDPOINT_LIST", - path - ); - } - } - } -} diff --git a/rmk-types/src/protocol/rmk/keymap.rs b/rmk-types/src/protocol/rmk/keymap.rs deleted file mode 100644 index 07593fee7..000000000 --- a/rmk-types/src/protocol/rmk/keymap.rs +++ /dev/null @@ -1,179 +0,0 @@ -//! Keymap endpoint types. - -use postcard::experimental::max_size::MaxSize; -use postcard_schema::Schema; -use serde::{Deserialize, Serialize}; - -use crate::action::KeyAction; - -/// Identifies a specific key position in the keymap. -#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, MaxSize, Schema)] -pub struct KeyPosition { - pub layer: u8, - pub row: u8, - pub col: u8, -} - -/// Request payload for `SetKeyAction` endpoint. -#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, MaxSize, Schema)] -pub struct SetKeyRequest { - pub position: KeyPosition, - pub action: KeyAction, -} - -// Bulk transfer types live in the `bulk` submodule below and are re-exported -// when the `bulk` feature is enabled. Gating the entire submodule once avoids -// repeating `#[cfg(feature = "bulk")]` on every type, impl, and import. -#[cfg(feature = "bulk")] -mod bulk { - use heapless::Vec; - use postcard::experimental::max_size::MaxSize; - use postcard_schema::Schema; - use serde::{Deserialize, Serialize}; - - use crate::action::KeyAction; - use crate::constants::BULK_SIZE; - - /// Request payload for `GetKeymapBulk` endpoint. - /// - /// Keys are linearized in row-major order starting from `(start_row, start_col)`. - /// `count` is the number of keys to read; iteration wraps to subsequent - /// rows when the end of a row is reached. - #[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, MaxSize, Schema)] - pub struct GetKeymapBulkRequest { - pub layer: u8, - pub start_row: u8, - pub start_col: u8, - pub count: u8, - } - - /// Bulk response for getting multiple key actions at once. - #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Schema)] - pub struct GetKeymapBulkResponse { - pub actions: Vec, - } - - impl MaxSize for GetKeymapBulkResponse { - const POSTCARD_MAX_SIZE: usize = crate::heapless_vec_max_size::(); - } - - /// Request payload for `SetKeymapBulk` endpoint. - /// - /// Keys are linearized in row-major order starting from `(start_row, start_col)`. - /// Iteration wraps to subsequent rows when the end of a row is reached. - /// The number of keys to write is derived from `actions.len()`. - #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Schema)] - pub struct SetKeymapBulkRequest { - pub layer: u8, - pub start_row: u8, - pub start_col: u8, - pub actions: Vec, - } - - impl MaxSize for SetKeymapBulkRequest { - // 3 bytes for layer + start_row + start_col (each `u8::POSTCARD_MAX_SIZE == 1`). - const POSTCARD_MAX_SIZE: usize = 3 + crate::heapless_vec_max_size::(); - } -} - -#[cfg(feature = "bulk")] -pub use bulk::*; - -#[cfg(test)] -mod tests { - use super::*; - use crate::protocol::rmk::test_utils::round_trip; - - #[test] - fn round_trip_key_position() { - round_trip(&KeyPosition { - layer: 0, - row: 5, - col: 13, - }); - } - - #[test] - fn round_trip_set_key_request() { - round_trip(&SetKeyRequest { - position: KeyPosition { - layer: 0, - row: 0, - col: 0, - }, - action: KeyAction::No, - }); - } - - #[cfg(feature = "bulk")] - mod bulk { - use heapless::Vec; - - use super::super::*; - use crate::action::{Action, KeyAction}; - use crate::constants::BULK_SIZE; - use crate::keycode::HidKeyCode; - use crate::modifier::ModifierCombination; - use crate::morse::MorseProfile; - use crate::protocol::rmk::test_utils::{assert_max_size_bound, round_trip}; - - /// Largest-encoded `KeyAction` variant: `TapHold` wraps two multi-field - /// `Action`s and a `MorseProfile(u64)`, many times the size of - /// `KeyAction::No`. Using it in max-capacity bulk tests makes - /// `assert_max_size_bound` exercise both the per-element and the - /// length-prefix dimensions of the bound. - fn worst_key_action() -> KeyAction { - let action = Action::KeyWithModifier(HidKeyCode::A, ModifierCombination::new()); - KeyAction::TapHold(action, action, MorseProfile::const_default()) - } - - #[test] - fn round_trip_get_keymap_bulk_request() { - round_trip(&GetKeymapBulkRequest { - layer: 2, - start_row: 0, - start_col: 0, - count: 32, - }); - } - - #[test] - fn round_trip_set_keymap_bulk_request() { - let mut actions: Vec = Vec::new(); - actions.push(KeyAction::No).unwrap(); - round_trip(&SetKeymapBulkRequest { - layer: 0, - start_row: 0, - start_col: 0, - actions, - }); - } - - #[test] - fn round_trip_set_keymap_bulk_request_max_capacity() { - let mut actions: Vec = Vec::new(); - for _ in 0..BULK_SIZE { - actions.push(worst_key_action()).unwrap(); - } - let req = SetKeymapBulkRequest { - layer: u8::MAX, - start_row: u8::MAX, - start_col: u8::MAX, - actions, - }; - round_trip(&req); - assert_max_size_bound(&req); - } - - #[test] - fn round_trip_get_keymap_bulk_response_max_capacity() { - let mut actions: Vec = Vec::new(); - for _ in 0..BULK_SIZE { - actions.push(worst_key_action()).unwrap(); - } - let resp = GetKeymapBulkResponse { actions }; - round_trip(&resp); - assert_max_size_bound(&resp); - } - } -} diff --git a/rmk-types/src/protocol/rmk/mod.rs b/rmk-types/src/protocol/rmk/mod.rs deleted file mode 100644 index 75f850e08..000000000 --- a/rmk-types/src/protocol/rmk/mod.rs +++ /dev/null @@ -1,521 +0,0 @@ -//! RMK protocol ICD (Interface Control Document). -//! -//! This module defines the shared type contract between firmware and host for the -//! RMK communication protocol. It contains all endpoint and topic declarations, -//! request/response types, and protocol constants. -//! -//! The protocol uses postcard-rpc's type-level endpoint definitions over COBS-framed -//! byte streams (USB bulk transfer and BLE serial). -//! -//! ## Module layout -//! -//! - [`endpoints`] — `endpoints!` macro invocations + assembled `ENDPOINT_LIST` -//! - [`topics`] — `topics!` macro invocations -//! - [`system`] — handshake, lock/unlock, storage reset, behavior config -//! - [`keymap`], [`encoder`], [`macro_data`], [`combo`], [`morse`], [`fork`] — per-domain request/response types -//! - [`status`] — runtime status types (matrix state, peripheral status) -//! -//! ## Protocol Handshake -//! -//! **Versioning rule.** `sys/version`'s path and `ProtocolVersion`'s shape are -//! immortal. Hosts call `GetVersion` first, compare `major` / `minor`, and -//! bail cleanly on mismatch — it is the only endpoint guaranteed to be -//! callable across every firmware version, and it is the gate that makes -//! the rest of the protocol forward-compatible. -//! -//! Connection flow: -//! 1. Host connects over USB bulk or BLE serial (COBS-framed). -//! 2. Host sends `GetVersion`. If `major` differs from the host's supported -//! major, or `minor` exceeds the host's known maximum, the host aborts -//! with an "update host" diagnostic. It does not proceed to any other -//! endpoint. -//! 3. Host sends `GetCapabilities` — learns layout, feature set, and limits. -//! 4. Host gates every subsequent call on the capability flags -//! (e.g. `bulk_transfer_supported`, `ble_enabled`). -//! 5. If the device is locked, host sends `UnlockRequest` and completes the -//! physical key challenge before issuing write operations. -//! -//! ### Version bump policy -//! -//! - `minor`: new endpoint; new field appended to a wire struct; new variant -//! in a wire enum (including `RmkError`). -//! - `major`: endpoint removed or retyped; struct field reshaped; enum -//! variant renamed or renumbered. `sys/version` itself is exempt — -//! changing its shape is forbidden even across major bumps. -//! - Neither: no wire change. - -mod combo; -mod encoder; -mod endpoints; -mod fork; -mod keymap; -mod macro_data; -mod morse; -mod status; -mod system; -mod topics; - -use postcard::experimental::max_size::MaxSize; -use postcard_schema::Schema; -use serde::{Deserialize, Serialize}; - -// Re-export every submodule's public items into `protocol::rmk::*` for -// convenient endpoint registration. Domain types (Combo, Morse, Fork, etc.) -// are NOT re-exported here — import them from their canonical crate-root -// modules instead. -pub use self::combo::*; -pub use self::encoder::*; -pub use self::endpoints::*; -pub use self::fork::*; -pub use self::keymap::*; -pub use self::macro_data::*; -pub use self::morse::*; -pub use self::status::*; -pub use self::system::*; -pub use self::topics::*; - -// --------------------------------------------------------------------------- -// Protocol-wide error primitives -// --------------------------------------------------------------------------- - -/// Protocol-level error type returned by write operations. -#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, MaxSize, Schema)] -#[non_exhaustive] -pub enum RmkError { - /// The request parameters are invalid or out of range. - InvalidParameter, - /// Operation not valid in current device state (e.g. device is locked). - BadState, - /// An internal firmware error occurred (storage, contention, etc). - InternalError, -} - -/// Result type for write operations. -/// -/// This is a type alias rather than a newtype. `Schema` and `MaxSize` are -/// provided by postcard's blanket impls for `Result`. The endpoint -/// key is derived from the schema structure (not the Rust path), so the -/// alias is stable. Cross-endpoint collision tests in this module verify -/// key uniqueness. -pub type RmkResult = Result<(), RmkError>; - -// --------------------------------------------------------------------------- -// Test utilities (shared across submodule test mods) -// --------------------------------------------------------------------------- - -#[cfg(test)] -pub(crate) mod test_utils { - extern crate alloc; - - use alloc::vec; - - use postcard::experimental::max_size::MaxSize; - use serde::{Deserialize, Serialize}; - - /// Buffer size used by round-trip / max-size helpers. - /// - /// Sized at twice the type's declared `POSTCARD_MAX_SIZE` plus a small - /// fixed slack so that: - /// - under feature configurations with a large `BULK_SIZE` (notably - /// `host`, where `BULK_SIZE = MAX_BULK_SIZE = 16` and - /// `MORSE_SIZE = MAX_MORSE_SIZE = 32`), max-capacity bulk payloads - /// still fit comfortably; - /// - an under-counted manual `MaxSize` impl produces a clear assertion - /// failure in `assert_max_size_bound` instead of a `SerializeBufferFull` - /// panic. - fn buffer_capacity() -> usize { - T::POSTCARD_MAX_SIZE.saturating_mul(2).saturating_add(64) - } - - /// Postcard round-trip helper used by every submodule's tests. - pub fn round_trip(val: &T) -> T - where - T: Serialize + for<'de> Deserialize<'de> + PartialEq + core::fmt::Debug + MaxSize, - { - let mut buf = vec![0u8; buffer_capacity::()]; - let bytes = postcard::to_slice(val, &mut buf).expect("serialize"); - let decoded: T = postcard::from_bytes(bytes).expect("deserialize"); - assert_eq!(&decoded, val); - decoded - } - - /// Assert that `val` serializes within its declared `POSTCARD_MAX_SIZE`. - /// Use alongside `round_trip` in max-capacity tests to catch under-counted - /// manual `MaxSize` impls (the dangerous bug — buffer overflows downstream). - pub fn assert_max_size_bound(val: &T) - where - T: Serialize + MaxSize, - { - let mut buf = vec![0u8; buffer_capacity::()]; - let bytes = postcard::to_slice(val, &mut buf).expect("serialize"); - assert!( - bytes.len() <= T::POSTCARD_MAX_SIZE, - "{} encoded to {} bytes but POSTCARD_MAX_SIZE = {}", - core::any::type_name::(), - bytes.len(), - T::POSTCARD_MAX_SIZE, - ); - } -} - -// --------------------------------------------------------------------------- -// Wire-format snapshot harness (golden-file tests) -// --------------------------------------------------------------------------- - -#[cfg(test)] -pub(crate) mod snapshot { - extern crate alloc; - extern crate std; - - use alloc::format; - use alloc::string::String; - use alloc::vec::Vec; - use std::path::PathBuf; - use std::{env, fs}; - - /// Format a byte slice as lowercase, space-separated hex (e.g. `01 0a ff`). - pub fn hex(bytes: &[u8]) -> String { - let mut s = String::with_capacity(bytes.len() * 3); - for (i, b) in bytes.iter().enumerate() { - if i > 0 { - s.push(' '); - } - s.push_str(&format!("{:02x}", b)); - } - s - } - - /// Build the snapshot text for an endpoint key list. - /// Output format: ` REQ RESP `, sorted by path. - pub fn format_endpoint_keys(rel_path: &str, entries: &[(&str, [u8; 8], [u8; 8])]) -> String { - let mut sorted: Vec<&(&str, [u8; 8], [u8; 8])> = entries.iter().collect(); - sorted.sort_by_key(|(path, _, _)| *path); - - // Pad the path column to the longest entry for readable diffs. - let path_width = sorted.iter().map(|(p, _, _)| p.len()).max().unwrap_or(0); - - let mut out = String::new(); - out.push_str(&format!( - "# Endpoint Key snapshot — DO NOT edit by hand.\n\ - # File: {}\n\ - # Each Key is an 8-byte hash of (path, postcard schema of req/resp).\n\ - # Any change to a request/response type — including transitively-referenced\n\ - # types — flips the corresponding Key. If the change is intentional, regenerate:\n\ - # UPDATE_SNAPSHOTS=1 cargo test -p rmk-types --features rmk_protocol\n\ - # Format: REQ <8-byte hex> RESP <8-byte hex>\n\ - \n", - rel_path, - )); - for (path, req, resp) in sorted { - out.push_str(&format!( - "{:width$} REQ {} RESP {}\n", - path, - hex(req), - hex(resp), - width = path_width, - )); - } - out - } - - /// Build the snapshot text for a topic key list. - /// Output format: ` KEY `, sorted by path. - pub fn format_topic_keys(rel_path: &str, entries: &[(&str, [u8; 8])]) -> String { - let mut sorted: Vec<&(&str, [u8; 8])> = entries.iter().collect(); - sorted.sort_by_key(|(path, _)| *path); - - let path_width = sorted.iter().map(|(p, _)| p.len()).max().unwrap_or(0); - - let mut out = String::new(); - out.push_str(&format!( - "# Topic Key snapshot — DO NOT edit by hand.\n\ - # File: {}\n\ - # Regenerate intentionally with:\n\ - # UPDATE_SNAPSHOTS=1 cargo test -p rmk-types --features rmk_protocol\n\ - # Format: KEY <8-byte hex>\n\ - \n", - rel_path, - )); - for (path, key) in sorted { - out.push_str(&format!("{:width$} KEY {}\n", path, hex(key), width = path_width,)); - } - out - } - - /// Build the snapshot text for a list of (label, encoded bytes) pairs. - pub fn format_value_snapshot(rel_path: &str, entries: &[(&str, &[u8])]) -> String { - let mut sorted: Vec<&(&str, &[u8])> = entries.iter().collect(); - sorted.sort_by_key(|(label, _)| *label); - - let label_width = sorted.iter().map(|(l, _)| l.len()).max().unwrap_or(0); - - let mut out = String::new(); - out.push_str(&format!( - "# Wire-format value snapshot — DO NOT edit by hand.\n\ - # File: {}\n\ - # Each entry is the postcard byte encoding of a fixed value. A diff here means\n\ - # the wire format changed (either intentionally or by accident). Regenerate with:\n\ - # UPDATE_SNAPSHOTS=1 cargo test -p rmk-types --features rmk_protocol wire_values\n\ - # Format: