From f8fe2427896ec640db014aff73fd26efff29bd3f Mon Sep 17 00:00:00 2001 From: Andrew Morrow Date: Mon, 29 Sep 2025 10:22:36 -0400 Subject: [PATCH 1/2] [RSDK-9716] Rust 1.89, edition 2024, resolver 3 --- .canon.yaml | 4 +- .github/workflows/esp32.yml | 2 +- .github/workflows/format.yml | 2 +- .github/workflows/license_finder.yml | 2 +- .github/workflows/native.yml | 2 +- .github/workflows/publish.yml | 8 +- Cargo.lock | 2065 +++++++++-------- Cargo.toml | 114 +- components_esp32.lock | 31 +- components_esp32c6.lock | 31 +- etc/docker/Dockerfile | 4 +- examples/modular-drivers/build.rs | 21 +- examples/modular-drivers/src/bme280_ulp.rs | 11 +- .../modular-drivers/src/free_heap_sensor.rs | 2 +- .../modular-drivers/src/moisture_sensor.rs | 4 +- .../modular-drivers/src/wifi_rssi_sensor.rs | 2 +- .../idf_component.yml | 2 +- micro-rdk-ffi/src/ffi/config.rs | 20 +- micro-rdk-ffi/src/ffi/hash_map.rs | 16 +- micro-rdk-ffi/src/ffi/runtime.rs | 16 +- micro-rdk-ffi/src/ffi/sensor.rs | 22 +- micro-rdk-installer/src/main.rs | 17 +- micro-rdk-installer/src/nvs/partition.rs | 24 +- micro-rdk-macros/src/lib.rs | 14 +- micro-rdk-nmea-macros/src/attributes.rs | 10 +- micro-rdk-nmea-macros/src/composition.rs | 6 +- micro-rdk-nmea-macros/src/utils.rs | 2 +- micro-rdk-nmea/build.rs | 4 +- micro-rdk-nmea/src/{gen => generate}/mod.rs | 0 micro-rdk-nmea/src/lib.rs | 6 +- micro-rdk-nmea/src/messages/message.rs | 4 +- micro-rdk-nmea/src/parse_helpers/errors.rs | 2 +- micro-rdk-nmea/src/parse_helpers/parsers.rs | 10 +- micro-rdk-nmea/src/viamboat/sensors.rs | 12 +- micro-rdk-server/Cargo.toml | 7 +- micro-rdk-server/build.rs | 31 +- micro-rdk-server/esp32/main.rs | 5 + micro-rdk-server/sdkconfig.defaults | 10 - micro-rdk-server/sdkconfig.defaults.esp32 | 10 + micro-rdk/src/common/adxl345.rs | 2 +- micro-rdk/src/common/app_client.rs | 18 +- micro-rdk/src/common/camera/fake_camera.rs | 4 +- micro-rdk/src/common/camera/mod.rs | 4 +- micro-rdk/src/common/config.rs | 6 +- micro-rdk/src/common/config_monitor.rs | 49 +- micro-rdk/src/common/conn/viam.rs | 93 +- micro-rdk/src/common/credentials_storage.rs | 30 +- micro-rdk/src/common/data_collector.rs | 18 +- micro-rdk/src/common/data_manager.rs | 87 +- micro-rdk/src/common/data_store.rs | 12 +- micro-rdk/src/common/encoder.rs | 2 +- micro-rdk/src/common/exec.rs | 2 +- micro-rdk/src/common/generic.rs | 2 +- micro-rdk/src/common/gpio_motor.rs | 8 +- micro-rdk/src/common/gpio_servo.rs | 2 +- micro-rdk/src/common/grpc.rs | 10 +- micro-rdk/src/common/grpc_client.rs | 53 +- micro-rdk/src/common/ina.rs | 2 +- micro-rdk/src/common/log.rs | 2 +- micro-rdk/src/common/math_utils.rs | 4 +- micro-rdk/src/common/motor.rs | 2 +- micro-rdk/src/common/movement_sensor.rs | 2 +- micro-rdk/src/common/mpu6050.rs | 2 +- micro-rdk/src/common/ota.rs | 8 +- micro-rdk/src/common/power_sensor.rs | 2 +- micro-rdk/src/common/provisioning/server.rs | 68 +- micro-rdk/src/common/registry.rs | 8 +- micro-rdk/src/common/restart_monitor.rs | 2 +- micro-rdk/src/common/robot.rs | 40 +- micro-rdk/src/common/sensor.rs | 2 +- micro-rdk/src/common/system.rs | 5 +- micro-rdk/src/common/webrtc/api.rs | 18 +- micro-rdk/src/common/webrtc/candidates.rs | 16 +- micro-rdk/src/common/webrtc/grpc.rs | 4 +- micro-rdk/src/common/webrtc/ice.rs | 37 +- micro-rdk/src/common/webrtc/sctp.rs | 31 +- .../src/common/webrtc/signaling_server.rs | 2 +- micro-rdk/src/common/webrtc/udp_mux.rs | 7 +- micro-rdk/src/common/wheeled_base.rs | 2 +- micro-rdk/src/esp32/board.rs | 4 +- micro-rdk/src/esp32/certificate.rs | 6 +- micro-rdk/src/esp32/conn/network.rs | 41 +- micro-rdk/src/esp32/coredump.rs | 4 +- micro-rdk/src/esp32/dtls.rs | 69 +- micro-rdk/src/esp32/encoder.rs | 16 +- micro-rdk/src/esp32/hcsr04.rs | 12 +- micro-rdk/src/esp32/i2c.rs | 2 +- micro-rdk/src/esp32/log.rs | 4 +- micro-rdk/src/esp32/nvs_storage.rs | 4 +- micro-rdk/src/esp32/pin.rs | 10 +- micro-rdk/src/esp32/pulse_counter.rs | 4 +- micro-rdk/src/esp32/pwm.rs | 8 +- micro-rdk/src/esp32/single_encoder.rs | 16 +- micro-rdk/src/esp32/tcp.rs | 25 +- micro-rdk/src/esp32/utils.rs | 10 +- micro-rdk/src/gen/google.protobuf.rs | 232 ++ micro-rdk/src/gen/google.rpc.rs | 65 + micro-rdk/src/gen/pb.rs | 98 +- micro-rdk/src/lib.rs | 5 +- micro-rdk/src/native/certificate.rs | 2 +- micro-rdk/src/native/dtls.rs | 10 +- micro-rdk/src/native/tcp.rs | 11 +- templates/module/Cargo.toml.liquid | 6 +- templates/project/.canon.yaml | 4 +- .../project/.github/workflows/publish.yml | 2 +- templates/project/Cargo.toml.liquid | 14 +- templates/project/rustfmt.toml | 2 +- 107 files changed, 2296 insertions(+), 1613 deletions(-) rename micro-rdk-nmea/src/{gen => generate}/mod.rs (100%) diff --git a/.canon.yaml b/.canon.yaml index 5a6f2ca0e..b79f27fba 100644 --- a/.canon.yaml +++ b/.canon.yaml @@ -1,6 +1,6 @@ viam-micro-rdk: - image_amd64: ghcr.io/viamrobotics/micro-rdk-dev-env:1.85.0-amd64 - image_arm64: ghcr.io/viamrobotics/micro-rdk-dev-env:1.85.0-arm64 + image_amd64: ghcr.io/viamrobotics/micro-rdk-dev-env:1.89.0-amd64 + image_arm64: ghcr.io/viamrobotics/micro-rdk-dev-env:1.89.0-arm64 minimum_date: 2023-03-06T00:15:26.271839721-05:00 update_interval: 168h0m0s user: testbot diff --git a/.github/workflows/esp32.yml b/.github/workflows/esp32.yml index 63905b7a3..329f9e3e2 100644 --- a/.github/workflows/esp32.yml +++ b/.github/workflows/esp32.yml @@ -17,7 +17,7 @@ jobs: # will use bash to run each command, bash will source /etc/profile which will give us the environment to build for esp32 shell: bash --norc -leo pipefail {0} container: - image: ghcr.io/viamrobotics/micro-rdk-dev-env:1.85.0-amd64 + image: ghcr.io/viamrobotics/micro-rdk-dev-env:1.89.0-amd64 steps: - name : Checkout main branch code if: github.event_name != 'pull_request_target' diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml index 2938e002a..d51372cae 100644 --- a/.github/workflows/format.yml +++ b/.github/workflows/format.yml @@ -23,7 +23,7 @@ jobs: with: ref: ${{ github.event.pull_request.head.sha }} fetch-depth: 2 - - uses: dtolnay/rust-toolchain@1.85 + - uses: dtolnay/rust-toolchain@1.89 with: components: rustfmt - name: Format diff --git a/.github/workflows/license_finder.yml b/.github/workflows/license_finder.yml index c1a5ac522..4e4d8a4d6 100644 --- a/.github/workflows/license_finder.yml +++ b/.github/workflows/license_finder.yml @@ -17,7 +17,7 @@ jobs: # will use bash to run each command, bash will source /etc/profile which will give us the environment to build for esp32 shell: bash --norc -leo pipefail {0} container: - image: ghcr.io/viamrobotics/micro-rdk-dev-env:1.85.0-amd64 + image: ghcr.io/viamrobotics/micro-rdk-dev-env:1.89.0-amd64 timeout-minutes: 10 steps: diff --git a/.github/workflows/native.yml b/.github/workflows/native.yml index 88efbb866..4cc98ae7d 100644 --- a/.github/workflows/native.yml +++ b/.github/workflows/native.yml @@ -24,7 +24,7 @@ jobs: with: ref: ${{ github.event.pull_request.head.sha }} fetch-depth: 2 - - uses: dtolnay/rust-toolchain@1.85 + - uses: dtolnay/rust-toolchain@1.89 with: components: clippy - name: Cache Dependencies diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index f91b6754f..591094b02 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -25,7 +25,7 @@ jobs: uses: actions-rs/toolchain@v1 with: profile: minimal - toolchain: 1.85.0 + toolchain: 1.89.0 override: true target: ${{ matrix.job.target }} default: true @@ -73,7 +73,7 @@ jobs: # will use bash to run each command, bash will source /etc/profile which will give us the environment to build for esp32 shell: bash --norc -leo pipefail {0} container: - image: ghcr.io/viamrobotics/micro-rdk-dev-env:1.85.0-arm64 + image: ghcr.io/viamrobotics/micro-rdk-dev-env:1.89.0-arm64 steps: - name: Checkout main branch code uses: actions/checkout@v4 @@ -83,7 +83,7 @@ jobs: uses: actions-rs/toolchain@v1 with: profile: minimal - toolchain: 1.85.0 + toolchain: 1.89.0 override: true target: aarch64-unknown-linux-gnu default: true @@ -106,7 +106,7 @@ jobs: # will use bash to run each command, bash will source /etc/profile which will give us the environment to build for esp32 shell: bash --norc -leo pipefail {0} container: - image: ghcr.io/viamrobotics/micro-rdk-dev-env:1.85.0-amd64 + image: ghcr.io/viamrobotics/micro-rdk-dev-env:1.89.0-amd64 steps: - name : Checkout main branch code uses: actions/checkout@v3 diff --git a/Cargo.lock b/Cargo.lock index 6d3cf00bf..a63da9978 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -19,18 +19,18 @@ dependencies = [ [[package]] name = "addr2line" -version = "0.24.2" +version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b" dependencies = [ - "gimli 0.31.1", + "gimli 0.32.3", ] [[package]] name = "adler2" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "aho-corasick" @@ -50,12 +50,6 @@ dependencies = [ "as-slice", ] -[[package]] -name = "android-tzdata" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" - [[package]] name = "android_system_properties" version = "0.1.5" @@ -67,9 +61,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.18" +version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" +checksum = "3ae563653d1938f79b1ab1b5e668c87c76a9930414574a6583a7b7e11a8e6192" dependencies = [ "anstyle", "anstyle-parse", @@ -82,44 +76,44 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.10" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" +checksum = "c900954614442c827787a2ffcd8c0602eb53ff7b95a8fbfcdaf5e406197bf3be" [[package]] name = "anstyle-parse" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.2" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" +checksum = "9e231f6134f61b71076a3eab506c379d4f36122f2af15a9ff04415ea4c3339e2" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] name = "anstyle-wincon" -version = "3.0.7" +version = "3.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" +checksum = "3e0633414522a32ffaac8ac6cc8f748e090c5717661fddeea04219e2344f5f2a" dependencies = [ "anstyle", - "once_cell", - "windows-sys 0.59.0", + "once_cell_polyfill", + "windows-sys 0.60.2", ] [[package]] name = "anyhow" -version = "1.0.98" +version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" +checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" [[package]] name = "as-slice" @@ -143,9 +137,9 @@ dependencies = [ [[package]] name = "async-channel" -version = "2.3.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" +checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" dependencies = [ "concurrent-queue", "event-listener-strategy", @@ -165,14 +159,15 @@ dependencies = [ [[package]] name = "async-executor" -version = "1.13.1" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30ca9a001c1e8ba5149f91a74362376cc6bc5b919d92d988668657bd570bdcec" +checksum = "497c00e0fd83a72a79a39fcbd8e3e2f055d6f6c7e025f3b3d91f4f8e76527fb8" dependencies = [ "async-task", "concurrent-queue", "fastrand", "futures-lite", + "pin-project-lite", "slab", ] @@ -182,7 +177,7 @@ version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" dependencies = [ - "async-channel 2.3.1", + "async-channel 2.5.0", "async-executor", "async-io", "async-lock", @@ -193,39 +188,38 @@ dependencies = [ [[package]] name = "async-io" -version = "2.4.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a2b323ccce0a1d90b449fd71f2a06ca7faa7c54c2751f06c9bd851fc061059" +checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc" dependencies = [ - "async-lock", + "autocfg", "cfg-if", "concurrent-queue", "futures-io", "futures-lite", "parking", - "polling 3.7.4", - "rustix 0.38.44", + "polling", + "rustix 1.1.2", "slab", - "tracing", - "windows-sys 0.59.0", + "windows-sys 0.61.1", ] [[package]] name = "async-lock" -version = "3.4.0" +version = "3.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" +checksum = "5fd03604047cee9b6ce9de9f70c6cd540a0520c813cbd49bae61f33ab80ed1dc" dependencies = [ - "event-listener 5.4.0", + "event-listener 5.4.1", "event-listener-strategy", "pin-project-lite", ] [[package]] name = "async-std" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "730294c1c08c2e0f85759590518f6333f0d5a0a766a27d519c1b244c3dfd8a24" +checksum = "2c8e079a4ab67ae52b7403632e4618815d6db36d2a010cfe41b02c1b1578f93b" dependencies = [ "async-channel 1.9.0", "async-global-executor", @@ -266,17 +260,6 @@ version = "4.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" -[[package]] -name = "async-trait" -version = "0.1.88" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.100", -] - [[package]] name = "atomic-polyfill" version = "1.0.3" @@ -294,19 +277,19 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "autocfg" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "axum" -version = "0.7.9" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" +checksum = "98e529aee37b5c8206bb4bf4c44797127566d72f76952c970bd3d1e85de8f4e2" dependencies = [ - "async-trait", "axum-core", "bytes", + "form_urlencoded", "futures-util", "http", "http-body", @@ -319,14 +302,13 @@ dependencies = [ "mime", "percent-encoding", "pin-project-lite", - "rustversion", - "serde", + "serde_core", "serde_json", "serde_path_to_error", "serde_urlencoded", "sync_wrapper", "tokio", - "tower 0.5.2", + "tower", "tower-layer", "tower-service", "tracing", @@ -334,19 +316,17 @@ dependencies = [ [[package]] name = "axum-core" -version = "0.4.5" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" +checksum = "0ac7a6beb1182c7e30253ee75c3e918080bfb83f5a3023bcdf7209d85fd147e6" dependencies = [ - "async-trait", "bytes", - "futures-util", + "futures-core", "http", "http-body", "http-body-util", "mime", "pin-project-lite", - "rustversion", "sync_wrapper", "tower-layer", "tower-service", @@ -355,40 +335,39 @@ dependencies = [ [[package]] name = "axum-extra" -version = "0.9.6" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c794b30c904f0a1c2fb7740f7df7f7972dfaa14ef6f57cb6178dc63e5dca2f04" +checksum = "d86d701cd16f401888ebe9c3214dc838c7ef27a405d5726196765a913603b5dd" dependencies = [ "axum", "axum-core", "bytes", - "fastrand", "futures-util", "http", "http-body", "http-body-util", "mime", - "multer", "pin-project-lite", - "serde", - "tower 0.5.2", + "rustversion", + "serde_core", "tower-layer", "tower-service", + "tracing", ] [[package]] name = "backtrace" -version = "0.3.74" +version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6" dependencies = [ - "addr2line 0.24.2", + "addr2line 0.25.1", "cfg-if", "libc", "miniz_oxide", - "object 0.36.7", + "object 0.37.3", "rustc-demangle", - "windows-targets 0.52.6", + "windows-link 0.2.0", ] [[package]] @@ -400,12 +379,6 @@ dependencies = [ "backtrace", ] -[[package]] -name = "base64" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" - [[package]] name = "base64" version = "0.22.1" @@ -418,7 +391,7 @@ version = "0.71.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f58bf3d7db68cfbac37cfc485a8d711e87e064c3d0fe0435b92f7a407f9d6b3" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.4", "cexpr", "clang-sys", "itertools 0.13.0", @@ -429,14 +402,28 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.100", + "syn 2.0.106", ] [[package]] name = "bitfield" -version = "0.17.0" +version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f798d2d157e547aa99aab0967df39edd0b70307312b6f8bd2848e6abe40896e0" +checksum = "62a3a774b2fcac1b726922b921ebba5e9fe36ad37659c822cf8ff2c1e0819892" +dependencies = [ + "bitfield-macros", +] + +[[package]] +name = "bitfield-macros" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52511b09931f7d5fe3a14f23adefbc23e5725b184013e96c8419febb61f14734" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] [[package]] name = "bitflags" @@ -446,9 +433,12 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.0" +version = "2.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" +checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394" +dependencies = [ + "serde", +] [[package]] name = "bitvec" @@ -473,11 +463,11 @@ dependencies = [ [[package]] name = "blocking" -version = "1.6.1" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" +checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" dependencies = [ - "async-channel 2.3.1", + "async-channel 2.5.0", "async-task", "futures-io", "futures-lite", @@ -504,43 +494,43 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.106", ] [[package]] name = "bumpalo" -version = "3.17.0" +version = "3.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" [[package]] name = "bytecodec" -version = "0.4.15" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adf4c9d0bbf32eea58d7c0f812058138ee8edaf0f2802b6d03561b504729a325" +checksum = "f1016c00ae68a934cd21f6e3837555ffdc977c0bd8e7df3093ca35c3d726789e" dependencies = [ "byteorder", - "trackable 0.2.24", + "trackable", ] [[package]] name = "bytemuck" -version = "1.22.0" +version = "1.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6b1fc10dbac614ebc03540c9dbd60e83887fda27794998c6528f1782047d540" +checksum = "3995eaeebcdf32f91f980d360f78732ddc061097ab4e39991ae7a6ace9194677" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.9.3" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ecc273b49b3205b83d648f0690daa588925572cc5063745bfe547fe7ec8e1a1" +checksum = "4f154e572231cb6ba2bd1176980827e3d5dc04cc183a75dea38109fbdd672d29" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.106", ] [[package]] @@ -557,11 +547,11 @@ checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" [[package]] name = "camino" -version = "1.1.9" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" +checksum = "e1de8bc0aa9e9385ceb3bf0c152e3a9b9544f6c4a912c8ae504e80c1f0368603" dependencies = [ - "serde", + "serde_core", ] [[package]] @@ -573,6 +563,15 @@ dependencies = [ "serde", ] +[[package]] +name = "cargo-platform" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "122ec45a44b270afd1402f351b782c676b173e3c3fb28d86ff7ebfb4d86a4ee4" +dependencies = [ + "serde", +] + [[package]] name = "cargo_metadata" version = "0.18.1" @@ -580,7 +579,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" dependencies = [ "camino", - "cargo-platform", + "cargo-platform 0.1.9", "semver", "serde", "serde_json", @@ -589,43 +588,44 @@ dependencies = [ [[package]] name = "cargo_metadata" -version = "0.19.2" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba" +checksum = "981a6f317983eec002839b90fae7411a85621410ae591a9cab2ecf5cb5744873" dependencies = [ "camino", - "cargo-platform", + "cargo-platform 0.3.1", "semver", "serde", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] name = "cbindgen" -version = "0.27.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fce8dd7fcfcbf3a0a87d8f515194b49d6135acab73e18bd380d1d93bb1a15eb" +checksum = "975982cdb7ad6a142be15bdf84aea7ec6a9e5d4d797c004d43185b24cfe4e684" dependencies = [ "clap", - "heck 0.4.1", + "heck 0.5.0", "indexmap", "log", "proc-macro2", "quote", "serde", "serde_json", - "syn 2.0.100", + "syn 2.0.106", "tempfile", "toml", ] [[package]] name = "cc" -version = "1.2.19" +version = "1.2.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e3a13707ac958681c13b39b458c073d0d9bc8a22cb1b2f4c8e55eb72c13f362" +checksum = "e1354349954c6fc9cb0deab020f27f783cf0b604e8bb754dc4658ecf0d29c35f" dependencies = [ + "find-msvc-tools", "shlex", ] @@ -640,9 +640,9 @@ dependencies = [ [[package]] name = "cfg-if" -version = "1.0.0" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" [[package]] name = "cfg_aliases" @@ -652,46 +652,34 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "check_keyword" -version = "0.3.1" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3678a4fc14c47dce76127d66f9b2637ff497af665d5618f1f756f4ad1b4a5b1" +checksum = "0dcba1e35fcf6c9350d9fb4863d87c66e5e37f1583f883560dca2c9320840bcc" dependencies = [ - "phf", + "phf 0.11.3", ] [[package]] name = "chrono" -version = "0.4.40" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a7964611d71df112cb1730f2ee67324fcf4d0fc6606acbbe9bfe06df124637c" +checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" dependencies = [ - "android-tzdata", "iana-time-zone", "js-sys", "num-traits", "wasm-bindgen", - "windows-link", + "windows-link 0.2.0", ] [[package]] name = "chrono-tz" -version = "0.10.3" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efdce149c370f133a071ca8ef6ea340b7b88748ab0810097a9e2976eaa34b4f3" +checksum = "a6139a8597ed92cf816dfb33f5dd6cf0bb93a6adc938f11039f371bc5bcd26c3" dependencies = [ "chrono", - "chrono-tz-build", - "phf", -] - -[[package]] -name = "chrono-tz-build" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f10f8c9340e31fc120ff885fcdb54a0b48e474bbd77cab557f0c30a3e569402" -dependencies = [ - "parse-zoneinfo", - "phf_codegen", + "phf 0.12.1", ] [[package]] @@ -707,9 +695,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.37" +version = "4.5.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eccb054f56cbd38340b380d4a8e69ef1f02f1af43db2f0cc817a4774d80ae071" +checksum = "e2134bb3ea021b78629caa971416385309e0131b351b25e01dc16fb54e1b5fae" dependencies = [ "clap_builder", "clap_derive", @@ -717,9 +705,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.37" +version = "4.5.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efd9466fac8543255d3b1fcad4762c5e116ffe808c8a3043d4263cd4fd4862a2" +checksum = "c2ba64afa3c0a6df7fa517765e31314e983f51dda798ffba27b988194fb65dc9" dependencies = [ "anstream", "anstyle", @@ -730,30 +718,30 @@ dependencies = [ [[package]] name = "clap_complete" -version = "4.5.47" +version = "4.5.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06f5378ea264ad4f82bbc826628b5aad714a75abf6ece087e923010eb937fb6" +checksum = "75bf0b32ad2e152de789bb635ea4d3078f6b838ad7974143e99b99f45a04af4a" dependencies = [ "clap", ] [[package]] name = "clap_derive" -version = "4.5.32" +version = "4.5.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7" +checksum = "bbfd7eae0b0f1a6e63d4b13c9c478de77c2eb546fba158ad50b4203dc24b9f9c" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.106", ] [[package]] name = "clap_lex" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" +checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675" [[package]] name = "cmake" @@ -766,15 +754,18 @@ dependencies = [ [[package]] name = "cobs" -version = "0.2.3" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67ba02a97a2bd10f4b59b25c7973101c79642302776489e030cd13cdab09ed15" +checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1" +dependencies = [ + "thiserror 2.0.17", +] [[package]] name = "colorchoice" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" +checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" [[package]] name = "colored" @@ -788,13 +779,13 @@ dependencies = [ [[package]] name = "comfy-table" -version = "7.1.4" +version = "7.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a65ebfec4fb190b6f90e944a817d60499ee0744e582530e2c9900a22e591d9a" +checksum = "b03b7db8e0b4b2fdad6c551e634134e99ec000e5c8c3b6856c65e8bbaded7a3b" dependencies = [ - "crossterm 0.28.1", + "crossterm 0.29.0", "unicode-segmentation", - "unicode-width 0.2.0", + "unicode-width 0.2.1", ] [[package]] @@ -814,10 +805,23 @@ dependencies = [ "encode_unicode", "libc", "once_cell", - "unicode-width 0.2.0", + "unicode-width 0.2.1", "windows-sys 0.59.0", ] +[[package]] +name = "console" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b430743a6eb14e9764d4260d4c0d8123087d504eeb9c48f2b2a5e810dd369df4" +dependencies = [ + "encode_unicode", + "libc", + "once_cell", + "unicode-width 0.2.1", + "windows-sys 0.61.1", +] + [[package]] name = "const_format" version = "0.2.34" @@ -847,6 +851,35 @@ dependencies = [ "unicode-segmentation", ] +[[package]] +name = "cookie" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747" +dependencies = [ + "percent-encoding", + "time", + "version_check", +] + +[[package]] +name = "cookie_store" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fc4bff745c9b4c7fb1e97b25d13153da2bc7796260141df62378998d070207f" +dependencies = [ + "cookie", + "document-features", + "idna", + "indexmap", + "log", + "serde", + "serde_derive", + "serde_json", + "time", + "url", +] + [[package]] name = "core-foundation" version = "0.9.4" @@ -859,9 +892,9 @@ dependencies = [ [[package]] name = "core-foundation" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" dependencies = [ "core-foundation-sys", "libc", @@ -875,9 +908,9 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpp_demangle" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96e58d342ad113c2b878f16d5d034c03be492ae460cdbc02b7f0f2284d310c7d" +checksum = "f2bb79cb74d735044c972aae58ed0aaa9a837e85b01106a54c39e42e97f62253" dependencies = [ "cfg-if", ] @@ -893,9 +926,9 @@ dependencies = [ [[package]] name = "crc" -version = "3.2.1" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69e6e4d7b33a94f0991c26729976b10ebde1d34c3ee82408fb536164fa10d636" +checksum = "9710d3b3739c2e349eb44fe848ad0b7c8cb1e42bd87ee49371df2f7acaf3e675" dependencies = [ "crc-catalog", ] @@ -908,9 +941,9 @@ checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" [[package]] name = "crc32fast" -version = "1.4.2" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" dependencies = [ "cfg-if", ] @@ -952,7 +985,7 @@ version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f476fe445d41c9e991fd07515a6f463074b782242ccf4a5b7b1d1012e70824df" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.4", "crossterm_winapi", "libc", "mio 0.8.11", @@ -964,14 +997,15 @@ dependencies = [ [[package]] name = "crossterm" -version = "0.28.1" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6" +checksum = "d8b9f2e4c67f833b660cdb0a3523065869fb35570177239812ed4c905aeff87b" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.4", "crossterm_winapi", + "document-features", "parking_lot", - "rustix 0.38.44", + "rustix 1.1.2", "winapi", ] @@ -994,16 +1028,6 @@ dependencies = [ "typenum", ] -[[package]] -name = "cstr_core" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd98742e4fdca832d40cab219dc2e3048de17d873248f83f17df47c1bea70956" -dependencies = [ - "cty", - "memchr", -] - [[package]] name = "csv" version = "1.3.1" @@ -1027,20 +1051,15 @@ dependencies = [ [[package]] name = "ctrlc" -version = "3.4.6" +version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "697b5419f348fd5ae2478e8018cb016c00a5881c7f46c717de98ffd135a5651c" +checksum = "881c5d0a13b2f1498e2306e82cbada78390e152d4b1378fb28a84f4dcd0dc4f3" dependencies = [ - "nix 0.29.0", - "windows-sys 0.59.0", + "dispatch", + "nix 0.30.1", + "windows-sys 0.61.1", ] -[[package]] -name = "cty" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b365fabc795046672053e29c954733ec3b05e4be654ab130fe8f1f94d7051f35" - [[package]] name = "cvt" version = "0.1.2" @@ -1070,6 +1089,16 @@ dependencies = [ "darling_macro 0.20.11", ] +[[package]] +name = "darling" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" +dependencies = [ + "darling_core 0.21.3", + "darling_macro 0.21.3", +] + [[package]] name = "darling_core" version = "0.14.4" @@ -1094,7 +1123,21 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "syn 2.0.100", + "strsim 0.11.1", + "syn 2.0.106", +] + +[[package]] +name = "darling_core" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "syn 2.0.106", ] [[package]] @@ -1116,7 +1159,18 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.100", + "syn 2.0.106", +] + +[[package]] +name = "darling_macro" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" +dependencies = [ + "darling_core 0.21.3", + "quote", + "syn 2.0.106", ] [[package]] @@ -1180,7 +1234,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.106", ] [[package]] @@ -1198,7 +1252,7 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "10d60334b3b2e7c9d91ef8150abfb6fa4c1c39ebbcf4a81c2e346aad939fee3e" dependencies = [ - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] @@ -1208,7 +1262,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "819b87cc7a05b3abe3fc38e59b3980a5fd3162f25a247116441a9171d3e84481" dependencies = [ "bitvec", - "deku_derive", + "deku_derive 0.16.0", +] + +[[package]] +name = "deku" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9711031e209dc1306d66985363b4397d4c7b911597580340b93c9729b55f6eb" +dependencies = [ + "bitvec", + "deku_derive 0.18.1", + "no_std_io2", + "rustversion", ] [[package]] @@ -1224,24 +1290,37 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "deku_derive" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58cb0719583cbe4e81fb40434ace2f0d22ccc3e39a74bb3796c22b451b4f139d" +dependencies = [ + "darling 0.20.11", + "proc-macro-crate 3.4.0", + "proc-macro2", + "quote", + "syn 2.0.106", +] + [[package]] name = "deranged" -version = "0.4.0" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" +checksum = "a41953f86f8a05768a6cda24def994fd2f424b04ec5c719cf89989779f199071" dependencies = [ "powerfmt", ] [[package]] name = "derive_more" -version = "0.99.19" +version = "0.99.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3da29a38df43d6f156149c9b43ded5e018ddff2a855cf2cfd62e8cd7d079c69f" +checksum = "6edb4b64a43d977b8e99788fe3a04d483834fba1215a7e02caa415b626497f7f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.106", ] [[package]] @@ -1250,13 +1329,25 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "658bce805d770f407bc62102fca7c2c64ceef2fbcb2b8bd19d2765ce093980de" dependencies = [ - "console", + "console 0.15.11", "shell-words", "tempfile", "thiserror 1.0.69", "zeroize", ] +[[package]] +name = "dialoguer" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25f104b501bf2364e78d0d3974cbc774f738f5865306ed128e1e0d7499c0ad96" +dependencies = [ + "console 0.16.1", + "shell-words", + "tempfile", + "zeroize", +] + [[package]] name = "digest" version = "0.10.7" @@ -1265,6 +1356,7 @@ checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer", "crypto-common", + "subtle", ] [[package]] @@ -1288,6 +1380,12 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "dispatch" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" + [[package]] name = "displaydoc" version = "0.2.5" @@ -1296,7 +1394,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.106", ] [[package]] @@ -1307,14 +1405,23 @@ checksum = "8975ffdaa0ef3661bfe02dbdcc06c9f829dfafe6a3c474de366a8d5e44276921" [[package]] name = "dns-message-parser" -version = "0.7.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6051c76d5ba35c0b5f7d99c3604348467a4933310bdc7a2ba879f8218f3382d" +checksum = "2b7668abb61ae38907f7f6b9fa6396818448b2bc566e1a869c1631d70724e3f9" dependencies = [ - "base64 0.13.1", + "base64", "bytes", "hex", - "thiserror 1.0.69", + "thiserror 2.0.17", +] + +[[package]] +name = "document-features" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95249b50c6c185bee49034bcb378a49dc2b5dff0be90ff6616d31d64febab05d" +dependencies = [ + "litrs", ] [[package]] @@ -1325,9 +1432,9 @@ checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] name = "embassy-futures" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f878075b9794c1e4ac788c95b728f26aa6366d32eeb10c7051389f898f7d067" +checksum = "dc2d050bdc5c21e0862a89256ed8029ae6c290a93aecefc73084b3002cdebb01" [[package]] name = "embassy-sync" @@ -1428,32 +1535,9 @@ dependencies = [ [[package]] name = "embuild" -version = "0.32.0" +version = "0.33.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6e3e470e31fd4cae065d37f7cad56d42861ba1f9a35aa277694dee3d6b357c4" -dependencies = [ - "anyhow", - "bitflags 1.3.2", - "filetime", - "home", - "log", - "regex", - "remove_dir_all", - "serde", - "serde_json", - "shlex", - "strum 0.24.1", - "tempfile", - "thiserror 1.0.69", - "which", - "xmas-elf", -] - -[[package]] -name = "embuild" -version = "0.33.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28a8cbd9507fabce8f2741b9ca45da9e898cc2b0f1c2e53d21cb2436aeac811d" +checksum = "e188ad2bbe82afa841ea4a29880651e53ab86815db036b2cb9f8de3ac32dad75" dependencies = [ "anyhow", "bindgen", @@ -1472,6 +1556,7 @@ dependencies = [ "tempfile", "thiserror 1.0.69", "which", + "xmas-elf", ] [[package]] @@ -1491,9 +1576,9 @@ dependencies = [ [[package]] name = "enumset" -version = "1.1.5" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d07a4b049558765cef5f0c1a273c3fc57084d768b44d2f98127aef4cceb17293" +checksum = "25b07a8dfbbbfc0064c0a6bdf9edcf966de6b1c33ce344bdeca3b41615452634" dependencies = [ "enumset_derive", "serde", @@ -1501,14 +1586,14 @@ dependencies = [ [[package]] name = "enumset_derive" -version = "0.10.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59c3b24c345d8c314966bdc1832f6c2635bfcce8e7cf363bd115987bba2ee242" +checksum = "f43e744e4ea338060faee68ed933e46e722fb7f3617e722a5772d7e856d8b3ce" dependencies = [ - "darling 0.20.11", + "darling 0.21.3", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.106", ] [[package]] @@ -1551,12 +1636,12 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.11" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "976dd42dc7e85965fe702eb8164f21f450704bdde31faefd6471dba214cb594e" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.61.1", ] [[package]] @@ -1574,7 +1659,7 @@ dependencies = [ "embedded-hal-nb", "embedded-io 0.6.1", "embedded-io-async", - "embuild 0.33.0", + "embuild", "enumset", "esp-idf-sys", "heapless 0.8.0", @@ -1590,10 +1675,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "59f50b6c32370067087b46087cd5333f2dfe678f0b01223fa70fde6f15449844" dependencies = [ "csv", - "deku", + "deku 0.16.0", "heapless 0.8.0", "md5", - "parse_int", + "parse_int 0.6.0", "regex", "serde", "serde_plain", @@ -1601,6 +1686,24 @@ dependencies = [ "thiserror 1.0.69", ] +[[package]] +name = "esp-idf-part" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5ebc2381d030e4e89183554c3fcd4ad44dc5ab34961ab09e09b4adbe4f94b61" +dependencies = [ + "bitflags 2.9.4", + "csv", + "deku 0.18.1", + "md-5", + "parse_int 0.9.0", + "regex", + "serde", + "serde_plain", + "strum 0.27.2", + "thiserror 2.0.17", +] + [[package]] name = "esp-idf-svc" version = "0.51.0" @@ -1610,7 +1713,7 @@ dependencies = [ "embassy-futures", "embedded-hal-async", "embedded-svc", - "embuild 0.33.0", + "embuild", "enumset", "esp-idf-hal", "futures-io", @@ -1631,7 +1734,7 @@ dependencies = [ "cargo_metadata 0.18.1", "cmake", "const_format", - "embuild 0.33.0", + "embuild", "envy", "libc", "regex", @@ -1646,7 +1749,7 @@ version = "3.0.1-dev" source = "git+https://github.com/viamrobotics/espflash.git?branch=monitor-output#c01779ce8dd9b1a0fad03ec4429600e2e76f15ad" dependencies = [ "addr2line 0.21.0", - "base64 0.22.1", + "base64", "bytemuck", "chrono", "clap", @@ -1656,10 +1759,10 @@ dependencies = [ "ctrlc", "defmt-decoder", "defmt-parser 0.3.4", - "dialoguer", + "dialoguer 0.11.0", "directories", "env_logger", - "esp-idf-part", + "esp-idf-part 0.5.0", "flate2", "hex", "indicatif", @@ -1668,7 +1771,7 @@ dependencies = [ "log", "md-5", "miette", - "parse_int", + "parse_int 0.6.0", "regex", "serde", "serialport", @@ -1683,13 +1786,13 @@ dependencies = [ [[package]] name = "etcetera" -version = "0.8.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "136d1b5283a1ab77bd9257427ffd09d8667ced0570b6f938942bc7568ed5b943" +checksum = "26c7b13d0780cb82722fd59f6f57f925e143427e4a75313a6c77243bf5326ae6" dependencies = [ "cfg-if", "home", - "windows-sys 0.48.0", + "windows-sys 0.59.0", ] [[package]] @@ -1700,9 +1803,9 @@ checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" [[package]] name = "event-listener" -version = "5.4.0" +version = "5.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" +checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" dependencies = [ "concurrent-queue", "parking", @@ -1715,7 +1818,7 @@ version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" dependencies = [ - "event-listener 5.4.0", + "event-listener 5.4.1", "pin-project-lite", ] @@ -1733,21 +1836,27 @@ checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "filetime" -version = "0.2.25" +version = "0.2.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" +checksum = "bc0505cd1b6fa6580283f6bdf70a73fcf4aba1184038c90902b92b3dd0df63ed" dependencies = [ "cfg-if", "libc", "libredox", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] +[[package]] +name = "find-msvc-tools" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ced73b1dacfc750a6db6c0a0c3a3853c8b41997e2e2c563dc90804ae6867959" + [[package]] name = "flate2" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ced92e76e966ca2fd84c8f7aa01a4aea65b0eb6648d72f7c8f3e2764a67fece" +checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" dependencies = [ "crc32fast", "miniz_oxide", @@ -1787,9 +1896,9 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "form_urlencoded" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" dependencies = [ "percent-encoding", ] @@ -1838,9 +1947,9 @@ checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-lite" -version = "2.6.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532" +checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" dependencies = [ "fastrand", "futures-core", @@ -1857,7 +1966,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.106", ] [[package]] @@ -1899,15 +2008,6 @@ dependencies = [ "slab", ] -[[package]] -name = "fxhash" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" -dependencies = [ - "byteorder", -] - [[package]] name = "generic-array" version = "0.14.7" @@ -1920,28 +2020,28 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ "cfg-if", "js-sys", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi 0.11.1+wasi-snapshot-preview1", "wasm-bindgen", ] [[package]] name = "getrandom" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" dependencies = [ "cfg-if", "js-sys", "libc", "r-efi", - "wasi 0.14.2+wasi-0.2.4", + "wasi 0.14.7+wasi-0.2.4", "wasm-bindgen", ] @@ -1957,15 +2057,15 @@ dependencies = [ [[package]] name = "gimli" -version = "0.31.1" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" +checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" [[package]] name = "glob" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "globset" @@ -1976,8 +2076,8 @@ dependencies = [ "aho-corasick", "bstr", "log", - "regex-automata 0.4.9", - "regex-syntax 0.8.5", + "regex-automata", + "regex-syntax", ] [[package]] @@ -2005,9 +2105,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.9" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75249d144030531f8dee69fe9cea04d3edf809a017ae445e2abdff6629e86633" +checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386" dependencies = [ "atomic-waker", "bytes", @@ -2042,9 +2142,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.15.2" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" [[package]] name = "heapless" @@ -2085,9 +2185,9 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" -version = "0.4.0" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" [[package]] name = "hex" @@ -2099,12 +2199,12 @@ dependencies = [ ] [[package]] -name = "hmac-sha1" -version = "0.1.3" +name = "hmac" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1333fad8d94b82cab989da428b0b36a3435db3870d85e971a1d6dc0a8576722" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" dependencies = [ - "sha1", + "digest", ] [[package]] @@ -2170,13 +2270,14 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hyper" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" +checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e" dependencies = [ + "atomic-waker", "bytes", "futures-channel", - "futures-util", + "futures-core", "h2", "http", "http-body", @@ -2184,6 +2285,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", + "pin-utils", "smallvec", "tokio", "want", @@ -2191,20 +2293,19 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.5" +version = "0.27.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" dependencies = [ - "futures-util", "http", "hyper", "hyper-util", - "rustls 0.23.26", + "rustls 0.23.32", "rustls-pki-types", "tokio", "tokio-rustls", "tower-service", - "webpki-roots 0.26.8", + "webpki-roots 1.0.2", ] [[package]] @@ -2225,29 +2326,35 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.11" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497bbc33a26fdd4af9ed9c70d63f61cf56a938375fbb32df34db9b1cd6d643f2" +checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8" dependencies = [ + "base64", "bytes", "futures-channel", + "futures-core", "futures-util", "http", "http-body", "hyper", + "ipnet", "libc", + "percent-encoding", "pin-project-lite", "socket2", + "system-configuration", "tokio", "tower-service", "tracing", + "windows-registry", ] [[package]] name = "iana-time-zone" -version = "0.1.63" +version = "0.1.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" +checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -2269,21 +2376,22 @@ dependencies = [ [[package]] name = "icu_collections" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" dependencies = [ "displaydoc", + "potential_utf", "yoke", "zerofrom", "zerovec", ] [[package]] -name = "icu_locid" -version = "1.5.0" +name = "icu_locale_core" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" dependencies = [ "displaydoc", "litemap", @@ -2292,31 +2400,11 @@ dependencies = [ "zerovec", ] -[[package]] -name = "icu_locid_transform" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" -dependencies = [ - "displaydoc", - "icu_locid", - "icu_locid_transform_data", - "icu_provider", - "tinystr", - "zerovec", -] - -[[package]] -name = "icu_locid_transform_data" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7515e6d781098bf9f7205ab3fc7e9709d34554ae0b21ddbcb5febfa4bc7df11d" - [[package]] name = "icu_normalizer" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" dependencies = [ "displaydoc", "icu_collections", @@ -2324,67 +2412,54 @@ dependencies = [ "icu_properties", "icu_provider", "smallvec", - "utf16_iter", - "utf8_iter", - "write16", "zerovec", ] [[package]] name = "icu_normalizer_data" -version = "1.5.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5e8338228bdc8ab83303f16b797e177953730f601a96c25d10cb3ab0daa0cb7" +checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" [[package]] name = "icu_properties" -version = "1.5.1" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" dependencies = [ "displaydoc", "icu_collections", - "icu_locid_transform", + "icu_locale_core", "icu_properties_data", "icu_provider", - "tinystr", + "potential_utf", + "zerotrie", "zerovec", ] [[package]] name = "icu_properties_data" -version = "1.5.1" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85fb8799753b75aee8d2a21d7c14d9f38921b54b3dbda10f5a3c7a7b82dba5e2" +checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" [[package]] name = "icu_provider" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" dependencies = [ "displaydoc", - "icu_locid", - "icu_provider_macros", + "icu_locale_core", "stable_deref_trait", "tinystr", "writeable", "yoke", "zerofrom", + "zerotrie", "zerovec", ] -[[package]] -name = "icu_provider_macros" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.100", -] - [[package]] name = "ident_case" version = "1.0.1" @@ -2393,9 +2468,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "1.0.3" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" dependencies = [ "idna_adapter", "smallvec", @@ -2404,9 +2479,9 @@ dependencies = [ [[package]] name = "idna_adapter" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" dependencies = [ "icu_normalizer", "icu_properties", @@ -2414,9 +2489,9 @@ dependencies = [ [[package]] name = "if-addrs" -version = "0.13.4" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69b2eeee38fef3aa9b4cc5f1beea8a2444fc00e7377cafae396de3f5c2065e24" +checksum = "bf39cc0423ee66021dc5eccface85580e4a001e0c5288bae8bea7ecb69225e90" dependencies = [ "libc", "windows-sys 0.59.0", @@ -2432,7 +2507,7 @@ dependencies = [ "globset", "log", "memchr", - "regex-automata 0.4.9", + "regex-automata", "same-file", "walkdir", "winapi-util", @@ -2440,9 +2515,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.9.0" +version = "2.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" +checksum = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5" dependencies = [ "equivalent", "hashbrown", @@ -2454,10 +2529,10 @@ version = "0.17.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" dependencies = [ - "console", + "console 0.15.11", "number_prefix", "portable-atomic", - "unicode-width 0.2.0", + "unicode-width 0.2.1", "web-time", ] @@ -2471,12 +2546,33 @@ dependencies = [ "mach2", ] +[[package]] +name = "io-uring" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b" +dependencies = [ + "bitflags 2.9.4", + "cfg-if", + "libc", +] + [[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.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" +dependencies = [ + "memchr", + "serde", +] + [[package]] name = "is_ci" version = "1.2.0" @@ -2489,15 +2585,6 @@ version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" -[[package]] -name = "itertools" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b" -dependencies = [ - "either", -] - [[package]] name = "itertools" version = "0.13.0" @@ -2524,9 +2611,9 @@ checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "jiff" -version = "0.2.9" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ec30f7142be6fe14e1b021f50b85db8df2d4324ea6e91ec3e5dcde092021d0" +checksum = "be1f93b8b1eb69c77f24bbb0afdf66f54b632ee39af40ca21c4365a1d7347e49" dependencies = [ "jiff-static", "log", @@ -2537,20 +2624,20 @@ dependencies = [ [[package]] name = "jiff-static" -version = "0.2.9" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "526b834d727fd59d37b076b0c3236d9adde1b1729a4361e20b2026f738cc1dbe" +checksum = "03343451ff899767262ec32146f6d559dd759fdadf42ff0e227c7c48f72594b4" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.106", ] [[package]] name = "js-sys" -version = "0.3.77" +version = "0.3.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +checksum = "ec48937a97411dcb524a265206ccd4c90bb711fca92b2792c407f268825b9305" dependencies = [ "once_cell", "wasm-bindgen", @@ -2573,27 +2660,27 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.172" +version = "0.2.176" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" +checksum = "58f929b4d672ea937a23a1ab494143d968337a5f47e56d0815df1e0890ddf174" [[package]] name = "libloading" -version = "0.8.6" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" dependencies = [ "cfg-if", - "windows-targets 0.52.6", + "windows-link 0.2.0", ] [[package]] name = "libredox" -version = "0.1.3" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.4", "libc", "redox_syscall", ] @@ -2626,33 +2713,39 @@ checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" [[package]] name = "linux-raw-sys" -version = "0.9.4" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" [[package]] name = "litemap" -version = "0.7.5" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" + +[[package]] +name = "litrs" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856" +checksum = "f5e54036fe321fd421e10d732f155734c4e4afd610dd556d9a82833ab3ee0bed" [[package]] name = "local-ip-address" -version = "0.6.3" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3669cf5561f8d27e8fc84cc15e58350e70f557d4d65f70e3154e54cd2f8e1782" +checksum = "656b3b27f8893f7bbf9485148ff9a65f019e3f33bd5cdc87c83cab16b3fd9ec8" dependencies = [ "libc", "neli", - "thiserror 1.0.69", + "thiserror 2.0.17", "windows-sys 0.59.0", ] [[package]] name = "lock_api" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" dependencies = [ "autocfg", "scopeguard", @@ -2660,37 +2753,43 @@ dependencies = [ [[package]] name = "log" -version = "0.4.27" +version = "0.4.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" dependencies = [ "serde", "value-bag", ] +[[package]] +name = "lru-slab" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" + [[package]] name = "mach2" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19b955cdeb2a02b9117f121ce63aa52d08ade45de53e48fe6a38b39c10f6f709" +checksum = "d640282b302c0bb0a2a8e0233ead9035e3bed871f0b7e81fe4a1ec829765db44" dependencies = [ "libc", ] [[package]] name = "matchers" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" dependencies = [ - "regex-automata 0.1.10", + "regex-automata", ] [[package]] name = "matchit" -version = "0.7.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" +checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" [[package]] name = "md-5" @@ -2710,22 +2809,23 @@ checksum = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771" [[package]] name = "mdns-sd" -version = "0.12.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e36e83ad165be7e0ad2e3ae3be9afffdda0c2c9a7e70c628e5541f11443e3041" +checksum = "2356244283ebac826b2310dc21f28306f8ed8dde51367cdd4338c23c3c0364ca" dependencies = [ "fastrand", "flume", "if-addrs", - "polling 2.8.0", + "mio 1.0.4", + "socket-pktinfo", "socket2", ] [[package]] name = "memchr" -version = "2.7.4" +version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" [[package]] name = "memmap2" @@ -2740,13 +2840,13 @@ dependencies = [ name = "micro-rdk" version = "0.5.1" dependencies = [ - "async-channel 2.3.1", + "async-channel 2.5.0", "async-executor", "async-io", "async-lock", "async-std-openssl", "atomic-waker", - "base64 0.22.1", + "base64", "bitfield", "bytecodec", "bytes", @@ -2756,7 +2856,7 @@ dependencies = [ "either", "embedded-hal 1.0.0", "embedded-svc", - "embuild 0.32.0", + "embuild", "env_logger", "esp-idf-svc", "futures-lite", @@ -2775,7 +2875,7 @@ dependencies = [ "postcard", "printf-compat", "prost", - "rand 0.9.1", + "rand 0.9.2", "rcgen", "regex", "ringbuf", @@ -2790,8 +2890,8 @@ dependencies = [ "socket2", "stun_codec", "test-log", - "thiserror 2.0.12", - "trackable 1.3.0", + "thiserror 2.0.17", + "trackable", "uuid", "webpki-roots 0.24.0", ] @@ -2800,13 +2900,13 @@ dependencies = [ name = "micro-rdk-ffi" version = "0.5.1" dependencies = [ - "async-channel 2.3.1", - "base64 0.22.1", - "cargo_metadata 0.19.2", + "async-channel 2.5.0", + "base64", + "cargo_metadata 0.23.0", "cbindgen", "embedded-hal 1.0.0", "embedded-svc", - "embuild 0.32.0", + "embuild", "env_logger", "futures-lite", "local-ip-address", @@ -2816,7 +2916,7 @@ dependencies = [ "regex", "serde", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] @@ -2826,9 +2926,9 @@ dependencies = [ "anyhow", "clap", "crc32fast", - "dialoguer", + "dialoguer 0.12.0", "env_logger", - "esp-idf-part", + "esp-idf-part 0.6.0", "espflash", "log", "reqwest", @@ -2836,7 +2936,7 @@ dependencies = [ "serde", "serde_json", "tempfile", - "thiserror 2.0.12", + "thiserror 2.0.17", "tokio", "version-compare", ] @@ -2846,10 +2946,10 @@ name = "micro-rdk-macros" version = "0.5.1" dependencies = [ "micro-rdk", - "proc-macro-crate 3.3.0", + "proc-macro-crate 3.4.0", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.106", ] [[package]] @@ -2858,19 +2958,19 @@ version = "0.5.1" dependencies = [ "chrono", "chrono-tz", - "embuild 0.32.0", + "embuild", "esp-idf-svc", "log", "micro-rdk", "regex", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] name = "micro-rdk-nmea" version = "0.5.1" dependencies = [ - "base64 0.22.1", + "base64", "check_keyword", "chrono", "convert_case", @@ -2880,27 +2980,27 @@ dependencies = [ "num2words", "serde", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] name = "micro-rdk-nmea-macros" version = "0.5.1" dependencies = [ - "proc-macro-crate 3.3.0", + "proc-macro-crate 3.4.0", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.106", ] [[package]] name = "micro-rdk-server" version = "0.5.1" dependencies = [ - "async-channel 2.3.1", + "async-channel 2.5.0", "embedded-hal 1.0.0", "embedded-svc", - "embuild 0.32.0", + "embuild", "env_logger", "futures-lite", "local-ip-address", @@ -2911,14 +3011,14 @@ dependencies = [ "regex", "serde", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] name = "miette" -version = "7.5.0" +version = "7.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a955165f87b37fd1862df2a59547ac542c77ef6d17c666f619d1ad22dd89484" +checksum = "5f98efec8807c63c752b5bd61f862c165c115b0a35685bdcfd9238c7aeb592b7" dependencies = [ "backtrace", "backtrace-ext", @@ -2930,19 +3030,18 @@ dependencies = [ "supports-unicode", "terminal_size", "textwrap", - "thiserror 1.0.69", "unicode-width 0.1.14", ] [[package]] name = "miette-derive" -version = "7.5.0" +version = "7.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf45bf44ab49be92fd1227a3be6fc6f617f1a337c06af54981048574d8783147" +checksum = "db5b29714e950dbb20d5e6f74f9dcec4edbcc1067bb7f8ed198c097b8c1a818b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.106", ] [[package]] @@ -2969,9 +3068,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", ] @@ -2984,36 +3083,20 @@ checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" dependencies = [ "libc", "log", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi 0.11.1+wasi-snapshot-preview1", "windows-sys 0.48.0", ] [[package]] name = "mio" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" dependencies = [ "libc", - "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.52.0", -] - -[[package]] -name = "multer" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83e87776546dc87511aa5ee218730c92b666d7264ab6ed41f9d215af9cd5224b" -dependencies = [ - "bytes", - "encoding_rs", - "futures-util", - "http", - "httparse", - "memchr", - "mime", - "spin", - "version_check", + "log", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.59.0", ] [[package]] @@ -3090,12 +3173,33 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.4", "cfg-if", "cfg_aliases", "libc", ] +[[package]] +name = "nix" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" +dependencies = [ + "bitflags 2.9.4", + "cfg-if", + "cfg_aliases", + "libc", +] + +[[package]] +name = "no_std_io2" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a3564ce7035b1e4778d8cb6cacebb5d766b5e8fe5a75b9e441e33fb61a872c6" +dependencies = [ + "memchr", +] + [[package]] name = "nom" version = "7.1.3" @@ -3108,21 +3212,20 @@ dependencies = [ [[package]] name = "normpath" -version = "1.3.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8911957c4b1549ac0dc74e30db9c8b0e66ddcd6d7acc33098f4c63a64a6d7ed" +checksum = "bf23ab2b905654b4cb177e30b629937b3868311d4e1cba859f899c041046e69b" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.1", ] [[package]] name = "nu-ansi-term" -version = "0.46.0" +version = "0.50.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +checksum = "d4a28e057d01f97e61255210fcff094d74ed0466038633e95017f5beb68e4399" dependencies = [ - "overload", - "winapi", + "windows-sys 0.52.0", ] [[package]] @@ -3157,23 +3260,24 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" +checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a" dependencies = [ "num_enum_derive", + "rustversion", ] [[package]] name = "num_enum_derive" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" +checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" dependencies = [ - "proc-macro-crate 3.3.0", + "proc-macro-crate 3.4.0", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.106", ] [[package]] @@ -3195,9 +3299,9 @@ dependencies = [ [[package]] name = "object" -version = "0.36.7" +version = "0.37.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" dependencies = [ "memchr", ] @@ -3208,13 +3312,19 @@ version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +[[package]] +name = "once_cell_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" + [[package]] name = "openssl" -version = "0.10.72" +version = "0.10.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fedfea7d58a1f73118430a55da6a286e7b044961736ce96a16a17068ea25e5da" +checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.4", "cfg-if", "foreign-types", "libc", @@ -3231,7 +3341,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.106", ] [[package]] @@ -3242,9 +3352,9 @@ checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "openssl-sys" -version = "0.9.107" +version = "0.9.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8288979acd84749c744a9014b4382d42b8f7b2592847b5afb2ed29e5d16ede07" +checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" dependencies = [ "cc", "libc", @@ -3266,23 +3376,17 @@ dependencies = [ "axum-extra", "local-ip-address", "tokio", - "tower 0.4.13", + "tower", "tower-http", "tracing", "tracing-subscriber", ] -[[package]] -name = "overload" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" - [[package]] name = "owo-colors" -version = "4.2.0" +version = "4.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1036865bb9422d3300cf723f657c2851d0e9ab12567854b1f4eba3d77decf564" +checksum = "48dd4f4a2c8405440fd0462561f0e5806bd0f77e86f51c761481bdd4018b545e" [[package]] name = "parking" @@ -3292,9 +3396,9 @@ checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" [[package]] name = "parking_lot" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" dependencies = [ "lock_api", "parking_lot_core", @@ -3302,9 +3406,9 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.10" +version = "0.9.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" dependencies = [ "cfg-if", "libc", @@ -3314,19 +3418,19 @@ dependencies = [ ] [[package]] -name = "parse-zoneinfo" -version = "0.3.1" +name = "parse_int" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f2a05b18d44e2957b88f96ba460715e295bc1d7510468a2f3d3b44535d26c24" +checksum = "2d695b79916a2c08bcff7be7647ab60d1402885265005a6658ffe6d763553c5a" dependencies = [ - "regex", + "num-traits", ] [[package]] name = "parse_int" -version = "0.6.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d695b79916a2c08bcff7be7647ab60d1402885265005a6658ffe6d763553c5a" +checksum = "1c464266693329dd5a8715098c7f86e6c5fd5d985018b8318f53d9c6c2b21a31" dependencies = [ "num-traits", ] @@ -3337,15 +3441,15 @@ version = "3.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38af38e8470ac9dee3ce1bae1af9c1671fffc44ddfd8bd1d0a3445bf349a8ef3" dependencies = [ - "base64 0.22.1", + "base64", "serde", ] [[package]] name = "percent-encoding" -version = "2.3.1" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "phf" @@ -3354,17 +3458,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" dependencies = [ "phf_macros", - "phf_shared", + "phf_shared 0.11.3", ] [[package]] -name = "phf_codegen" -version = "0.11.3" +name = "phf" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a" +checksum = "913273894cec178f401a31ec4b656318d95473527be05c0752cc41cdc32be8b7" dependencies = [ - "phf_generator", - "phf_shared", + "phf_shared 0.12.1", ] [[package]] @@ -3373,7 +3476,7 @@ version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" dependencies = [ - "phf_shared", + "phf_shared 0.11.3", "rand 0.8.5", ] @@ -3384,10 +3487,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" dependencies = [ "phf_generator", - "phf_shared", + "phf_shared 0.11.3", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.106", ] [[package]] @@ -3399,6 +3502,15 @@ dependencies = [ "siphasher", ] +[[package]] +name = "phf_shared" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06005508882fb681fd97892ecff4b7fd0fee13ef1aa569f8695dae7ab9099981" +dependencies = [ + "siphasher", +] + [[package]] name = "pin-project" version = "1.1.10" @@ -3416,7 +3528,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.106", ] [[package]] @@ -3450,40 +3562,23 @@ checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "polling" -version = "2.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce" -dependencies = [ - "autocfg", - "bitflags 1.3.2", - "cfg-if", - "concurrent-queue", - "libc", - "log", - "pin-project-lite", - "windows-sys 0.48.0", -] - -[[package]] -name = "polling" -version = "3.7.4" +version = "3.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f" +checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218" dependencies = [ "cfg-if", "concurrent-queue", "hermit-abi", "pin-project-lite", - "rustix 0.38.44", - "tracing", - "windows-sys 0.59.0", + "rustix 1.1.2", + "windows-sys 0.61.1", ] [[package]] name = "portable-atomic" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e" +checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" [[package]] name = "portable-atomic-util" @@ -3496,9 +3591,9 @@ dependencies = [ [[package]] name = "postcard" -version = "1.1.1" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "170a2601f67cc9dba8edd8c4870b15f71a6a2dc196daec8c83f72b59dff628a8" +checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", "embedded-io 0.4.0", @@ -3507,6 +3602,15 @@ dependencies = [ "serde", ] +[[package]] +name = "potential_utf" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a" +dependencies = [ + "zerovec", +] + [[package]] name = "powerfmt" version = "0.2.0" @@ -3524,24 +3628,22 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.32" +version = "0.2.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "664ec5419c51e34154eec046ebcba56312d5a2fc3b09a06da188e1ad21afadf6" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.100", + "syn 2.0.106", ] [[package]] name = "printf-compat" -version = "0.1.1" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b002af28ffe3d3d67202ae717810a28125a494d5396debc43de01ee136ac404" +checksum = "4ccd7bb33c3c13016f1315e4e4c6ad1d0021ce575b1e254868f4330eab99e1b6" dependencies = [ - "bitflags 1.3.2", - "cstr_core", - "cty", - "itertools 0.9.0", + "bitflags 2.9.4", + "itertools 0.14.0", ] [[package]] @@ -3556,11 +3658,11 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" +checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" dependencies = [ - "toml_edit 0.22.24", + "toml_edit 0.23.6", ] [[package]] @@ -3582,23 +3684,23 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.106", ] [[package]] name = "proc-macro2" -version = "1.0.95" +version = "1.0.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" dependencies = [ "unicode-ident", ] [[package]] name = "prost" -version = "0.13.5" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5" +checksum = "7231bd9b3d3d33c86b58adbac74b5ec0ad9f496b19d22801d773636feaa95f3d" dependencies = [ "bytes", "prost-derive", @@ -3606,22 +3708,22 @@ dependencies = [ [[package]] name = "prost-derive" -version = "0.13.5" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" +checksum = "9120690fafc389a67ba3803df527d0ec9cbbc9cc45e4cc20b332996dfb672425" dependencies = [ "anyhow", "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.106", ] [[package]] name = "quinn" -version = "0.11.7" +version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3bd15a6f2967aef83887dcb9fec0014580467e33720d073560cf015a5683012" +checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" dependencies = [ "bytes", "cfg_aliases", @@ -3629,9 +3731,9 @@ dependencies = [ "quinn-proto", "quinn-udp", "rustc-hash", - "rustls 0.23.26", + "rustls 0.23.32", "socket2", - "thiserror 2.0.12", + "thiserror 2.0.17", "tokio", "tracing", "web-time", @@ -3639,19 +3741,20 @@ dependencies = [ [[package]] name = "quinn-proto" -version = "0.11.10" +version = "0.11.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b820744eb4dc9b57a3398183639c511b5a26d2ed702cedd3febaa1393caa22cc" +checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" dependencies = [ "bytes", - "getrandom 0.3.2", - "rand 0.9.1", + "getrandom 0.3.3", + "lru-slab", + "rand 0.9.2", "ring", "rustc-hash", - "rustls 0.23.26", + "rustls 0.23.32", "rustls-pki-types", "slab", - "thiserror 2.0.12", + "thiserror 2.0.17", "tinyvec", "tracing", "web-time", @@ -3659,32 +3762,32 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.11" +version = "0.5.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "541d0f57c6ec747a90738a52741d3221f7960e8ac2f0ff4b1a63680e033b4ab5" +checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" dependencies = [ "cfg_aliases", "libc", "once_cell", "socket2", "tracing", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] name = "quote" -version = "1.0.40" +version = "1.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1" dependencies = [ "proc-macro2", ] [[package]] name = "r-efi" -version = "5.2.0" +version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" [[package]] name = "radium" @@ -3698,31 +3801,19 @@ version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ - "libc", - "rand_chacha 0.3.1", "rand_core 0.6.4", ] [[package]] name = "rand" -version = "0.9.1" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" dependencies = [ - "rand_chacha 0.9.0", + "rand_chacha", "rand_core 0.9.3", ] -[[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_chacha" version = "0.9.0" @@ -3738,9 +3829,6 @@ name = "rand_core" version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom 0.2.15", -] [[package]] name = "rand_core" @@ -3748,14 +3836,14 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" dependencies = [ - "getrandom 0.3.2", + "getrandom 0.3.3", ] [[package]] name = "rcgen" -version = "0.13.2" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75e669e5202259b5314d1ea5397316ad400819437857b90861765f24c4cf80a2" +checksum = "5fae430c6b28f1ad601274e78b7dffa0546de0b73b4cd32f46723c0c2a16f7a5" dependencies = [ "pem", "ring", @@ -3766,11 +3854,11 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.11" +version = "0.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2f103c6d277498fbceb16e84d317e2a400f160f46904d5f5410848c829511a3" +checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.4", ] [[package]] @@ -3779,54 +3867,39 @@ version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", "libredox", "thiserror 1.0.69", ] [[package]] name = "regex" -version = "1.11.1" +version = "1.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +checksum = "8b5288124840bee7b386bc413c487869b360b2b4ec421ea56425128692f2a82c" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.9", - "regex-syntax 0.8.5", -] - -[[package]] -name = "regex-automata" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" -dependencies = [ - "regex-syntax 0.6.29", + "regex-automata", + "regex-syntax", ] [[package]] name = "regex-automata" -version = "0.4.9" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +checksum = "833eb9ce86d40ef33cb1306d8accf7bc8ec2bfea4355cbdebb3df68b40925cad" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.5", + "regex-syntax", ] [[package]] name = "regex-syntax" -version = "0.6.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" - -[[package]] -name = "regex-syntax" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001" [[package]] name = "remove_dir_all" @@ -3844,11 +3917,11 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.12.15" +version = "0.12.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d19c46a6fdd48bc4dab94b6103fccc55d34c67cc0ad04653aad4ea2a07cd7bbb" +checksum = "d429f34c8092b2d42c7c93cec323bb4adeb7c67698f70839adec842ec10c7ceb" dependencies = [ - "base64 0.22.1", + "base64", "bytes", "encoding_rs", "futures-channel", @@ -3862,34 +3935,30 @@ dependencies = [ "hyper-rustls", "hyper-tls", "hyper-util", - "ipnet", "js-sys", "log", "mime", "native-tls", - "once_cell", "percent-encoding", "pin-project-lite", "quinn", - "rustls 0.23.26", - "rustls-pemfile", + "rustls 0.23.32", "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", "sync_wrapper", - "system-configuration", "tokio", "tokio-native-tls", "tokio-rustls", - "tower 0.5.2", + "tower", + "tower-http", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "webpki-roots 0.26.8", - "windows-registry", + "webpki-roots 1.0.2", ] [[package]] @@ -3900,7 +3969,7 @@ checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", - "getrandom 0.2.15", + "getrandom 0.2.16", "libc", "untrusted", "windows-sys 0.52.0", @@ -3917,9 +3986,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.24" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" [[package]] name = "rustc-hash" @@ -3942,7 +4011,7 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.4", "errno", "libc", "linux-raw-sys 0.4.15", @@ -3951,15 +4020,15 @@ dependencies = [ [[package]] name = "rustix" -version = "1.0.5" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d97817398dd4bb2e6da002002db259209759911da105da92bec29ccb12cf58bf" +checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.4", "errno", "libc", - "linux-raw-sys 0.9.4", - "windows-sys 0.59.0", + "linux-raw-sys 0.11.0", + "windows-sys 0.61.1", ] [[package]] @@ -3976,15 +4045,15 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.26" +version = "0.23.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df51b5869f3a441595eac5e8ff14d486ff285f7b8c0df8770e49c3b56351f0f0" +checksum = "cd3c25631629d034ce7cd9940adc9d45762d46de2b0f57193c4443b92c6d4d40" dependencies = [ "log", "once_cell", "ring", "rustls-pki-types", - "rustls-webpki 0.103.1", + "rustls-webpki 0.103.6", "subtle", "zeroize", ] @@ -4000,11 +4069,12 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" +checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" dependencies = [ "web-time", + "zeroize", ] [[package]] @@ -4019,9 +4089,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.103.1" +version = "0.103.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fef8b8769aaccf73098557a87cd1816b4f9c7c16811c9c77142aa695c16f2c03" +checksum = "8572f3c2cb9934231157b45499fc41e1f58c589fdfb81a844ba873265e80f8eb" dependencies = [ "ring", "rustls-pki-types", @@ -4030,9 +4100,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.20" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "ruzstd" @@ -4062,11 +4132,11 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.1", ] [[package]] @@ -4087,26 +4157,26 @@ dependencies = [ [[package]] name = "sctp-proto" -version = "0.3.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4dea4fe3384a24652f065296ac333c810dfd0c5b39b98a2214762c16aaadc3c" +checksum = "423139d8cca3021b9d800f084a711ba2d23b508ae71b33dba167f11ca33e54c7" dependencies = [ "bytes", "crc", - "fxhash", "log", - "rand 0.8.5", + "rand 0.9.2", + "rustc-hash", "slab", - "thiserror 1.0.69", + "thiserror 2.0.17", ] [[package]] name = "sdp" -version = "0.6.2" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13254db766b17451aced321e7397ebf0a446ef0c8d2942b6e67a95815421093f" +checksum = "32c374dceda16965d541c8800ce9cc4e1c14acfd661ddf7952feeedc3411e5c6" dependencies = [ - "rand 0.8.5", + "rand 0.9.2", "substring", "thiserror 1.0.69", "url", @@ -4128,7 +4198,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.4", "core-foundation 0.9.4", "core-foundation-sys", "libc", @@ -4137,9 +4207,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.14.0" +version = "2.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" +checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" dependencies = [ "core-foundation-sys", "libc", @@ -4147,53 +4217,66 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.26" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" dependencies = [ "serde", + "serde_core", ] [[package]] name = "serde" -version = "1.0.219" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.219" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.106", ] [[package]] name = "serde_json" -version = "1.0.140" +version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" dependencies = [ "itoa", "memchr", "ryu", "serde", + "serde_core", ] [[package]] name = "serde_path_to_error" -version = "0.1.17" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59fab13f937fa393d08645bf3a84bdfe86e296747b506ada67bb15f10f218b2a" +checksum = "10a9ff822e371bb5403e391ecd83e182e0e77ba7f6fe0160b795797109d1b457" dependencies = [ "itoa", "serde", + "serde_core", ] [[package]] @@ -4207,9 +4290,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.8" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" dependencies = [ "serde", ] @@ -4228,13 +4311,13 @@ dependencies = [ [[package]] name = "serialport" -version = "4.7.1" +version = "4.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2daa7abb9b965493e3c8f4184c6f46435484ff2538a332b886788cf6768b927b" +checksum = "2acaf3f973e8616d7ceac415f53fc60e190b2a686fbcf8d27d0256c741c5007b" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.4", "cfg-if", - "core-foundation 0.10.0", + "core-foundation 0.10.1", "core-foundation-sys", "io-kit-sys", "libudev", @@ -4247,15 +4330,20 @@ dependencies = [ [[package]] name = "sha1" -version = "0.2.0" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc30b1e1e8c40c121ca33b86c23308a090d19974ef001b4bf6e61fd1a0fb095c" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] [[package]] name = "sha2" -version = "0.10.8" +version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", "cpufeatures", @@ -4285,9 +4373,9 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook" -version = "0.3.17" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801" +checksum = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2" dependencies = [ "libc", "signal-hook-registry", @@ -4306,9 +4394,9 @@ dependencies = [ [[package]] name = "signal-hook-registry" -version = "1.4.5" +version = "1.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410" +checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b" dependencies = [ "libc", ] @@ -4321,12 +4409,9 @@ checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" [[package]] name = "slab" -version = "0.4.9" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -dependencies = [ - "autocfg", -] +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" [[package]] name = "slip-codec" @@ -4336,18 +4421,29 @@ checksum = "e794b692443f8d9b677cd41c867347df2902844d7b7f5775f47fcb37b9e7965b" [[package]] name = "smallvec" -version = "1.15.0" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "socket-pktinfo" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9" +checksum = "927136cc2ae6a1b0e66ac6b1210902b75c3f726db004a73bc18686dcd0dcd22f" +dependencies = [ + "libc", + "socket2", + "windows-sys 0.60.2", +] [[package]] name = "socket2" -version = "0.5.9" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f5fd57c80058a56cf5c777ab8a126398ece8e442983605d280a44ce79d0edef" +checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -4410,6 +4506,15 @@ dependencies = [ "strum_macros 0.26.4", ] +[[package]] +name = "strum" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" +dependencies = [ + "strum_macros 0.27.2", +] + [[package]] name = "strum_macros" version = "0.24.3" @@ -4433,7 +4538,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.100", + "syn 2.0.106", ] [[package]] @@ -4446,20 +4551,34 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.100", + "syn 2.0.106", +] + +[[package]] +name = "strum_macros" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.106", ] [[package]] name = "stun_codec" -version = "0.3.0" -source = "git+https://github.com/viamrobotics/stun_codec#71071a433bdfccc896289cde8c83f3e271a7ae12" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2663da41e3e056af18e2ec9ca537d53a4667798fdf92684f9848bd248263223a" dependencies = [ "bytecodec", "byteorder", "crc", - "hmac-sha1", + "hmac", "md5", - "trackable 1.3.0", + "sha1", + "trackable", ] [[package]] @@ -4511,9 +4630,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.100" +version = "2.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0" +checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" dependencies = [ "proc-macro2", "quote", @@ -4531,13 +4650,13 @@ dependencies = [ [[package]] name = "synstructure" -version = "0.13.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.106", ] [[package]] @@ -4546,7 +4665,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.4", "core-foundation 0.9.4", "system-configuration-sys", ] @@ -4569,32 +4688,32 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.19.1" +version = "3.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7437ac7763b9b123ccf33c338a5cc1bac6f69b45a136c19bdd8a65e3916435bf" +checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" dependencies = [ "fastrand", - "getrandom 0.3.2", + "getrandom 0.3.3", "once_cell", - "rustix 1.0.5", - "windows-sys 0.59.0", + "rustix 1.1.2", + "windows-sys 0.61.1", ] [[package]] name = "terminal_size" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45c6481c4829e4cc63825e62c49186a34538b7b2750b73b266581ffb612fb5ed" +checksum = "60b8cb979cb11c32ce1603f8137b22262a9d131aaa5c37b5678025f22b8becd0" dependencies = [ - "rustix 1.0.5", - "windows-sys 0.59.0", + "rustix 1.1.2", + "windows-sys 0.60.2", ] [[package]] name = "test-log" -version = "0.2.17" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7f46083d221181166e5b6f6b1e5f1d499f3a76888826e6cb1d057554157cd0f" +checksum = "1e33b98a582ea0be1168eba097538ee8dd4bbe0f2b01b22ac92ea30054e5be7b" dependencies = [ "env_logger", "test-log-macros", @@ -4603,13 +4722,13 @@ dependencies = [ [[package]] name = "test-log-macros" -version = "0.2.17" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "888d0c3c6db53c0fdab160d2ed5e12ba745383d3e85813f2ea0f2b1475ab553f" +checksum = "451b374529930d7601b1eef8d32bc79ae870b6079b069401709c2a8bf9e75f36" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.106", ] [[package]] @@ -4619,7 +4738,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c13547615a44dc9c452a8a534638acdf07120d4b6847c8178705da06306a3057" dependencies = [ "unicode-linebreak", - "unicode-width 0.2.0", + "unicode-width 0.2.1", ] [[package]] @@ -4633,11 +4752,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.12" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" +checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" dependencies = [ - "thiserror-impl 2.0.12", + "thiserror-impl 2.0.17", ] [[package]] @@ -4648,35 +4767,34 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.106", ] [[package]] name = "thiserror-impl" -version = "2.0.12" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" +checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.106", ] [[package]] name = "thread_local" -version = "1.1.8" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" dependencies = [ "cfg-if", - "once_cell", ] [[package]] name = "time" -version = "0.3.41" +version = "0.3.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" +checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" dependencies = [ "deranged", "itoa", @@ -4689,15 +4807,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.4" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" +checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" [[package]] name = "time-macros" -version = "0.2.22" +version = "0.2.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" +checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" dependencies = [ "num-conv", "time-core", @@ -4705,9 +4823,9 @@ dependencies = [ [[package]] name = "tinystr" -version = "0.7.6" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" dependencies = [ "displaydoc", "zerovec", @@ -4715,9 +4833,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" +checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" dependencies = [ "tinyvec_macros", ] @@ -4730,20 +4848,22 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.44.2" +version = "1.47.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6b88822cbe49de4185e3a4cbf8321dd487cf5fe0c5c65695fef6346371e9c48" +checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" dependencies = [ "backtrace", "bytes", + "io-uring", "libc", - "mio 1.0.3", + "mio 1.0.4", "parking_lot", "pin-project-lite", "signal-hook-registry", + "slab", "socket2", "tokio-macros", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -4754,7 +4874,7 @@ checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.106", ] [[package]] @@ -4769,19 +4889,19 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.26.2" +version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" +checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" dependencies = [ - "rustls 0.23.26", + "rustls 0.23.32", "tokio", ] [[package]] name = "tokio-util" -version = "0.7.14" +version = "0.7.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b9590b93e6fcc1739458317cccd391ad3955e2bde8913edf6f95f9e65a8f034" +checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5" dependencies = [ "bytes", "futures-core", @@ -4792,25 +4912,34 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.20" +version = "0.8.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd87a5cdd6ffab733b2f74bc4fd7ee5fff6634124999ac278c35fc78c6120148" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" dependencies = [ "serde", "serde_spanned", - "toml_datetime", - "toml_edit 0.22.24", + "toml_datetime 0.6.11", + "toml_edit 0.22.27", ] [[package]] name = "toml_datetime" -version = "0.6.8" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" dependencies = [ "serde", ] +[[package]] +name = "toml_datetime" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32f1085dec27c2b6632b04c80b3bb1b4300d6495d1e129693bdda7d91e72eec1" +dependencies = [ + "serde_core", +] + [[package]] name = "toml_edit" version = "0.19.15" @@ -4818,38 +4947,51 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ "indexmap", - "toml_datetime", + "toml_datetime 0.6.11", "winnow 0.5.40", ] [[package]] name = "toml_edit" -version = "0.22.24" +version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ "indexmap", "serde", "serde_spanned", - "toml_datetime", - "winnow 0.7.6", + "toml_datetime 0.6.11", + "toml_write", + "winnow 0.7.13", ] [[package]] -name = "tower" -version = "0.4.13" +name = "toml_edit" +version = "0.23.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +checksum = "f3effe7c0e86fdff4f69cdd2ccc1b96f933e24811c5441d44904e8683e27184b" dependencies = [ - "futures-core", - "futures-util", - "pin-project", - "pin-project-lite", - "tower-layer", - "tower-service", - "tracing", + "indexmap", + "toml_datetime 0.7.2", + "toml_parser", + "winnow 0.7.13", +] + +[[package]] +name = "toml_parser" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cf893c33be71572e0e9aa6dd15e6677937abd686b066eac3f8cd3531688a627" +dependencies = [ + "winnow 0.7.13", ] +[[package]] +name = "toml_write" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" + [[package]] name = "tower" version = "0.5.2" @@ -4868,24 +5010,27 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.5.2" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5" +checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.4", "bytes", + "futures-core", "futures-util", "http", "http-body", "http-body-util", "http-range-header", "httpdate", + "iri-string", "mime", "mime_guess", "percent-encoding", "pin-project-lite", "tokio", "tokio-util", + "tower", "tower-layer", "tower-service", "tracing", @@ -4917,20 +5062,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.28" +version = "0.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" +checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.106", ] [[package]] name = "tracing-core" -version = "0.1.33" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" dependencies = [ "once_cell", "valuable", @@ -4949,14 +5094,14 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.19" +version = "0.3.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" +checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5" dependencies = [ "matchers", "nu-ansi-term", "once_cell", - "regex", + "regex-automata", "sharded-slab", "smallvec", "thread_local", @@ -4965,16 +5110,6 @@ dependencies = [ "tracing-log", ] -[[package]] -name = "trackable" -version = "0.2.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b98abb9e7300b9ac902cc04920945a874c1973e08c310627cc4458c04b70dd32" -dependencies = [ - "trackable 1.3.0", - "trackable_derive", -] - [[package]] name = "trackable" version = "1.3.0" @@ -5027,11 +5162,11 @@ dependencies = [ [[package]] name = "unescaper" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c878a167baa8afd137494101a688ef8c67125089ff2249284bd2b5f9bfedb815" +checksum = "c01d12e3a56a4432a8b436f293c25f4808bdf9e9f9f98f9260bba1f1bc5a1f26" dependencies = [ - "thiserror 1.0.69", + "thiserror 2.0.17", ] [[package]] @@ -5042,9 +5177,9 @@ checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" [[package]] name = "unicode-ident" -version = "1.0.18" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" +checksum = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d" [[package]] name = "unicode-linebreak" @@ -5066,9 +5201,9 @@ checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" [[package]] name = "unicode-width" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" +checksum = "4a1a07cc7db3810833284e8d372ccdc6da29741639ecc70c9ec107df0fa6154c" [[package]] name = "unicode-xid" @@ -5084,9 +5219,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "update-informer" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53813bf5d5f0d8430794f8cc48e99521cc9e298066958d16383ccb8b39d182a7" +checksum = "67b27dcf766dc6ad64c2085201626e1a7955dc1983532bfc8406d552903ace2a" dependencies = [ "etcetera", "reqwest", @@ -5098,38 +5233,54 @@ dependencies = [ [[package]] name = "ureq" -version = "2.12.1" +version = "3.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02d1a66277ed75f640d608235660df48c8e3c19f3b4edb6a263315626cc3c01d" +checksum = "99ba1025f18a4a3fc3e9b48c868e9beb4f24f4b4b1a325bada26bd4119f46537" dependencies = [ - "base64 0.22.1", + "base64", + "cookie_store", "flate2", "log", - "once_cell", - "rustls 0.23.26", + "percent-encoding", + "rustls 0.23.32", + "rustls-pemfile", "rustls-pki-types", "serde", "serde_json", - "url", - "webpki-roots 0.26.8", + "ureq-proto", + "utf-8", + "webpki-roots 1.0.2", +] + +[[package]] +name = "ureq-proto" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60b4531c118335662134346048ddb0e54cc86bd7e81866757873055f0e38f5d2" +dependencies = [ + "base64", + "http", + "httparse", + "log", ] [[package]] name = "url" -version = "2.5.4" +version = "2.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" dependencies = [ "form_urlencoded", "idna", "percent-encoding", + "serde", ] [[package]] -name = "utf16_iter" -version = "1.0.5" +name = "utf-8" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" [[package]] name = "utf8_iter" @@ -5145,11 +5296,13 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.16.0" +version = "1.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "458f7a779bf54acc9f347480ac654f68407d3aab21269a6e3c9f922acd9e2da9" +checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" dependencies = [ - "getrandom 0.3.2", + "getrandom 0.3.3", + "js-sys", + "wasm-bindgen", ] [[package]] @@ -5209,50 +5362,60 @@ dependencies = [ [[package]] name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" +version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasi" -version = "0.14.2+wasi-0.2.4" +version = "0.14.7+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "883478de20367e224c0090af9cf5f9fa85bed63a95c1abf3afc5c083ebc06e8c" +dependencies = [ + "wasip2", +] + +[[package]] +name = "wasip2" +version = "1.0.1+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" dependencies = [ - "wit-bindgen-rt", + "wit-bindgen", ] [[package]] name = "wasm-bindgen" -version = "0.2.100" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +checksum = "c1da10c01ae9f1ae40cbfac0bac3b1e724b320abfcf52229f80b547c0d250e2d" dependencies = [ "cfg-if", "once_cell", "rustversion", "wasm-bindgen-macro", + "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.100" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +checksum = "671c9a5a66f49d8a47345ab942e2cb93c7d1d0339065d4f8139c486121b43b19" dependencies = [ "bumpalo", "log", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.106", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.50" +version = "0.4.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +checksum = "7e038d41e478cc73bae0ff9b36c60cff1c98b8f38f8d7e8061e79ee63608ac5c" dependencies = [ "cfg-if", "js-sys", @@ -5263,9 +5426,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.100" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +checksum = "7ca60477e4c59f5f2986c50191cd972e3a50d8a95603bc9434501cf156a9a119" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -5273,31 +5436,31 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.100" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +checksum = "9f07d2f20d4da7b26400c9f4a0511e6e0345b040694e8a75bd41d578fa4421d7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.106", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.100" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +checksum = "bad67dc8b2a1a6e5448428adec4c3e84c43e561d8c9ee8a9e5aabeb193ec41d1" dependencies = [ "unicode-ident", ] [[package]] name = "web-sys" -version = "0.3.77" +version = "0.3.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +checksum = "9367c417a924a74cae129e6a2ae3b47fabb1f8995595ab474029da749a8be120" dependencies = [ "js-sys", "wasm-bindgen", @@ -5324,9 +5487,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.26.8" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2210b291f7ea53617fbafcc4939f10914214ec15aace5ba62293a668f322c5c9" +checksum = "7e8983c3ab33d6fb807cfcdad2491c4ea8cbc8ed839181c7dfd9c67c83e261b2" dependencies = [ "rustls-pki-types", ] @@ -5361,11 +5524,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.9" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.1", ] [[package]] @@ -5376,81 +5539,96 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows-core" -version = "0.61.0" +version = "0.62.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4763c1de310c86d75a878046489e2e5ba02c649d185f21c67d4cf8a56d098980" +checksum = "6844ee5416b285084d3d3fffd743b925a6c9385455f64f6d4fa3031c4c2749a9" dependencies = [ "windows-implement", "windows-interface", - "windows-link", - "windows-result", - "windows-strings 0.4.0", + "windows-link 0.2.0", + "windows-result 0.4.0", + "windows-strings 0.5.0", ] [[package]] name = "windows-implement" -version = "0.60.0" +version = "0.60.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" +checksum = "edb307e42a74fb6de9bf3a02d9712678b22399c87e6fa869d6dfcd8c1b7754e0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.106", ] [[package]] name = "windows-interface" -version = "0.59.1" +version = "0.59.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +checksum = "c0abd1ddbc6964ac14db11c7213d6532ef34bd9aa042c2e5935f59d7908b46a5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.106", ] [[package]] name = "windows-link" -version = "0.1.1" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + +[[package]] +name = "windows-link" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" +checksum = "45e46c0661abb7180e7b9c281db115305d49ca1709ab8242adf09666d2173c65" [[package]] name = "windows-registry" -version = "0.4.0" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4286ad90ddb45071efd1a66dfa43eb02dd0dfbae1545ad6cc3c51cf34d7e8ba3" +checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e" dependencies = [ - "windows-result", - "windows-strings 0.3.1", - "windows-targets 0.53.0", + "windows-link 0.1.3", + "windows-result 0.3.4", + "windows-strings 0.4.2", ] [[package]] name = "windows-result" -version = "0.3.2" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +dependencies = [ + "windows-link 0.1.3", +] + +[[package]] +name = "windows-result" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c64fd11a4fd95df68efcfee5f44a294fe71b8bc6a91993e2791938abcc712252" +checksum = "7084dcc306f89883455a206237404d3eaf961e5bd7e0f312f7c91f57eb44167f" dependencies = [ - "windows-link", + "windows-link 0.2.0", ] [[package]] name = "windows-strings" -version = "0.3.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87fa48cc5d406560701792be122a10132491cff9d0aeb23583cc2dcafc847319" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" dependencies = [ - "windows-link", + "windows-link 0.1.3", ] [[package]] name = "windows-strings" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2ba9642430ee452d5a7aa78d72907ebe8cfda358e8cb7918a2050581322f97" +checksum = "7218c655a553b0bed4426cf54b20d7ba363ef543b52d515b3e48d7fd55318dda" dependencies = [ - "windows-link", + "windows-link 0.2.0", ] [[package]] @@ -5480,6 +5658,24 @@ 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.4", +] + +[[package]] +name = "windows-sys" +version = "0.61.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f109e41dd4a3c848907eb83d5a42ea98b3769495597450cf6d153507b166f0f" +dependencies = [ + "windows-link 0.2.0", +] + [[package]] name = "windows-targets" version = "0.48.5" @@ -5513,10 +5709,11 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.53.0" +version = "0.53.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1e4c7e8ceaaf9cb7d7507c974735728ab453b67ef8f18febdd7c11fe59dca8b" +checksum = "2d42b7b7f66d2a06854650af09cfdf8713e427a439c97ad65a6375318033ac4b" dependencies = [ + "windows-link 0.2.0", "windows_aarch64_gnullvm 0.53.0", "windows_aarch64_msvc 0.53.0", "windows_i686_gnu 0.53.0", @@ -5676,33 +5873,24 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.6" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63d3fcd9bba44b03821e7d699eeee959f3126dcc4aa8e4ae18ec617c2a5cea10" +checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" dependencies = [ "memchr", ] [[package]] -name = "wit-bindgen-rt" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" -dependencies = [ - "bitflags 2.9.0", -] - -[[package]] -name = "write16" -version = "1.0.0" +name = "wit-bindgen" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" [[package]] name = "writeable" -version = "0.5.5" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" +checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" [[package]] name = "wyz" @@ -5733,9 +5921,9 @@ dependencies = [ [[package]] name = "yoke" -version = "0.7.5" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" dependencies = [ "serde", "stable_deref_trait", @@ -5745,13 +5933,13 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.7.5" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.106", "synstructure", ] @@ -5763,22 +5951,22 @@ checksum = "2fe21bcc34ca7fe6dd56cc2cb1261ea59d6b93620215aefb5ea6032265527784" [[package]] name = "zerocopy" -version = "0.8.24" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2586fea28e186957ef732a5f8b3be2da217d65c5969d4b1e17f973ebbe876879" +checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.24" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a996a8f63c5c4448cd959ac1bab0aaa3306ccfd060472f85943ee0750f0169be" +checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.106", ] [[package]] @@ -5798,7 +5986,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.106", "synstructure", ] @@ -5808,11 +5996,22 @@ version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +[[package]] +name = "zerotrie" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + [[package]] name = "zerovec" -version = "0.10.4" +version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b" dependencies = [ "yoke", "zerofrom", @@ -5821,11 +6020,11 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.10.3" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.106", ] diff --git a/Cargo.toml b/Cargo.toml index 4942ead4d..d75ab31a6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [workspace] -resolver = "2" +resolver = "3" members = [ "micro-rdk", @@ -22,11 +22,11 @@ default-members = [ [workspace.package] authors = ["Viam, inc. "] description = "Viam RDK for microcontroller" -edition = "2021" +edition = "2024" license = "AGPL-3.0" repository = "https://github.com/viamrobotics/micro-rdk" version = "0.5.1" -rust-version = "1.85" +rust-version = "1.89" [profile.release] debug = true @@ -40,35 +40,35 @@ opt-level = "z" concurrent-queue = { git = "https://github.com/npmenard/concurrent-queue", rev = "ffdd176" } [workspace.dependencies] -anyhow = "1.0.94" +anyhow = "1.0.100" async-channel = "2" async-executor = "1" async-io = "2" -async-lock = "3.4.0" +async-lock = "3.4.1" async-std-openssl = "0.6.3" atomic-waker = "1.1.2" -axum = "0.7.9" -axum-extra = "0.9.6" +axum = "0.8.5" +axum-extra = "0.10.2" base64 = "0.22.1" -bitfield = "0.17.0" -bytecodec = "0.4.15" -bytes = "1.9.0" -cargo_metadata = "0.19.1" -cbindgen = "0.27.0" -check_keyword = { version = "0.3.1", default-features = false, features = [ "2021" ] } -chrono = "0.4.38" -chrono-tz = "0.10.0" -clap = "4.5.23" +bitfield = "0.19.2" +bytecodec = "0.5.0" +bytes = "1.10.1" +cargo_metadata = "0.23.0" +cbindgen = "0.29.0" +check_keyword = { version = "0.4.1", default-features = false, features = [ "2021" ] } +chrono = "0.4.42" +chrono-tz = "0.10.4" +clap = "4.5.48" convert_case = "0.8.0" -crc32fast = "1.4.2" -dialoguer = "0.11.0" -dns-message-parser = { version = "0.7", default-features = false} -either = "1.13.0" +crc32fast = "1.5.0" +dialoguer = "0.12.0" +dns-message-parser = { version = "0.9", default-features = false} +either = "1.15.0" embedded-hal = "1.0.0" embedded-svc = "~0.28" -embuild = "0.32.0" -env_logger = "0.11.5" -esp-idf-part = "0.5.0" +embuild = "0.33.1" +env_logger = "0.11.8" +esp-idf-part = "0.6.0" esp-idf-svc = { version = "~0.51", default-features = false } espflash = { git = "https://github.com/viamrobotics/espflash.git", branch = "monitor-output" } futures = "0.3.31" @@ -76,32 +76,32 @@ futures-lite = "2" # TODO(RSDK-8995): Upgrade to latest `rustls` infrastructure futures-rustls = "~0.24" futures-util = "0.3.31" -http-body-util = "0.1.2" -hyper = { version = "1.5", default-features = false, features = ["server", "client", "http2"] } -local-ip-address = "0.6.3" -log = "0.4.22" -mdns-sd = { version = "0.12", default-features = false, features = ["async"] } +http-body-util = "0.1.3" +hyper = { version = "1.7", default-features = false, features = ["server", "client", "http2"] } +local-ip-address = "0.6.5" +log = "0.4.28" +mdns-sd = { version = "0.15", default-features = false, features = ["async"] } micro-rdk = { path = "./micro-rdk", default-features = false, features = [] } micro-rdk-macros = { path = "./micro-rdk-macros" } micro-rdk-nmea = { path = "./micro-rdk-nmea" } micro-rdk-nmea-macros = { path = "./micro-rdk-nmea-macros" } micro-rdk-modular-driver-example = {path = "./examples/modular-drivers" } num2words = "1.2.0" -once_cell = "1.20.2" -openssl = { version = "0.10.68" } -pin-project = "1.1.7" -pin-project-lite = "0.2.15" -postcard = { version = "1.1.1", features = ["alloc", "use-std"] } -printf-compat = "0.1.1" -proc-macro-crate = "3.2.0" -proc-macro2 = "1.0.92" -prost = "0.13.4" -prost-types = "0.13.4" -quote = "1.0.37" -rand = "0.9.0" -rcgen = "0.13.2" +once_cell = "1.21.3" +openssl = { version = "0.10.73" } +pin-project = "1.1.10" +pin-project-lite = "0.2.16" +postcard = { version = "1.1.3", features = ["alloc", "use-std"] } +printf-compat = "0.2.1" +proc-macro-crate = "3.4.0" +proc-macro2 = "1.0.101" +prost = "0.14.1" +prost-types = "0.14.1" +quote = "1.0.41" +rand = "0.9.2" +rcgen = "0.14.5" regex = "1.11" -reqwest = "0.12.9" +reqwest = "0.12.23" reqwless = "0.13.0" # TODO(RSDK-8996): Upgrade `ringbuf` to latest release ringbuf = "~0.3" @@ -109,25 +109,25 @@ ringbuf = "~0.3" rustls = { version = "~0.21", features = ["logging", "tls12"] } rustls-pemfile = { version = "2.2" } scopeguard = "1.2.0" -sctp-proto = "0.3.0" -sdp = "0.6.2" +sctp-proto = "0.5.0" +sdp = "0.10.0" secrecy = { version = "0.10.3", features = ["serde"] } -serde = { version = "1.0.215", features = ["derive"] } -serde_json = "1.0.133" -sha2 = "0.10.8" -socket2 = "0.5.8" -stun_codec = { version = "0.3.0" , git = "https://github.com/viamrobotics/stun_codec"} -syn = "2.0.90" -tempfile = "3.14.0" -test-log = "0.2.16" -thiserror = "2.0.4" -tokio = { version = "1.42.0", features = ["full"] } -tower = { version = "0.4", features = ["util"] } -tower-http = { version = "0.5.0", features = ["fs", "trace"] } +serde = { version = "1.0.228", features = ["derive"] } +serde_json = "1.0.145" +sha2 = "0.10.9" +socket2 = "0.6.0" +stun_codec = "0.4.0" +syn = "2.0.106" +tempfile = "3.23.0" +test-log = "0.2.18" +thiserror = "2.0.17" +tokio = { version = "1.47.1", features = ["full"] } +tower = { version = "0.5", features = ["util"] } +tower-http = { version = "0.6.6", features = ["fs", "trace"] } tracing = "0.1" tracing-subscriber = { version = "0.3", features = ["env-filter"] } trackable = "1.3.0" -uuid = "1.11.0" +uuid = "1.18.1" version-compare = "0.2" # TODO(RSDK-8995): Upgrade to latest `rustls` infrastructure webpki-roots = "~0.24" diff --git a/components_esp32.lock b/components_esp32.lock index 8ca98f4f0..d488a3c1e 100644 --- a/components_esp32.lock +++ b/components_esp32.lock @@ -1,13 +1,30 @@ dependencies: espressif/esp32-camera: - component_hash: a1933162caca04a3a3bb0dca00bb56fcb3c50cd3779ab2f2b03ad8536e9bd0d0 - dependencies: [] + component_hash: b209707f12aff1683c5c9dfaff3fa60f0eca687f2bf74f133cdef68fbae86028 + dependencies: + - name: espressif/esp_jpeg + registry_url: https://components.espressif.com + require: public + version: ^1.3.0 + - name: idf + require: private + version: '>=5.1' source: registry_url: https://components.espressif.com/ type: service - version: 2.0.9 + version: 2.1.2 + espressif/esp_jpeg: + component_hash: defb83669293cbf86d0fa86b475ba5517aceed04ed70db435388c151ab37b5d7 + dependencies: + - name: idf + require: private + version: '>=5.0' + source: + registry_url: https://components.espressif.com + type: service + version: 1.3.1 espressif/mdns: - component_hash: 7fd79958fd0b9a4917ee4f50141fe29c902c02d1a1feb1d6751276049b186d6b + component_hash: 3ec0af5f6bce310512e90f482388d21cc7c0e99668172d2f895356165fc6f7c5 dependencies: - name: idf require: private @@ -15,14 +32,14 @@ dependencies: source: registry_url: https://components.espressif.com/ type: service - version: 1.8.0 + version: 1.8.2 idf: source: type: idf - version: 5.4.1 + version: 5.4.2 direct_dependencies: - espressif/esp32-camera - espressif/mdns -manifest_hash: 223b4bd3db3ff0a2814e055397efad955de7528bdaffc0fadf9e09f66f23c894 +manifest_hash: 3dd64f29b2080467c6a667dcbcd088c214380ac907eaa14f4eaf87e971874169 target: esp32 version: 2.0.0 diff --git a/components_esp32c6.lock b/components_esp32c6.lock index f7ee15215..57b8216ae 100644 --- a/components_esp32c6.lock +++ b/components_esp32c6.lock @@ -1,13 +1,30 @@ dependencies: espressif/esp32-camera: - component_hash: a1933162caca04a3a3bb0dca00bb56fcb3c50cd3779ab2f2b03ad8536e9bd0d0 - dependencies: [] + component_hash: b209707f12aff1683c5c9dfaff3fa60f0eca687f2bf74f133cdef68fbae86028 + dependencies: + - name: espressif/esp_jpeg + registry_url: https://components.espressif.com + require: public + version: ^1.3.0 + - name: idf + require: private + version: '>=5.1' source: registry_url: https://components.espressif.com/ type: service - version: 2.0.9 + version: 2.1.2 + espressif/esp_jpeg: + component_hash: defb83669293cbf86d0fa86b475ba5517aceed04ed70db435388c151ab37b5d7 + dependencies: + - name: idf + require: private + version: '>=5.0' + source: + registry_url: https://components.espressif.com + type: service + version: 1.3.1 espressif/mdns: - component_hash: 7fd79958fd0b9a4917ee4f50141fe29c902c02d1a1feb1d6751276049b186d6b + component_hash: 3ec0af5f6bce310512e90f482388d21cc7c0e99668172d2f895356165fc6f7c5 dependencies: - name: idf require: private @@ -15,14 +32,14 @@ dependencies: source: registry_url: https://components.espressif.com/ type: service - version: 1.8.0 + version: 1.8.2 idf: source: type: idf - version: 5.4.1 + version: 5.4.2 direct_dependencies: - espressif/esp32-camera - espressif/mdns -manifest_hash: 223b4bd3db3ff0a2814e055397efad955de7528bdaffc0fadf9e09f66f23c894 +manifest_hash: 3dd64f29b2080467c6a667dcbcd088c214380ac907eaa14f4eaf87e971874169 target: esp32c6 version: 2.0.0 diff --git a/etc/docker/Dockerfile b/etc/docker/Dockerfile index 69a8b702a..7d6f3f3f8 100644 --- a/etc/docker/Dockerfile +++ b/etc/docker/Dockerfile @@ -1,6 +1,6 @@ FROM debian:bookworm -ARG RUST_VERSION=1.85.0 +ARG RUST_VERSION=1.89.0 ENV DEBIAN_FRONTEND=noninteractive ENV DEBCONF_NOWARNINGS="yes" @@ -73,7 +73,7 @@ RUN apt-get install -y ruby && gem install license_finder USER testbot -RUN git clone --depth 1 -b v5.4.1 --single-branch --recurse-submodules --shallow-submodules https://github.com/espressif/esp-idf/ $ESP_ROOT/esp-idf +RUN git clone --depth 1 -b v5.4.2 --single-branch --recurse-submodules --shallow-submodules https://github.com/espressif/esp-idf/ $ESP_ROOT/esp-idf ENV IDF_PATH=$ESP_ROOT/esp-idf diff --git a/examples/modular-drivers/build.rs b/examples/modular-drivers/build.rs index c21b0b8d7..8854d50ee 100644 --- a/examples/modular-drivers/build.rs +++ b/examples/modular-drivers/build.rs @@ -11,16 +11,15 @@ fn find_ulp_sources>(dir: P) -> io::Result> { for entry in fs::read_dir(dir)? { let entry = entry?; let path = entry.path(); - if path.is_file() { - if let Some(extension) = path.extension() { - if extension == "S" { - println!( - "cargo:rerun-if-changed={}", - path.as_os_str().to_str().unwrap() - ); - ulp_sources.push(path); - } - } + if path.is_file() + && let Some(extension) = path.extension() + && extension == "S" + { + println!( + "cargo:rerun-if-changed={}", + path.as_os_str().to_str().unwrap() + ); + ulp_sources.push(path); } } @@ -29,7 +28,7 @@ fn find_ulp_sources>(dir: P) -> io::Result> { fn main() -> Result<(), Box> { println!("cargo::rustc-check-cfg=cfg(esp_idf_ulp_coproc_type_fsm, esp_idf_ulp_coproc_enabled)"); - if Regex::new(r"\w+-esp3?2?s?\d?-espidf") + if Regex::new(r"\w+-esp32s?\d?-espidf") .unwrap() .is_match(&std::env::var("TARGET").unwrap()) { diff --git a/examples/modular-drivers/src/bme280_ulp.rs b/examples/modular-drivers/src/bme280_ulp.rs index ef6c1f068..1f524ac20 100644 --- a/examples/modular-drivers/src/bme280_ulp.rs +++ b/examples/modular-drivers/src/bme280_ulp.rs @@ -10,6 +10,7 @@ use std::{ use chrono::{DateTime, TimeDelta}; use micro_rdk::{ + DoCommand, common::{ config::{AttributeError, ConfigType, Kind}, i2c::I2cHandleType, @@ -17,10 +18,9 @@ use micro_rdk::{ sensor::{GenericReadingsResult, Readings, Sensor, SensorError, SensorType}, }, esp32::esp_idf_svc::{hal::ulp::UlpDriver, sys::EspError}, - DoCommand, }; use micro_rdk::{ - google::protobuf::{value, Timestamp, Value}, + google::protobuf::{Timestamp, Value, value}, proto::app::data_sync::v1::{MimeType, SensorData, SensorMetadata}, }; use thiserror::Error; @@ -244,11 +244,10 @@ impl ULP { fn start_ulp(&mut self, mut cfg: Configuration) -> Result<(), BME280Error> { use micro_rdk::esp32::esp_idf_svc::sys::{ - esp, rtc_gpio_init, + RTC_GPIO_ENABLE_W1TC_REG, RTC_GPIO_ENABLE_W1TC_S, RTC_GPIO_ENABLE_W1TS_REG, + RTC_GPIO_ENABLE_W1TS_S, RTC_GPIO_IN_NEXT_S, RTC_GPIO_IN_REG, esp, rtc_gpio_init, rtc_gpio_mode_t_RTC_GPIO_MODE_INPUT_OUTPUT as RTC_GPIO_MODE_INPUT_OUTPUT, - rtc_gpio_set_direction, ulp_set_wakeup_period, RTC_GPIO_ENABLE_W1TC_REG, - RTC_GPIO_ENABLE_W1TC_S, RTC_GPIO_ENABLE_W1TS_REG, RTC_GPIO_ENABLE_W1TS_S, - RTC_GPIO_IN_NEXT_S, RTC_GPIO_IN_REG, + rtc_gpio_set_direction, ulp_set_wakeup_period, }; // configure pin so they can be accessed by ULP. Note that any pin should not be changed or used afterwards esp!(unsafe { rtc_gpio_init(self.cfg.pin_scl) }) diff --git a/examples/modular-drivers/src/free_heap_sensor.rs b/examples/modular-drivers/src/free_heap_sensor.rs index 7c5520baa..d1c408fc7 100644 --- a/examples/modular-drivers/src/free_heap_sensor.rs +++ b/examples/modular-drivers/src/free_heap_sensor.rs @@ -4,6 +4,7 @@ use std::{ }; use micro_rdk::{ + DoCommand, common::{ config::ConfigType, registry::{ComponentRegistry, Dependency, RegistryError}, @@ -13,7 +14,6 @@ use micro_rdk::{ }, }, esp32::esp_idf_svc::sys::esp_get_free_heap_size, - DoCommand, }; #[derive(DoCommand)] diff --git a/examples/modular-drivers/src/moisture_sensor.rs b/examples/modular-drivers/src/moisture_sensor.rs index 68d47d92d..ffe3b586d 100644 --- a/examples/modular-drivers/src/moisture_sensor.rs +++ b/examples/modular-drivers/src/moisture_sensor.rs @@ -4,14 +4,14 @@ use std::{ }; use micro_rdk::{ + DoCommand, common::{ analog::{AnalogError, AnalogReader, AnalogReaderType}, board::Board, config::ConfigType, - registry::{get_board_from_dependencies, ComponentRegistry, Dependency, RegistryError}, + registry::{ComponentRegistry, Dependency, RegistryError, get_board_from_dependencies}, sensor::{GenericReadingsResult, Readings, Sensor, SensorError, SensorResult, SensorType}, }, - DoCommand, }; pub fn register_models(registry: &mut ComponentRegistry) -> Result<(), RegistryError> { diff --git a/examples/modular-drivers/src/wifi_rssi_sensor.rs b/examples/modular-drivers/src/wifi_rssi_sensor.rs index 0d9367e47..45e9f632e 100644 --- a/examples/modular-drivers/src/wifi_rssi_sensor.rs +++ b/examples/modular-drivers/src/wifi_rssi_sensor.rs @@ -4,6 +4,7 @@ use std::{ }; use micro_rdk::{ + DoCommand, common::{ config::ConfigType, registry::{ComponentRegistry, Dependency, RegistryError}, @@ -13,7 +14,6 @@ use micro_rdk::{ }, }, esp32::esp_idf_svc::sys::{esp, esp_wifi_sta_get_ap_info, wifi_ap_record_t}, - DoCommand, }; #[derive(DoCommand)] diff --git a/micro-rdk-ffi/micrordklib-idf-component/idf_component.yml b/micro-rdk-ffi/micrordklib-idf-component/idf_component.yml index 80d5f9a2a..0b9bc37a8 100644 --- a/micro-rdk-ffi/micrordklib-idf-component/idf_component.yml +++ b/micro-rdk-ffi/micrordklib-idf-component/idf_component.yml @@ -3,4 +3,4 @@ description: "Micro-RDK lib" dependencies: ## Required IDF version idf: - version: ">=5.4.1,<6.0.0" + version: ">=5.4.2,<6.0.0" diff --git a/micro-rdk-ffi/src/ffi/config.rs b/micro-rdk-ffi/src/ffi/config.rs index 56e10a0d7..e00988c9b 100644 --- a/micro-rdk-ffi/src/ffi/config.rs +++ b/micro-rdk-ffi/src/ffi/config.rs @@ -1,6 +1,6 @@ use std::{ collections::HashMap, - ffi::{c_char, c_int, CStr, CString}, + ffi::{CStr, CString, c_char, c_int}, }; use micro_rdk::common::config::{AttributeError, ConfigType, Kind}; @@ -22,7 +22,7 @@ pub struct raw_attributes(pub(crate) HashMap); /// # Safety /// `ctx`, `key`, `out` must be valid pointers for the duration of the call /// `key` must be a null terminated C string -#[no_mangle] +#[unsafe(no_mangle)] pub unsafe extern "C" fn config_get_string( ctx: *mut config_context, key: *const c_char, @@ -53,7 +53,7 @@ pub unsafe extern "C" fn config_get_string( /// /// # Safety /// `ctx` must be a valid pointer -#[no_mangle] +#[unsafe(no_mangle)] pub unsafe extern "C" fn config_get_raw_attributes( ctx: *mut config_context, ) -> *mut raw_attributes { @@ -75,7 +75,7 @@ pub unsafe extern "C" fn config_get_raw_attributes( /// /// # Safety /// `attrs` must be a valid pointer -#[no_mangle] +#[unsafe(no_mangle)] pub unsafe extern "C" fn config_raw_attributes_free( attrs: *mut raw_attributes, ) -> errors::viam_code { @@ -83,7 +83,7 @@ pub unsafe extern "C" fn config_raw_attributes_free( return errors::viam_code::VIAM_INVALID_ARG; } - drop(Box::from_raw(attrs)); + drop(unsafe { Box::from_raw(attrs) }); errors::viam_code::VIAM_OK } @@ -92,7 +92,7 @@ pub unsafe extern "C" fn config_raw_attributes_free( /// /// # Safety /// `ptr` must be a pointer to a string previously allocated by `config_get_string` -#[no_mangle] +#[unsafe(no_mangle)] pub unsafe extern "C" fn config_free_string( _: *mut config_context, ptr: *mut c_char, @@ -112,7 +112,7 @@ pub unsafe extern "C" fn config_free_string( /// # Safety /// `ctx`, `key`, `out` must be valid pointers for the duration of the call /// `key` must be a null terminated C string -#[no_mangle] +#[unsafe(no_mangle)] pub unsafe extern "C" fn config_get_i32( ctx: *mut config_context, key: *const c_char, @@ -145,7 +145,7 @@ pub unsafe extern "C" fn config_get_i32( /// `ctx`, `key`, `out` must be valid pointers for the duration of the call /// `key` must be a null terminated C string. Additionally the external process calling /// the function is responsible for managing the memory allocated for `out` -#[no_mangle] +#[unsafe(no_mangle)] pub unsafe extern "C" fn config_get_i32_vec( ctx: *mut config_context, key: *const c_char, @@ -167,7 +167,7 @@ pub unsafe extern "C" fn config_get_i32_vec( }; let copy_ptr = out; for (i, elem) in val.iter().enumerate() { - *copy_ptr.add(i) = *elem; + unsafe { *copy_ptr.add(i) = *elem }; } errors::viam_code::VIAM_OK } @@ -178,7 +178,7 @@ pub unsafe extern "C" fn config_get_i32_vec( /// # Safety /// `ctx`, `key`, `out` must be valid pointers for the duration of the call /// `key` must be a null terminated C string. -#[no_mangle] +#[unsafe(no_mangle)] pub unsafe extern "C" fn config_get_i32_vec_len( ctx: *mut config_context, key: *const c_char, diff --git a/micro-rdk-ffi/src/ffi/hash_map.rs b/micro-rdk-ffi/src/ffi/hash_map.rs index a65af0daa..75ebf1e11 100644 --- a/micro-rdk-ffi/src/ffi/hash_map.rs +++ b/micro-rdk-ffi/src/ffi/hash_map.rs @@ -1,6 +1,6 @@ use std::{ collections::HashMap, - ffi::{c_char, c_void, CStr, CString}, + ffi::{CStr, CString, c_char, c_void}, }; use super::errors::viam_code; @@ -32,7 +32,7 @@ pub struct hashmap_cstring_ptr { /// Use the returned pointer to store key value pairs using the C API /// the pointer returned will remain valid until the call to `hashmap_cstring_ptr_destroy` after which /// the pointer shouldn't be used again -#[no_mangle] +#[unsafe(no_mangle)] pub extern "C" fn hashmap_cstring_ptr_new() -> *mut hashmap_cstring_ptr { Box::into_raw(Box::default()) } @@ -43,7 +43,7 @@ pub extern "C" fn hashmap_cstring_ptr_new() -> *mut hashmap_cstring_ptr { /// If callback is not null it will be called on each key value pairs /// # Safety /// `ctx` must be a valid pointer -#[no_mangle] +#[unsafe(no_mangle)] pub unsafe extern "C" fn hashmap_cstring_ptr_destroy( ctx: *mut hashmap_cstring_ptr, user_data: *mut c_void, @@ -67,7 +67,7 @@ pub unsafe extern "C" fn hashmap_cstring_ptr_destroy( /// hashmap_cstring_ptr_remove /// # Safety /// `ctx` and `key` must be valid pointers -#[no_mangle] +#[unsafe(no_mangle)] pub unsafe extern "C" fn hashmap_cstring_ptr_get( ctx: *mut hashmap_cstring_ptr, key: *const c_char, @@ -86,7 +86,7 @@ pub unsafe extern "C" fn hashmap_cstring_ptr_get( /// # Safety /// `ctx` must be a valid pointer /// `callback` must be a valid callback -#[no_mangle] +#[unsafe(no_mangle)] pub unsafe extern "C" fn hashmap_cstring_ptr_for_each_kv( ctx: *mut hashmap_cstring_ptr, user_data: *mut c_void, @@ -108,7 +108,7 @@ pub unsafe extern "C" fn hashmap_cstring_ptr_for_each_kv( /// hashmap_cstring_ptr_get /// # Safety /// `ctx` and `key` must be valid pointers -#[no_mangle] +#[unsafe(no_mangle)] pub unsafe extern "C" fn hashmap_cstring_ptr_remove( ctx: *mut hashmap_cstring_ptr, key: *const c_char, @@ -127,7 +127,7 @@ pub unsafe extern "C" fn hashmap_cstring_ptr_remove( /// # Safety /// `ctx`, `key` and ptr must be valid pointers /// `ptr` must remain valid until a call to hashmap_cstring_ptr_remove or hashmap_cstring_ptr_destroy -#[no_mangle] +#[unsafe(no_mangle)] pub unsafe extern "C" fn hashmap_cstring_ptr_insert( ctx: *mut hashmap_cstring_ptr, key: *const c_char, @@ -147,7 +147,7 @@ pub unsafe extern "C" fn hashmap_cstring_ptr_insert( /// /// # Safety /// `ctx` and `callback` should be valid pointers -#[no_mangle] +#[unsafe(no_mangle)] pub unsafe extern "C" fn hashmap_cstring_ptr_retain( ctx: *mut hashmap_cstring_ptr, user_data: *mut c_void, diff --git a/micro-rdk-ffi/src/ffi/runtime.rs b/micro-rdk-ffi/src/ffi/runtime.rs index 1cf72e32c..f878e1bbf 100644 --- a/micro-rdk-ffi/src/ffi/runtime.rs +++ b/micro-rdk-ffi/src/ffi/runtime.rs @@ -1,5 +1,5 @@ use std::{ - ffi::{c_char, c_void, CStr}, + ffi::{CStr, c_char, c_void}, marker::{PhantomData, PhantomPinned}, rc::Rc, sync::{Arc, Mutex}, @@ -51,7 +51,7 @@ include!(concat!(env!("OUT_DIR"), "/modules.rs")); /// Use the returned pointer to register your own components using the C API /// The pointer is expected to be valid until the call `start_viam_server` /// the pointer will then be consumed and any further usage is UB -#[no_mangle] +#[unsafe(no_mangle)] pub extern "C" fn init_viam_server_context() -> *mut viam_server_context { let registry = Box::::default(); #[cfg(target_os = "espidf")] @@ -75,7 +75,7 @@ pub extern "C" fn init_viam_server_context() -> *mut viam_server_context { /// # Safety /// `ctx`, `model` must be valid pointers /// `model` must be a null terminated C String -#[no_mangle] +#[unsafe(no_mangle)] pub unsafe extern "C" fn viam_server_set_provisioning_model( ctx: *mut viam_server_context, model: *const c_char, @@ -99,7 +99,7 @@ pub unsafe extern "C" fn viam_server_set_provisioning_model( /// # Safety /// `ctx`, `manufacturer` must be valid pointers /// `manufacturer` must be a null terminated C String -#[no_mangle] +#[unsafe(no_mangle)] pub unsafe extern "C" fn viam_server_set_provisioning_manufacturer( ctx: *mut viam_server_context, manufacturer: *const c_char, @@ -123,7 +123,7 @@ pub unsafe extern "C" fn viam_server_set_provisioning_manufacturer( /// # Safety /// `ctx`, `fragment_id` must be valid pointers /// `manufacturer` must be a null terminated C String -#[no_mangle] +#[unsafe(no_mangle)] pub unsafe extern "C" fn viam_server_set_provisioning_fragment( ctx: *mut viam_server_context, fragment_id: *const c_char, @@ -156,7 +156,7 @@ pub unsafe extern "C" fn viam_server_set_provisioning_fragment( /// returns VIAM_OK on success /// # Safety /// `ctx`, `model` must be valid pointers -#[no_mangle] +#[unsafe(no_mangle)] pub unsafe extern "C" fn viam_server_register_c_generic_sensor( ctx: *mut viam_server_context, model: *const c_char, @@ -213,7 +213,7 @@ pub unsafe extern "C" fn viam_server_register_c_generic_sensor( /// # Safety /// `ctx`, `storage_name` must be valid pointers /// may panic if the storage_name cannot be pushed on the vector -#[no_mangle] +#[unsafe(no_mangle)] pub unsafe extern "C" fn viam_server_add_nvs_storage( ctx: *mut viam_server_context, storage_name: *const c_char, @@ -248,7 +248,7 @@ const ROBOT_APP_ADDRESS: Option<&str> = option_env!("MICRO_RDK_ROBOT_APP_ADDRESS /// /// # Safety /// `ctx` must be a valid pointer -#[no_mangle] +#[unsafe(no_mangle)] pub unsafe extern "C" fn viam_server_start(ctx: *mut viam_server_context) -> viam_code { if ctx.is_null() { return viam_code::VIAM_INVALID_ARG; diff --git a/micro-rdk-ffi/src/ffi/sensor.rs b/micro-rdk-ffi/src/ffi/sensor.rs index 2a340cec0..531bad1e4 100644 --- a/micro-rdk-ffi/src/ffi/sensor.rs +++ b/micro-rdk-ffi/src/ffi/sensor.rs @@ -1,12 +1,12 @@ use micro_rdk::{ + DoCommand, common::{ config::Kind, sensor::{GenericReadingsResult, Readings, Sensor, SensorError}, }, - google::protobuf::{value, ListValue, Struct, Value}, - DoCommand, + google::protobuf::{ListValue, Struct, Value, value}, }; -use std::ffi::{c_char, c_int, c_uchar, c_uint, c_void, CStr}; +use std::ffi::{CStr, c_char, c_int, c_uchar, c_uint, c_void}; use super::{ config::{config_context, raw_attributes}, @@ -43,7 +43,7 @@ unsafe impl Sync for generic_c_sensor {} /// /// Optionally you can set a pointer to some data to be passed during the configuration step with /// `generic_c_sensor_config_set_user_data` -#[no_mangle] +#[unsafe(no_mangle)] pub extern "C" fn generic_c_sensor_config_new() -> *mut generic_c_sensor_config { Box::into_raw(Box::new(generic_c_sensor_config { user_data: std::ptr::null_mut(), @@ -56,7 +56,7 @@ pub extern "C" fn generic_c_sensor_config_new() -> *mut generic_c_sensor_config /// /// # Safety /// `ctx` must be a valid pointer -#[no_mangle] +#[unsafe(no_mangle)] pub unsafe extern "C" fn generic_c_sensor_config_set_user_data( ctx: *mut generic_c_sensor_config, data: *mut c_void, @@ -73,7 +73,7 @@ pub unsafe extern "C" fn generic_c_sensor_config_set_user_data( /// /// # Safety /// `ctx` must be a valid pointer -#[no_mangle] +#[unsafe(no_mangle)] pub unsafe extern "C" fn generic_c_sensor_config_set_config_callback( ctx: *mut generic_c_sensor_config, cb: config_callback, @@ -91,7 +91,7 @@ pub unsafe extern "C" fn generic_c_sensor_config_set_config_callback( /// /// # Safety /// `ctx` must be a valid pointer -#[no_mangle] +#[unsafe(no_mangle)] pub unsafe extern "C" fn generic_c_sensor_config_set_readings_callback( ctx: *mut generic_c_sensor_config, cb: get_readings_callback, @@ -142,14 +142,14 @@ pub struct get_readings_context { /// # Safety /// `ctx`, `key` and `array` must be valid pointers for the duration of the call /// `key` must be a null terminated C string -#[no_mangle] +#[unsafe(no_mangle)] pub unsafe extern "C" fn get_readings_add_binary_blob( ctx: *mut get_readings_context, key: *const c_char, array: *const c_uchar, len: c_uint, ) -> viam_code { - use base64::{engine::general_purpose::STANDARD, Engine as _}; + use base64::{Engine as _, engine::general_purpose::STANDARD}; if ctx.is_null() || array.is_null() || key.is_null() { return viam_code::VIAM_INVALID_ARG; } @@ -180,7 +180,7 @@ pub unsafe extern "C" fn get_readings_add_binary_blob( /// # Safety /// `ctx`, and `key` and `value` must be valid pointers for the duration of the call /// `key` and `value` must be null terminated C string -#[no_mangle] +#[unsafe(no_mangle)] pub unsafe extern "C" fn get_readings_add_string( ctx: *mut get_readings_context, key: *const c_char, @@ -249,7 +249,7 @@ fn into_value(kind: Kind) -> value::Kind { /// /// # Safety /// `ctx`, and `raw_attrs` and `value` must be valid pointers for the duration of the call -#[no_mangle] +#[unsafe(no_mangle)] pub unsafe extern "C" fn get_readings_add_raw_attributes( ctx: *mut get_readings_context, raw_attrs: *const raw_attributes, diff --git a/micro-rdk-installer/src/main.rs b/micro-rdk-installer/src/main.rs index 33d72aedf..fa4ba6f82 100644 --- a/micro-rdk-installer/src/main.rs +++ b/micro-rdk-installer/src/main.rs @@ -10,12 +10,12 @@ use std::os::unix::fs::FileExt; #[cfg(target_family = "windows")] use std::os::windows::fs::FileExt; -use clap::{arg, command, Args, Parser, Subcommand}; -use dialoguer::{theme::ColorfulTheme, Input, Password}; +use clap::{Args, Parser, Subcommand, arg, command}; +use dialoguer::{Input, Password, theme::ColorfulTheme}; use esp_idf_part::PartitionTable; use espflash::cli::{ - config::Config, connect, monitor::monitor, serial_monitor, ConnectArgs, EspflashProgress, - FlashArgs, MonitorArgs, + ConnectArgs, EspflashProgress, FlashArgs, MonitorArgs, config::Config, connect, + monitor::monitor, serial_monitor, }; use micro_rdk_installer::{ error::Error, @@ -194,7 +194,10 @@ fn validate_version(version: &str) -> Result { .ok_or(format!("{} is not a valid version string", version))?; if requested_version < version_019 { - return Err(format!("this version of the installer does not support version of micro-rdk < 0.1.9. If you want to install micro-rdk {} please downgrade the installer to v0.1.8 first",version)); + return Err(format!( + "this version of the installer does not support version of micro-rdk < 0.1.9. If you want to install micro-rdk {} please downgrade the installer to v0.1.8 first", + version + )); } } Ok(version.to_owned()) @@ -567,5 +570,7 @@ fn update_app_image(args: &AppImageArgs) -> Result<(), Error> { } fn monitor_message() { - log::info!("In order to begin monitoring (viewing the log output), you must run the command to reset the chip (e.g. Ctrl-R)"); + log::info!( + "In order to begin monitoring (viewing the log output), you must run the command to reset the chip (e.g. Ctrl-R)" + ); } diff --git a/micro-rdk-installer/src/nvs/partition.rs b/micro-rdk-installer/src/nvs/partition.rs index 78dcc7b53..df526db0e 100644 --- a/micro-rdk-installer/src/nvs/partition.rs +++ b/micro-rdk-installer/src/nvs/partition.rs @@ -30,7 +30,7 @@ const DEFAULT_BLOB_CHUNK_IDX: u8 = 0xFF; // computes the checksum of the contents of the header and stores it at index 4 // as a 32-bit integer (see the link above for more information) fn set_header_crc(header: &mut Vec) { - let mut crc_data = std::iter::repeat(0).take(28).collect::>(); + let mut crc_data = std::iter::repeat_n(0, 28).collect::>(); crc_data[0..4].clone_from_slice(&header[0..4]); crc_data[4..28].clone_from_slice(&header[8..32]); let mut hasher = Hasher::new_with_initial(0xFFFFFFFF); @@ -42,9 +42,7 @@ fn set_header_crc(header: &mut Vec) { // pad the final entry for piece of data to meet the 32 byte length requirement fn pad_data(data: &mut Vec, data_entry_count: usize) { let padding_len = (data_entry_count * 32) - data.len(); - let mut padding = std::iter::repeat(0xFF) - .take(padding_len) - .collect::>(); + let mut padding = std::iter::repeat_n(0xFF, padding_len).collect::>(); data.append(&mut padding); } @@ -81,7 +79,7 @@ fn write_key_into_entry_header(header: &mut Vec, key: String) -> Result<(), let key_bytes = key.into_bytes(); // the key section of an entry header is 16 bytes long and unused positions in the // 16 byte vector must have 0 for a value - let empty_key_arr = std::iter::repeat(0x00).take(16).collect::>(); + let empty_key_arr = std::iter::repeat_n(0x00, 16).collect::>(); let _ = header.splice(8..24, empty_key_arr); let key_end = key_bytes.len() + 8; let _ = header.splice(8..key_end, key_bytes); @@ -96,7 +94,7 @@ pub struct NVSEntry { impl NVSEntry { pub fn get_blob_index_entry(&self, num_chunks: u8, data_len: u32) -> Vec { - let mut header = std::iter::repeat(0xFF).take(32).collect::>(); + let mut header = std::iter::repeat_n(0xFF, 32).collect::>(); header.copy_from_slice(&self.header); header[24..32].copy_from_slice(&[0xFF; 8]); header[1] = BLOB_IDX_FORMAT; @@ -150,7 +148,7 @@ impl TryFrom<&NVSKeyValuePair> for NVSEntry { )); } - let mut header = std::iter::repeat(0xFF).take(32).collect::>(); + let mut header = std::iter::repeat_n(0xFF, 32).collect::>(); // write namespace header[0] = pair.namespace_idx + 1; // write entry count @@ -211,7 +209,7 @@ impl NVSPage { } pub fn write_namespace_entry(&mut self) -> Result<(), Error> { - let mut header = std::iter::repeat(0xFF).take(32).collect::>(); + let mut header = std::iter::repeat_n(0xFF, 32).collect::>(); header[0] = 0; header[2] = 0x01; // entry_count = 1 header[3] = DEFAULT_BLOB_CHUNK_IDX; @@ -240,7 +238,7 @@ impl NVSPage { )); } let entry_data_pos = self.current_position + header.len(); - let mut edited_header = std::iter::repeat(0xFF).take(32).collect::>(); + let mut edited_header = std::iter::repeat_n(0xFF, 32).collect::>(); edited_header.copy_from_slice(header); edited_header[3] = chunk_num; let data_len_bytes = (entry_data.len() as u16).to_le_bytes(); @@ -344,9 +342,7 @@ impl NVSPartitionData { let data = &mut entry.data; let padding_len = (entry.data_entry_count as usize * 32) - data.len(); - let mut padding = std::iter::repeat(0xFF) - .take(padding_len) - .collect::>(); + let mut padding = std::iter::repeat_n(0xFF, padding_len).collect::>(); data.append(&mut padding); current_section.write_misc_data(data, entry.data_entry_count)?; Ok(()) @@ -355,7 +351,7 @@ impl NVSPartitionData { pub fn write_binary_entry(&mut self, entry: &mut NVSEntry) -> Result<(), Error> { let mut current_section = &mut self.sections[self.current_section]; let mut curr_size = current_section.get_remaining_space(); - let header = &mut std::iter::repeat(0xFF).take(32).collect::>(); + let header = &mut std::iter::repeat_n(0xFF, 32).collect::>(); header.copy_from_slice(&entry.header); if header.len() > curr_size { self.start_new_section()?; @@ -429,7 +425,7 @@ impl NVSPartitionData { let section = self.sections.pop_front().unwrap(); res.append(&mut section.data.to_vec()); } - let mut reserved_section = std::iter::repeat(0xFF).take(4096).collect::>(); + let mut reserved_section = std::iter::repeat_n(0xFF, 4096).collect::>(); res.append(&mut reserved_section); res } diff --git a/micro-rdk-macros/src/lib.rs b/micro-rdk-macros/src/lib.rs index 10f9d6d64..6c6298e06 100644 --- a/micro-rdk-macros/src/lib.rs +++ b/micro-rdk-macros/src/lib.rs @@ -67,8 +67,8 @@ //! ``` use proc_macro::TokenStream; +use proc_macro_crate::{FoundCrate, crate_name}; use proc_macro2::Span; -use proc_macro_crate::{crate_name, FoundCrate}; use quote::quote; use syn::Ident; @@ -87,10 +87,10 @@ pub fn impl_do_command_default(input: TokenStream) -> TokenStream { let (impl_generics, ty_generics, where_clause) = ast.generics.split_for_impl(); let crate_ident = get_micro_rdk_crate_ident(); - let gen = quote! { + let generated = quote! { impl #impl_generics #crate_ident::common::generic::DoCommand for #name #ty_generics #where_clause {} }; - gen.into() + generated.into() } #[proc_macro_derive(MovementSensorReadings)] @@ -100,14 +100,14 @@ pub fn impl_readings_for_movement_sensor(input: TokenStream) -> TokenStream { let (impl_generics, ty_generics, where_clause) = ast.generics.split_for_impl(); let crate_ident = get_micro_rdk_crate_ident(); - let gen = quote! { + let generated = quote! { impl #impl_generics #crate_ident::common::sensor::Readings for #name #ty_generics #where_clause { fn get_generic_readings(&mut self) -> Result<#crate_ident::common::sensor::GenericReadingsResult,#crate_ident::common::sensor::SensorError> { #crate_ident::common::movement_sensor::get_movement_sensor_generic_readings(self) } } }; - gen.into() + generated.into() } #[proc_macro_derive(PowerSensorReadings)] @@ -117,7 +117,7 @@ pub fn impl_readings_for_power_sensor(input: TokenStream) -> TokenStream { let (impl_generics, ty_generics, where_clause) = ast.generics.split_for_impl(); let crate_ident = get_micro_rdk_crate_ident(); - let gen = quote! { + let generated = quote! { impl #impl_generics #crate_ident::common::sensor::Readings for #name #ty_generics #where_clause { fn get_generic_readings(&mut self) -> Result<#crate_ident::common::sensor::GenericReadingsResult,#crate_ident::common::sensor::SensorError> { #crate_ident::common::power_sensor::get_power_sensor_generic_readings(self) @@ -125,5 +125,5 @@ pub fn impl_readings_for_power_sensor(input: TokenStream) -> TokenStream { } }; - gen.into() + generated.into() } diff --git a/micro-rdk-nmea-macros/src/attributes.rs b/micro-rdk-nmea-macros/src/attributes.rs index 4de8791b5..8a0156ad7 100644 --- a/micro-rdk-nmea-macros/src/attributes.rs +++ b/micro-rdk-nmea-macros/src/attributes.rs @@ -3,7 +3,7 @@ use proc_macro2::TokenStream as TokenStream2; use quote::quote; use syn::{Expr, Field, Ident, Lit, Meta, Type}; -use crate::utils::{error_tokens, UnitConversion}; +use crate::utils::{UnitConversion, error_tokens}; /// `MacroAttributes` represents the important information derived from the macro attributes /// attached to the field of a struct using the PgnMessageDerive macro. @@ -69,10 +69,10 @@ fn get_bits(field_ty: &Type) -> Result { Type::Array(type_array) => { if let Expr::Lit(len) = &type_array.len { if let Lit::Int(len) = &len.lit { - if let Type::Path(type_path) = type_array.elem.as_ref() { - if !type_path.path.is_ident("u8") { - return Err(error_tokens("array instance type must be u8")); - } + if let Type::Path(type_path) = type_array.elem.as_ref() + && !type_path.path.is_ident("u8") + { + return Err(error_tokens("array instance type must be u8")); } len.base10_parse::() .map(|x| x * 8) diff --git a/micro-rdk-nmea-macros/src/composition.rs b/micro-rdk-nmea-macros/src/composition.rs index 2b65ba761..0abf94438 100644 --- a/micro-rdk-nmea-macros/src/composition.rs +++ b/micro-rdk-nmea-macros/src/composition.rs @@ -1,12 +1,12 @@ use proc_macro::TokenStream; use proc_macro2::{Literal, Span, TokenStream as TokenStream2}; -use quote::{format_ident, quote, ToTokens}; +use quote::{ToTokens, format_ident, quote}; use syn::{DeriveInput, Field, GenericArgument, Ident, PathArguments, Type}; use crate::attributes::MacroAttributes; use crate::utils::{ - error_tokens, get_micro_nmea_crate_ident, is_string_type, is_supported_array_type, - is_supported_numeric_type, UnitConversion, + UnitConversion, error_tokens, get_micro_nmea_crate_ident, is_string_type, + is_supported_array_type, is_supported_numeric_type, }; #[derive(Debug, Clone, Copy)] diff --git a/micro-rdk-nmea-macros/src/utils.rs b/micro-rdk-nmea-macros/src/utils.rs index c33b8e6e4..2b1eaaf11 100644 --- a/micro-rdk-nmea-macros/src/utils.rs +++ b/micro-rdk-nmea-macros/src/utils.rs @@ -1,6 +1,6 @@ use proc_macro::TokenStream; +use proc_macro_crate::{FoundCrate, crate_name}; use proc_macro2::{Span, TokenStream as TokenStream2}; -use proc_macro_crate::{crate_name, FoundCrate}; use quote::quote; use syn::{Ident, Type}; diff --git a/micro-rdk-nmea/build.rs b/micro-rdk-nmea/build.rs index b407440aa..40fa4f5ac 100644 --- a/micro-rdk-nmea/build.rs +++ b/micro-rdk-nmea/build.rs @@ -3,7 +3,7 @@ use num2words::Num2Words; use serde::{Deserialize, Serialize}; use serde_json::{Map, Number, Value}; use std::collections::HashMap; -use std::fs::{create_dir_all, File, OpenOptions}; +use std::fs::{File, OpenOptions, create_dir_all}; use std::io::{BufReader, Write}; use std::path::Path; use std::slice::Iter; @@ -30,7 +30,7 @@ fn clean_string_for_rust(input: &str, case: Case) -> String { .collect(); if filtered .chars() - .position(|c| (c.is_numeric() || (c == '_') || (c == '-'))) + .position(|c| c.is_numeric() || (c == '_') || (c == '-')) .map(|idx| idx == 0) .unwrap_or_default() { diff --git a/micro-rdk-nmea/src/gen/mod.rs b/micro-rdk-nmea/src/generate/mod.rs similarity index 100% rename from micro-rdk-nmea/src/gen/mod.rs rename to micro-rdk-nmea/src/generate/mod.rs diff --git a/micro-rdk-nmea/src/lib.rs b/micro-rdk-nmea/src/lib.rs index 007cac7ab..04120bdfd 100644 --- a/micro-rdk-nmea/src/lib.rs +++ b/micro-rdk-nmea/src/lib.rs @@ -1,6 +1,6 @@ use micro_rdk::common::registry::{ComponentRegistry, RegistryError}; -pub mod gen; +pub mod generate; pub mod messages; pub mod parse_helpers; #[cfg(generate_nmea_definitions)] @@ -18,10 +18,10 @@ pub fn register_models(registry: &mut ComponentRegistry) -> Result<(), RegistryE #[cfg(generate_nmea_definitions)] #[cfg(test)] mod tests { - use base64::{engine::general_purpose, Engine}; + use base64::{Engine, engine::general_purpose}; use crate::{ - gen::messages::{Pgn128267Message, MESSAGE_DATA_OFFSET}, + generate::messages::{MESSAGE_DATA_OFFSET, Pgn128267Message}, messages::message::Message, parse_helpers::{errors::NumberFieldError, parsers::DataCursor}, }; diff --git a/micro-rdk-nmea/src/messages/message.rs b/micro-rdk-nmea/src/messages/message.rs index 75d921448..33e1ae8d3 100644 --- a/micro-rdk-nmea/src/messages/message.rs +++ b/micro-rdk-nmea/src/messages/message.rs @@ -1,9 +1,9 @@ use std::collections::HashMap; -use base64::{engine::general_purpose, Engine}; +use base64::{Engine, engine::general_purpose}; use micro_rdk::{ common::sensor::GenericReadingsResult, - google::protobuf::{value::Kind, Value}, + google::protobuf::{Value, value::Kind}, }; use crate::parse_helpers::{ diff --git a/micro-rdk-nmea/src/parse_helpers/errors.rs b/micro-rdk-nmea/src/parse_helpers/errors.rs index 142c8bb88..42c7f3635 100644 --- a/micro-rdk-nmea/src/parse_helpers/errors.rs +++ b/micro-rdk-nmea/src/parse_helpers/errors.rs @@ -1,4 +1,4 @@ -use std::string::{FromUtf16Error, FromUtf8Error}; +use std::string::{FromUtf8Error, FromUtf16Error}; use thiserror::Error; diff --git a/micro-rdk-nmea/src/parse_helpers/parsers.rs b/micro-rdk-nmea/src/parse_helpers/parsers.rs index 336f52de3..4f1a46a24 100644 --- a/micro-rdk-nmea/src/parse_helpers/parsers.rs +++ b/micro-rdk-nmea/src/parse_helpers/parsers.rs @@ -41,10 +41,10 @@ impl DataCursor { // if the previous field overflowed into the first byte by x bits, we want // to shift that byte by x - if self.bit_offset != 0 { - if let Some(first_byte) = res.get_mut(0) { - *first_byte >>= self.bit_offset; - } + if self.bit_offset != 0 + && let Some(first_byte) = res.get_mut(0) + { + *first_byte >>= self.bit_offset; } self.bit_offset = next_offset; Ok(res) @@ -519,7 +519,7 @@ impl TryFrom> for NmeaMessageMetadata { #[cfg(test)] mod tests { - use base64::{engine::general_purpose, Engine}; + use base64::{Engine, engine::general_purpose}; use crate::{ define_nmea_enum, diff --git a/micro-rdk-nmea/src/viamboat/sensors.rs b/micro-rdk-nmea/src/viamboat/sensors.rs index 96f5dfbb2..2fd1e2344 100644 --- a/micro-rdk-nmea/src/viamboat/sensors.rs +++ b/micro-rdk-nmea/src/viamboat/sensors.rs @@ -23,14 +23,15 @@ use std::{ }; use crate::{ - gen::{ + generate::{ enums::DirectionReferenceLookup, messages::{NmeaMessage, NmeaMessageBody}, }, parse_helpers::errors::{NmeaParseError, NumberFieldError}, }; -use base64::{engine::general_purpose, DecodeError, Engine}; +use base64::{DecodeError, Engine, engine::general_purpose}; use micro_rdk::{ + DoCommand, MovementSensorReadings, common::{ config::ConfigType, math_utils::Vector3, @@ -40,12 +41,11 @@ use micro_rdk::{ registry::{Dependency, ResourceKey}, robot::Resource, sensor::{ - GenericReadingsResult, Readings, Sensor, SensorError, SensorType, - COMPONENT_NAME as SensorCompName, + COMPONENT_NAME as SensorCompName, GenericReadingsResult, Readings, Sensor, SensorError, + SensorType, }, }, - google::protobuf::{value::Kind, ListValue, Struct, Value}, - DoCommand, MovementSensorReadings, + google::protobuf::{ListValue, Struct, Value, value::Kind}, }; use thiserror::Error; diff --git a/micro-rdk-server/Cargo.toml b/micro-rdk-server/Cargo.toml index 49bb2704d..71d19826b 100644 --- a/micro-rdk-server/Cargo.toml +++ b/micro-rdk-server/Cargo.toml @@ -12,6 +12,7 @@ build = "build.rs" publish = false [features] +esp32 = ["micro-rdk/esp32"] qemu = ["micro-rdk/qemu"] ota = ["micro-rdk/ota"] @@ -53,16 +54,16 @@ path = "esp32/main.rs" [package.metadata.esp-idf-sys] -esp_idf_version = "v5.4.1" +esp_idf_version = "v5.4.2" esp_idf_tools_install_dir = "custom:target/.embuild/espressif" esp_idf_sdkconfig_defaults = [ "micro-rdk-server/sdkconfig.defaults", ] [[package.metadata.esp-idf-sys.extra_components]] -remote_component = { name = "espressif/esp32-camera", version = "2.0.9"} +remote_component = { name = "espressif/esp32-camera", version = "2.1.2"} bindings_module = "camera" bindings_header = "bindings.h" [[package.metadata.esp-idf-sys.extra_components]] -remote_component = { name = "espressif/mdns", version = "1.8.0" } +remote_component = { name = "espressif/mdns", version = "1.8.2" } diff --git a/micro-rdk-server/build.rs b/micro-rdk-server/build.rs index 2a7778c75..ee6dd3a6d 100644 --- a/micro-rdk-server/build.rs +++ b/micro-rdk-server/build.rs @@ -23,6 +23,9 @@ fn main() { .unwrap() .is_match(&env::var("TARGET").unwrap()) { + println!("cargo::rustc-check-cfg=cfg(esp_idf_ulp_coproc_enabled)"); + println!("cargo::rustc-check-cfg=cfg(esp_idf_ulp_coproc_type_fsm)"); + if std::env::var_os("CARGO_FEATURE_QEMU").is_none() && std::env::var_os("MICRO_RDK_WIFI_PASSWORD") .or(std::env::var_os("MICRO_RDK_WIFI_SSID")) @@ -31,24 +34,26 @@ fn main() { .zip(std::env::var_os("MICRO_RDK_WIFI_PASSWORD")) .is_none() { - panic!("Both or none of environment variables MICRO_RDK_WIFI_SSID and MICRO_RDK_WIFI_PASSWORD should be set"); + panic!( + "Both or none of environment variables MICRO_RDK_WIFI_SSID and MICRO_RDK_WIFI_PASSWORD should be set" + ); } embuild::build::CfgArgs::output_propagated("MICRO_RDK").unwrap(); embuild::build::LinkArgs::output_propagated("MICRO_RDK").unwrap(); } - if let Ok(content) = std::fs::read_to_string("viam.json") { - if let Ok(cfg) = serde_json::from_str::(content.as_str()) { - println!( - "cargo:rustc-env=MICRO_RDK_ROBOT_SECRET={}", - cfg.cloud.secret - ); - println!("cargo:rustc-env=MICRO_RDK_ROBOT_ID={}", cfg.cloud.id); - println!( - "cargo:rustc-env=MICRO_RDK_ROBOT_APP_ADDRESS={}", - cfg.cloud.app_address - ); - } + if let Ok(content) = std::fs::read_to_string("viam.json") + && let Ok(cfg) = serde_json::from_str::(content.as_str()) + { + println!( + "cargo:rustc-env=MICRO_RDK_ROBOT_SECRET={}", + cfg.cloud.secret + ); + println!("cargo:rustc-env=MICRO_RDK_ROBOT_ID={}", cfg.cloud.id); + println!( + "cargo:rustc-env=MICRO_RDK_ROBOT_APP_ADDRESS={}", + cfg.cloud.app_address + ); } } diff --git a/micro-rdk-server/esp32/main.rs b/micro-rdk-server/esp32/main.rs index 1d252fd41..9b14623d5 100644 --- a/micro-rdk-server/esp32/main.rs +++ b/micro-rdk-server/esp32/main.rs @@ -41,6 +41,11 @@ mod esp32 { if let Err(e) = micro_rdk_modular_driver_example::wifi_rssi_sensor::register_models(r) { log::error!("failed to register `wifi_rssi_sensor`: {}", e); } + #[cfg(all( + esp_idf_ulp_coproc_enabled, + esp_idf_ulp_coproc_type_fsm, + feature = "esp32" + ))] if let Err(e) = micro_rdk_modular_driver_example::bme280_ulp::register_models(r) { log::error!("failed to register `bme280_ulp`: {}", e); } diff --git a/micro-rdk-server/sdkconfig.defaults b/micro-rdk-server/sdkconfig.defaults index 3ea6173c6..adfceb52f 100644 --- a/micro-rdk-server/sdkconfig.defaults +++ b/micro-rdk-server/sdkconfig.defaults @@ -43,13 +43,3 @@ CONFIG_ESP_COREDUMP_DECODE="disable" # NTP Config CONFIG_LWIP_SNTP_UPDATE_DELAY=86400000 - -# ULP Config -CONFIG_SOC_ULP_SUPPORTED=y -CONFIG_SOC_ULP_FSM_SUPPORTED=y -CONFIG_SOC_ULP_HAS_ADC=y -CONFIG_ULP_COPROC_ENABLED=y -CONFIG_ULP_COPROC_TYPE_FSM=y -CONFIG_ULP_COPROC_RESERVE_MEM=2048 -CONFIG_ESP32_ULP_COPROC_ENABLED=y -CONFIG_ESP32_ULP_COPROC_RESERVE_MEM=2048 diff --git a/micro-rdk-server/sdkconfig.defaults.esp32 b/micro-rdk-server/sdkconfig.defaults.esp32 index 93d68ceb7..0232639f4 100644 --- a/micro-rdk-server/sdkconfig.defaults.esp32 +++ b/micro-rdk-server/sdkconfig.defaults.esp32 @@ -17,3 +17,13 @@ CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY=y # Misc CONFIG_ETH_USE_OPENETH=y CONFIG_CAMERA_TASK_PINNED_TO_CORE=CAMERA_CORE1 + +# ULP Config +CONFIG_SOC_ULP_SUPPORTED=y +CONFIG_SOC_ULP_FSM_SUPPORTED=y +CONFIG_SOC_ULP_HAS_ADC=y +CONFIG_ULP_COPROC_ENABLED=y +CONFIG_ULP_COPROC_TYPE_FSM=y +CONFIG_ULP_COPROC_RESERVE_MEM=2048 +CONFIG_ESP32_ULP_COPROC_ENABLED=y +CONFIG_ESP32_ULP_COPROC_RESERVE_MEM=2048 diff --git a/micro-rdk/src/common/adxl345.rs b/micro-rdk/src/common/adxl345.rs index b86a3318c..3d9c5f17c 100755 --- a/micro-rdk/src/common/adxl345.rs +++ b/micro-rdk/src/common/adxl345.rs @@ -7,7 +7,7 @@ use super::board::Board; use super::config::ConfigType; use super::i2c::I2CHandle; use super::movement_sensor::MovementSensorType; -use super::registry::{get_board_from_dependencies, ComponentRegistry, Dependency}; +use super::registry::{ComponentRegistry, Dependency, get_board_from_dependencies}; use super::sensor::SensorError; use std::mem::size_of; diff --git a/micro-rdk/src/common/app_client.rs b/micro-rdk/src/common/app_client.rs index 9dab37657..ae6f3f78c 100755 --- a/micro-rdk/src/common/app_client.rs +++ b/micro-rdk/src/common/app_client.rs @@ -19,7 +19,7 @@ use crate::proto::{ }, }; use bytes::{BufMut, Bytes, BytesMut}; -use chrono::{format::ParseError, DateTime, Datelike, FixedOffset, Local}; +use chrono::{DateTime, Datelike, FixedOffset, Local, format::ParseError}; use futures_lite::{Future, StreamExt}; use http_body_util::BodyExt; use http_body_util::Full; @@ -85,18 +85,18 @@ impl AppClientError { false } pub fn is_permission_denied(&self) -> bool { - if let AppClientError::AppGrpcClientError(GrpcClientError::GrpcError { code, .. }) = self { - if *code == 7 { - return true; - } + if let AppClientError::AppGrpcClientError(GrpcClientError::GrpcError { code, .. }) = self + && *code == 7 + { + return true; } false } pub fn is_unauthenticated(&self) -> bool { - if let AppClientError::AppGrpcClientError(GrpcClientError::GrpcError { code, .. }) = self { - if *code == 16 { - return true; - } + if let AppClientError::AppGrpcClientError(GrpcClientError::GrpcError { code, .. }) = self + && *code == 16 + { + return true; } false } diff --git a/micro-rdk/src/common/camera/fake_camera.rs b/micro-rdk/src/common/camera/fake_camera.rs index 96044541e..6c239164a 100755 --- a/micro-rdk/src/common/camera/fake_camera.rs +++ b/micro-rdk/src/common/camera/fake_camera.rs @@ -68,13 +68,13 @@ mod tests { proto::component::camera::v1::{GetImageRequest, GetImageResponse, RenderFrameRequest}, }; - use http_body_util::{combinators::BoxBody, BodyExt, Collected, Full}; + use http_body_util::{BodyExt, Collected, Full, combinators::BoxBody}; use hyper::{ + Method, body::Incoming, client::conn::http2::SendRequest, header::{CONTENT_TYPE, TE}, server::conn::http2, - Method, }; use prost::Message; diff --git a/micro-rdk/src/common/camera/mod.rs b/micro-rdk/src/common/camera/mod.rs index 2b93ce1ba..003362855 100755 --- a/micro-rdk/src/common/camera/mod.rs +++ b/micro-rdk/src/common/camera/mod.rs @@ -27,7 +27,9 @@ pub enum CameraError { InitError(#[from] Box), #[error("config error {0}")] ConfigError(&'static str), - #[error("frame of size {0} greater than internal buffer capacity {1}, consider reducing camera's frame_size")] + #[error( + "frame of size {0} greater than internal buffer capacity {1}, consider reducing camera's frame_size" + )] ImageTooBig(usize, usize), #[error("failed to get image")] FailedToGetImage, diff --git a/micro-rdk/src/common/config.rs b/micro-rdk/src/common/config.rs index 043b0c817..13595dddf 100755 --- a/micro-rdk/src/common/config.rs +++ b/micro-rdk/src/common/config.rs @@ -126,7 +126,7 @@ where match value { Kind::StructValue(v) => v .iter() - .map(|(k, v)| (Ok((k.as_str(), v.try_into()?)))) + .map(|(k, v)| Ok((k.as_str(), v.try_into()?))) .collect(), _ => Err(AttributeError::ConversionImpossibleError), } @@ -832,7 +832,7 @@ mod tests { ResourceName, }; - use super::{ConfigApiError, API}; + use super::{API, ConfigApiError}; #[test_log::test] fn test_model_api() { @@ -1068,7 +1068,7 @@ mod tests { use crate::proto::app::v1::{ComponentConfig, ResourceLevelServiceConfig}; use crate::{ common::data_collector::CollectionMethod, - google::protobuf::{value::Kind as PKind, ListValue, Struct, Value}, + google::protobuf::{ListValue, Struct, Value, value::Kind as PKind}, }; let comp_config = ComponentConfig { diff --git a/micro-rdk/src/common/config_monitor.rs b/micro-rdk/src/common/config_monitor.rs index 5228345c0..3f3ecbcd2 100644 --- a/micro-rdk/src/common/config_monitor.rs +++ b/micro-rdk/src/common/config_monitor.rs @@ -7,7 +7,7 @@ use crate::{ config::AgentConfig, credentials_storage::RobotConfigurationStorage, grpc::ServerError, - system::{send_system_event, SystemEvent}, + system::{SystemEvent, send_system_event}, }, proto::app::v1::RobotConfig, }; @@ -84,6 +84,7 @@ where }) .await?; + #[allow(clippy::collapsible_if)] // The #[cfg(feature)] confuses clippy if let Some(config) = new_config.as_ref().config.as_ref() { #[cfg(feature = "ota")] { @@ -123,32 +124,32 @@ where } } - if let Ok(device_agent_config) = app_client.get_agent_config().await { - if let Ok(agent_config) = AgentConfig::try_from(device_agent_config.as_ref()) { - log::debug!("agent config: {:?}", agent_config); + if let Ok(device_agent_config) = app_client.get_agent_config().await + && let Ok(agent_config) = AgentConfig::try_from(device_agent_config.as_ref()) + { + log::debug!("agent config: {:?}", agent_config); - let stored = self - .storage - .get_network_settings() - .inspect_err(|e| log::warn!("failed to get networks from NVS: {}", e)) - .unwrap_or_default(); + let stored = self + .storage + .get_network_settings() + .inspect_err(|e| log::warn!("failed to get networks from NVS: {}", e)) + .unwrap_or_default(); - if agent_config.network_settings.len() != stored.len() - || agent_config - .network_settings - .iter() - .any(|net| !stored.contains(net)) + if agent_config.network_settings.len() != stored.len() + || agent_config + .network_settings + .iter() + .any(|net| !stored.contains(net)) + { + log::info!("new network settings found in config"); + if let Err(e) = self + .storage + .store_network_settings(&agent_config.network_settings) { - log::info!("new network settings found in config"); - if let Err(e) = self - .storage - .store_network_settings(&agent_config.network_settings) - { - log::error!("failed to store network settings to nvs: {}", e); - } else { - log::info!("successfully stored networks to nvs"); - reboot = true; - } + log::error!("failed to store network settings to nvs: {}", e); + } else { + log::info!("successfully stored networks to nvs"); + reboot = true; } } } diff --git a/micro-rdk/src/common/conn/viam.rs b/micro-rdk/src/common/conn/viam.rs index 3ba893c24..b093c0c90 100644 --- a/micro-rdk/src/common/conn/viam.rs +++ b/micro-rdk/src/common/conn/viam.rs @@ -4,9 +4,9 @@ use async_io::{Async, Timer}; use futures_lite::{FutureExt, StreamExt}; use futures_util::stream::FuturesUnordered; -use futures_util::{select, FutureExt as FuturesUtilExt, TryFutureExt}; +use futures_util::{FutureExt as FuturesUtilExt, TryFutureExt, select}; use hyper::server::conn::http2; -use hyper::{rt, Uri}; +use hyper::{Uri, rt}; use std::cell::RefCell; use std::future::Future; @@ -30,7 +30,7 @@ use crate::common::grpc::{GrpcBody, GrpcServer, ServerError}; use crate::common::grpc_client::GrpcClient; use crate::common::log::LogUploadTask; use crate::common::provisioning::server::{ - serve_provisioning_async, ProvisioningInfo, WifiApConfiguration, WifiManager, + ProvisioningInfo, WifiApConfiguration, WifiManager, serve_provisioning_async, }; use crate::common::registry::ComponentRegistry; use crate::common::restart_monitor::RestartMonitor; @@ -443,18 +443,18 @@ where .map(Poll::Ready) .unwrap_or(pinned.server_task.poll(cx)); - if let Some(timer) = pinned.timer { - if timer.poll(cx).is_ready() { - let app_tasks_res = match app_result { - Poll::Pending => Err(errors::ServerError::ServerTaskShutdownTimeout), - Poll::Ready(res) => res, - }; - let server_task_res = match server_result { - Poll::Pending => Err(errors::ServerError::ServerTaskShutdownTimeout), - Poll::Ready(res) => res, - }; - return Poll::Ready((app_tasks_res, server_task_res)); - } + if let Some(timer) = pinned.timer + && timer.poll(cx).is_ready() + { + let app_tasks_res = match app_result { + Poll::Pending => Err(errors::ServerError::ServerTaskShutdownTimeout), + Poll::Ready(res) => res, + }; + let server_task_res = match server_result { + Poll::Pending => Err(errors::ServerError::ServerTaskShutdownTimeout), + Poll::Ready(res) => res, + }; + return Poll::Ready((app_tasks_res, server_task_res)); } match (app_result, server_result) { @@ -505,7 +505,7 @@ where pub fn run_until_complete(&mut self) -> ! { #[cfg(feature = "esp32")] { - use crate::esp32::esp_idf_svc::hal::task::watchdog::{TWDTConfig, TWDTDriver, TWDT}; + use crate::esp32::esp_idf_svc::hal::task::watchdog::{TWDT, TWDTConfig, TWDTDriver}; let watchdog_config = TWDTConfig { duration: Duration::from_secs(180), panic_on_trigger: true, @@ -801,7 +801,9 @@ where match certs { None => { - log::error!("no TLS certificates found in storage or after contacting app, disabling HTTP2 server"); + log::error!( + "no TLS certificates found in storage or after contacting app, disabling HTTP2 server" + ); // At no point were we ever able to obtain a valid TLS certificate, so we disable HTTP2 let _ = std::mem::replace(&mut self.http2_server, HTTP2Server::Empty); } @@ -969,7 +971,9 @@ where if shutdown_requested_nonblocking().await { return Ok(()); } else { - log::error!("reached state of completed tasks without shutdown request, additional investigation required"); + log::error!( + "reached state of completed tasks without shutdown request, additional investigation required" + ); return Err(errors::ServerError::ServerInvalidCompletedState); } } @@ -1094,16 +1098,16 @@ where ) -> Result<(), errors::ServerError> { match incoming { IncomingConnection::HTTP2Connection(conn) => { - if let HTTP2Server::HTTP2Connector(h) = self.http2_server { - if self.incomming_connection_manager.get_lowest_prio() < u32::MAX { - let stream = conn?; - // we will have to wait for the tls context to be established before moving forward - let io = h.accept_connection(stream.0)?.await?; - let task = self.serve_http2_connection(io); - self.incomming_connection_manager - .insert_new_conn(task, u32::MAX) - .await; - } + if let HTTP2Server::HTTP2Connector(h) = self.http2_server + && self.incomming_connection_manager.get_lowest_prio() < u32::MAX + { + let stream = conn?; + // we will have to wait for the tls context to be established before moving forward + let io = h.accept_connection(stream.0)?.await?; + let task = self.serve_http2_connection(io); + self.incomming_connection_manager + .insert_new_conn(task, u32::MAX) + .await; } } @@ -1353,8 +1357,8 @@ mod tests { pin::Pin, rc::Rc, sync::{ - atomic::{AtomicI32, Ordering}, Arc, + atomic::{AtomicI32, Ordering}, }, time::Duration, }; @@ -1401,13 +1405,13 @@ mod tests { use futures_lite::FutureExt; use http_body_util::{BodyExt, Full}; use hyper::{ + Method, body::Incoming, header::{CONTENT_TYPE, TE}, server::conn::http2, service::Service, - Method, }; - use mdns_sd::{ServiceEvent, ServiceInfo}; + use mdns_sd::{ResolvedService, ServiceEvent}; use prost::Message; use rustls::client::ServerCertVerifier; @@ -1424,10 +1428,10 @@ mod tests { impl AppServerInsecure { fn authenticate(&self, body: Bytes) -> Result { let req = AuthenticateRequest::decode(body).unwrap(); - if let Some(auth_fn) = &self.auth_fn { - if !auth_fn(&req) { - return Err(ServerError::new(GrpcError::RpcPermissionDenied, None)); - } + if let Some(auth_fn) = &self.auth_fn + && !auth_fn(&req) + { + return Err(ServerError::new(GrpcError::RpcPermissionDenied, None)); } let resp = AuthenticateResponse { access_token: "fake".to_string(), @@ -1471,7 +1475,7 @@ mod tests { let self_signed = rcgen::generate_simple_self_signed(["localhost".to_string()]).unwrap(); let tls_certificate = self_signed.cert.pem(); - let tls_private_key = self_signed.key_pair.serialize_pem(); + let tls_private_key = self_signed.signing_key.serialize_pem(); let resp = CertificateResponse { id: "".to_owned(), tls_certificate, @@ -1714,7 +1718,7 @@ mod tests { assert!(addr.is_some()); let addr = addr.unwrap(); let port = record.get_port(); - let addr = SocketAddr::new(std::net::IpAddr::V4(*addr), port); + let addr = SocketAddr::new(addr.into(), port); let t1 = test_connect_to(addr, cloned_exec.clone()).await; assert!(t1.is_ok()); @@ -1816,7 +1820,7 @@ mod tests { assert!(addr.is_some()); let addr = addr.unwrap(); let port = record.get_port(); - let addr = SocketAddr::new(std::net::IpAddr::V4(*addr), port); + let addr = SocketAddr::new(addr.into(), port); let t1 = test_connect_to(addr, cloned_exec.clone()).await; assert!(t1.is_ok()); @@ -1967,7 +1971,7 @@ mod tests { assert!(addr.is_some()); let addr = addr.unwrap(); let port = record.get_port(); - let addr = SocketAddr::new(std::net::IpAddr::V4(*addr), port); + let addr = SocketAddr::new(addr.into(), port); let ret = do_provisioning_step(cloned_exec.clone(), addr) .or(async { @@ -1996,7 +2000,7 @@ mod tests { _service: &str, prop: &str, name: &str, - ) -> Result> { + ) -> Result, Box> { let mdns_querying = mdns_sd::ServiceDaemon::new(); assert!(mdns_querying.is_ok()); let mdns_querying = mdns_querying.unwrap(); @@ -2007,10 +2011,11 @@ mod tests { let receiver = receiver.unwrap(); loop { let record = receiver.recv_async().await; - if let ServiceEvent::ServiceResolved(srv) = record? { - if srv.get_property(prop).is_some() && srv.get_hostname().contains(name) { - return Ok(srv); - } + if let ServiceEvent::ServiceResolved(srv) = record? + && srv.get_property(prop).is_some() + && srv.get_hostname().contains(name) + { + return Ok(srv); } } } diff --git a/micro-rdk/src/common/credentials_storage.rs b/micro-rdk/src/common/credentials_storage.rs index 941b75936..03ea530f1 100644 --- a/micro-rdk/src/common/credentials_storage.rs +++ b/micro-rdk/src/common/credentials_storage.rs @@ -1,7 +1,7 @@ #![allow(dead_code)] #![allow(clippy::manual_try_fold)] use crate::common::grpc::GrpcError; -use hyper::{http::uri::InvalidUri, Uri}; +use hyper::{Uri, http::uri::InvalidUri}; use std::str::FromStr; use std::{error::Error, fmt::Debug, rc::Rc, sync::Mutex}; @@ -595,33 +595,36 @@ mod tests { let v: Vec = vec![ram1.clone(), ram2.clone(), ram3.clone()]; assert!(!v.has_robot_credentials()); - assert!(ram2 - .store_robot_credentials(&CloudConfig { + assert!( + ram2.store_robot_credentials(&CloudConfig { app_address: "http://downloadramstorage.org".to_owned(), id: "ram2".to_owned(), secret: "secret".to_owned() }) - .is_ok()); + .is_ok() + ); assert!(v.has_robot_credentials()); let cred = v.get_robot_credentials(); assert!(cred.is_ok()); let cred = cred.unwrap(); assert_eq!(cred.robot_id, "ram2"); - assert!(ram1 - .store_robot_credentials(&CloudConfig { + assert!( + ram1.store_robot_credentials(&CloudConfig { app_address: "http://downloadramstorage.org".to_owned(), id: "ram1".to_owned(), secret: "secret".to_owned() }) - .is_ok()); - assert!(ram2 - .store_robot_credentials(&CloudConfig { + .is_ok() + ); + assert!( + ram2.store_robot_credentials(&CloudConfig { app_address: "http://downloadramstorage.org".to_owned(), id: "ram2".to_owned(), secret: "secret".to_owned() }) - .is_ok()); + .is_ok() + ); assert!(v.has_robot_credentials()); let cred = v.get_robot_credentials(); assert!(cred.is_ok()); @@ -633,13 +636,14 @@ mod tests { assert!(v.reset_robot_credentials().is_ok()); assert!(!v.has_robot_credentials()); - assert!(v - .store_robot_credentials(&CloudConfig { + assert!( + v.store_robot_credentials(&CloudConfig { app_address: "http://downloadramstorage.org".to_owned(), id: "vec".to_owned(), secret: "secret".to_owned() }) - .is_ok()); + .is_ok() + ); assert!(v.has_robot_credentials()); let cred = v.get_robot_credentials(); assert!(cred.is_ok()); diff --git a/micro-rdk/src/common/data_collector.rs b/micro-rdk/src/common/data_collector.rs index 960ea689e..9c181d3b8 100644 --- a/micro-rdk/src/common/data_collector.rs +++ b/micro-rdk/src/common/data_collector.rs @@ -5,8 +5,8 @@ use std::{ }; use crate::{ - google::protobuf::{value::Kind as ProtoKind, Struct, Timestamp, Value}, - proto::app::data_sync::v1::{sensor_data::Data, MimeType, SensorData, SensorMetadata}, + google::protobuf::{Struct, Timestamp, Value, value::Kind as ProtoKind}, + proto::app::data_sync::v1::{MimeType, SensorData, SensorMetadata, sensor_data::Data}, }; use super::{ @@ -334,7 +334,7 @@ impl DataCollector { return Err(DataCollectionError::UnsupportedMethod( self.method.clone(), "board".to_string(), - )) + )); } }, @@ -348,7 +348,7 @@ impl DataCollector { return Err(DataCollectionError::UnsupportedMethod( self.method.clone(), "encoder".to_string(), - )) + )); } }, @@ -368,7 +368,7 @@ impl DataCollector { return Err(DataCollectionError::UnsupportedMethod( self.method.clone(), "servo".to_string(), - )) + )); } }, ResourceType::Motor(ref mut res) => match self.method { @@ -387,7 +387,7 @@ impl DataCollector { return Err(DataCollectionError::UnsupportedMethod( self.method.clone(), "motor".to_string(), - )) + )); } }, ResourceType::MovementSensor(ref mut res) => match self.method { @@ -418,7 +418,7 @@ impl DataCollector { return Err(DataCollectionError::UnsupportedMethod( self.method.clone(), "movement_sensor".to_string(), - )) + )); } }, _ => return Err(DataCollectionError::NoSupportedMethods), @@ -457,8 +457,8 @@ mod tests { use std::time::{Duration, Instant}; use super::{ - CollectionMethod, DataCollectionError, DataCollector, DataCollectorConfig, - DEFAULT_CACHE_SIZE_KB, + CollectionMethod, DEFAULT_CACHE_SIZE_KB, DataCollectionError, DataCollector, + DataCollectorConfig, }; use crate::common::config::{AttributeError, Kind}; use crate::common::robot::ResourceType; diff --git a/micro-rdk/src/common/data_manager.rs b/micro-rdk/src/common/data_manager.rs index df0b4f445..0b0e0940b 100644 --- a/micro-rdk/src/common/data_manager.rs +++ b/micro-rdk/src/common/data_manager.rs @@ -15,11 +15,11 @@ use super::app_client::{AppClient, AppClientError, PeriodicAppClientTask, VIAM_F use super::data_collector::ResourceMethodKey; use super::data_store::{DataStoreError, DataStoreReader, WriteMode}; use super::robot::{LocalRobot, RobotError}; -use super::system::{send_system_event, SystemEvent}; +use super::system::{SystemEvent, send_system_event}; use async_io::Timer; use bytes::BytesMut; -use chrono::offset::Local; use chrono::Datelike; +use chrono::offset::Local; use futures_lite::prelude::Future; use futures_util::lock::Mutex as AsyncMutex; use prost::Message; @@ -49,7 +49,7 @@ type CollectedReadings = Vec<( /// any interaction with resources managed by micro-RDK or the taking of any resources protected by lock. #[cfg(feature = "data-upload-hook-unstable")] #[linkage = "weak"] -#[no_mangle] +#[unsafe(no_mangle)] pub unsafe extern "C" fn micro_rdk_data_manager_post_upload_hook() {} #[derive(Debug, Error)] @@ -70,7 +70,9 @@ pub enum DataManagerError { InitializationRobotError(#[from] RobotError), #[error("sync_interval required for collection and immediate data sync")] MissingSyncInterval, - #[error("all collection intervals required to be equal to sync interval ({0} secs) for this mode of data collection")] + #[error( + "all collection intervals required to be equal to sync interval ({0} secs) for this mode of data collection" + )] CollectionSyncIntervalUnequal(u64), } @@ -396,25 +398,24 @@ fn time_correct_reading( return Err(DataSyncError::NoCurrentTime); } - if let Some(time_received) = metadata.time_received.clone() { - if let Some(time_to_subtract) = get_time_to_subtract(robot_start_time, time_received)? { - let time_received = current_dt - time_to_subtract; - metadata.time_received = Some(Timestamp { - seconds: time_received.timestamp(), - nanos: time_received.timestamp_subsec_nanos() as i32, - }); - }; - } - if let Some(time_requested) = metadata.time_requested.clone() { - if let Some(time_to_subtract) = get_time_to_subtract(robot_start_time, time_requested)? - { - let time_requested = current_dt - time_to_subtract; - metadata.time_requested = Some(Timestamp { - seconds: time_requested.timestamp(), - nanos: time_requested.timestamp_subsec_nanos() as i32, - }); - }; - } + if let Some(time_received) = metadata.time_received.clone() + && let Some(time_to_subtract) = get_time_to_subtract(robot_start_time, time_received)? + { + let time_received = current_dt - time_to_subtract; + metadata.time_received = Some(Timestamp { + seconds: time_received.timestamp(), + nanos: time_received.timestamp_subsec_nanos() as i32, + }); + }; + if let Some(time_requested) = metadata.time_requested.clone() + && let Some(time_to_subtract) = get_time_to_subtract(robot_start_time, time_requested)? + { + let time_requested = current_dt - time_to_subtract; + metadata.time_requested = Some(Timestamp { + seconds: time_requested.timestamp(), + nanos: time_requested.timestamp_subsec_nanos() as i32, + }); + }; } Ok(()) } @@ -434,7 +435,7 @@ where StoreType: DataStore, { #[cfg(test)] - async fn get_store_lock(&mut self) -> futures_util::lock::MutexGuard { + async fn get_store_lock(&mut self) -> futures_util::lock::MutexGuard<'_, StoreType> { self.store.lock().await } @@ -454,7 +455,11 @@ where Ok(reader) => match reader.messages_remaining() { Ok(num_msgs) => num_msgs, Err(err) => { - log::error!("could not get number of messages remaining in store for collector key ({:?}): {:?}", collector_key, err); + log::error!( + "could not get number of messages remaining in store for collector key ({:?}): {:?}", + collector_key, + err + ); 0 } }, @@ -569,7 +574,9 @@ where let data = match data { Ok(data) => data, Err(DataSyncError::NoCurrentTime) => { - log::error!("Could not calculate data timestamps, returning without flushing store"); + log::error!( + "Could not calculate data timestamps, returning without flushing store" + ); return Ok(()); } Err(err) => { @@ -744,7 +751,12 @@ impl DataCollectAndSyncTask { .upload_data(app_client, &collector_key, current_upload) .await { - log::error!("error uploading data, failed to upload {:?} readings on this attempt: {}, collector: {:?}", collectors_len - idx, err, collector_key); + log::error!( + "error uploading data, failed to upload {:?} readings on this attempt: {}, collector: {:?}", + collectors_len - idx, + err, + collector_key + ); break; } current_readings_size = 0; @@ -763,7 +775,12 @@ impl DataCollectAndSyncTask { .upload_data(app_client, &collector_key, readings_to_upload) .await { - log::error!("error uploading data, failed to upload {:?} readings on this attempt: {}, collector: {:?}", collectors_len - idx, err, collector_key); + log::error!( + "error uploading data, failed to upload {:?} readings on this attempt: {}, collector: {:?}", + collectors_len - idx, + err, + collector_key + ); } } } else { @@ -851,7 +868,7 @@ mod tests { use crate::common::data_store::{DataStoreReader, WriteMode}; use crate::common::{ data_collector::{ - CollectionMethod, DataCollector, ResourceMethodKey, DEFAULT_CACHE_SIZE_KB, + CollectionMethod, DEFAULT_CACHE_SIZE_KB, DataCollector, ResourceMethodKey, }, data_store::{DataStore, DataStoreError}, robot::ResourceType, @@ -861,7 +878,7 @@ mod tests { }, }; use crate::google::protobuf::value::Kind; - use crate::proto::app::data_sync::v1::{sensor_data::Data, SensorData}; + use crate::proto::app::data_sync::v1::{SensorData, sensor_data::Data}; #[derive(DoCommand)] struct TestSensorFailure {} @@ -1351,10 +1368,12 @@ mod tests { let res = read_messages_for_collector(&mut reader_2); assert!(res.is_ok()); } - assert!(manager - .collect_data_inner(i, robot_start_time) - .await - .is_ok()) + assert!( + manager + .collect_data_inner(i, robot_start_time) + .await + .is_ok() + ) } let expected_data: Vec = vec![ diff --git a/micro-rdk/src/common/data_store.rs b/micro-rdk/src/common/data_store.rs index 28912b26a..2585b14e2 100644 --- a/micro-rdk/src/common/data_store.rs +++ b/micro-rdk/src/common/data_store.rs @@ -4,8 +4,8 @@ use crate::proto::app::data_sync::v1::SensorData; use bytes::{Buf, BufMut, BytesMut}; -use prost::{encoding::decode_varint, length_delimiter_len, DecodeError, EncodeError, Message}; -use ringbuf::{ring_buffer::RbBase, Consumer, LocalRb, Producer, Rb}; +use prost::{DecodeError, EncodeError, Message, encoding::decode_varint, length_delimiter_len}; +use ringbuf::{Consumer, LocalRb, Producer, Rb, ring_buffer::RbBase}; use scopeguard::defer; use std::{ mem::MaybeUninit, @@ -86,7 +86,7 @@ pub trait DataStore { // Gets a reader that should implement `DataStoreReader` fn get_reader(&self, collector_key: &ResourceMethodKey) - -> Result; + -> Result; } const MAX_ALLOWED_TOTAL_CAPACITY: usize = 64000; @@ -326,12 +326,12 @@ mod tests { use crate::common::data_store::DataStoreReader; use crate::common::data_store::WriteMode; use crate::google::protobuf::Timestamp; - use crate::google::protobuf::{value::Kind, Struct, Value}; + use crate::google::protobuf::{Struct, Value, value::Kind}; use crate::proto::app::data_sync::v1::sensor_data::Data; use crate::proto::app::data_sync::v1::{MimeType, SensorData, SensorMetadata}; - use prost::{length_delimiter_len, Message}; - use rand::distr::Alphanumeric; + use prost::{Message, length_delimiter_len}; use rand::Rng; + use rand::distr::Alphanumeric; #[test_log::test] fn test_data_store() { diff --git a/micro-rdk/src/common/encoder.rs b/micro-rdk/src/common/encoder.rs index d53692cd5..fd5fa2ade 100644 --- a/micro-rdk/src/common/encoder.rs +++ b/micro-rdk/src/common/encoder.rs @@ -72,7 +72,7 @@ pub enum EncoderPositionType { #[cfg(feature = "data")] use crate::{ - google::protobuf::{value::Kind, Value}, + google::protobuf::{Value, value::Kind}, proto::app::data_sync::v1::sensor_data::Data, }; #[cfg(feature = "data")] diff --git a/micro-rdk/src/common/exec.rs b/micro-rdk/src/common/exec.rs index 5120418b9..13b9dbe11 100644 --- a/micro-rdk/src/common/exec.rs +++ b/micro-rdk/src/common/exec.rs @@ -1,8 +1,8 @@ //! The exec module exposes helpers to execute futures use async_executor::{LocalExecutor, Task}; use futures_lite::{ - future::{self, block_on}, Future, + future::{self, block_on}, }; use crate::common::{provisioning::server::ProvisioningExecutor, webrtc::exec::WebRtcExecutor}; diff --git a/micro-rdk/src/common/generic.rs b/micro-rdk/src/common/generic.rs index c81e08336..eab78bfed 100644 --- a/micro-rdk/src/common/generic.rs +++ b/micro-rdk/src/common/generic.rs @@ -8,7 +8,7 @@ use { config::ConfigType, registry::{ComponentRegistry, Dependency}, }, - crate::google::protobuf::{value::Kind, Value}, + crate::google::protobuf::{Value, value::Kind}, std::collections::HashMap, }; diff --git a/micro-rdk/src/common/gpio_motor.rs b/micro-rdk/src/common/gpio_motor.rs index ee42106f5..66417f1f0 100644 --- a/micro-rdk/src/common/gpio_motor.rs +++ b/micro-rdk/src/common/gpio_motor.rs @@ -44,14 +44,14 @@ use super::actuator::{Actuator, ActuatorError}; use super::board::{Board, BoardType}; use super::config::ConfigType; use super::encoder::{ - Encoder, EncoderPositionType, EncoderType, COMPONENT_NAME as EncoderCompName, + COMPONENT_NAME as EncoderCompName, Encoder, EncoderPositionType, EncoderType, }; use super::math_utils::go_for_math; use super::motor::{ - Motor, MotorError, MotorPinType, MotorPinsConfig, MotorSupportedProperties, MotorType, - COMPONENT_NAME as MotorCompName, + COMPONENT_NAME as MotorCompName, Motor, MotorError, MotorPinType, MotorPinsConfig, + MotorSupportedProperties, MotorType, }; -use super::registry::{get_board_from_dependencies, ComponentRegistry, Dependency, ResourceKey}; +use super::registry::{ComponentRegistry, Dependency, ResourceKey, get_board_from_dependencies}; use super::robot::Resource; pub(crate) fn register_models(registry: &mut ComponentRegistry) { diff --git a/micro-rdk/src/common/gpio_servo.rs b/micro-rdk/src/common/gpio_servo.rs index 52bd2bde9..8957bb81d 100644 --- a/micro-rdk/src/common/gpio_servo.rs +++ b/micro-rdk/src/common/gpio_servo.rs @@ -28,7 +28,7 @@ use super::{ actuator::{Actuator, ActuatorError}, board::{Board, BoardType}, config::ConfigType, - registry::{get_board_from_dependencies, ComponentRegistry, Dependency}, + registry::{ComponentRegistry, Dependency, get_board_from_dependencies}, servo::{Servo, ServoError, ServoType}, }; diff --git a/micro-rdk/src/common/grpc.rs b/micro-rdk/src/common/grpc.rs index a1dfb40ed..921237782 100644 --- a/micro-rdk/src/common/grpc.rs +++ b/micro-rdk/src/common/grpc.rs @@ -17,12 +17,12 @@ use crate::{ }; use bytes::BufMut; use futures_lite::{Future, StreamExt}; -use http_body_util::{combinators::BoxBody, BodyExt, StreamBody}; +use http_body_util::{BodyExt, StreamBody, combinators::BoxBody}; use hyper::{ + HeaderMap, Request, Response, body::{self, Body, Bytes, Frame}, - http::{uri::InvalidUri, HeaderValue}, + http::{HeaderValue, uri::InvalidUri}, service::Service, - HeaderMap, Request, Response, }; use log::*; use prost::Message; @@ -1505,7 +1505,7 @@ impl<'a> GrpcServerInner<'a> { let req = proto::rpc::webrtc::v1::OptionalWebRtcConfigRequest::decode(message) .map_err(|_| ServerError::from(GrpcError::RpcInvalidArgument))?; let result = match self.signaling_server { - Some(ref ss) => ss.optional_webrtc_config(req), + Some(ss) => ss.optional_webrtc_config(req), None => Err(ServerError::from(GrpcError::RpcUnimplemented)), }?; GrpcServerInner::encode_message(result) @@ -1563,7 +1563,7 @@ impl<'a> GrpcServerInner<'a> { let req = proto::rpc::webrtc::v1::CallUpdateRequest::decode(message) .map_err(|_| ServerError::from(GrpcError::RpcInvalidArgument))?; let result = match self.signaling_server { - Some(ref ss) => ss.call_update(req), + Some(ss) => ss.call_update(req), None => Err(ServerError::from(GrpcError::RpcUnimplemented)), }?; GrpcServerInner::encode_message(result) diff --git a/micro-rdk/src/common/grpc_client.rs b/micro-rdk/src/common/grpc_client.rs index 7f4116700..369c3f233 100755 --- a/micro-rdk/src/common/grpc_client.rs +++ b/micro-rdk/src/common/grpc_client.rs @@ -2,9 +2,9 @@ use async_channel::Sender; use async_io::Timer; use bytes::{BufMut, Bytes, BytesMut}; -use futures_lite::{ready, Future, FutureExt, Stream}; -use http_body_util::combinators::BoxBody; +use futures_lite::{Future, FutureExt, Stream, ready}; use http_body_util::BodyExt; +use http_body_util::combinators::BoxBody; use hyper::body::{Body, Incoming}; use hyper::client::conn::http2::SendRequest; use hyper::header::HeaderMap; @@ -157,25 +157,25 @@ where let data = match frame.into_data() { Ok(data) => data, Err(e) => { - if let Some(trailers) = e.trailers_ref() { - if trailers.contains_key("grpc-message") && trailers.contains_key("grpc-status") - { - return Poll::Ready(Some(Err(GrpcClientError::GrpcError { - code: trailers - .get("grpc-status") - .unwrap() - .to_str() - .unwrap_or("") - .parse::() - .unwrap_or(127), // if status code cannot be parsed return 127 - message: trailers - .get("grpc-message") - .unwrap() - .to_str() - .unwrap_or("couldn't parse message") // message couldn't be extracted from header - .to_owned(), - }))); - } + if let Some(trailers) = e.trailers_ref() + && trailers.contains_key("grpc-message") + && trailers.contains_key("grpc-status") + { + return Poll::Ready(Some(Err(GrpcClientError::GrpcError { + code: trailers + .get("grpc-status") + .unwrap() + .to_str() + .unwrap_or("") + .parse::() + .unwrap_or(127), // if status code cannot be parsed return 127 + message: trailers + .get("grpc-message") + .unwrap() + .to_str() + .unwrap_or("couldn't parse message") // message couldn't be extracted from header + .to_owned(), + }))); } return Poll::Ready(Some(Err(GrpcClientError::FrameError(format!("{:?}", e))))); } @@ -383,14 +383,14 @@ mod tests { use async_io::{Async, Timer}; use bytes::Bytes; use futures_lite::stream::StreamExt; - use futures_lite::{ready, FutureExt}; - use http_body_util::{combinators::BoxBody, BodyExt, BodyStream, StreamBody}; + use futures_lite::{FutureExt, ready}; + use http_body_util::{BodyExt, BodyStream, StreamBody, combinators::BoxBody}; use hyper::{ + Request, Response, Uri, body::{Body, Frame}, header::CONTENT_TYPE, server::conn::http2, service::service_fn, - Request, Response, Uri, }; use std::{ net::{Ipv4Addr, SocketAddrV4, TcpListener, TcpStream}, @@ -482,7 +482,7 @@ mod tests { async fn server_fn_echo( req: Request, ) -> Result>>, hyper::Error> { - let r = match req.uri().path() { + match req.uri().path() { "/proto.rpc.examples.echo.v1.EchoService/EchoBiDi" => Ok::<_, hyper::Error>( Response::builder() .status(200) @@ -495,8 +495,7 @@ mod tests { .unwrap(), ), x => panic!("unimplemented path {:?}", x), - }; - r + } } async fn grpc_client_test_server(tcp_server: Async, executor: Executor) { diff --git a/micro-rdk/src/common/ina.rs b/micro-rdk/src/common/ina.rs index 87eea0fec..856eaf9dd 100644 --- a/micro-rdk/src/common/ina.rs +++ b/micro-rdk/src/common/ina.rs @@ -22,7 +22,7 @@ use super::{ config::ConfigType, i2c::{I2CErrors, I2cHandleType}, power_sensor::{Current, PowerSensor, PowerSensorType, PowerSupplyType, Voltage}, - registry::{get_board_from_dependencies, ComponentRegistry, Dependency}, + registry::{ComponentRegistry, Dependency, get_board_from_dependencies}, sensor::SensorError, }; diff --git a/micro-rdk/src/common/log.rs b/micro-rdk/src/common/log.rs index 2d424a4d6..2f911b0ca 100644 --- a/micro-rdk/src/common/log.rs +++ b/micro-rdk/src/common/log.rs @@ -1,5 +1,5 @@ use crate::{ - google::protobuf::{value::Kind, Struct, Timestamp, Value}, + google::protobuf::{Struct, Timestamp, Value, value::Kind}, proto::common::v1::LogEntry, }; use async_lock::Mutex as AsyncMutex; diff --git a/micro-rdk/src/common/math_utils.rs b/micro-rdk/src/common/math_utils.rs index c2ca5ec6d..1b4a62729 100644 --- a/micro-rdk/src/common/math_utils.rs +++ b/micro-rdk/src/common/math_utils.rs @@ -1,6 +1,6 @@ #![allow(dead_code)] use crate::{ - google::protobuf::{value::Kind, Struct, Value}, + google::protobuf::{Struct, Value, value::Kind}, proto::common, }; use std::{collections::HashMap, time::Duration}; @@ -118,7 +118,7 @@ pub(crate) fn go_for_math( return Err(UtilsInvalidArg); } - let rpm = rpm.clamp(-1.0 * max_rpm, max_rpm); + let rpm = rpm.clamp(-max_rpm, max_rpm); if revolutions == 0.0 { return Ok((rpm / max_rpm, None)); diff --git a/micro-rdk/src/common/motor.rs b/micro-rdk/src/common/motor.rs index a788bac8e..7fa69742b 100755 --- a/micro-rdk/src/common/motor.rs +++ b/micro-rdk/src/common/motor.rs @@ -3,7 +3,7 @@ #[cfg(feature = "builtin-components")] use { super::encoder::{ - Encoder, EncoderPositionType, EncoderType, COMPONENT_NAME as EncoderCompName, + COMPONENT_NAME as EncoderCompName, Encoder, EncoderPositionType, EncoderType, }, super::math_utils::go_for_math, super::{ diff --git a/micro-rdk/src/common/movement_sensor.rs b/micro-rdk/src/common/movement_sensor.rs index b3e36e50b..a91ad7bf6 100755 --- a/micro-rdk/src/common/movement_sensor.rs +++ b/micro-rdk/src/common/movement_sensor.rs @@ -20,7 +20,7 @@ use crate::{ math_utils::Vector3, sensor::{GenericReadingsResult, Readings, SensorError}, }, - google::protobuf::{value::Kind, Struct, Value}, + google::protobuf::{Struct, Value, value::Kind}, proto::{common::v1::GeoPoint, component::movement_sensor}, }; diff --git a/micro-rdk/src/common/mpu6050.rs b/micro-rdk/src/common/mpu6050.rs index 2df9ca156..4ff06199f 100755 --- a/micro-rdk/src/common/mpu6050.rs +++ b/micro-rdk/src/common/mpu6050.rs @@ -23,7 +23,7 @@ use super::board::Board; use super::config::ConfigType; use super::i2c::I2CHandle; use super::movement_sensor::MovementSensorType; -use super::registry::{get_board_from_dependencies, ComponentRegistry, Dependency}; +use super::registry::{ComponentRegistry, Dependency, get_board_from_dependencies}; use super::sensor::SensorError; use std::mem::size_of; diff --git a/micro-rdk/src/common/ota.rs b/micro-rdk/src/common/ota.rs index f4af92ac9..1c2a144b1 100644 --- a/micro-rdk/src/common/ota.rs +++ b/micro-rdk/src/common/ota.rs @@ -59,7 +59,7 @@ use futures_lite::AsyncWriteExt; use futures_lite::{FutureExt, StreamExt}; use futures_util::TryFutureExt; use http_body_util::{BodyExt, Empty}; -use hyper::{body::Bytes, client::conn::http2, Request}; +use hyper::{Request, body::Bytes, client::conn::http2}; use once_cell::sync::Lazy; use std::time::Duration; use thiserror::Error; @@ -127,7 +127,9 @@ pub(crate) enum OtaError { InvalidImageSizeLarge(usize, usize), #[error("new image of {0} bytes is smaller than minimum firmware size of {1} bytes")] InvalidImageSizeSmall(usize, usize), - #[error("failed to retrieve firmware header info from binary, firmware may not be valid for this system: {0}")] + #[error( + "failed to retrieve firmware header info from binary, firmware may not be valid for this system: {0}" + )] InvalidFirmware(String), #[error("failed to update OTA metadata: expected updated version to be `{0}`, found `{1}`")] UpdateMetadata(String, String), @@ -413,7 +415,7 @@ impl OtaService { return Err(OtaError::Other(format!( "Bad Request - Status: {}", response.status() - ))) + ))); } }; } diff --git a/micro-rdk/src/common/power_sensor.rs b/micro-rdk/src/common/power_sensor.rs index 0aa08e4aa..419e8d8f5 100644 --- a/micro-rdk/src/common/power_sensor.rs +++ b/micro-rdk/src/common/power_sensor.rs @@ -1,7 +1,7 @@ use std::sync::{Arc, Mutex}; use crate::{ - google::protobuf::{value::Kind, Value}, + google::protobuf::{Value, value::Kind}, proto::component, }; diff --git a/micro-rdk/src/common/provisioning/server.rs b/micro-rdk/src/common/provisioning/server.rs index 946bd3fa8..abb294e25 100644 --- a/micro-rdk/src/common/provisioning/server.rs +++ b/micro-rdk/src/common/provisioning/server.rs @@ -35,8 +35,8 @@ use bytes::{BufMut, Bytes, BytesMut}; use futures_lite::Future; use http_body_util::BodyExt; use hyper::{ - body::Incoming, header::CONTENT_TYPE, http, rt, server::conn::http2, service::Service, Request, - Response, + Request, Response, body::Incoming, header::CONTENT_TYPE, http, rt, server::conn::http2, + service::Service, }; use prost::Message; use thiserror::Error; @@ -48,24 +48,24 @@ async fn dns_server(ap_ip: Ipv4Addr) { let len = socket.recv_from(&mut buf).await.unwrap(); let buf = Bytes::copy_from_slice(&buf[..len.0]); let mut ans = dns_message_parser::Dns::decode(buf); - if let Ok(ref mut msg) = ans { - if let Some(q) = msg.questions.first() { - if q.domain_name.to_string().contains("viam.setup") { - let rr = dns_message_parser::rr::RR::A(dns_message_parser::rr::A { - domain_name: q.domain_name.clone(), - ttl: 3600, - ipv4_addr: ap_ip, - }); - - msg.answers.push(rr); - msg.flags.qr = true; - - let buf = msg.encode().unwrap(); - socket.send_to(&buf, len.1).await.unwrap(); - } else { - msg.flags.qr = true; - msg.flags.rcode = dns_message_parser::RCode::ServFail; - } + if let Ok(ref mut msg) = ans + && let Some(q) = msg.questions.first() + { + if q.domain_name.to_string().contains("viam.setup") { + let rr = dns_message_parser::rr::RR::A(dns_message_parser::rr::A { + domain_name: q.domain_name.clone(), + ttl: 3600, + ipv4_addr: ap_ip, + }); + + msg.answers.push(rr); + msg.flags.qr = true; + + let buf = msg.encode().unwrap(); + socket.send_to(&buf, len.1).await.unwrap(); + } else { + msg.flags.qr = true; + msg.flags.rcode = dns_message_parser::RCode::ServFail; } } drop(ans); @@ -414,9 +414,9 @@ where ServerError: From<::Error>, I: rt::Read + rt::Write + std::marker::Unpin + 'static, E: rt::bounds::Http2ServerConnExec< - as Service>>::Future, - GrpcBody, - >, + as Service>>::Future, + GrpcBody, + >, { type Output = Result<(), hyper::Error>; fn poll( @@ -437,9 +437,9 @@ where ServerError: From<::Error>, I: rt::Read + rt::Write + std::marker::Unpin + 'static, E: rt::bounds::Http2ServerConnExec< - as Service>>::Future, - GrpcBody, - >, + as Service>>::Future, + GrpcBody, + >, { pub(crate) fn new(service: ProvisioningService, executor: E, stream: I) -> Self { let credential_ready = service.get_credential_ready(); @@ -693,12 +693,12 @@ mod tests { use http_body_util::BodyExt; use http_body_util::Full; use hyper::{ - header::{CONTENT_TYPE, TE}, Method, + header::{CONTENT_TYPE, TE}, }; use mdns_sd::ServiceEvent; use prost::Message; - use rand::{distr::Alphanumeric, Rng}; + use rand::{Rng, distr::Alphanumeric}; use super::ProvisioningService; @@ -1043,12 +1043,12 @@ mod tests { let addr = exec.block_on(async { while let Ok(event) = server_addr.recv_async().await { - if let ServiceEvent::ServiceResolved(info) = event { - if info.get_properties().get("provisioning").is_some() { - let addr = *info.get_addresses().iter().take(1).next().unwrap(); - let port = info.get_port(); - return Some(SocketAddr::new(addr, port)); - } + if let ServiceEvent::ServiceResolved(info) = event + && info.get_properties().get("provisioning").is_some() + { + let addr = info.get_addresses().iter().take(1).next().unwrap(); + let port = info.get_port(); + return Some(SocketAddr::new(addr.to_ip_addr(), port)); } } None diff --git a/micro-rdk/src/common/registry.rs b/micro-rdk/src/common/registry.rs index d962d8427..ff563a529 100755 --- a/micro-rdk/src/common/registry.rs +++ b/micro-rdk/src/common/registry.rs @@ -635,9 +635,11 @@ mod tests { assert!(ctor.is_ok()); // register test sensor - assert!(registry - .register_sensor("test_sensor".to_string(), &TestSensor::from_config) - .is_ok()); + assert!( + registry + .register_sensor("test_sensor".to_string(), &TestSensor::from_config) + .is_ok() + ); // check ctor let ctor = registry.get_sensor_constructor("test_sensor"); diff --git a/micro-rdk/src/common/restart_monitor.rs b/micro-rdk/src/common/restart_monitor.rs index 1d7e86a05..a74e40cd7 100644 --- a/micro-rdk/src/common/restart_monitor.rs +++ b/micro-rdk/src/common/restart_monitor.rs @@ -1,5 +1,5 @@ use super::app_client::{AppClient, AppClientError, PeriodicAppClientTask}; -use super::system::{send_system_event, SystemEvent}; +use super::system::{SystemEvent, send_system_event}; use futures_lite::Future; use std::pin::Pin; use std::time::Duration; diff --git a/micro-rdk/src/common/robot.rs b/micro-rdk/src/common/robot.rs index 746e0502c..d30000f3b 100755 --- a/micro-rdk/src/common/robot.rs +++ b/micro-rdk/src/common/robot.rs @@ -23,6 +23,8 @@ use crate::{ robot, }, }; + +#[allow(unused_imports)] use log::*; #[cfg(feature = "data")] @@ -47,7 +49,7 @@ use super::{ movement_sensor::MovementSensorType, power_sensor::{PowerSensor, PowerSensorType}, registry::{ - get_board_from_dependencies, ComponentRegistry, Dependency, RegistryError, ResourceKey, + ComponentRegistry, Dependency, RegistryError, ResourceKey, get_board_from_dependencies, }, sensor::SensorType, servo::{Servo, ServoType}, @@ -961,11 +963,13 @@ mod tests { assert!(board.is_some()); - assert!(board - .as_ref() - .unwrap() - .get_analog_reader_by_name("1".to_string()) - .is_ok()); + assert!( + board + .as_ref() + .unwrap() + .get_analog_reader_by_name("1".to_string()) + .is_ok() + ); let value = board .as_ref() @@ -984,22 +988,26 @@ mod tests { let bytes: [u8; 3] = [0, 1, 2]; assert!(i2c_driver.as_mut().unwrap().write_i2c(0, &bytes).is_ok()); let mut buffer: [u8; 3] = [0, 0, 0]; - assert!(i2c_driver - .as_mut() - .unwrap() - .read_i2c(0, &mut buffer) - .is_ok()); + assert!( + i2c_driver + .as_mut() + .unwrap() + .read_i2c(0, &mut buffer) + .is_ok() + ); assert!(buffer.iter().zip(bytes.iter()).all(|(a, b)| a == b)); let mut i2c_driver_2 = board.as_ref().unwrap().get_i2c_by_name("i2c1".to_string()); assert!(i2c_driver_2.is_ok()); let init_bytes: [u8; 3] = [5, 4, 0]; let mut buffer_2: [u8; 3] = [0, 0, 0]; - assert!(i2c_driver_2 - .as_mut() - .unwrap() - .read_i2c(0, &mut buffer_2) - .is_ok()); + assert!( + i2c_driver_2 + .as_mut() + .unwrap() + .read_i2c(0, &mut buffer_2) + .is_ok() + ); assert!(buffer_2.iter().zip(init_bytes.iter()).all(|(a, b)| a == b)); let sensor = robot.get_sensor_by_name("sensor".to_string()); diff --git a/micro-rdk/src/common/sensor.rs b/micro-rdk/src/common/sensor.rs index d59f49091..1d7b747e0 100755 --- a/micro-rdk/src/common/sensor.rs +++ b/micro-rdk/src/common/sensor.rs @@ -22,7 +22,7 @@ use thiserror::Error; #[cfg(feature = "data")] use crate::{ google::protobuf::Timestamp, - proto::app::data_sync::v1::{sensor_data::Data, MimeType, SensorData, SensorMetadata}, + proto::app::data_sync::v1::{MimeType, SensorData, SensorMetadata, sensor_data::Data}, }; #[cfg(feature = "esp32")] diff --git a/micro-rdk/src/common/system.rs b/micro-rdk/src/common/system.rs index b6ead9010..52d3df431 100644 --- a/micro-rdk/src/common/system.rs +++ b/micro-rdk/src/common/system.rs @@ -116,7 +116,6 @@ pub(crate) fn enable_ulp_wakeup() -> Result<(), SystemEventError> { sys::ESP_ERR_NOT_SUPPORTED => Err(SystemEventError::EnableUlpWakeupError(format!( "additional current to external 32kHz crystal is enabled, cannot enable ULP wakeup source: {:?}", result - ))), sys::ESP_ERR_INVALID_STATE => Err(SystemEventError::EnableUlpWakeupError(format!( "co-processor not enabled or wakeup trigger conflicts with ulp wakeup: {:?}", @@ -197,7 +196,9 @@ pub(crate) async fn force_shutdown(app_client: Option) { async_io::block_on(Timer::after(dur)); terminate(); } else { - log::error!("native builds do not support alternate wake up sources and can only sleep for a duration") + log::error!( + "native builds do not support alternate wake up sources and can only sleep for a duration" + ) } } } diff --git a/micro-rdk/src/common/webrtc/api.rs b/micro-rdk/src/common/webrtc/api.rs index 93078c993..f596487d9 100755 --- a/micro-rdk/src/common/webrtc/api.rs +++ b/micro-rdk/src/common/webrtc/api.rs @@ -5,7 +5,7 @@ use std::{ net::{Ipv4Addr, UdpSocket}, pin::Pin, rc::Rc, - sync::{atomic::AtomicBool, Arc, Mutex}, + sync::{Arc, Mutex, atomic::AtomicBool}, task::Poll, time::Duration, }; @@ -21,10 +21,10 @@ use crate::{ }, google::rpc::{Code, Status}, proto::rpc::webrtc::v1::{ - answer_request, answer_response, call_response, call_update_request, AnswerRequest, - AnswerResponse, AnswerResponseDoneStage, AnswerResponseErrorStage, AnswerResponseInitStage, - AnswerResponseUpdateStage, CallResponse, CallResponseInitStage, CallResponseUpdateStage, - IceCandidate, + AnswerRequest, AnswerResponse, AnswerResponseDoneStage, AnswerResponseErrorStage, + AnswerResponseInitStage, AnswerResponseUpdateStage, CallResponse, CallResponseInitStage, + CallResponseUpdateStage, IceCandidate, answer_request, answer_response, call_response, + call_update_request, }, }; @@ -32,18 +32,18 @@ use async_channel::RecvError; use async_channel::Sender; use async_io::Timer; use atomic_waker::AtomicWaker; -use base64::{engine::general_purpose, Engine}; +use base64::{Engine, engine::general_purpose}; use either::Either; use futures_lite::{Future, FutureExt, StreamExt}; -use futures_util::{select, FutureExt as FuturesUtilExt}; +use futures_util::{FutureExt as FuturesUtilExt, select}; use prost::{DecodeError, EncodeError}; use scopeguard::ScopeGuard; use sdp::{ + MediaDescription, SessionDescription, description::{ common::{Address, ConnectionInformation}, media::{MediaName, RangedPort}, }, - MediaDescription, SessionDescription, }; use serde::{Deserialize, Serialize}; use thiserror::Error; @@ -509,7 +509,7 @@ impl WebRtcSignalingChannel { _ => { return Err(WebRtcError::SignalingError( "unexpected stage".to_owned(), - )) + )); } } } diff --git a/micro-rdk/src/common/webrtc/candidates.rs b/micro-rdk/src/common/webrtc/candidates.rs index 5d96cb9f0..b9c01e08e 100755 --- a/micro-rdk/src/common/webrtc/candidates.rs +++ b/micro-rdk/src/common/webrtc/candidates.rs @@ -421,14 +421,14 @@ impl CandidatePair { } /// Check if a binding response belongs to this Pair pub fn binding_response(&mut self, _now: &Instant, id: &TransactionId) -> bool { - if let Some(req) = self.current_binding_request.as_mut() { - if req.id == *id { - req.resp_recv = true; - self.binding_req_recv += 1; - self.state = CandidatePairState::Succeeded; - log::debug!("Pair succeeded {:?}", self); - return true; - } + if let Some(req) = self.current_binding_request.as_mut() + && req.id == *id + { + req.resp_recv = true; + self.binding_req_recv += 1; + self.state = CandidatePairState::Succeeded; + log::debug!("Pair succeeded {:?}", self); + return true; } false } diff --git a/micro-rdk/src/common/webrtc/grpc.rs b/micro-rdk/src/common/webrtc/grpc.rs index f44bd1b8e..0ccc77970 100755 --- a/micro-rdk/src/common/webrtc/grpc.rs +++ b/micro-rdk/src/common/webrtc/grpc.rs @@ -248,12 +248,12 @@ where .streams .iter() .min_by(|a, b| { - a.1 .1 + a.1.1 .as_ref() .map_or(Duration::MAX, |i| { i.saturating_duration_since(Instant::now()) }) - .cmp(&b.1 .1.as_ref().map_or(Duration::MAX, |i| { + .cmp(&b.1.1.as_ref().map_or(Duration::MAX, |i| { i.saturating_duration_since(Instant::now()) })) }) diff --git a/micro-rdk/src/common/webrtc/ice.rs b/micro-rdk/src/common/webrtc/ice.rs index 1f943cae7..0a562f1a8 100755 --- a/micro-rdk/src/common/webrtc/ice.rs +++ b/micro-rdk/src/common/webrtc/ice.rs @@ -18,12 +18,11 @@ use rand::{ }; use stun_codec::{ - rfc5245, + Message, MessageClass, TransactionId, rfc5245, rfc5389::{self, methods::BINDING}, - Message, MessageClass, TransactionId, }; -use crate::{common::webrtc::candidates::CandidatePairState, IceAttribute}; +use crate::{IceAttribute, common::webrtc::candidates::CandidatePairState}; use super::{ api::AtomicSync, @@ -179,7 +178,10 @@ impl ICEAgent { let mut stun_ip = match "global.stun.twilio.com:3478".to_socket_addrs() { Ok(stun_ip) => stun_ip, Err(err) => { - log::warn!("Failed trying to resolve STUN server address; no reflexive candidate will be generated: {}", err); + log::warn!( + "Failed trying to resolve STUN server address; no reflexive candidate will be generated: {}", + err + ); return Ok(()); } }; @@ -187,7 +189,9 @@ impl ICEAgent { let stun_ip = match stun_ip.next() { Some(stun_ip) => stun_ip, None => { - log::warn!("STUN server address resolution found no records; no reflexive candidate will be generated"); + log::warn!( + "STUN server address resolution found no records; no reflexive candidate will be generated" + ); return Ok(()); } }; @@ -269,12 +273,11 @@ impl ICEAgent { } let req = self.next_stun_request(); - if let Some(req) = req { - if let Ok(msg) = self.make_stun_request(req.0) { - if self.transport.send_to(&msg, req.1.into()).await.is_err() { - break IceError::IceTransportClosed; - } - } + if let Some(req) = req + && let Ok(msg) = self.make_stun_request(req.0) + && self.transport.send_to(&msg, req.1.into()).await.is_err() + { + break IceError::IceTransportClosed; } let mut buf = BytesMut::zeroed(256); @@ -353,10 +356,10 @@ impl ICEAgent { match decoded.class() { MessageClass::Request => { log::debug!("processing a stun request"); - if let Ok(msg) = self.process_stun_request(&decoded, &addr) { - if self.transport.send_to(&msg, addr.into()).await.is_err() { - break IceError::IceTransportClosed; - } + if let Ok(msg) = self.process_stun_request(&decoded, &addr) + && self.transport.send_to(&msg, addr.into()).await.is_err() + { + break IceError::IceTransportClosed; } } MessageClass::SuccessResponse => { @@ -526,7 +529,9 @@ impl ICEAgent { { Some(idx) => idx, None => { - log::debug!("received a peer reflexive address, we are going to add it to our list of remote candidates"); + log::debug!( + "received a peer reflexive address, we are going to add it to our list of remote candidates" + ); let prio = stun .get_attribute::() .ok_or(IceError::IceInvalidStunMessage)? diff --git a/micro-rdk/src/common/webrtc/sctp.rs b/micro-rdk/src/common/webrtc/sctp.rs index 742aa46b4..f54003004 100755 --- a/micro-rdk/src/common/webrtc/sctp.rs +++ b/micro-rdk/src/common/webrtc/sctp.rs @@ -13,7 +13,7 @@ use async_channel::Sender; use bytes::Bytes; use thiserror::Error; -use futures_lite::{future::poll_fn, AsyncRead, AsyncReadExt, AsyncWrite, AsyncWriteExt}; +use futures_lite::{AsyncRead, AsyncReadExt, AsyncWrite, AsyncWriteExt, future::poll_fn}; use sctp_proto::{ Association, AssociationHandle, ClientConfig, DatagramEvent, Endpoint, EndpointConfig, Event, Payload, ServerConfig, StreamEvent, StreamId, Transmit, @@ -50,7 +50,7 @@ impl Channel { self.tx_event .send(SctpEvent::OutgoingStreamData((self.tx_stream_id, bytes))) .await - .map_err(|e| std::io::Error::new(std::io::ErrorKind::Other, e)) + .map_err(std::io::Error::other) } } @@ -359,12 +359,15 @@ where async fn process_endpoint_events(&mut self) -> Result<(), SctpError> { { let mut association = self.association.lock().unwrap(); - if let Some(endpoint) = association.poll_endpoint_event() { - if let Some(assoc_ev) = self.endpoint.handle_event(self.hnd, endpoint) { - association.handle_event(assoc_ev); - if let Err(e) = self.sctp_event_tx.try_send(SctpEvent::OutgoingData) { - log::error!("When processing an association event after an endpoint event couldn't submit event {:?}",e); - } + if let Some(endpoint) = association.poll_endpoint_event() + && let Some(assoc_ev) = self.endpoint.handle_event(self.hnd, endpoint) + { + association.handle_event(assoc_ev); + if let Err(e) = self.sctp_event_tx.try_send(SctpEvent::OutgoingData) { + log::error!( + "When processing an association event after an endpoint event couldn't submit event {:?}", + e + ); } } } @@ -508,9 +511,9 @@ mod tests { use crate::common::webrtc::sctp::SctpConnector; use async_io::{Async, Timer}; - use futures_lite::future::block_on; use futures_lite::AsyncReadExt; - use futures_lite::{ready, AsyncRead, AsyncWrite, Future}; + use futures_lite::future::block_on; + use futures_lite::{AsyncRead, AsyncWrite, Future, ready}; struct UdpStreamAdapter { inner: Arc>, @@ -543,10 +546,10 @@ mod tests { Err(e) if e.kind() == std::io::ErrorKind::WouldBlock => {} res => { let _ = self.readable.take(); - if let Ok(s) = &res { - if s.1 != self.peer { - continue; - } + if let Ok(s) = &res + && s.1 != self.peer + { + continue; } let res = res.map(|s| s.0); return Poll::Ready(res); diff --git a/micro-rdk/src/common/webrtc/signaling_server.rs b/micro-rdk/src/common/webrtc/signaling_server.rs index e5fe4a7ff..04ea0edb1 100644 --- a/micro-rdk/src/common/webrtc/signaling_server.rs +++ b/micro-rdk/src/common/webrtc/signaling_server.rs @@ -11,7 +11,7 @@ use crate::{ }, }; use async_channel::{RecvError, Sender}; -use base64::{engine::general_purpose, Engine}; +use base64::{Engine, engine::general_purpose}; use either::Either; use std::{collections::HashMap, io::Cursor, sync::Mutex}; use uuid::Uuid; diff --git a/micro-rdk/src/common/webrtc/udp_mux.rs b/micro-rdk/src/common/webrtc/udp_mux.rs index a3cb83510..84e1398b3 100644 --- a/micro-rdk/src/common/webrtc/udp_mux.rs +++ b/micro-rdk/src/common/webrtc/udp_mux.rs @@ -9,7 +9,7 @@ use std::{ use async_io::{Async, Readable}; -use futures_lite::{ready, AsyncRead, AsyncWrite, Future, FutureExt}; +use futures_lite::{AsyncRead, AsyncWrite, Future, FutureExt, ready}; #[derive(Clone, Copy, PartialEq)] #[allow(clippy::upper_case_acronyms)] @@ -336,10 +336,7 @@ impl AsyncWrite for UdpMux { if let Some(peer_addr) = self.peer_addr { Pin::new(&mut self.muxer).poll_send_to(cx, buf, peer_addr) } else { - Poll::Ready(Err(std::io::Error::new( - std::io::ErrorKind::Other, - "no peer set", - ))) + Poll::Ready(Err(std::io::Error::other("no peer set"))) } } fn poll_close(self: Pin<&mut Self>, _cx: &mut Context<'_>) -> Poll> { diff --git a/micro-rdk/src/common/wheeled_base.rs b/micro-rdk/src/common/wheeled_base.rs index 9765dd817..f5173ff14 100644 --- a/micro-rdk/src/common/wheeled_base.rs +++ b/micro-rdk/src/common/wheeled_base.rs @@ -1,7 +1,7 @@ use super::actuator::{Actuator, ActuatorError}; use super::base::{Base, BaseError, BaseType, COMPONENT_NAME as BaseCompName}; use super::config::ConfigType; -use super::motor::{Motor, MotorType, COMPONENT_NAME as MotorCompName}; +use super::motor::{COMPONENT_NAME as MotorCompName, Motor, MotorType}; use super::registry::{ComponentRegistry, Dependency, ResourceKey}; use super::robot::Resource; use crate::proto::common::v1::Vector3; diff --git a/micro-rdk/src/esp32/board.rs b/micro-rdk/src/esp32/board.rs index 9235af445..6e17d2fce 100755 --- a/micro-rdk/src/esp32/board.rs +++ b/micro-rdk/src/esp32/board.rs @@ -26,12 +26,12 @@ use super::analog::Esp32AnalogReader; // TODO(RSDK-10188): Update to ESP-IDF ADC API #[cfg(esp32)] use crate::esp32::esp_idf_svc::hal::adc::{ + ADC1, attenuation::DB_11, oneshot::{ - config::{AdcChannelConfig, Calibration}, AdcChannelDriver, AdcDriver, + config::{AdcChannelConfig, Calibration}, }, - ADC1, }; use crate::common::board::InterruptType; diff --git a/micro-rdk/src/esp32/certificate.rs b/micro-rdk/src/esp32/certificate.rs index 5240a7784..48605fcce 100644 --- a/micro-rdk/src/esp32/certificate.rs +++ b/micro-rdk/src/esp32/certificate.rs @@ -1,11 +1,12 @@ use std::{ - ffi::{c_void, CStr, CString}, + ffi::{CStr, CString, c_void}, fmt::{Debug, Display}, mem::MaybeUninit, }; use chrono::{NaiveDate, NaiveDateTime}; use esp_idf_svc::sys::{ + MBEDTLS_ERR_PK_BAD_INPUT_DATA, MBEDTLS_X509_CRT_VERSION_3, SHA_TYPE_SHA2_256, mbedtls_ctr_drbg_context, mbedtls_ctr_drbg_free, mbedtls_ctr_drbg_init, mbedtls_ctr_drbg_random, mbedtls_ctr_drbg_seed, mbedtls_ecp_gen_key, mbedtls_ecp_group_id_MBEDTLS_ECP_DP_SECP256R1, mbedtls_ecp_keypair, mbedtls_entropy_context, @@ -18,7 +19,6 @@ use esp_idf_svc::sys::{ mbedtls_x509write_crt_set_md_alg, mbedtls_x509write_crt_set_serial_raw, mbedtls_x509write_crt_set_subject_key, mbedtls_x509write_crt_set_subject_name, mbedtls_x509write_crt_set_validity, mbedtls_x509write_crt_set_version, - MBEDTLS_ERR_PK_BAD_INPUT_DATA, MBEDTLS_X509_CRT_VERSION_3, SHA_TYPE_SHA2_256, }; use crate::common::webrtc::certificate::{Certificate, Fingerprint}; @@ -111,7 +111,7 @@ impl Debug for MbedTLSError { // TODO consider moving this function in it's own rust wrapper to be reused elsewhere // or patch esp-idf-sys upstream to expose it via the bindings -extern "C" { +unsafe extern "C" { fn esp_sha(sha_type: esp_idf_svc::sys::SHA_TYPE, input: *const u8, len: usize, output: *mut u8); } diff --git a/micro-rdk/src/esp32/conn/network.rs b/micro-rdk/src/esp32/conn/network.rs index 3be95102c..db47c4125 100644 --- a/micro-rdk/src/esp32/conn/network.rs +++ b/micro-rdk/src/esp32/conn/network.rs @@ -7,8 +7,8 @@ use std::{ net::Ipv4Addr, ops::{Index, IndexMut}, sync::{ - atomic::{AtomicBool, AtomicU32, Ordering}, Arc, + atomic::{AtomicBool, AtomicU32, Ordering}, }, }; use { @@ -221,21 +221,19 @@ impl Esp32WifiNetwork { reason, ); - if let Ok(wifi) = esp32_get_wifi() { - if let Some(mut wifi_guard) = wifi.try_lock() { - let wifi_mut = wifi_guard.wifi_mut(); - if let Err(err) = wifi_mut.connect() { - let ssid = wifi_mut - .get_configuration() - .map_or("".to_owned(), |c| { - c.as_client_conf_ref().unwrap().ssid.to_string() - }); - log::error!( - "could not connect to WiFi `{}` cause : {:?}", - ssid, - err - ); - } + if let Ok(wifi) = esp32_get_wifi() && let Some(mut wifi_guard) = wifi.try_lock() { + let wifi_mut = wifi_guard.wifi_mut(); + if let Err(err) = wifi_mut.connect() { + let ssid = wifi_mut + .get_configuration() + .map_or("".to_owned(), |c| { + c.as_client_conf_ref().unwrap().ssid.to_string() + }); + log::error!( + "could not connect to WiFi `{}` cause : {:?}", + ssid, + err + ); } } } @@ -629,14 +627,15 @@ impl Esp32ExternallyManagedNetwork { ev_id: i32, ev_data: *mut std::ffi::c_void, ) { - let data: &mut Esp32ExternallyManagerNetworkInner = &mut *(ev_hnd_arg as *mut _); + let data: &mut Esp32ExternallyManagerNetworkInner = unsafe { &mut *(ev_hnd_arg as *mut _) }; let ev_id = ev_id as u32; - if ev_base == esp_idf_svc::sys::IP_EVENT { + if ev_base == unsafe { esp_idf_svc::sys::IP_EVENT } { // receiving an IP_EVENT is the only event that can transition us to connected state if ev_id == esp_idf_svc::sys::ip_event_t_IP_EVENT_STA_GOT_IP || ev_id == esp_idf_svc::sys::ip_event_t_IP_EVENT_ETH_GOT_IP { - let ip_event: &mut esp_idf_svc::sys::ip_event_got_ip_t = &mut *(ev_data as *mut _); + let ip_event: &mut esp_idf_svc::sys::ip_event_got_ip_t = + unsafe { &mut *(ev_data as *mut _) }; if ip_event.ip_changed { data.ipv4.store(ip_event.ip_info.ip.addr, Ordering::Release); } @@ -648,13 +647,13 @@ impl Esp32ExternallyManagedNetwork { data.connected.store(false, Ordering::Release); } } - if ev_base == esp_idf_svc::sys::WIFI_EVENT + if ev_base == unsafe { esp_idf_svc::sys::WIFI_EVENT } && ev_id == esp_idf_svc::sys::wifi_event_t_WIFI_EVENT_STA_DISCONNECTED { data.connected.store(false, Ordering::Release); } - if ev_base == esp_idf_svc::sys::ETH_EVENT + if ev_base == unsafe { esp_idf_svc::sys::ETH_EVENT } && ev_id == esp_idf_svc::sys::eth_event_t_ETHERNET_EVENT_DISCONNECTED { data.connected.store(false, Ordering::Release); diff --git a/micro-rdk/src/esp32/coredump.rs b/micro-rdk/src/esp32/coredump.rs index 1104c3cfd..b98c3a144 100644 --- a/micro-rdk/src/esp32/coredump.rs +++ b/micro-rdk/src/esp32/coredump.rs @@ -3,7 +3,7 @@ use std::{ sync::{Arc, Mutex}, }; -use base64::{engine::general_purpose::STANDARD, Engine as _}; +use base64::{Engine as _, engine::general_purpose::STANDARD}; use bytes::BytesMut; use esp_idf_svc::sys::{ esp_partition_erase_range, esp_partition_find_first, esp_partition_read, @@ -18,7 +18,7 @@ use crate::{ registry::{ComponentRegistry, Dependency}, sensor::{GenericReadingsResult, Readings, Sensor, SensorError, SensorType}, }, - google::protobuf::{self, value::Kind, Struct, Value}, + google::protobuf::{self, Struct, Value, value::Kind}, }; pub struct Coredump { diff --git a/micro-rdk/src/esp32/dtls.rs b/micro-rdk/src/esp32/dtls.rs index af0c114fd..03dfc3cd3 100755 --- a/micro-rdk/src/esp32/dtls.rs +++ b/micro-rdk/src/esp32/dtls.rs @@ -20,25 +20,26 @@ use crate::{ }; use crate::esp32::esp_idf_svc::sys::{ - mbedtls_ctr_drbg_context, mbedtls_ctr_drbg_free, mbedtls_ctr_drbg_init, - mbedtls_ctr_drbg_random, mbedtls_ctr_drbg_seed, mbedtls_entropy_context, mbedtls_entropy_free, - mbedtls_entropy_func, mbedtls_entropy_init, mbedtls_pk_context, mbedtls_pk_free, - mbedtls_pk_init, mbedtls_pk_parse_key, mbedtls_ssl_conf_ca_chain, mbedtls_ssl_conf_dbg, - mbedtls_ssl_conf_dtls_cookies, mbedtls_ssl_conf_dtls_srtp_protection_profiles, - mbedtls_ssl_conf_handshake_timeout, mbedtls_ssl_conf_own_cert, mbedtls_ssl_conf_rng, - mbedtls_ssl_config, mbedtls_ssl_config_defaults, mbedtls_ssl_config_free, - mbedtls_ssl_config_init, mbedtls_ssl_context, mbedtls_ssl_free, mbedtls_ssl_handshake, - mbedtls_ssl_init, mbedtls_ssl_read, mbedtls_ssl_set_bio, mbedtls_ssl_set_timer_cb, - mbedtls_ssl_setup, mbedtls_ssl_write, mbedtls_x509_crt, mbedtls_x509_crt_free, - mbedtls_x509_crt_init, mbedtls_x509_crt_parse_der, MBEDTLS_ERR_SSL_PEER_CLOSE_NOTIFY, - MBEDTLS_ERR_SSL_TIMEOUT, MBEDTLS_ERR_SSL_WANT_READ, MBEDTLS_ERR_SSL_WANT_WRITE, - MBEDTLS_SSL_IS_SERVER, MBEDTLS_SSL_PRESET_DEFAULT, MBEDTLS_SSL_TRANSPORT_DATAGRAM, + MBEDTLS_ERR_SSL_PEER_CLOSE_NOTIFY, MBEDTLS_ERR_SSL_TIMEOUT, MBEDTLS_ERR_SSL_WANT_READ, + MBEDTLS_ERR_SSL_WANT_WRITE, MBEDTLS_SSL_IS_SERVER, MBEDTLS_SSL_PRESET_DEFAULT, + MBEDTLS_SSL_TRANSPORT_DATAGRAM, mbedtls_ctr_drbg_context, mbedtls_ctr_drbg_free, + mbedtls_ctr_drbg_init, mbedtls_ctr_drbg_random, mbedtls_ctr_drbg_seed, mbedtls_entropy_context, + mbedtls_entropy_free, mbedtls_entropy_func, mbedtls_entropy_init, mbedtls_pk_context, + mbedtls_pk_free, mbedtls_pk_init, mbedtls_pk_parse_key, mbedtls_ssl_conf_ca_chain, + mbedtls_ssl_conf_dbg, mbedtls_ssl_conf_dtls_cookies, + mbedtls_ssl_conf_dtls_srtp_protection_profiles, mbedtls_ssl_conf_handshake_timeout, + mbedtls_ssl_conf_own_cert, mbedtls_ssl_conf_rng, mbedtls_ssl_config, + mbedtls_ssl_config_defaults, mbedtls_ssl_config_free, mbedtls_ssl_config_init, + mbedtls_ssl_context, mbedtls_ssl_free, mbedtls_ssl_handshake, mbedtls_ssl_init, + mbedtls_ssl_read, mbedtls_ssl_set_bio, mbedtls_ssl_set_timer_cb, mbedtls_ssl_setup, + mbedtls_ssl_write, mbedtls_x509_crt, mbedtls_x509_crt_free, mbedtls_x509_crt_init, + mbedtls_x509_crt_parse_der, }; use async_io::Timer; use core::ffi::CStr; use esp_idf_svc::sys::esp_tls_get_ssl_context; use futures_lite::{AsyncRead, AsyncWrite, Future}; -use log::{log, Level}; +use log::{Level, log}; use thiserror::Error; use super::tcp::Esp32TLSContext; @@ -48,7 +49,7 @@ use super::tcp::Esp32TLSContext; const MBEDTLS_ERR_NET_SEND_FAILED: i32 = -0x4E; const MBEDTLS_ERR_NET_RECV_FAILED: i32 = -0x4C; -extern "C" { +unsafe extern "C" { fn mbedtls_debug_set_threshold(level: c_int); } @@ -57,9 +58,9 @@ unsafe extern "C" fn mbedtls_net_write( buf: *const c_uchar, len: usize, ) -> c_int { - let state = SSLStreamInner::::from_raw(ctx); + let state = unsafe { SSLStreamInner::::from_raw(ctx) }; - let buf = std::slice::from_raw_parts(buf as *const _, len); + let buf = unsafe { std::slice::from_raw_parts(buf as *const _, len) }; match state.write(buf) { Ok(len) => len as c_int, @@ -78,12 +79,12 @@ unsafe extern "C" fn mbedtls_net_read( buf: *mut c_uchar, len: usize, ) -> c_int { - let state = SSLStreamInner::::from_raw(ctx); + let state = unsafe { SSLStreamInner::::from_raw(ctx) }; // we would never want to timeout in this scenario so make sure we cancel any // running timers state.reset_read_timeout(); - let buf = std::slice::from_raw_parts_mut(buf as *mut _, len); + let buf = unsafe { std::slice::from_raw_parts_mut(buf as *mut _, len) }; match state.read(buf) { Ok(len) => len as c_int, @@ -104,13 +105,13 @@ unsafe extern "C" fn mbedtls_net_read_with_timeout( len: usize, timeout: c_uint, ) -> c_int { - let state = SSLStreamInner::::from_raw(ctx); + let state = unsafe { SSLStreamInner::::from_raw(ctx) }; if timeout > 0 { state.set_read_timeout(timeout); } else { state.reset_read_timeout(); } - let buf = std::slice::from_raw_parts_mut(buf as *mut _, len); + let buf = unsafe { std::slice::from_raw_parts_mut(buf as *mut _, len) }; match state.read(buf) { Ok(len) => { // if operation succeed cancel running timeout @@ -177,7 +178,7 @@ impl Esp32DtlsDelay { let _ = self.intermediate.insert(intermediate); let _ = self.fin.insert(fin); self.state = DelayState::Intermediate; - let _ = std::mem::replace(&mut self.timer, Some(Timer::at(intermediate))); + let _ = self.timer.replace(Timer::at(intermediate)); } fn poll_delay(&mut self, cx: &mut Context<'_>) { let timer = self.timer.take(); @@ -560,8 +561,7 @@ where } fn get_inner_mut(&mut self) -> &mut SSLStreamInner { - let state = unsafe { SSLStreamInner::::from_raw(self.bio_ptr) }; - state + unsafe { SSLStreamInner::::from_raw(self.bio_ptr) } } fn handshake(&mut self) -> Result<(), SSLError> { @@ -639,7 +639,7 @@ where } } _ => { - return Err(io::Error::new(io::ErrorKind::Other, e)); + return Err(io::Error::other(e)); } }, } @@ -679,7 +679,7 @@ where } } _ => { - return Err(io::Error::new(io::ErrorKind::Other, e)); + return Err(io::Error::other(e)); } }, } @@ -699,14 +699,13 @@ struct SSLStreamInner { } impl SSLStreamInner { unsafe fn from_raw<'a>(ctx: *mut c_void) -> &'a mut Self { - &mut *(ctx as *mut _) + unsafe { &mut *(ctx as *mut _) } } fn set_read_timeout(&mut self, timeout_ms: u32) { if self.timeout.is_none() { - let _ = std::mem::replace( - &mut self.timeout, - Some(Timer::after(Duration::from_millis(timeout_ms.into()))), - ); + let _ = self + .timeout + .replace(Timer::after(Duration::from_millis(timeout_ms.into()))); } } fn reset_read_timeout(&mut self) { @@ -730,9 +729,11 @@ where impl SSLStreamInner { unsafe fn as_parts(&mut self) -> (Pin<&mut S>, &mut Context<'_>) { debug_assert!(self.context.is_some()); - let c = &mut *(self.context.unwrap() as *mut Context); - let s = Pin::new_unchecked(&mut self.stream); - (s, c) + unsafe { + let c = &mut *(self.context.unwrap() as *mut Context); + let s = Pin::new_unchecked(&mut self.stream); + (s, c) + } } } diff --git a/micro-rdk/src/esp32/encoder.rs b/micro-rdk/src/esp32/encoder.rs index 053cd5e6b..d3b8c755f 100644 --- a/micro-rdk/src/esp32/encoder.rs +++ b/micro-rdk/src/esp32/encoder.rs @@ -11,7 +11,7 @@ use crate::esp32::esp_idf_svc::sys::pcnt_channel_t_PCNT_CHANNEL_1 as pcnt_channe use crate::esp32::esp_idf_svc::sys::pcnt_config_t; use crate::esp32::esp_idf_svc::sys::pcnt_evt_type_t_PCNT_EVT_H_LIM as pcnt_evt_h_lim; use crate::esp32::esp_idf_svc::sys::pcnt_evt_type_t_PCNT_EVT_L_LIM as pcnt_evt_l_lim; -use crate::esp32::esp_idf_svc::sys::{esp, ESP_OK}; +use crate::esp32::esp_idf_svc::sys::{ESP_OK, esp}; use core::ffi::{c_short, c_ulong}; use std::sync::atomic::{AtomicI32, Ordering}; @@ -236,14 +236,16 @@ where Ok(()) } #[inline(always)] - #[link_section = ".iram1.pcnt_srv"] + #[unsafe(link_section = ".iram1.pcnt_srv")] unsafe extern "C" fn irq_handler(arg: *mut core::ffi::c_void) { - let arg: &mut PulseStorage = &mut *(arg as *mut _); + let arg: &mut PulseStorage = unsafe { &mut *(arg as *mut _) }; let mut status = 0; - crate::esp32::esp_idf_svc::sys::pcnt_get_event_status( - arg.unit, - &mut status as *mut c_ulong, - ); + unsafe { + crate::esp32::esp_idf_svc::sys::pcnt_get_event_status( + arg.unit, + &mut status as *mut c_ulong, + ) + }; if status & pcnt_evt_h_lim != 0 { arg.acc.fetch_add(1, Ordering::Relaxed); } diff --git a/micro-rdk/src/esp32/hcsr04.rs b/micro-rdk/src/esp32/hcsr04.rs index 65b4657df..c1644d59a 100644 --- a/micro-rdk/src/esp32/hcsr04.rs +++ b/micro-rdk/src/esp32/hcsr04.rs @@ -41,13 +41,14 @@ use std::{ collections::HashMap, num::NonZeroU32, sync::{ - atomic::{AtomicU32, Ordering}, Arc, Mutex, + atomic::{AtomicU32, Ordering}, }, time::Duration, }; use crate::{ + DoCommand, common::{ board::InterruptType, config::{AttributeError, ConfigType}, @@ -57,7 +58,6 @@ use crate::{ SensorType, TypedReadingsResult, }, }, - DoCommand, }; use crate::esp32::esp_idf_svc::hal::{ @@ -211,10 +211,10 @@ impl HCSR04Sensor { } #[inline(always)] - #[link_section = ".iram1.intr_srv"] + #[unsafe(link_section = ".iram1.intr_srv")] unsafe extern "C" fn subscription_interrupt(arg: *mut core::ffi::c_void) { - let arg: &mut IsrSharedState = &mut *(arg as *mut _); - let when = crate::esp32::esp_idf_svc::sys::esp_timer_get_time() as u32; + let arg: &mut IsrSharedState = unsafe { &mut *(arg as *mut _) }; + let when = unsafe { crate::esp32::esp_idf_svc::sys::esp_timer_get_time() as u32 }; match arg .timestamp .compare_exchange(0, when, Ordering::AcqRel, Ordering::Acquire) @@ -231,7 +231,7 @@ impl HCSR04Sensor { // If prior > when delta will equal 0 let delta = when.saturating_sub(prior); if let Some(nz) = NonZeroU32::new(delta) { - arg.notifier.notify_and_yield(nz); + unsafe { arg.notifier.notify_and_yield(nz) }; } } } diff --git a/micro-rdk/src/esp32/i2c.rs b/micro-rdk/src/esp32/i2c.rs index a4f6f9b49..7889393d6 100755 --- a/micro-rdk/src/esp32/i2c.rs +++ b/micro-rdk/src/esp32/i2c.rs @@ -4,7 +4,7 @@ use crate::common::config::{AttributeError, Kind}; use crate::common::i2c::{I2CErrors, I2CHandle}; use crate::esp32::esp_idf_svc::hal::delay::BLOCK; use crate::esp32::esp_idf_svc::hal::gpio::AnyIOPin; -use crate::esp32::esp_idf_svc::hal::i2c::{I2cConfig, I2cDriver, I2C0}; +use crate::esp32::esp_idf_svc::hal::i2c::{I2C0, I2cConfig, I2cDriver}; use crate::esp32::esp_idf_svc::hal::units::Hertz; #[cfg(not(any(esp32c3, esp32c2, esp32c6)))] diff --git a/micro-rdk/src/esp32/log.rs b/micro-rdk/src/esp32/log.rs index 5baf4e354..f0fbe4fa2 100644 --- a/micro-rdk/src/esp32/log.rs +++ b/micro-rdk/src/esp32/log.rs @@ -8,8 +8,8 @@ //! The capture of ESP-IDF logs is only available with the "esp-idf-logs" feature. #[cfg(feature = "esp-idf-logs")] use crate::{ - common::log::{get_log_buffer, ViamLogEntry}, - google::protobuf::{value::Kind, Struct, Value}, + common::log::{ViamLogEntry, get_log_buffer}, + google::protobuf::{Struct, Value, value::Kind}, proto::common::v1::LogEntry, }; diff --git a/micro-rdk/src/esp32/nvs_storage.rs b/micro-rdk/src/esp32/nvs_storage.rs index 7e210e8b7..4f3803588 100644 --- a/micro-rdk/src/esp32/nvs_storage.rs +++ b/micro-rdk/src/esp32/nvs_storage.rs @@ -1,6 +1,6 @@ #![allow(dead_code)] use bytes::Bytes; -use hyper::{http::uri::InvalidUri, Uri}; +use hyper::{Uri, http::uri::InvalidUri}; use prost::Message; use std::{cell::RefCell, rc::Rc}; use thiserror::Error; @@ -17,7 +17,7 @@ use crate::{ esp32::esp_idf_svc::{ handle::RawHandle, nvs::{EspCustomNvs, EspCustomNvsPartition, EspNvs}, - sys::{esp, nvs_get_stats, nvs_stats_t, EspError}, + sys::{EspError, esp, nvs_get_stats, nvs_stats_t}, }, proto::{app::v1::RobotConfig, provisioning::v1::CloudConfig}, }; diff --git a/micro-rdk/src/esp32/pin.rs b/micro-rdk/src/esp32/pin.rs index edb169252..00dee871f 100644 --- a/micro-rdk/src/esp32/pin.rs +++ b/micro-rdk/src/esp32/pin.rs @@ -4,12 +4,12 @@ use crate::esp32::esp_idf_svc::hal::gpio::{ AnyIOPin, InputOutput, InterruptType, Pin, PinDriver, Pull, }; use crate::esp32::esp_idf_svc::sys::{ - esp, gpio_install_isr_service, gpio_isr_handler_add, gpio_isr_t, ESP_INTR_FLAG_IRAM, - SOC_GPIO_VALID_OUTPUT_GPIO_MASK, + ESP_INTR_FLAG_IRAM, SOC_GPIO_VALID_OUTPUT_GPIO_MASK, esp, gpio_install_isr_service, + gpio_isr_handler_add, gpio_isr_t, }; use once_cell::sync::{Lazy, OnceCell}; -use std::sync::atomic::{AtomicU32, Ordering}; use std::sync::Arc; +use std::sync::atomic::{AtomicU32, Ordering}; pub trait PinExt { fn pin(&self) -> i32; @@ -221,9 +221,9 @@ impl Esp32GPIOPin { } #[inline(always)] - #[link_section = ".iram1.intr_srv"] + #[unsafe(link_section = ".iram1.intr_srv")] pub(crate) unsafe extern "C" fn default_interrupt(arg: *mut core::ffi::c_void) { - let arg: &mut Arc = &mut *(arg as *mut _); + let arg: &mut Arc = unsafe { &mut *(arg as *mut _) }; arg.fetch_add(1, Ordering::Relaxed); } } diff --git a/micro-rdk/src/esp32/pulse_counter.rs b/micro-rdk/src/esp32/pulse_counter.rs index 87890555f..694c4dc73 100644 --- a/micro-rdk/src/esp32/pulse_counter.rs +++ b/micro-rdk/src/esp32/pulse_counter.rs @@ -1,10 +1,10 @@ use crate::common::encoder::EncoderError; use crate::esp32::esp_idf_svc::sys::{ - pcnt_isr_service_install, pcnt_isr_service_uninstall, ESP_OK, + ESP_OK, pcnt_isr_service_install, pcnt_isr_service_uninstall, }; use std::sync::{ - atomic::{AtomicBool, AtomicI32, AtomicU32, Ordering}, Arc, LazyLock, + atomic::{AtomicBool, AtomicI32, AtomicU32, Ordering}, }; /* diff --git a/micro-rdk/src/esp32/pwm.rs b/micro-rdk/src/esp32/pwm.rs index 5b50f0499..3c83bf3b2 100644 --- a/micro-rdk/src/esp32/pwm.rs +++ b/micro-rdk/src/esp32/pwm.rs @@ -1,16 +1,16 @@ use crate::esp32::esp_idf_svc::hal::gpio::AnyIOPin; use crate::esp32::esp_idf_svc::hal::gpio::Pin; use crate::esp32::esp_idf_svc::hal::ledc::{ - config::TimerConfig, LedcDriver, LedcTimer, LedcTimerDriver, LowSpeed, SpeedMode, CHANNEL0, - CHANNEL1, CHANNEL2, CHANNEL3, CHANNEL4, CHANNEL5, TIMER0, TIMER1, TIMER2, TIMER3, + CHANNEL0, CHANNEL1, CHANNEL2, CHANNEL3, CHANNEL4, CHANNEL5, LedcDriver, LedcTimer, + LedcTimerDriver, LowSpeed, SpeedMode, TIMER0, TIMER1, TIMER2, TIMER3, config::TimerConfig, }; use crate::esp32::esp_idf_svc::hal::peripheral::Peripheral; use crate::esp32::esp_idf_svc::hal::prelude::FromValueType; use crate::esp32::esp_idf_svc::sys::{ - ledc_bind_channel_timer, ledc_get_freq, ledc_timer_t, EspError, + EspError, ledc_bind_channel_timer, ledc_get_freq, ledc_timer_t, }; -use bitfield::{bitfield, Bit, BitMut}; +use bitfield::{Bit, BitMut, bitfield}; use once_cell::sync::Lazy; use std::cell::OnceCell; use std::fmt::Debug; diff --git a/micro-rdk/src/esp32/single_encoder.rs b/micro-rdk/src/esp32/single_encoder.rs index dca88c7f2..d524f45f4 100644 --- a/micro-rdk/src/esp32/single_encoder.rs +++ b/micro-rdk/src/esp32/single_encoder.rs @@ -18,7 +18,7 @@ use crate::esp32::esp_idf_svc::sys::pcnt_channel_t_PCNT_CHANNEL_0 as pcnt_channe use crate::esp32::esp_idf_svc::sys::pcnt_config_t; use crate::esp32::esp_idf_svc::sys::pcnt_evt_type_t_PCNT_EVT_H_LIM as pcnt_evt_h_lim; use crate::esp32::esp_idf_svc::sys::pcnt_evt_type_t_PCNT_EVT_L_LIM as pcnt_evt_l_lim; -use crate::esp32::esp_idf_svc::sys::{esp, ESP_OK}; +use crate::esp32::esp_idf_svc::sys::{ESP_OK, esp}; use core::ffi::{c_short, c_ulong}; use std::sync::atomic::{AtomicBool, AtomicI32, Ordering}; @@ -222,14 +222,16 @@ impl Esp32SingleEncoder { } #[inline(always)] - #[link_section = ".iram1.pcnt_srv"] + #[unsafe(link_section = ".iram1.pcnt_srv")] unsafe extern "C" fn irq_handler(arg: *mut core::ffi::c_void) { - let arg: &mut PulseStorage = &mut *(arg as *mut _); + let arg: &mut PulseStorage = unsafe { &mut *(arg as *mut _) }; let mut status = 0; - crate::esp32::esp_idf_svc::sys::pcnt_get_event_status( - arg.unit, - &mut status as *mut c_ulong, - ); + unsafe { + crate::esp32::esp_idf_svc::sys::pcnt_get_event_status( + arg.unit, + &mut status as *mut c_ulong, + ) + }; if arg.moving_forwards.load(Ordering::Relaxed) { if status & pcnt_evt_h_lim != 0 { arg.acc.fetch_add(1, Ordering::SeqCst); diff --git a/micro-rdk/src/esp32/tcp.rs b/micro-rdk/src/esp32/tcp.rs index 6a74583a9..bad8c44d3 100644 --- a/micro-rdk/src/esp32/tcp.rs +++ b/micro-rdk/src/esp32/tcp.rs @@ -2,14 +2,14 @@ use crate::common::conn::viam::{HTTP2Stream, IntoHttp2Stream, ViamH2Connector}; use async_io::Async; use esp_idf_svc::sys::{ - esp, esp_crt_bundle_attach, esp_tls_cfg, esp_tls_cfg_server, esp_tls_conn_destroy, + EspError, esp, esp_crt_bundle_attach, esp_tls_cfg, esp_tls_cfg_server, esp_tls_conn_destroy, esp_tls_get_ssl_context, esp_tls_init, esp_tls_server_session_create, esp_tls_t, - mbedtls_ssl_conf_read_timeout, mbedtls_ssl_config, mbedtls_ssl_context, EspError, + mbedtls_ssl_conf_read_timeout, mbedtls_ssl_config, mbedtls_ssl_context, }; use futures_lite::FutureExt; -use futures_lite::{ready, AsyncRead, AsyncWrite, Future}; -use hyper::{rt, Uri}; -use std::ffi::{c_char, c_void, CString}; +use futures_lite::{AsyncRead, AsyncWrite, Future, ready}; +use hyper::{Uri, rt}; +use std::ffi::{CString, c_char, c_void}; use std::mem::{self, MaybeUninit}; use std::ops::Deref; @@ -23,7 +23,7 @@ use std::{ use super::dtls::{AsyncSSLStream, SSLContext, SSLError}; -extern "C" { +unsafe extern "C" { fn esp_create_mbedtls_handle( hostname: *const c_char, hostlen: i32, @@ -40,10 +40,7 @@ impl Esp32TLSContext { pub(crate) fn new() -> Result { let p = unsafe { esp_tls_init() }; if p.is_null() { - return Err(std::io::Error::new( - std::io::ErrorKind::Other, - "couldn't allocate tls context", - )); + return Err(std::io::Error::other("couldn't allocate tls context")); } Ok(Self(p)) } @@ -212,7 +209,7 @@ where *tls_context )) } - .map_err(|err| std::io::Error::new(std::io::ErrorKind::Other, err))?; + .map_err(std::io::Error::other)?; let io = AsyncSSLStream::new(SSLContext::Esp32TLSContext(tls_context), stream).unwrap(); Ok(Self { @@ -328,7 +325,7 @@ where cfg.get_cfg_ptr() as *const c_void, *tls_context )) - .map_err(|err| std::io::Error::new(std::io::ErrorKind::Other, err))? + .map_err(std::io::Error::other)? }; unsafe { @@ -488,7 +485,7 @@ impl Future for Esp32StreamConnector { fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { let result: Self::Output = futures_lite::ready!(self.0.poll(cx)) .map(|r| Box::new(Esp32Stream::TLSStream(r.into())) as Box) - .map_err(|err| std::io::Error::new(std::io::ErrorKind::Other, err)); + .map_err(std::io::Error::other); Poll::Ready(result) } @@ -501,7 +498,7 @@ impl Future for Esp32StreamAcceptor { fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { let result: Self::Output = futures_lite::ready!(self.0.poll(cx)) .map(|r| Box::new(Esp32Stream::TLSStream(r.into())) as Box) - .map_err(|err| std::io::Error::new(std::io::ErrorKind::Other, err)); + .map_err(std::io::Error::other); Poll::Ready(result) } diff --git a/micro-rdk/src/esp32/utils.rs b/micro-rdk/src/esp32/utils.rs index c3df6765c..1cc562740 100755 --- a/micro-rdk/src/esp32/utils.rs +++ b/micro-rdk/src/esp32/utils.rs @@ -7,7 +7,7 @@ macro_rules! esp32_print_heap_summary { #[cfg(debug_assertions)] { use $crate::esp32::esp_idf_svc::sys::{ - heap_caps_get_free_size, heap_caps_get_total_size, MALLOC_CAP_8BIT, + MALLOC_CAP_8BIT, heap_caps_get_free_size, heap_caps_get_total_size, }; let total = unsafe { heap_caps_get_total_size(MALLOC_CAP_8BIT) }; let free = unsafe { heap_caps_get_free_size(MALLOC_CAP_8BIT) }; @@ -22,8 +22,8 @@ macro_rules! esp32_print_heap_internal_summary { #[cfg(debug_assertions)] { use $crate::esp32::esp_idf_svc::sys::{ - heap_caps_get_free_size, heap_caps_get_total_size, MALLOC_CAP_8BIT, - MALLOC_CAP_INTERNAL, + MALLOC_CAP_8BIT, MALLOC_CAP_INTERNAL, heap_caps_get_free_size, + heap_caps_get_total_size, }; let total = unsafe { heap_caps_get_total_size(MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT) }; let free = unsafe { heap_caps_get_free_size(MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT) }; @@ -38,8 +38,8 @@ macro_rules! esp32_print_heap_spiram_summary { #[cfg(debug_assertions)] { use $crate::esp32::esp_idf_svc::sys::{ - heap_caps_get_free_size, heap_caps_get_total_size, MALLOC_CAP_8BIT, - MALLOC_CAP_SPIRAM, + MALLOC_CAP_8BIT, MALLOC_CAP_SPIRAM, heap_caps_get_free_size, + heap_caps_get_total_size, }; let total = unsafe { heap_caps_get_total_size(MALLOC_CAP_SPIRAM | MALLOC_CAP_8BIT) }; let free = unsafe { heap_caps_get_free_size(MALLOC_CAP_SPIRAM | MALLOC_CAP_8BIT) }; diff --git a/micro-rdk/src/gen/google.protobuf.rs b/micro-rdk/src/gen/google.protobuf.rs index 7050cd634..eb441ada1 100644 --- a/micro-rdk/src/gen/google.protobuf.rs +++ b/micro-rdk/src/gen/google.protobuf.rs @@ -134,6 +134,11 @@ pub struct SourceContext { pub file_name: ::prost::alloc::string::String, } /// A protocol buffer message type. +/// +/// New usages of this message as an alternative to DescriptorProto are strongly +/// discouraged. This message does not reliability preserve all information +/// necessary to model the schema and preserve semantics. Instead make use of +/// FileDescriptorSet which preserves the necessary information. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct Type { @@ -160,6 +165,11 @@ pub struct Type { pub edition: ::prost::alloc::string::String, } /// A single field of a message type. +/// +/// New usages of this message as an alternative to FieldDescriptorProto are +/// strongly discouraged. This message does not reliability preserve all +/// information necessary to model the schema and preserve semantics. Instead +/// make use of FileDescriptorSet which preserves the necessary information. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct Field { @@ -334,6 +344,11 @@ pub mod field { } } /// Enum type definition. +/// +/// New usages of this message as an alternative to EnumDescriptorProto are +/// strongly discouraged. This message does not reliability preserve all +/// information necessary to model the schema and preserve semantics. Instead +/// make use of FileDescriptorSet which preserves the necessary information. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct Enum { @@ -357,6 +372,11 @@ pub struct Enum { pub edition: ::prost::alloc::string::String, } /// Enum value definition. +/// +/// New usages of this message as an alternative to EnumValueDescriptorProto are +/// strongly discouraged. This message does not reliability preserve all +/// information necessary to model the schema and preserve semantics. Instead +/// make use of FileDescriptorSet which preserves the necessary information. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct EnumValue { @@ -372,6 +392,10 @@ pub struct EnumValue { } /// A protocol buffer option, which can be attached to a message, field, /// enumeration, etc. +/// +/// New usages of this message as an alternative to FileOptions, MessageOptions, +/// FieldOptions, EnumOptions, EnumValueOptions, ServiceOptions, or MethodOptions +/// are strongly discouraged. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct Option { @@ -430,6 +454,11 @@ impl Syntax { /// sometimes simply referred to as "APIs" in other contexts, such as the name of /// this message itself. See for /// detailed terminology. +/// +/// New usages of this message as an alternative to ServiceDescriptorProto are +/// strongly discouraged. This message does not reliability preserve all +/// information necessary to model the schema and preserve semantics. Instead +/// make use of FileDescriptorSet which preserves the necessary information. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct Api { @@ -475,8 +504,16 @@ pub struct Api { /// The source syntax of the service. #[prost(enumeration="Syntax", tag="7")] pub syntax: i32, + /// The source edition string, only valid when syntax is SYNTAX_EDITIONS. + #[prost(string, tag="8")] + pub edition: ::prost::alloc::string::String, } /// Method represents a method of an API interface. +/// +/// New usages of this message as an alternative to MethodDescriptorProto are +/// strongly discouraged. This message does not reliability preserve all +/// information necessary to model the schema and preserve semantics. Instead +/// make use of FileDescriptorSet which preserves the necessary information. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct Method { @@ -499,8 +536,19 @@ pub struct Method { #[prost(message, repeated, tag="6")] pub options: ::prost::alloc::vec::Vec