diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..9d3c24b --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,9 @@ +# Set update schedule for GitHub Actions +version: 2 +updates: + + - package-ecosystem: "github-actions" + directory: "/" + schedule: + # Check for updates to GitHub Actions every week + interval: "weekly" diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 10c35cd..999088e 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -10,7 +10,7 @@ permissions: contents: read env: - # We don't need every tool in the manifest for CI. + # We don't need every tool in the manifest for CI, we specify the ones we need in each job. MISE_TASK_RUN_AUTO_INSTALL: "false" jobs: @@ -20,7 +20,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Install system dependencies run: | @@ -28,7 +28,7 @@ jobs: sudo apt-get install --yes build-essential - name: Set up mise - uses: jdx/mise-action@c2a87611a18de5b3828c5652fe268e992400cb5c + uses: jdx/mise-action@c2a87611a18de5b3828c5652fe268e992400cb5c # v4.3.0 with: install_args: aqua:Kitware/CMake @@ -36,7 +36,7 @@ jobs: run: mise run test lint: - name: Cppcheck + name: cppcheck runs-on: ubuntu-latest env: @@ -44,12 +44,12 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: submodules: recursive - name: Set up mise - uses: jdx/mise-action@c2a87611a18de5b3828c5652fe268e992400cb5c + uses: jdx/mise-action@c2a87611a18de5b3828c5652fe268e992400cb5c # v4.3.0 with: install_args: >- aqua:Kitware/CMake @@ -57,4 +57,21 @@ jobs: vfox:jdx/vfox-gcc-arm-none-eabi - name: Run cppcheck - run: mise run lint \ No newline at end of file + run: mise run lint + + format: + name: clang-format + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + + - name: Set up mise + uses: jdx/mise-action@c2a87611a18de5b3828c5652fe268e992400cb5c # v4.3.0 + with: + install_args: >- + clang-format + + - name: Check formatting + run: mise run format:check \ No newline at end of file diff --git a/README.md b/README.md index c124d0d..9903ec0 100644 --- a/README.md +++ b/README.md @@ -120,6 +120,18 @@ To reset the device: mise run reset ``` +To format the C application code with `clang-format`: + +```sh +mise run reset +``` + +To lint the C application code with `cppcheck`: + +```sh +mise run lint +``` + ### Debugging To debug the firmware, first build it with the debug preset, then install the probe-rs vscode diff --git a/mise.lock b/mise.lock index d7638b9..59fd54e 100644 --- a/mise.lock +++ b/mise.lock @@ -34,6 +34,10 @@ checksum = "sha256:0a0544cf95f64394fe4959286f5c71f5444ad58feb0602e53becb27448d24 url = "https://conda.anaconda.org/conda-forge/linux-aarch64/cairo-1.18.4-hca320e2_3.conda" checksum = "sha256:1ac3088ec4ec12b401cd3095dbd178b29651e99bfd25d0a85400624037735d91" +[conda-packages.linux-arm64."clang-format-23-23.1.2-default_h01b09c7_0"] +url = "https://conda.anaconda.org/conda-forge/linux-aarch64/clang-format-23-23.1.2-default_h01b09c7_0.conda" +checksum = "sha256:16c6f21ae3de358156afb9290130485809c252ffd5b7bfd9b236a7bbade69244" + [conda-packages.linux-arm64."dbus-1.16.2-h71d469a_2"] url = "https://conda.anaconda.org/conda-forge/linux-aarch64/dbus-1.16.2-h71d469a_2.conda" checksum = "sha256:d35726cb8b091a239c96d631bdf4286455393e3274266f7102109a68c69c12f9" @@ -126,6 +130,10 @@ checksum = "sha256:2c4901f4227b0850328ed0c69f958b30ad2cd18982f7a31c7c1f911827004 url = "https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.2.0-h52b7260_0.conda" checksum = "sha256:0176a71d64fcb5aec43c9e8ab4ae72faa6c6b0b1cda8f40b65e19429ce13c84d" +[conda-packages.linux-arm64."libclang-cpp23.1-23.1.2-default_h01b09c7_0"] +url = "https://conda.anaconda.org/conda-forge/linux-aarch64/libclang-cpp23.1-23.1.2-default_h01b09c7_0.conda" +checksum = "sha256:9b0ced8d10de3dd1cc8271779dd1603b6168ee2384b0fa79ac7743a1ea0ae47c" + [conda-packages.linux-arm64."libcups-2.3.3-h4f2b762_6"] url = "https://conda.anaconda.org/conda-forge/linux-aarch64/libcups-2.3.3-h4f2b762_6.conda" checksum = "sha256:41b04f995c9f63af8c4065a35931e46cbc2fdd6b9bf7e4c19f90d53cbb2bc8e5" @@ -170,6 +178,10 @@ checksum = "sha256:d29eac57042f2362d4e45c63a4a78d64a30e5284b1da29b99e0c1526671dd url = "https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-16.2.0-h205dda4_4.conda" checksum = "sha256:a132d78d49d0fa0a08e9e2a77528a12d974e8e123bc32895c0bd0a737b8abd89" +[conda-packages.linux-arm64."libgcc-16.2.0-h205dda4_7"] +url = "https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-16.2.0-h205dda4_7.conda" +checksum = "sha256:eae7a3449d5a3b5351c5427137c076cc3fc826645c7bfc42dc10772b783826f1" + [conda-packages.linux-arm64."libgcc-ng-16.2.0-he9431aa_4"] url = "https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-16.2.0-he9431aa_4.conda" checksum = "sha256:e8643044040dd8aa88aee26c19e6b78bbbe0ce8a4d04b1c77ee53c71a1efd814" @@ -206,6 +218,10 @@ checksum = "sha256:5dcc18e1d8985fca5357df1da7f484bb9816ad4dfbf37f52e41e50c7dd2ac url = "https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-16.2.0-h8acb6b2_4.conda" checksum = "sha256:6d216e6dc9a158b920f6e0c1dfdd6d77575bf79420dadf85d64576298ecb4503" +[conda-packages.linux-arm64."libgomp-16.2.0-h8acb6b2_7"] +url = "https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-16.2.0-h8acb6b2_7.conda" +checksum = "sha256:4406fd67c5beeb99b9372f9bf07aa3e40ca141e337eceebac3ff64aa72799494" + [conda-packages.linux-arm64."libharfbuzz-14.4.0-h8f7ccb3_1"] url = "https://conda.anaconda.org/conda-forge/linux-aarch64/libharfbuzz-14.4.0-h8f7ccb3_1.conda" checksum = "sha256:7a27b4011455fef1bbad02f815aaac125348a3a9ac229806dba7befead38376c" @@ -222,6 +238,10 @@ checksum = "sha256:d22c666eb887afd2119aac2110e23a0e817e9391bda99293421f7c46dab15 url = "https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.2.0-he30d5cf_1.conda" checksum = "sha256:c5626ea672be2e59784f9be20dc8ceb7961b8ab0053651ded2dffec64e4b8245" +[conda-packages.linux-arm64."libllvm23-23.1.2-h680871c_0"] +url = "https://conda.anaconda.org/conda-forge/linux-aarch64/libllvm23-23.1.2-h680871c_0.conda" +checksum = "sha256:9b7820c041aeebea33d738a917c185ae554b6b89e2491e83e64f9a2fe675f88c" + [conda-packages.linux-arm64."liblzma-5.8.3-he30d5cf_1"] url = "https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.8.3-he30d5cf_1.conda" checksum = "sha256:f760669fd1cea27f689f411c0d5488e26ce50e382c9b63e4ad348f959850124a" @@ -254,6 +274,10 @@ checksum = "sha256:fae75e68e9dbc3c90dcf93d4bae6315f1330c95aaf1404a721e8468266c23 url = "https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-16.2.0-hef695bb_4.conda" checksum = "sha256:84d2b667bce6549325243235952110b1849ff2dfd7091a1479108930b88057d5" +[conda-packages.linux-arm64."libstdcxx-16.2.0-hef695bb_7"] +url = "https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-16.2.0-hef695bb_7.conda" +checksum = "sha256:b241a3acfa9cdb1359112864a1241225533c92642de3000d52ae65ef5d3a9786" + [conda-packages.linux-arm64."libstdcxx-ng-16.2.0-hdbbeba8_4"] url = "https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-16.2.0-hdbbeba8_4.conda" checksum = "sha256:0f962247a60d3e0ae07b399063ac637a44fbdcb95c8602e5d2920c6612e53f01" @@ -458,6 +482,10 @@ checksum = "sha256:0a0544cf95f64394fe4959286f5c71f5444ad58feb0602e53becb27448d24 url = "https://conda.anaconda.org/conda-forge/linux-aarch64/cairo-1.18.4-hca320e2_3.conda" checksum = "sha256:1ac3088ec4ec12b401cd3095dbd178b29651e99bfd25d0a85400624037735d91" +[conda-packages.linux-arm64-musl."clang-format-23-23.1.2-default_h01b09c7_0"] +url = "https://conda.anaconda.org/conda-forge/linux-aarch64/clang-format-23-23.1.2-default_h01b09c7_0.conda" +checksum = "sha256:16c6f21ae3de358156afb9290130485809c252ffd5b7bfd9b236a7bbade69244" + [conda-packages.linux-arm64-musl."dbus-1.16.2-h71d469a_2"] url = "https://conda.anaconda.org/conda-forge/linux-aarch64/dbus-1.16.2-h71d469a_2.conda" checksum = "sha256:d35726cb8b091a239c96d631bdf4286455393e3274266f7102109a68c69c12f9" @@ -550,6 +578,10 @@ checksum = "sha256:2c4901f4227b0850328ed0c69f958b30ad2cd18982f7a31c7c1f911827004 url = "https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.2.0-h52b7260_0.conda" checksum = "sha256:0176a71d64fcb5aec43c9e8ab4ae72faa6c6b0b1cda8f40b65e19429ce13c84d" +[conda-packages.linux-arm64-musl."libclang-cpp23.1-23.1.2-default_h01b09c7_0"] +url = "https://conda.anaconda.org/conda-forge/linux-aarch64/libclang-cpp23.1-23.1.2-default_h01b09c7_0.conda" +checksum = "sha256:9b0ced8d10de3dd1cc8271779dd1603b6168ee2384b0fa79ac7743a1ea0ae47c" + [conda-packages.linux-arm64-musl."libcups-2.3.3-h4f2b762_6"] url = "https://conda.anaconda.org/conda-forge/linux-aarch64/libcups-2.3.3-h4f2b762_6.conda" checksum = "sha256:41b04f995c9f63af8c4065a35931e46cbc2fdd6b9bf7e4c19f90d53cbb2bc8e5" @@ -594,6 +626,10 @@ checksum = "sha256:d29eac57042f2362d4e45c63a4a78d64a30e5284b1da29b99e0c1526671dd url = "https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-16.2.0-h205dda4_4.conda" checksum = "sha256:a132d78d49d0fa0a08e9e2a77528a12d974e8e123bc32895c0bd0a737b8abd89" +[conda-packages.linux-arm64-musl."libgcc-16.2.0-h205dda4_7"] +url = "https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-16.2.0-h205dda4_7.conda" +checksum = "sha256:eae7a3449d5a3b5351c5427137c076cc3fc826645c7bfc42dc10772b783826f1" + [conda-packages.linux-arm64-musl."libgcc-ng-16.2.0-he9431aa_4"] url = "https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-16.2.0-he9431aa_4.conda" checksum = "sha256:e8643044040dd8aa88aee26c19e6b78bbbe0ce8a4d04b1c77ee53c71a1efd814" @@ -630,6 +666,10 @@ checksum = "sha256:5dcc18e1d8985fca5357df1da7f484bb9816ad4dfbf37f52e41e50c7dd2ac url = "https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-16.2.0-h8acb6b2_4.conda" checksum = "sha256:6d216e6dc9a158b920f6e0c1dfdd6d77575bf79420dadf85d64576298ecb4503" +[conda-packages.linux-arm64-musl."libgomp-16.2.0-h8acb6b2_7"] +url = "https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-16.2.0-h8acb6b2_7.conda" +checksum = "sha256:4406fd67c5beeb99b9372f9bf07aa3e40ca141e337eceebac3ff64aa72799494" + [conda-packages.linux-arm64-musl."libharfbuzz-14.4.0-h8f7ccb3_1"] url = "https://conda.anaconda.org/conda-forge/linux-aarch64/libharfbuzz-14.4.0-h8f7ccb3_1.conda" checksum = "sha256:7a27b4011455fef1bbad02f815aaac125348a3a9ac229806dba7befead38376c" @@ -646,6 +686,10 @@ checksum = "sha256:d22c666eb887afd2119aac2110e23a0e817e9391bda99293421f7c46dab15 url = "https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.2.0-he30d5cf_1.conda" checksum = "sha256:c5626ea672be2e59784f9be20dc8ceb7961b8ab0053651ded2dffec64e4b8245" +[conda-packages.linux-arm64-musl."libllvm23-23.1.2-h680871c_0"] +url = "https://conda.anaconda.org/conda-forge/linux-aarch64/libllvm23-23.1.2-h680871c_0.conda" +checksum = "sha256:9b7820c041aeebea33d738a917c185ae554b6b89e2491e83e64f9a2fe675f88c" + [conda-packages.linux-arm64-musl."liblzma-5.8.3-he30d5cf_1"] url = "https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.8.3-he30d5cf_1.conda" checksum = "sha256:f760669fd1cea27f689f411c0d5488e26ce50e382c9b63e4ad348f959850124a" @@ -678,6 +722,10 @@ checksum = "sha256:fae75e68e9dbc3c90dcf93d4bae6315f1330c95aaf1404a721e8468266c23 url = "https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-16.2.0-hef695bb_4.conda" checksum = "sha256:84d2b667bce6549325243235952110b1849ff2dfd7091a1479108930b88057d5" +[conda-packages.linux-arm64-musl."libstdcxx-16.2.0-hef695bb_7"] +url = "https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-16.2.0-hef695bb_7.conda" +checksum = "sha256:b241a3acfa9cdb1359112864a1241225533c92642de3000d52ae65ef5d3a9786" + [conda-packages.linux-arm64-musl."libstdcxx-ng-16.2.0-hdbbeba8_4"] url = "https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-16.2.0-hdbbeba8_4.conda" checksum = "sha256:0f962247a60d3e0ae07b399063ac637a44fbdcb95c8602e5d2920c6612e53f01" @@ -882,6 +930,10 @@ checksum = "sha256:0a0544cf95f64394fe4959286f5c71f5444ad58feb0602e53becb27448d24 url = "https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3c89d7e_3.conda" checksum = "sha256:6b551d9346997bc4c6fadf96b7b92442b8f3244011cc462e4ee77afc714d52c5" +[conda-packages.linux-x64."clang-format-23-23.1.2-default_h0acdd01_0"] +url = "https://conda.anaconda.org/conda-forge/linux-64/clang-format-23-23.1.2-default_h0acdd01_0.conda" +checksum = "sha256:9197253eb34cce59ea2377ade9c99cc3fffd87e5e303a36799bb672197bff42c" + [conda-packages.linux-x64."dbus-1.16.2-he8c428d_2"] url = "https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-he8c428d_2.conda" checksum = "sha256:87a0a42d4ccc527597eff3234509dfb03e0d9bf67d5e2b6fc758e2ef389d8abe" @@ -974,6 +1026,10 @@ checksum = "sha256:27d83f1188cd19bcb7754a078b3fa7f4cfb8527f8eb2fde54dd01fc529d1a url = "https://conda.anaconda.org/conda-forge/linux-64/lerc-4.2.0-hdb68285_0.conda" checksum = "sha256:bf9fdebf55d8bc99d83531cdffda00703f4dc5f93a1a956768c147362c72feda" +[conda-packages.linux-x64."libclang-cpp23.1-23.1.2-default_h0acdd01_0"] +url = "https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp23.1-23.1.2-default_h0acdd01_0.conda" +checksum = "sha256:49156155d4f0ab4f479bc96d24db2c48c0b6bdb5659135c194f03c289ae2c523" + [conda-packages.linux-x64."libcups-2.3.3-h7a8fb5f_6"] url = "https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h7a8fb5f_6.conda" checksum = "sha256:205c4f19550f3647832ec44e35e6d93c8c206782bdd620c1d7cf66237580ff9c" @@ -1018,6 +1074,10 @@ checksum = "sha256:ec607dd5445dd17ff6bf8b7fe6832e5504c226dd91d3aaea7ba83569808b0 url = "https://conda.anaconda.org/conda-forge/linux-64/libgcc-16.2.0-ha9f2e26_4.conda" checksum = "sha256:24090e675d34403b4ee1cd4372d8f6c0937da7ecfd66a19a57cac2ed0f4ea793" +[conda-packages.linux-x64."libgcc-16.2.0-ha9f2e26_7"] +url = "https://conda.anaconda.org/conda-forge/linux-64/libgcc-16.2.0-ha9f2e26_7.conda" +checksum = "sha256:e031634c3a928f9594eba868bc46ef5230d6571a364a0c63215b06c4563bfcea" + [conda-packages.linux-x64."libgcc-ng-16.2.0-h69a702a_4"] url = "https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-16.2.0-h69a702a_4.conda" checksum = "sha256:d8e66c14e23f2b3c70410cff5979d9d357e6edfb990b28d8e630852f4d395629" @@ -1054,6 +1114,10 @@ checksum = "sha256:aff3841e3404d78e1887fef988ca4842930c577399d566fa0980808756b1d url = "https://conda.anaconda.org/conda-forge/linux-64/libgomp-16.2.0-he0feb66_4.conda" checksum = "sha256:0fe5cb8e0752241ab55e11656ed1b9726248b522d23b929fe7c95b83eb55b9bb" +[conda-packages.linux-x64."libgomp-16.2.0-he0feb66_7"] +url = "https://conda.anaconda.org/conda-forge/linux-64/libgomp-16.2.0-he0feb66_7.conda" +checksum = "sha256:92a0bb350c7be6a4eedcb4e111c60aefd176018e6b1c009a6e025dbe9bbcd758" + [conda-packages.linux-x64."libharfbuzz-14.4.0-h23af247_1"] url = "https://conda.anaconda.org/conda-forge/linux-64/libharfbuzz-14.4.0-h23af247_1.conda" checksum = "sha256:979b14ba13054aab9e90363809aac470a58b7c37203c330216327356a98c8f60" @@ -1070,6 +1134,10 @@ checksum = "sha256:f943117edb9cd4d9c61cc972eee5a34291dc55ea7a6e9e38da104995841cb url = "https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.2.0-hb03c661_1.conda" checksum = "sha256:bba8538e6538ed58a8479b332337b96986561f975d06cfa2039a016c2d246ee4" +[conda-packages.linux-x64."libllvm23-23.1.2-h474f4eb_0"] +url = "https://conda.anaconda.org/conda-forge/linux-64/libllvm23-23.1.2-h474f4eb_0.conda" +checksum = "sha256:253a11a58756a3584c72c625752fb6ccf0a8885815f3e911f05731cfc24ea0ed" + [conda-packages.linux-x64."liblzma-5.8.3-hb03c661_1"] url = "https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_1.conda" checksum = "sha256:9787df8c22a59c9a70d3e5a10db9ad663485e75e9ccc3f09bd092cb7b95e0dab" @@ -1102,6 +1170,10 @@ checksum = "sha256:f20d70da54e5b31dd4a51fb1efeaafafd5ab6dd8d7ac9d1438eaa2526ac4e url = "https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-16.2.0-h934c35e_4.conda" checksum = "sha256:40b792b0186c1e8859280a1f6f19a54fc50a11b32724fc7b637009c1a9bd302b" +[conda-packages.linux-x64."libstdcxx-16.2.0-h934c35e_7"] +url = "https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-16.2.0-h934c35e_7.conda" +checksum = "sha256:fa7018298629fc429971fffd6ecba3d27a7b02e4e890d6a93ea01ffebe8cb745" + [conda-packages.linux-x64."libstdcxx-ng-16.2.0-hdf11a46_4"] url = "https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-16.2.0-hdf11a46_4.conda" checksum = "sha256:4cdebd87b76cf53a58a08ebd6d15336daa79c5f0aa34d83a895ac503c0203632" @@ -1126,6 +1198,10 @@ checksum = "sha256:7b49e6fd2a584b7f072943e6adf4149677af5121246975278804782d37752 url = "https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.13.2-h51789e4_1.conda" checksum = "sha256:d44878d396713ccf3b355df617f61c40a1442fffcf134392bc6ce0e6c2219369" +[conda-packages.linux-x64."libxml2-16-2.15.4-hbdfff7e_0"] +url = "https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.4-hbdfff7e_0.conda" +checksum = "sha256:b6f96287c408269f5067bb4f7a61693ff5c856152902362964d9807152b9c146" + [conda-packages.linux-x64."libxml2-16-2.15.4-hf3af7cc_0"] url = "https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.4-hf3af7cc_0.conda" checksum = "sha256:9a1685c8d8b8488cd7882a9cd6e673e687211ca763ebbcd1e91b6f594eeadc45" @@ -1134,6 +1210,10 @@ checksum = "sha256:9a1685c8d8b8488cd7882a9cd6e673e687211ca763ebbcd1e91b6f594eead url = "https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.4-h7df9aa5_0.conda" checksum = "sha256:053d85821ce5e36b7ce03faea5930382f6af695df9e2cd68e5d8d273072d1551" +[conda-packages.linux-x64."libxml2-2.15.4-ha7a5771_0"] +url = "https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.4-ha7a5771_0.conda" +checksum = "sha256:db52c038430a508656530fc7b5650ae3e2629875693a6a256cc48dec203f8bfe" + [conda-packages.linux-x64."libzlib-1.3.2-h25fd6f3_3"] url = "https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_3.conda" checksum = "sha256:eb8a0db0aa570124f7d2a93d7c7f596e3390df5e047818d873baad32985fc736" @@ -1306,6 +1386,10 @@ checksum = "sha256:0a0544cf95f64394fe4959286f5c71f5444ad58feb0602e53becb27448d24 url = "https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3c89d7e_3.conda" checksum = "sha256:6b551d9346997bc4c6fadf96b7b92442b8f3244011cc462e4ee77afc714d52c5" +[conda-packages.linux-x64-musl."clang-format-23-23.1.2-default_h0acdd01_0"] +url = "https://conda.anaconda.org/conda-forge/linux-64/clang-format-23-23.1.2-default_h0acdd01_0.conda" +checksum = "sha256:9197253eb34cce59ea2377ade9c99cc3fffd87e5e303a36799bb672197bff42c" + [conda-packages.linux-x64-musl."dbus-1.16.2-he8c428d_2"] url = "https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-he8c428d_2.conda" checksum = "sha256:87a0a42d4ccc527597eff3234509dfb03e0d9bf67d5e2b6fc758e2ef389d8abe" @@ -1398,6 +1482,10 @@ checksum = "sha256:27d83f1188cd19bcb7754a078b3fa7f4cfb8527f8eb2fde54dd01fc529d1a url = "https://conda.anaconda.org/conda-forge/linux-64/lerc-4.2.0-hdb68285_0.conda" checksum = "sha256:bf9fdebf55d8bc99d83531cdffda00703f4dc5f93a1a956768c147362c72feda" +[conda-packages.linux-x64-musl."libclang-cpp23.1-23.1.2-default_h0acdd01_0"] +url = "https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp23.1-23.1.2-default_h0acdd01_0.conda" +checksum = "sha256:49156155d4f0ab4f479bc96d24db2c48c0b6bdb5659135c194f03c289ae2c523" + [conda-packages.linux-x64-musl."libcups-2.3.3-h7a8fb5f_6"] url = "https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h7a8fb5f_6.conda" checksum = "sha256:205c4f19550f3647832ec44e35e6d93c8c206782bdd620c1d7cf66237580ff9c" @@ -1442,6 +1530,10 @@ checksum = "sha256:ec607dd5445dd17ff6bf8b7fe6832e5504c226dd91d3aaea7ba83569808b0 url = "https://conda.anaconda.org/conda-forge/linux-64/libgcc-16.2.0-ha9f2e26_4.conda" checksum = "sha256:24090e675d34403b4ee1cd4372d8f6c0937da7ecfd66a19a57cac2ed0f4ea793" +[conda-packages.linux-x64-musl."libgcc-16.2.0-ha9f2e26_7"] +url = "https://conda.anaconda.org/conda-forge/linux-64/libgcc-16.2.0-ha9f2e26_7.conda" +checksum = "sha256:e031634c3a928f9594eba868bc46ef5230d6571a364a0c63215b06c4563bfcea" + [conda-packages.linux-x64-musl."libgcc-ng-16.2.0-h69a702a_4"] url = "https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-16.2.0-h69a702a_4.conda" checksum = "sha256:d8e66c14e23f2b3c70410cff5979d9d357e6edfb990b28d8e630852f4d395629" @@ -1478,6 +1570,10 @@ checksum = "sha256:aff3841e3404d78e1887fef988ca4842930c577399d566fa0980808756b1d url = "https://conda.anaconda.org/conda-forge/linux-64/libgomp-16.2.0-he0feb66_4.conda" checksum = "sha256:0fe5cb8e0752241ab55e11656ed1b9726248b522d23b929fe7c95b83eb55b9bb" +[conda-packages.linux-x64-musl."libgomp-16.2.0-he0feb66_7"] +url = "https://conda.anaconda.org/conda-forge/linux-64/libgomp-16.2.0-he0feb66_7.conda" +checksum = "sha256:92a0bb350c7be6a4eedcb4e111c60aefd176018e6b1c009a6e025dbe9bbcd758" + [conda-packages.linux-x64-musl."libharfbuzz-14.4.0-h23af247_1"] url = "https://conda.anaconda.org/conda-forge/linux-64/libharfbuzz-14.4.0-h23af247_1.conda" checksum = "sha256:979b14ba13054aab9e90363809aac470a58b7c37203c330216327356a98c8f60" @@ -1494,6 +1590,10 @@ checksum = "sha256:f943117edb9cd4d9c61cc972eee5a34291dc55ea7a6e9e38da104995841cb url = "https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.2.0-hb03c661_1.conda" checksum = "sha256:bba8538e6538ed58a8479b332337b96986561f975d06cfa2039a016c2d246ee4" +[conda-packages.linux-x64-musl."libllvm23-23.1.2-h474f4eb_0"] +url = "https://conda.anaconda.org/conda-forge/linux-64/libllvm23-23.1.2-h474f4eb_0.conda" +checksum = "sha256:253a11a58756a3584c72c625752fb6ccf0a8885815f3e911f05731cfc24ea0ed" + [conda-packages.linux-x64-musl."liblzma-5.8.3-hb03c661_1"] url = "https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_1.conda" checksum = "sha256:9787df8c22a59c9a70d3e5a10db9ad663485e75e9ccc3f09bd092cb7b95e0dab" @@ -1526,6 +1626,10 @@ checksum = "sha256:f20d70da54e5b31dd4a51fb1efeaafafd5ab6dd8d7ac9d1438eaa2526ac4e url = "https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-16.2.0-h934c35e_4.conda" checksum = "sha256:40b792b0186c1e8859280a1f6f19a54fc50a11b32724fc7b637009c1a9bd302b" +[conda-packages.linux-x64-musl."libstdcxx-16.2.0-h934c35e_7"] +url = "https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-16.2.0-h934c35e_7.conda" +checksum = "sha256:fa7018298629fc429971fffd6ecba3d27a7b02e4e890d6a93ea01ffebe8cb745" + [conda-packages.linux-x64-musl."libstdcxx-ng-16.2.0-hdf11a46_4"] url = "https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-16.2.0-hdf11a46_4.conda" checksum = "sha256:4cdebd87b76cf53a58a08ebd6d15336daa79c5f0aa34d83a895ac503c0203632" @@ -1550,6 +1654,10 @@ checksum = "sha256:7b49e6fd2a584b7f072943e6adf4149677af5121246975278804782d37752 url = "https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.13.2-h51789e4_1.conda" checksum = "sha256:d44878d396713ccf3b355df617f61c40a1442fffcf134392bc6ce0e6c2219369" +[conda-packages.linux-x64-musl."libxml2-16-2.15.4-hbdfff7e_0"] +url = "https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.4-hbdfff7e_0.conda" +checksum = "sha256:b6f96287c408269f5067bb4f7a61693ff5c856152902362964d9807152b9c146" + [conda-packages.linux-x64-musl."libxml2-16-2.15.4-hf3af7cc_0"] url = "https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.4-hf3af7cc_0.conda" checksum = "sha256:9a1685c8d8b8488cd7882a9cd6e673e687211ca763ebbcd1e91b6f594eeadc45" @@ -1558,6 +1666,10 @@ checksum = "sha256:9a1685c8d8b8488cd7882a9cd6e673e687211ca763ebbcd1e91b6f594eead url = "https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.4-h7df9aa5_0.conda" checksum = "sha256:053d85821ce5e36b7ce03faea5930382f6af695df9e2cd68e5d8d273072d1551" +[conda-packages.linux-x64-musl."libxml2-2.15.4-ha7a5771_0"] +url = "https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.4-ha7a5771_0.conda" +checksum = "sha256:db52c038430a508656530fc7b5650ae3e2629875693a6a256cc48dec203f8bfe" + [conda-packages.linux-x64-musl."libzlib-1.3.2-h25fd6f3_3"] url = "https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_3.conda" checksum = "sha256:eb8a0db0aa570124f7d2a93d7c7f596e3390df5e047818d873baad32985fc736" @@ -1718,6 +1830,10 @@ checksum = "sha256:0a0544cf95f64394fe4959286f5c71f5444ad58feb0602e53becb27448d24 url = "https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-h580cee5_3.conda" checksum = "sha256:07f86bbc50ff910689afdd8a417df6e329646b9424343f3202e32efda9e08acf" +[conda-packages.macos-arm64."clang-format-23-23.1.2-default_h79071a4_0"] +url = "https://conda.anaconda.org/conda-forge/osx-arm64/clang-format-23-23.1.2-default_h79071a4_0.conda" +checksum = "sha256:c3e71811d7fcb94f845bd816b6fc321fbb916136062890cbbc0cede88f7c686b" + [conda-packages.macos-arm64."epoxy-1.5.10-hc919400_2"] url = "https://conda.anaconda.org/conda-forge/osx-arm64/epoxy-1.5.10-hc919400_2.conda" checksum = "sha256:ba685b87529c95a4bf9de140a33d703d57dc46b036e9586ed26890de65c1c0d5" @@ -1794,10 +1910,18 @@ checksum = "sha256:6cdb5dee54c72e56ab189fb3ad33cb28533553d42590e7e831160248f4416 url = "https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.2.0-h1eee2c3_0.conda" checksum = "sha256:c97aa17d16d2ac332ba9f184e82ce8f72dcb10e9a10c5f299030be2d44e191b9" +[conda-packages.macos-arm64."libclang-cpp23.1-23.1.2-default_h79071a4_0"] +url = "https://conda.anaconda.org/conda-forge/osx-arm64/libclang-cpp23.1-23.1.2-default_h79071a4_0.conda" +checksum = "sha256:7a176b6dda75f39184cc96b548fa436581451547bb185c610627a9b6dca05ca8" + [conda-packages.macos-arm64."libcxx-23.1.1-h55c6f16_0"] url = "https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-23.1.1-h55c6f16_0.conda" checksum = "sha256:3f902803f0fc2643a4f82ff15a06811d974ff5fb6fa8f957720a7ef84e13ad98" +[conda-packages.macos-arm64."libcxx-23.1.2-h55c6f16_0"] +url = "https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-23.1.2-h55c6f16_0.conda" +checksum = "sha256:087a610bacee7901d259ef72c6f060d795ab26831bd7541ba75ced786a5a63f9" + [conda-packages.macos-arm64."libdeflate-1.25-he7e0567_1"] url = "https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.25-he7e0567_1.conda" checksum = "sha256:d896f4aa4ce4c590c2838678cb1917356fdb461d2a189991c0280c818c362172" @@ -1846,6 +1970,10 @@ checksum = "sha256:99d2cebcd8f84961b86784451b010f5f0a795ed1c08f1e7c76fbb3c22abf0 url = "https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.2.0-h84a0fba_1.conda" checksum = "sha256:05006418f9392c9b723e8428808db106de0350a497832f95f921b85ff1072310" +[conda-packages.macos-arm64."libllvm23-23.1.2-h759d1ac_0"] +url = "https://conda.anaconda.org/conda-forge/osx-arm64/libllvm23-23.1.2-h759d1ac_0.conda" +checksum = "sha256:9717b7ae514600cebeb43ea89bf008bef6e96fbbefa1dda40843c394f2b6a46e" + [conda-packages.macos-arm64."liblzma-5.8.3-h8088a28_1"] url = "https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.3-h8088a28_1.conda" checksum = "sha256:23d0630046a3e8b164d8f80f2b74ed2605af2e7050ab9913018056402fae4311" @@ -1882,6 +2010,10 @@ checksum = "sha256:0ff54650d470c7e54cbeffdd53a8c063e055a7bcf784388c0385ce5c4741b url = "https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-16-2.15.4-heb56d2d_0.conda" checksum = "sha256:8a26f7c94ab849c1930da36c298f4b82e892382b70ae865cd7274188d9d783e2" +[conda-packages.macos-arm64."libxml2-2.15.4-h550178d_0"] +url = "https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.15.4-h550178d_0.conda" +checksum = "sha256:81217fcd4d4abdc69ee63cdb9cdb22e05a20b9ba7a76f596579914a838fe5960" + [conda-packages.macos-arm64."libzlib-1.3.2-h8088a28_3"] url = "https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.2-h8088a28_3.conda" checksum = "sha256:a18fa5d5bac452401459f966cf0d872224e8080c4ff93c77e168d43ab42ef9d7" @@ -1962,6 +2094,10 @@ checksum = "sha256:0a0544cf95f64394fe4959286f5c71f5444ad58feb0602e53becb27448d24 url = "https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h5791faa_3.conda" checksum = "sha256:5374addae2ecd2e429084d59d0aaeb6794b6c3c97b1f9084115af73b2a6490f7" +[conda-packages.macos-x64."clang-format-23-23.1.2-default_h6e863b9_0"] +url = "https://conda.anaconda.org/conda-forge/osx-64/clang-format-23-23.1.2-default_h6e863b9_0.conda" +checksum = "sha256:7a5c7348a1232bce113c7dbd65b7ee09d94848791a49b0d6ffb799f49320072a" + [conda-packages.macos-x64."epoxy-1.5.10-h8616949_2"] url = "https://conda.anaconda.org/conda-forge/osx-64/epoxy-1.5.10-h8616949_2.conda" checksum = "sha256:d5c466bddf423a788ce5c39af20af41ebaf3de9dc9e807098fc9bf45c3c7db45" @@ -2038,10 +2174,18 @@ checksum = "sha256:3abd86f3441f143b6b3203c92ae0d88dd8396a8857940af468f1fab854cda url = "https://conda.anaconda.org/conda-forge/osx-64/lerc-4.2.0-h35c7297_0.conda" checksum = "sha256:5ae9e18ec7f8134a009765bd1454687d5057482fbe9a4c661a672746d4a29b0b" +[conda-packages.macos-x64."libclang-cpp23.1-23.1.2-default_h6e863b9_0"] +url = "https://conda.anaconda.org/conda-forge/osx-64/libclang-cpp23.1-23.1.2-default_h6e863b9_0.conda" +checksum = "sha256:491c85fac38f91060802761e59e3a1505ee738ed2849504e8d0f3ecf0c520537" + [conda-packages.macos-x64."libcxx-23.1.1-h19cb2f5_0"] url = "https://conda.anaconda.org/conda-forge/osx-64/libcxx-23.1.1-h19cb2f5_0.conda" checksum = "sha256:b702c638bb8f0c6f0a5dd6941e77ca2309b73cd4e575d34b4c5b8e4d01996ccc" +[conda-packages.macos-x64."libcxx-23.1.2-h19cb2f5_0"] +url = "https://conda.anaconda.org/conda-forge/osx-64/libcxx-23.1.2-h19cb2f5_0.conda" +checksum = "sha256:0ad8c788c3681674f100820cf5e76fcc8ec88502e7aa64f4776581985009a7be" + [conda-packages.macos-x64."libdeflate-1.25-h7ad9622_1"] url = "https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.25-h7ad9622_1.conda" checksum = "sha256:210ee1d6a5aa201cf6d02b10edd02738cc35a4e8fb0866e4fb425010d6dd2c49" @@ -2090,6 +2234,10 @@ checksum = "sha256:8c352744517bc62d24539d1ecc813b9fdc8a785c780197c5f0b84ec5b0dfe url = "https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.2.0-ha1e9b39_1.conda" checksum = "sha256:0792824360a9e59802c9464157c1098c3d84330dcab5dbde762abaca16f580a8" +[conda-packages.macos-x64."libllvm23-23.1.2-hd11396f_0"] +url = "https://conda.anaconda.org/conda-forge/osx-64/libllvm23-23.1.2-hd11396f_0.conda" +checksum = "sha256:f6174a6f25f900bbcebaa6461ad7152937ff5769e6dbec500a385c321e5adbc2" + [conda-packages.macos-x64."liblzma-5.8.3-hbb4bfdb_1"] url = "https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.3-hbb4bfdb_1.conda" checksum = "sha256:7915dac7c71c208e40e716e2f6d3eff41a8d5584e0e7c2d46f9bf9bd5f9aa739" @@ -2122,10 +2270,18 @@ checksum = "sha256:661b0befbb6e2300e0d25d9aac8f66be7003297c757fbb3e016985bf43a72 url = "https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.6.0-hb276fe9_1.conda" checksum = "sha256:96263e9134164b6ca015a8cfba3a4cac9ca2429ddfebd25c120817fa608d2fdc" +[conda-packages.macos-x64."libxml2-16-2.15.4-h341e563_0"] +url = "https://conda.anaconda.org/conda-forge/osx-64/libxml2-16-2.15.4-h341e563_0.conda" +checksum = "sha256:bc284057b85e4a0ecc158598d81c3081fa58e9111969a05d3056ab7a8442c837" + [conda-packages.macos-x64."libxml2-16-2.15.4-h8376fb4_0"] url = "https://conda.anaconda.org/conda-forge/osx-64/libxml2-16-2.15.4-h8376fb4_0.conda" checksum = "sha256:99b8a8977c93f4ab42dbdd345ee32677363175077473ef0acf1b20a3c15c8ab1" +[conda-packages.macos-x64."libxml2-2.15.4-h3668fe6_0"] +url = "https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.15.4-h3668fe6_0.conda" +checksum = "sha256:9cf91223637981568c8fbd5c4dbbc1e6137592e919828554ae436bf259aa91d0" + [conda-packages.macos-x64."libzlib-1.3.2-hbb4bfdb_3"] url = "https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.2-hbb4bfdb_3.conda" checksum = "sha256:b2dba286dd6632292b12296e761193b5ef9fb0eaeecaa481f5ba9af72c0c18e1" @@ -2342,10 +2498,22 @@ checksum = "sha256:0fccf2d17026255b6e10ace1f191d0a2a18f2d65088fd02430be17c701f8f url = "https://conda.anaconda.org/conda-forge/win-64/libxcb-1.17.0-h874e120_2.conda" checksum = "sha256:f5932cbcadb67bef9374ee864fed72411af29e88690435c6c7fc5633c89dabee" +[conda-packages.windows-x64."libxml2-16-2.15.4-h3cfd58e_0"] +url = "https://conda.anaconda.org/conda-forge/win-64/libxml2-16-2.15.4-h3cfd58e_0.conda" +checksum = "sha256:9fa71cec30425c9cc8eda6af3574af1faf4fefa5e239c9e037b1f778ef3ce8ac" + +[conda-packages.windows-x64."libxml2-2.15.4-he095d88_0"] +url = "https://conda.anaconda.org/conda-forge/win-64/libxml2-2.15.4-he095d88_0.conda" +checksum = "sha256:a19bb3821830f6b1281e782844d5dd265f796dfed2e4812b16c9995a8c778c88" + [conda-packages.windows-x64."libzlib-1.3.2-hfd05255_3"] url = "https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.2-hfd05255_3.conda" checksum = "sha256:0629c2cc0404d3bb29d6baa7b4ba62da80797015e86de050db81ea5a07050527" +[conda-packages.windows-x64."llvm-openmp-23.1.2-h49e36cd_0"] +url = "https://conda.anaconda.org/conda-forge/win-64/llvm-openmp-23.1.2-h49e36cd_0.conda" +checksum = "sha256:8b462c021d6bf3f956749d305bd3f52deb82ae2901047c0c7061a21c3550e48f" + [conda-packages.windows-x64."openssl-3.6.4-hf411b9b_0"] url = "https://conda.anaconda.org/conda-forge/win-64/openssl-3.6.4-hf411b9b_0.conda" checksum = "sha256:9dddb559ba49744d5d94092d8d13cb0567f5c3b3f439f3acf28433d1f4256acc" @@ -2495,6 +2663,143 @@ version = "0.31.0" backend = "cargo:probe-rs-tools" specifiers = ["0.31.0"] +[[tools.clang-format]] +version = "23.1.2" +backend = "conda:clang-format" +specifiers = ["23.1.2"] + +[tools.clang-format.options] +channel = "conda-forge" + +[tools.clang-format."platforms.linux-arm64"] +checksum = "sha256:7841a0b232fc0c324ef4680f8cb76f448ece36a97c6f6bd4e9563cba4727dc5d" +url = "https://conda.anaconda.org/conda-forge/linux-aarch64/clang-format-23.1.2-default_h9f22059_0.conda" +conda_deps = [ + "clang-format-23-23.1.2-default_h01b09c7_0", + "libclang-cpp23.1-23.1.2-default_h01b09c7_0", + "libllvm23-23.1.2-h680871c_0", + "libzlib-1.3.2-hdc9db2a_3", + "libxml2-16-2.15.4-h2e5089f_0", + "libxml2-2.15.4-h92b9305_0", + "libstdcxx-16.2.0-hef695bb_7", + "libgcc-16.2.0-h205dda4_7", + "zstd-1.5.7-h9d15635_7", + "_openmp_mutex-4.5-20_gnu", + "libgomp-16.2.0-h8acb6b2_7", + "icu-78.3-py311h3512406_2", + "libiconv-1.18-h1ea5142_3", + "liblzma-5.8.3-he30d5cf_1", +] + +[tools.clang-format."platforms.linux-arm64-musl"] +checksum = "sha256:7841a0b232fc0c324ef4680f8cb76f448ece36a97c6f6bd4e9563cba4727dc5d" +url = "https://conda.anaconda.org/conda-forge/linux-aarch64/clang-format-23.1.2-default_h9f22059_0.conda" +conda_deps = [ + "clang-format-23-23.1.2-default_h01b09c7_0", + "libclang-cpp23.1-23.1.2-default_h01b09c7_0", + "libllvm23-23.1.2-h680871c_0", + "libzlib-1.3.2-hdc9db2a_3", + "libxml2-16-2.15.4-h2e5089f_0", + "libxml2-2.15.4-h92b9305_0", + "libstdcxx-16.2.0-hef695bb_7", + "libgcc-16.2.0-h205dda4_7", + "zstd-1.5.7-h9d15635_7", + "_openmp_mutex-4.5-20_gnu", + "libgomp-16.2.0-h8acb6b2_7", + "icu-78.3-py311h3512406_2", + "libiconv-1.18-h1ea5142_3", + "liblzma-5.8.3-he30d5cf_1", +] + +[tools.clang-format."platforms.linux-x64"] +checksum = "sha256:7bb544a5150d2ca9fbf83b5bf07de80c83ead88d4dacca613b09bd52950233ae" +url = "https://conda.anaconda.org/conda-forge/linux-64/clang-format-23.1.2-default_he6de646_0.conda" +conda_deps = [ + "clang-format-23-23.1.2-default_h0acdd01_0", + "libclang-cpp23.1-23.1.2-default_h0acdd01_0", + "libllvm23-23.1.2-h474f4eb_0", + "libzlib-1.3.2-h25fd6f3_3", + "libxml2-16-2.15.4-hbdfff7e_0", + "libxml2-2.15.4-ha7a5771_0", + "libstdcxx-16.2.0-h934c35e_7", + "libgcc-16.2.0-ha9f2e26_7", + "zstd-1.5.7-hb78ec9c_7", + "_openmp_mutex-4.5-20_gnu", + "libgomp-16.2.0-he0feb66_7", + "liblzma-5.8.3-hb03c661_1", + "libiconv-1.18-h0cb94f2_3", +] + +[tools.clang-format."platforms.linux-x64-musl"] +checksum = "sha256:7bb544a5150d2ca9fbf83b5bf07de80c83ead88d4dacca613b09bd52950233ae" +url = "https://conda.anaconda.org/conda-forge/linux-64/clang-format-23.1.2-default_he6de646_0.conda" +conda_deps = [ + "clang-format-23-23.1.2-default_h0acdd01_0", + "libclang-cpp23.1-23.1.2-default_h0acdd01_0", + "libllvm23-23.1.2-h474f4eb_0", + "libzlib-1.3.2-h25fd6f3_3", + "libxml2-16-2.15.4-hbdfff7e_0", + "libxml2-2.15.4-ha7a5771_0", + "libstdcxx-16.2.0-h934c35e_7", + "libgcc-16.2.0-ha9f2e26_7", + "zstd-1.5.7-hb78ec9c_7", + "_openmp_mutex-4.5-20_gnu", + "libgomp-16.2.0-he0feb66_7", + "liblzma-5.8.3-hb03c661_1", + "libiconv-1.18-h0cb94f2_3", +] + +[tools.clang-format."platforms.macos-arm64"] +checksum = "sha256:e579f52d29526b470689149326934ef61770d8ba42af59aa4fa0b67a90349204" +url = "https://conda.anaconda.org/conda-forge/osx-arm64/clang-format-23.1.2-default_h7e305d6_0.conda" +conda_deps = [ + "libcxx-23.1.2-h55c6f16_0", + "clang-format-23-23.1.2-default_h79071a4_0", + "libclang-cpp23.1-23.1.2-default_h79071a4_0", + "libllvm23-23.1.2-h759d1ac_0", + "libzlib-1.3.2-h8088a28_3", + "libxml2-16-2.15.4-heb56d2d_0", + "libxml2-2.15.4-h550178d_0", + "zstd-1.5.7-hf451053_7", + "liblzma-5.8.3-h8088a28_1", + "icu-78.3-py310h579977c_2", + "libiconv-1.18-he4c29f2_3", +] + +[tools.clang-format."platforms.macos-x64"] +checksum = "sha256:dd3bb81e12891e51c4fa7f6f57e070ed0cc54557823f838dbd016dba4e922363" +url = "https://conda.anaconda.org/conda-forge/osx-64/clang-format-23.1.2-default_h5167a8e_0.conda" +conda_deps = [ + "libcxx-23.1.2-h19cb2f5_0", + "clang-format-23-23.1.2-default_h6e863b9_0", + "libclang-cpp23.1-23.1.2-default_h6e863b9_0", + "libllvm23-23.1.2-hd11396f_0", + "libxml2-16-2.15.4-h341e563_0", + "libxml2-2.15.4-h3668fe6_0", + "libzlib-1.3.2-hbb4bfdb_3", + "zstd-1.5.7-hbc1a06c_7", + "liblzma-5.8.3-hbb4bfdb_1", + "libiconv-1.18-h4ae439b_3", +] + +[tools.clang-format."platforms.windows-x64"] +checksum = "sha256:cc165bd6352a8408b10b4a1cc0ac8be64fe7d70ff32617f3f720f9137cfe86b5" +url = "https://conda.anaconda.org/conda-forge/win-64/clang-format-23.1.2-default_hacd6ee9_0.conda" +conda_deps = [ + "llvm-openmp-23.1.2-h49e36cd_0", + "vc-14.5-ha367084_41", + "vc14_runtime-14.51.36247-habf1de7_41", + "vcomp14-14.51.36247-habf1de7_41", + "ucrt-10.0.26100.0-h57928b3_0", + "libxml2-16-2.15.4-h3cfd58e_0", + "libxml2-2.15.4-he095d88_0", + "libzlib-1.3.2-hfd05255_3", + "zstd-1.5.7-h534d264_7", + "icu-78.3-h5112557_2", + "libiconv-1.18-hc1393d2_3", + "liblzma-5.8.3-hfd05255_1", +] + [[tools."conda:cppcheck"]] version = "2.21.0" backend = "conda:cppcheck" diff --git a/mise.toml b/mise.toml index 6f03eeb..cea925e 100644 --- a/mise.toml +++ b/mise.toml @@ -3,6 +3,7 @@ "aqua:Kitware/CMake" = "4.3.1" "conda:cppcheck" = "2.21.0" "cargo:probe-rs-tools" = "0.31.0" +clang-format = "23.1.2" python = "3.14" uv = "0.11.19" # For PlantUML diagrams. @@ -117,3 +118,9 @@ description = "Lint all Python files" run = ''' uvx ruff check ''' + +[tasks.format] +run = "./scripts/clang-format.sh -i" + +[tasks."format:check"] +run = "./scripts/clang-format.sh --dry-run --Werror" diff --git a/scripts/clang-format.sh b/scripts/clang-format.sh new file mode 100755 index 0000000..81032a3 --- /dev/null +++ b/scripts/clang-format.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +set -euo pipefail + +find app tests \ + \( -path 'app/drivers/vl53l0x' -o -path 'tests/unity' \) -prune -o \ + -type f \( -name '*.c' -o -name '*.h' \) \ + ! -path 'app/config/SEGGER_RTT_Conf.h' \ + -print0 | +xargs -0 -r clang-format "$@" \ No newline at end of file diff --git a/tests/integration/test-drive.c b/tests/integration/test-drive.c index c352adf..fbcbbef 100644 --- a/tests/integration/test-drive.c +++ b/tests/integration/test-drive.c @@ -3,16 +3,19 @@ #include "main.h" #include "tim.h" -void app_init(void) { +void app_init(void) +{ // We need TIM17 for the microsecond sleep timer we use to wake the motor drivers. MX_TIM17_Init(); - if (HAL_TIM_Base_Start(&htim17) != HAL_OK) { + if (HAL_TIM_Base_Start(&htim17) != HAL_OK) + { Error_Handler(); } motor_driver_init(); } -void app_run(void) { +void app_run(void) +{ // Enable LED and wait for 5 seconds before starting. HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, SET); motor_drive(0, DRIVE_STOP); diff --git a/tests/test_ring_buffer.c b/tests/test_ring_buffer.c index ccbb082..9cd7ee8 100644 --- a/tests/test_ring_buffer.c +++ b/tests/test_ring_buffer.c @@ -1,5 +1,5 @@ -#include "unity.h" #include "ring_buffer.h" +#include "unity.h" #define TEST_BUFFER_CAPACITY 8 @@ -33,7 +33,8 @@ void test_push_then_pop_then_empty(void) void test_push_beyond_full_drops_oldest_value(void) { - // Note that the capacity is one smaller, since we reserve one slot to determine if the buffer is full. + // Note that the capacity is one smaller, since we reserve one slot to determine if the buffer + // is full. for (int i = 0; i < TEST_BUFFER_CAPACITY; i++) { ring_buffer_push(&rb, &i);