From fe6436ea814e8b7a6a608c76bbe471cfc6242647 Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Fri, 5 Jan 2024 21:21:20 +0100 Subject: [PATCH 01/80] Add `contributing.md` --- docs/SUMMARY.md | 2 ++ docs/contributing.md | 1 + 2 files changed, 3 insertions(+) create mode 100644 docs/contributing.md diff --git a/docs/SUMMARY.md b/docs/SUMMARY.md index ad1224f6f..258e2dbf0 100644 --- a/docs/SUMMARY.md +++ b/docs/SUMMARY.md @@ -4,4 +4,6 @@ ______________________________________________________________________ +[Contributing](contributing.md) + [Contributors](contributors.md) diff --git a/docs/contributing.md b/docs/contributing.md new file mode 100644 index 000000000..854139a31 --- /dev/null +++ b/docs/contributing.md @@ -0,0 +1 @@ +# Contributing From b3f6f796f7aea7d7f6bbb2343909ec8ff70a2703 Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Fri, 5 Jan 2024 21:21:34 +0100 Subject: [PATCH 02/80] Add introductory blurb --- docs/contributing.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/contributing.md b/docs/contributing.md index 854139a31..3df156d08 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -1 +1,5 @@ # Contributing + +Thank you for taking time out of your day to contribute! We're excited +to have you contribute to our documentation, but before you do, let's go +over how best to contribute. From a79d723f53f84c707782062afda1feba15d921f1 Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Fri, 5 Jan 2024 21:28:02 +0100 Subject: [PATCH 03/80] Add `Before You Start` --- docs/contributing.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/docs/contributing.md b/docs/contributing.md index 3df156d08..3c03a92f6 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -3,3 +3,14 @@ Thank you for taking time out of your day to contribute! We're excited to have you contribute to our documentation, but before you do, let's go over how best to contribute. + +## Before You Start + +Before you get to writing anything, ask yourself a few questions: + +- Can existing documentation be improved? +- If the existing documentation is insufficient, can it be expanded? +- Have you generalized to a reasonable degree? +- Is what you're about to write correct to the best of your knowledge? + +> *As an aside, no documentation is better than wrong documentation!* From 87319900eba54342216ba1f6c759a83390a4a58a Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Fri, 5 Jan 2024 22:04:22 +0100 Subject: [PATCH 04/80] Add `Writing Style` --- docs/contributing.md | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/docs/contributing.md b/docs/contributing.md index 3c03a92f6..a7a3b16c4 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -14,3 +14,37 @@ Before you get to writing anything, ask yourself a few questions: - Is what you're about to write correct to the best of your knowledge? > *As an aside, no documentation is better than wrong documentation!* + +## Writing Style + +*Active voice over passive voice where possible.* + +Passive voice is less concise than the active voice, making +documentation difficult to read. More importantly, passive voice can +hide the agent of a sentence, diminishing your contribution to the work +you put so many hours into! + +*Talk to the reader.* + +Remember, we read documentation far more often than we write it. That +said, write documentation that's easy to read; this means talking to the +reader to engage them with the material. We've all read dry +documentation before; let's avoid it here at Autonomy Lab. + +*You're writing on behalf of Autonomy Lab.* + +Since we're a lab, avoid the word I. Work done for the lab, although +individual at times, can become collaborative in an instant. There's no +need to worry about your contribution getting lost in the chaos as it'll +always be traceable with [`git blame`] and [`git log`]. + +*Be professional, but don't be afraid to have some fun!* + +[`selfdrive`] is a public repo: any contribution you make gets tied to +your name forever on the internet, so be professional! That said, don't +be afraid to have some fun! Humor is always welcome where appropriate to +give our work some life! + +[`git blame`]: https://git-scm.com/docs/git-blame +[`git log`]: https://git-scm.com/docs/git-log +[`selfdrive`]: https://github.com/CooperUnion/selfdrive From 0a0b41fc336e6070e3d8b1f29e6c2978afdf3b43 Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Fri, 5 Jan 2024 23:40:06 +0100 Subject: [PATCH 05/80] Add `Formatting` --- docs/contributing.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/docs/contributing.md b/docs/contributing.md index a7a3b16c4..65516e68b 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -45,6 +45,36 @@ your name forever on the internet, so be professional! That said, don't be afraid to have some fun! Humor is always welcome where appropriate to give our work some life! +## Formatting + +We use [`mdbook`] to render our documentation. If this is your first +time using [`mdbook`], please read over its documentation to get a feel +for how to navigate it. + +We've also decided to normalize our markdown using [`mdformat`]. If your +markdown isn't normalized, it will trigger our [pre-commit hook]. To +normalize a markdown file, it suffices to run the following in the root +of [`selfdrive`]: + +``` +$ mdformat path/to/file.md +``` + +Each markdown file should, at the very least, look like this: + +```md +# Title + +Introductory blurb... + +## First Topic + +... +``` + +[pre-commit hook]: https://github.com/CooperUnion/selfdrive/blob/dev/.pre-commit-config.yaml [`git blame`]: https://git-scm.com/docs/git-blame [`git log`]: https://git-scm.com/docs/git-log +[`mdbook`]: https://rust-lang.github.io/mdBook/ +[`mdformat`]: https://github.com/executablebooks/mdformat [`selfdrive`]: https://github.com/CooperUnion/selfdrive From 3867b2291d2b7916f435f76e5a8fc86486479806 Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Sat, 6 Jan 2024 00:19:22 +0100 Subject: [PATCH 06/80] Add `Directory Structure` --- docs/contributing.md | 49 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/docs/contributing.md b/docs/contributing.md index 65516e68b..db1d4393b 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -72,6 +72,55 @@ Introductory blurb... ... ``` +## Directory Structure + +Our documentation has the following directory structure: + +``` +docs/ ++-- components/ +|   +-- complicated-component/ +|   |   +-- README.md +| | | +|   |   +-- ... +|   +-- component.md +| ++-- concepts/ +|   +-- complicated-concept/ +|   |   +-- README.md +| | | +|   |   +-- ... +|   +-- concept.md +| ++-- projects/ +|   +-- project/ +|   +-- complicated-topic/ +|   |   +-- README.md +| | | +|   |   +-- ... +|   +-- topic.d/ +| | +-- figure.png +|   +-- topic.md +| ++-- README.md ++-- SUMMARY.md +| ++-- ... +``` + +Typically, a new addition to our documentation is a single markdown +file. If we split the documentation into multiple files, we can +represent it as a directory with a `README.md`, which serves as the +introductory point. + +All file paths should be lowercase (except for `README.md`), and use +dashes for spaces. + +If you need to include a file (i.e. a figure) but are only using a +single markdown file, a folder with the same base name but suffix `.d` +can be created (i.e. `topic.md -> topic.d`). Otherwise, included files +specific to the documentation should reside in the same folder. + [pre-commit hook]: https://github.com/CooperUnion/selfdrive/blob/dev/.pre-commit-config.yaml [`git blame`]: https://git-scm.com/docs/git-blame [`git log`]: https://git-scm.com/docs/git-log From d43e3262e6725c64597f4eeed51da19423b7b946 Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Sat, 20 Jan 2024 19:42:27 -0500 Subject: [PATCH 07/80] Add `Figures` --- docs/contributing.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/docs/contributing.md b/docs/contributing.md index db1d4393b..6c7f86e46 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -121,6 +121,23 @@ single markdown file, a folder with the same base name but suffix `.d` can be created (i.e. `topic.md -> topic.d`). Otherwise, included files specific to the documentation should reside in the same folder. +## Figures + +When creating figures, make them in such a manner that they're editable +at a later time. The exception to this are images. When adding images, +make sure they don't contain any personally identifiable EXIF data (i.e. +the location of your house) before adding it to [`selfdrive`]! + +When adding figures ***not*** created by Autonomy Lab, they must be +appropriately accredited. Only link to such figures, and do not add them +to the [`selfdrive`] repo. External figures must also be compatible with +the [CC BY-NC-SA 4.0]. + +> Additionally, if the figure you add is a binary file track it with +> [Git LFS]. + +[cc by-nc-sa 4.0]: https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode +[git lfs]: https://git-lfs.com/ [pre-commit hook]: https://github.com/CooperUnion/selfdrive/blob/dev/.pre-commit-config.yaml [`git blame`]: https://git-scm.com/docs/git-blame [`git log`]: https://git-scm.com/docs/git-log From 69b90de2c3477bae6cd448ffae0df209fe7b7b4d Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Sat, 20 Jan 2024 19:46:05 -0500 Subject: [PATCH 08/80] Add `When in Doubt, Look at Existing Work` --- docs/contributing.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/contributing.md b/docs/contributing.md index 6c7f86e46..23624643e 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -136,6 +136,14 @@ the [CC BY-NC-SA 4.0]. > Additionally, if the figure you add is a binary file track it with > [Git LFS]. +## When in Doubt, Look at Existing Work + +Not sure how to do something? Check if there's already existing work +that achieves a similar pattern. If you can't find anything that quite +matches what you're looking to write, take your own stab at it. The nice +part of having PRs is that the Lab can give you feedback on your work so +that we can all converge on an ideal solution. + [cc by-nc-sa 4.0]: https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode [git lfs]: https://git-lfs.com/ [pre-commit hook]: https://github.com/CooperUnion/selfdrive/blob/dev/.pre-commit-config.yaml From 209c2eb767649b163dd34d123cf8cee866846df0 Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Sat, 20 Jan 2024 19:48:41 -0500 Subject: [PATCH 09/80] Add `Remember to Credit Yourself` --- docs/contributing.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/contributing.md b/docs/contributing.md index 23624643e..2feff3e80 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -144,9 +144,17 @@ matches what you're looking to write, take your own stab at it. The nice part of having PRs is that the Lab can give you feedback on your work so that we can all converge on an ideal solution. +## Remember to Credit Yourself + +Most important of all, don't forget to credit yourself! No matter how +small your contribution, make sure to add your name, in alphabetical +order, to [the list of contributors]! At the end of the day, it's people +like you that make this resource a possibility! + [cc by-nc-sa 4.0]: https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode [git lfs]: https://git-lfs.com/ [pre-commit hook]: https://github.com/CooperUnion/selfdrive/blob/dev/.pre-commit-config.yaml +[the list of contributors]: contributors.md [`git blame`]: https://git-scm.com/docs/git-blame [`git log`]: https://git-scm.com/docs/git-log [`mdbook`]: https://rust-lang.github.io/mdBook/ From a970561d57ce9fb279328ceebf5dfd6dab5beb6c Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Sat, 20 Jan 2024 19:54:44 -0500 Subject: [PATCH 10/80] Create `About` part --- docs/SUMMARY.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/SUMMARY.md b/docs/SUMMARY.md index 258e2dbf0..f48122b6a 100644 --- a/docs/SUMMARY.md +++ b/docs/SUMMARY.md @@ -4,6 +4,7 @@ ______________________________________________________________________ -[Contributing](contributing.md) +# About -[Contributors](contributors.md) +- [Contributing](contributing.md) +- [Contributors](contributors.md) From 3a22552cb9694b2ff49f3bc426f5efe4534cfad0 Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Wed, 24 Jan 2024 16:45:13 -0500 Subject: [PATCH 11/80] Add `pkgs.zlib` --- flake.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/flake.nix b/flake.nix index 5663094c6..30c94df8e 100644 --- a/flake.nix +++ b/flake.nix @@ -33,6 +33,7 @@ pkgs.act pkgs.mdbook pkgs.nixpkgs-fmt + pkgs.zlib python rust ]; From 8d0962fdca1e7072bade20c981cb7e20c39c7bc0 Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Wed, 24 Jan 2024 16:46:40 -0500 Subject: [PATCH 12/80] Add `pkgs.zlib` to `LD_LIBRARY_PATH` --- flake.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/flake.nix b/flake.nix index 30c94df8e..f86e9737e 100644 --- a/flake.nix +++ b/flake.nix @@ -37,6 +37,11 @@ python rust ]; + + shellHook = '' + export LD_LIBRARY_PATH="''${LD_LIBRARY_PATH:-}" + export LD_LIBRARY_PATH="${pkgs.zlib}/lib:''$LD_LIBRARY_PATH" + ''; }; } ); From 1a3e049cfd3b9e87c6acbf3578315e475ffb6e6c Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Fri, 26 Jan 2024 22:49:05 -0500 Subject: [PATCH 13/80] Apply linters to SCons files --- SConstruct => SConstruct.py | 41 +++++++++++++--------- can/{SConscript => SConscript.py} | 13 +++---- dbw/ember_bl/{SConscript => SConscript.py} | 19 +++++----- dbw/node_fw/{SConscript => SConscript.py} | 19 +++++----- 4 files changed, 51 insertions(+), 41 deletions(-) rename SConstruct => SConstruct.py (81%) rename can/{SConscript => SConscript.py} (59%) rename dbw/ember_bl/{SConscript => SConscript.py} (56%) rename dbw/node_fw/{SConscript => SConscript.py} (56%) diff --git a/SConstruct b/SConstruct.py similarity index 81% rename from SConstruct rename to SConstruct.py index 7ecf47bc2..5e0aa17dd 100644 --- a/SConstruct +++ b/SConstruct.py @@ -1,12 +1,12 @@ -EnsureSConsVersion(4, 5, 2) -EnsurePythonVersion(3, 11) - +# ruff: noqa: F821 import os - from env import ENV +EnsureSConsVersion(4, 5, 2) +EnsurePythonVersion(3, 11) + # Basic setup --------------------------------------------- env = Environment(ENV=ENV) @@ -24,20 +24,18 @@ # Global help adder function ------------------------------ help_list = [] + def AddHelp(cmd, text): global help_list help_list.append((cmd, text)) + env['AddHelp'] = AddHelp # --------------------------------------------------------- # Cleaning targets ---------------------------------------- -[rm_build] = env.Command( - 'phony-rm-build', - [], - 'rm -rf build/' -) +[rm_build] = env.Command('phony-rm-build', [], 'rm -rf build/') env.Alias('clean', rm_build) AddHelp('clean', 'Clean (remove) build/ directory') @@ -49,27 +47,34 @@ def AddHelp(cmd, text): Export('env') # Dependencies first -env.SConscript('can/SConscript', variant_dir='build/can', duplicate=0) -env.SConscript('dbw/ember_bl/SConscript', variant_dir='build/dbw/ember_bl', duplicate=0) -env.SConscript('dbw/node_fw/SConscript', variant_dir='build/dbw/node_fw', duplicate=0) +env.SConscript('can/SConscript.py', variant_dir='build/can', duplicate=0) +env.SConscript( + 'dbw/ember_bl/SConscript.py', variant_dir='build/dbw/ember_bl', duplicate=0 +) +env.SConscript( + 'dbw/node_fw/SConscript.py', variant_dir='build/dbw/node_fw', duplicate=0 +) # --------------------------------------------------------- # Populate Help ------------------------------------------- # scons provides Help for you to call to provide the text given by `scons -h`. # you can call Help more than once and it will append. -Help(''' +Help( + ''' So you want to build a car? You can specify targets after `scons`, like: -''') +''' +) help_list.sort() -for (cmd, text) in help_list: +for cmd, text in help_list: Help(f" `scons {cmd + '`' : <30} {text : <60}\n") -Help(f''' +Help( + ''' Note: try these helpful aliases (if you have `direnv`): @@ -78,10 +83,12 @@ def AddHelp(cmd, text): recommended way to use PlatformIO. For example: $ fwpio run -e blink1.1 -''') +''' +) # --------------------------------------------------------- if not COMMAND_LINE_TARGETS: from SCons.Script import help_text + print(help_text) exit(0) diff --git a/can/SConscript b/can/SConscript.py similarity index 59% rename from can/SConscript rename to can/SConscript.py index 46d421371..22a9841a7 100644 --- a/can/SConscript +++ b/can/SConscript.py @@ -1,23 +1,24 @@ +# ruff: noqa: F821 + Import('env') # Make DBC ------------------------------------------------ -GENERATED_DBC = env.File('igvc_can.dbc') -CAN_YML = env.File('can.yml') -DBC_EMITTER = env.File('create-dbc.py') +GENERATED_DBC = env.File('igvc_can.dbc') +CAN_YML = env.File('can.yml') +DBC_EMITTER = env.File('create-dbc.py') # Make emitter script env.Command( DBC_EMITTER, CAN_YML, - f'opencan-cli compose {CAN_YML} --dump-python > $TARGET' + f'opencan-cli compose {CAN_YML} --dump-python > $TARGET', ) # Make DBC by running emitter script [dbc_builder] = env.Command( GENERATED_DBC, DBC_EMITTER, - [f'python3 {DBC_EMITTER.path}', - Move("$TARGET", "opencan.dbc")] + [f'python3 {DBC_EMITTER.path}', Move("$TARGET", "opencan.dbc")], ) env.Alias('dbc', dbc_builder) diff --git a/dbw/ember_bl/SConscript b/dbw/ember_bl/SConscript.py similarity index 56% rename from dbw/ember_bl/SConscript rename to dbw/ember_bl/SConscript.py index a54abf3a2..250bd684d 100644 --- a/dbw/ember_bl/SConscript +++ b/dbw/ember_bl/SConscript.py @@ -1,14 +1,19 @@ +# ruff: noqa: F821 + Import('env') -flags_opt = AddOption('--blpioflags', +flags_opt = AddOption( + '--blpioflags', dest='pioflags', type='string', action='store', metavar='-e blink1.1', - help='PlatformIO environment' + help='PlatformIO environment', +) +env['AddHelp']( + "ember_bl --blpioflags=FLAGS", + 'Run pio for ember_bl with FLAGS, e.g. `scons ember_bl --blpioflags="run -e blink1.1"`', ) -env['AddHelp']("ember_bl --blpioflags=FLAGS", - 'Run pio for ember_bl with FLAGS, e.g. `scons ember_bl --blpioflags="run -e blink1.1"`') pioflags = GetOption('pioflags') command = None @@ -17,11 +22,7 @@ else: command = f'pio {pioflags} -d dbw/ember_bl' -[pio_builder] = env.Command( - env.Dir('.'), - [], - command -) +[pio_builder] = env.Command(env.Dir('.'), [], command) env.AlwaysBuild(pio_builder) env.Alias('ember_bl', pio_builder) diff --git a/dbw/node_fw/SConscript b/dbw/node_fw/SConscript.py similarity index 56% rename from dbw/node_fw/SConscript rename to dbw/node_fw/SConscript.py index 8077df8ff..e90c02d37 100644 --- a/dbw/node_fw/SConscript +++ b/dbw/node_fw/SConscript.py @@ -1,14 +1,19 @@ +# ruff: noqa: F821 + Import('env') -flags_opt = AddOption('--pioflags', +flags_opt = AddOption( + '--pioflags', dest='pioflags', type='string', action='store', metavar='-e blink1.1', - help='PlatformIO environment' + help='PlatformIO environment', +) +env['AddHelp']( + "node_fw --pioflags=FLAGS", + 'Run pio for node_fw with FLAGS, e.g. `scons node_fw --pioflags="run -e blink1.1"`', ) -env['AddHelp']("node_fw --pioflags=FLAGS", - 'Run pio for node_fw with FLAGS, e.g. `scons node_fw --pioflags="run -e blink1.1"`') pioflags = GetOption('pioflags') command = None @@ -17,11 +22,7 @@ else: command = f'pio {pioflags} -d dbw/node_fw' -[pio_builder] = env.Command( - env.Dir('.'), - [], - command -) +[pio_builder] = env.Command(env.Dir('.'), [], command) env.AlwaysBuild(pio_builder) env.Alias('node_fw', pio_builder) From 8440c36fc0afb41d9df3c0b6ab597d0621f66bcd Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Fri, 26 Jan 2024 22:58:11 -0500 Subject: [PATCH 14/80] Set `ENV` on environment creation --- SConstruct.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/SConstruct.py b/SConstruct.py index 5e0aa17dd..4b553487b 100644 --- a/SConstruct.py +++ b/SConstruct.py @@ -9,11 +9,13 @@ # Basic setup --------------------------------------------- -env = Environment(ENV=ENV) - -for var in ['PATH', 'TERM']: - if val := os.environ.get(var): - env['ENV'][var] = val +env = Environment( + ENV={ + **ENV, + 'PATH': os.environ['PATH'], + 'TERM': os.environ.get('TERM'), + } +) env['REPO_ROOT'] = env.Dir('.') From 0700e7cc18c6b28330265f2a4cdb53dc29bfcdd0 Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Fri, 26 Jan 2024 23:16:25 -0500 Subject: [PATCH 15/80] Set `SCONSFLAGS` --- site_scons/env.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/site_scons/env.py b/site_scons/env.py index 8e83c5aae..c3f1ae332 100755 --- a/site_scons/env.py +++ b/site_scons/env.py @@ -16,7 +16,13 @@ } +FLAGS: typing.Final[dict[str, str]] = { + 'SCONSFLAGS': f'--directory={PATHS["REPO_ROOT"]}', +} + + ENV: typing.Final[dict[str, str]] = { + **FLAGS, **PATHS, } From 4b688d5bbe026226fa9f52d2093902cc072b0c25 Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Sat, 27 Jan 2024 18:10:40 -0500 Subject: [PATCH 16/80] Add `getting-started.md` --- docs/SUMMARY.md | 4 ++++ docs/getting-started.md | 1 + 2 files changed, 5 insertions(+) create mode 100644 docs/getting-started.md diff --git a/docs/SUMMARY.md b/docs/SUMMARY.md index f48122b6a..1a80aa771 100644 --- a/docs/SUMMARY.md +++ b/docs/SUMMARY.md @@ -4,6 +4,10 @@ ______________________________________________________________________ +- [Getting Started](getting-started.md) + +______________________________________________________________________ + # About - [Contributing](contributing.md) diff --git a/docs/getting-started.md b/docs/getting-started.md new file mode 100644 index 000000000..bad55622f --- /dev/null +++ b/docs/getting-started.md @@ -0,0 +1 @@ +# Getting Started From 0aff6276c420e899392ca082cd8e8e828956a70d Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Sat, 27 Jan 2024 18:12:10 -0500 Subject: [PATCH 17/80] Add introductory blurb --- docs/getting-started.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docs/getting-started.md b/docs/getting-started.md index bad55622f..2720d315e 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -1 +1,10 @@ # Getting Started + +[`selfdrive`] is a rather *complicated* repo. + +If you've never worked on a project of this scale, it can be daunting to +know where to start. The goal of this guide is to give you enough of a +foothold to start asking the right questions and to begin your adventure +here at Autonomy Lab. + +[`selfdrive`]: https://github.com/CooperUnion/selfdrive From 7d8b1eafa60cd3001d4a071de6cba3f372ca9d8a Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Mon, 29 Jan 2024 19:03:01 -0500 Subject: [PATCH 18/80] Add `Fundamentals` --- docs/getting-started.md | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/docs/getting-started.md b/docs/getting-started.md index 2720d315e..9364ec3d8 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -7,4 +7,45 @@ know where to start. The goal of this guide is to give you enough of a foothold to start asking the right questions and to begin your adventure here at Autonomy Lab. +## Fundamentals + +Before we even get to cloning [`selfdrive`], you need to have the basic +mechanical skills required to traverse a shell. [MIT's Missing Semester] +serves as a great starting point for just this. The following table +lists the lectures you should watch if you plan to work on a specific +Autonomy Lab group: + +| Lecture | Hardware | Firmware | Algorithms | +| ----------------------------- | -------- | -------- | ---------- | +| [Course overview + the shell] | ✓\* | ✓\* | ✓\* | +| [Shell Tools and Scripting] | ✓ | ✓\* | ✓\* | +| [Editors (Vim)] | | | | +| [Data Wrangling] | | ✓ | ✓\* | +| [Command-line Environment] | ✓ | ✓\* | ✓\* | +| [Version Control (Git)] | ✓\* | ✓\* | ✓\* | +| [Debugging and Profiling] | | ✓ | ✓ | +| [Metaprogramming] | | ✓ | ✓ | +| [Security and Cryptography] | | | | +| [Potpourri] | | ✓ | ✓ | +| [Q&A] | | ✓ | ✓ | + +> *Note: an `*` denotes you should also do the associated exercises.* + +At a minimum, to clone [`selfdrive`], you should watch and do the +exercises for [Course overview + the shell] and [Version Control (Git)], +as these lectures provide you the fundamentals to hit the ground +running. + +[command-line environment]: https://missing.csail.mit.edu/2020/command-line/ +[course overview + the shell]: https://missing.csail.mit.edu/2020/course-shell/ +[data wrangling]: https://missing.csail.mit.edu/2020/data-wrangling/ +[debugging and profiling]: https://missing.csail.mit.edu/2020/debugging-profiling/ +[editors (vim)]: https://missing.csail.mit.edu/2020/editors/ +[metaprogramming]: https://missing.csail.mit.edu/2020/metaprogramming/ +[mit's missing semester]: https://missing.csail.mit.edu/ +[potpourri]: https://missing.csail.mit.edu/2020/potpourri/ +[q&a]: https://missing.csail.mit.edu/2020/qa/ +[security and cryptography]: https://missing.csail.mit.edu/2020/security/ +[shell tools and scripting]: https://missing.csail.mit.edu/2020/shell-tools/ +[version control (git)]: https://missing.csail.mit.edu/2020/version-control/ [`selfdrive`]: https://github.com/CooperUnion/selfdrive From a60babdea42570fd8284c8cb7c0e7609a3a583a7 Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Mon, 29 Jan 2024 19:12:06 -0500 Subject: [PATCH 19/80] Add `System Configuration` --- docs/getting-started.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/docs/getting-started.md b/docs/getting-started.md index 9364ec3d8..542f0e9b0 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -36,16 +36,27 @@ exercises for [Course overview + the shell] and [Version Control (Git)], as these lectures provide you the fundamentals to hit the ground running. +## System Configuration + +Since [`selfdrive`] consists of software written in different +programming languages with a wide variety of dependencies, we've made an +effort to make getting your machine ready as painless as possible with +the [Nix package manager] and [direnv]. You can find cloning +instructions and system setup information on the repo's [`README.md`]. + [command-line environment]: https://missing.csail.mit.edu/2020/command-line/ [course overview + the shell]: https://missing.csail.mit.edu/2020/course-shell/ [data wrangling]: https://missing.csail.mit.edu/2020/data-wrangling/ [debugging and profiling]: https://missing.csail.mit.edu/2020/debugging-profiling/ +[direnv]: https://direnv.net/ [editors (vim)]: https://missing.csail.mit.edu/2020/editors/ [metaprogramming]: https://missing.csail.mit.edu/2020/metaprogramming/ [mit's missing semester]: https://missing.csail.mit.edu/ +[nix package manager]: https://nixos.org/ [potpourri]: https://missing.csail.mit.edu/2020/potpourri/ [q&a]: https://missing.csail.mit.edu/2020/qa/ [security and cryptography]: https://missing.csail.mit.edu/2020/security/ [shell tools and scripting]: https://missing.csail.mit.edu/2020/shell-tools/ [version control (git)]: https://missing.csail.mit.edu/2020/version-control/ +[`readme.md`]: https://github.com/CooperUnion/selfdrive/blob/dev/README.md [`selfdrive`]: https://github.com/CooperUnion/selfdrive From cb86653f8d50138cc4332cfc0ed1ca6b66b8991b Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Mon, 29 Jan 2024 20:42:40 -0500 Subject: [PATCH 20/80] Add `Repo Layout` --- docs/getting-started.md | 98 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) diff --git a/docs/getting-started.md b/docs/getting-started.md index 542f0e9b0..742f83bf3 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -44,7 +44,96 @@ effort to make getting your machine ready as painless as possible with the [Nix package manager] and [direnv]. You can find cloning instructions and system setup information on the repo's [`README.md`]. +## Repo Layout + +> Currently, [`selfdrive`] does not respect this structure. We're in the +> process of migrating over to this layout. Sorry for the time being. + +``` +selfdrive/ ++-- docs/ +| ++-- components/ +| +-- component/ +| |   +-- docs/ +| |   +-- src/ +| |   +-- component.yml +| | +| +-- ... +| ++-- lib/ +| ++-- projects/ +| +-- project/ +| |   +-- docs/ +| |   +-- project.yml +| | +| +-- ... +| ++-- can.yml +| ++-- ... +``` + +There's quite a bit to unpack here, so let's get to it! + +### [`components/`] + +The [`components/`] directory contains components that serve as the +building blocks of a project. + +Each component has a `docs/` directory that contains symlinks to +relevant documentation. These symlinks need to stay up to date as they +will automatically get triggered for manual review on pull requests to +ensure that documentation stays up to date. Having these symlinks also +ensures that anyone who wishes to get up to speed on a component has a +quick list of relevant documentation to read. + +The `src` directory contains the source files. The contents and layout +of this directory highly depend on the component language(s) and use +case. It is best to see existing components to get a feel for it. + +Finally, `component.yml` contains metadata related to the component. + +### [`docs/`] + +The [contributing guidelines] cover the structure for documentation. You +may notice that it closely follows the structure of [`selfdrive`] +itself. + +### [`lib/`] + +The [`lib/`] directory contains shared libraries used in components. +Since these are generalized pieces of software, the contents of each +directory can wildly vary. Feel free to explore these directories if +you're curious. + +### [`projects/`] + +The [`projects/`] directory contains projects that are composed of +various components. Like a component, each project has a `docs/` +directory with symlinks to relevant documentation and a `project.yml` +with related metadata. + +### [`can.yml`] + +[`can.yml`] describes the CAN networks of our projects. Here, you'll +find definitions for networks, messages, and signals for [OpenCAN] to +process. + +### What About Everything Else? + +It'd be impractical to cover every last file and directory in +[`selfdrive`]. Unfortunately, there's no shortcut to knowing where you +can find everything or how various bits of code interact, but there are +tools that can help! + +- [`fd`]: a simple, fast and user-friendly alternative to `find` +- [`fzf`]: a command-line fuzzy finder +- [`rg`]: ripgrep recursively searches directories for a regex pattern + [command-line environment]: https://missing.csail.mit.edu/2020/command-line/ +[contributing guidelines]: contributing.md#directory-structure [course overview + the shell]: https://missing.csail.mit.edu/2020/course-shell/ [data wrangling]: https://missing.csail.mit.edu/2020/data-wrangling/ [debugging and profiling]: https://missing.csail.mit.edu/2020/debugging-profiling/ @@ -53,10 +142,19 @@ instructions and system setup information on the repo's [`README.md`]. [metaprogramming]: https://missing.csail.mit.edu/2020/metaprogramming/ [mit's missing semester]: https://missing.csail.mit.edu/ [nix package manager]: https://nixos.org/ +[opencan]: https://github.com/opencan [potpourri]: https://missing.csail.mit.edu/2020/potpourri/ [q&a]: https://missing.csail.mit.edu/2020/qa/ [security and cryptography]: https://missing.csail.mit.edu/2020/security/ [shell tools and scripting]: https://missing.csail.mit.edu/2020/shell-tools/ [version control (git)]: https://missing.csail.mit.edu/2020/version-control/ +[`can.yml`]: https://github.com/CooperUnion/selfdrive/blob/dev/can.yml +[`components/`]: https://github.com/CooperUnion/selfdrive/tree/dev/components +[`docs/`]: https://github.com/CooperUnion/selfdrive/tree/dev/docs +[`fd`]: https://github.com/sharkdp/fd +[`fzf`]: https://github.com/junegunn/fzf +[`lib/`]: https://github.com/CooperUnion/selfdrive/tree/dev/lib +[`projects/`]: https://github.com/CooperUnion/selfdrive/tree/dev/projects [`readme.md`]: https://github.com/CooperUnion/selfdrive/blob/dev/README.md +[`rg`]: https://github.com/BurntSushi/ripgrep [`selfdrive`]: https://github.com/CooperUnion/selfdrive From f28dfe32f7ce5fb7351969d56f7206430e58305b Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Mon, 29 Jan 2024 20:54:46 -0500 Subject: [PATCH 21/80] Add `So What's Next?` --- docs/getting-started.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/getting-started.md b/docs/getting-started.md index 742f83bf3..27d55effd 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -132,6 +132,13 @@ tools that can help! - [`fzf`]: a command-line fuzzy finder - [`rg`]: ripgrep recursively searches directories for a regex pattern +## So What's Next? + +Now that you have a general idea of how [`selfdrive`] works, it's time +to move on to group-specific getting started guides. Feel free to move +along to these without finishing all of the suggested [missing semester] +lectures; however, understand they do nothing but benefit you! + [command-line environment]: https://missing.csail.mit.edu/2020/command-line/ [contributing guidelines]: contributing.md#directory-structure [course overview + the shell]: https://missing.csail.mit.edu/2020/course-shell/ @@ -140,6 +147,7 @@ tools that can help! [direnv]: https://direnv.net/ [editors (vim)]: https://missing.csail.mit.edu/2020/editors/ [metaprogramming]: https://missing.csail.mit.edu/2020/metaprogramming/ +[missing semester]: https://missing.csail.mit.edu/ [mit's missing semester]: https://missing.csail.mit.edu/ [nix package manager]: https://nixos.org/ [opencan]: https://github.com/opencan From e619b9d23fac8528dc67c95bc77f7ddd6bf6020b Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Mon, 29 Jan 2024 21:09:17 -0500 Subject: [PATCH 22/80] Enable folding in the navigation sidebar --- book.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/book.toml b/book.toml index b0ed1f08c..bc1678352 100644 --- a/book.toml +++ b/book.toml @@ -11,3 +11,6 @@ build-dir = 'build/docs' mathjax-support = true no-section-label = true git-repository-url = 'https://github.com/CooperUnion/selfdrive' + +[output.html.fold] +enable = true From 470549bf3bdd547fb17f6d66439fd7504015bbf2 Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Thu, 1 Feb 2024 02:11:04 -0500 Subject: [PATCH 23/80] Revert "Set `SCONSFLAGS`" This reverts commit `0700e7cc18c6b28330265f2a4cdb53dc29bfcdd0`. This currently interferes with PlatformIO's use of SCons. --- site_scons/env.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/site_scons/env.py b/site_scons/env.py index c3f1ae332..8e83c5aae 100755 --- a/site_scons/env.py +++ b/site_scons/env.py @@ -16,13 +16,7 @@ } -FLAGS: typing.Final[dict[str, str]] = { - 'SCONSFLAGS': f'--directory={PATHS["REPO_ROOT"]}', -} - - ENV: typing.Final[dict[str, str]] = { - **FLAGS, **PATHS, } From dcbe5fd8e7fb14f882f160e05e038902ebf06b8a Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Thu, 1 Feb 2024 02:40:03 -0500 Subject: [PATCH 24/80] Return build targets from SConscripts --- SConstruct.py | 89 ++++++---------------------------- bin/fwpio | 4 +- can/SConscript.py | 33 ++++++------- dbw/ember_bl/SConscript.py | 35 +++++-------- dbw/ember_bl/ember_identity.py | 3 +- dbw/node_fw/SConscript.py | 35 +++++-------- dbw/node_fw/ember_identity.py | 7 +-- dbw/node_fw/opencan-pio.py | 16 +++--- 8 files changed, 75 insertions(+), 147 deletions(-) diff --git a/SConstruct.py b/SConstruct.py index 4b553487b..32bff9446 100644 --- a/SConstruct.py +++ b/SConstruct.py @@ -8,7 +8,9 @@ EnsurePythonVersion(3, 11) -# Basic setup --------------------------------------------- +build = 'build' + + env = Environment( ENV={ **ENV, @@ -17,80 +19,21 @@ } ) -env['REPO_ROOT'] = env.Dir('.') - -Decider('content-timestamp') -# --------------------------------------------------------- - - -# Global help adder function ------------------------------ -help_list = [] - - -def AddHelp(cmd, text): - global help_list - help_list.append((cmd, text)) - - -env['AddHelp'] = AddHelp -# --------------------------------------------------------- - - -# Cleaning targets ---------------------------------------- -[rm_build] = env.Command('phony-rm-build', [], 'rm -rf build/') - -env.Alias('clean', rm_build) -AddHelp('clean', 'Clean (remove) build/ directory') -# --------------------------------------------------------- - - -# Call SConscripts ---------------------------------------- -Default(None) Export('env') -# Dependencies first -env.SConscript('can/SConscript.py', variant_dir='build/can', duplicate=0) -env.SConscript( - 'dbw/ember_bl/SConscript.py', variant_dir='build/dbw/ember_bl', duplicate=0 -) -env.SConscript( - 'dbw/node_fw/SConscript.py', variant_dir='build/dbw/node_fw', duplicate=0 -) -# --------------------------------------------------------- - -# Populate Help ------------------------------------------- -# scons provides Help for you to call to provide the text given by `scons -h`. -# you can call Help more than once and it will append. -Help( - ''' - So you want to build a car? - - You can specify targets after `scons`, like: -''' +can = env.SConscript( + 'can/SConscript.py', + variant_dir=f'{build}/can', + duplicate=False, ) - -help_list.sort() - -for cmd, text in help_list: - Help(f" `scons {cmd + '`' : <30} {text : <60}\n") - -Help( - ''' - - Note: try these helpful aliases (if you have `direnv`): - - `fwpio` Equivalent to `pio`, but specifically for dbw/node_fw, can - be used anywhere in the repo, and uses scons. This is the - recommended way to use PlatformIO. For example: - - $ fwpio run -e blink1.1 -''' +ember_bl = env.SConscript( + 'dbw/ember_bl/SConscript.py', + variant_dir=f'{build}/dbw/ember_bl', + duplicate=False, +) +node_fw = env.SConscript( + 'dbw/node_fw/SConscript.py', + variant_dir=f'{build}/dbw/node_fw', + duplicate=False, ) -# --------------------------------------------------------- - -if not COMMAND_LINE_TARGETS: - from SCons.Script import help_text - - print(help_text) - exit(0) diff --git a/bin/fwpio b/bin/fwpio index 566589acc..5568ef475 100755 --- a/bin/fwpio +++ b/bin/fwpio @@ -1,3 +1,5 @@ #!/bin/sh -exec scons --directory="$REPO_ROOT" -DQs node_fw "--pioflags=$*" +cd "$REPO_ROOT/dbw/node_fw" || exit 1 + +exec pio "$@" diff --git a/can/SConscript.py b/can/SConscript.py index 22a9841a7..bff37657b 100644 --- a/can/SConscript.py +++ b/can/SConscript.py @@ -2,25 +2,22 @@ Import('env') -# Make DBC ------------------------------------------------ -GENERATED_DBC = env.File('igvc_can.dbc') -CAN_YML = env.File('can.yml') -DBC_EMITTER = env.File('create-dbc.py') -# Make emitter script -env.Command( - DBC_EMITTER, - CAN_YML, - f'opencan-cli compose {CAN_YML} --dump-python > $TARGET', -) +dbc = env.File('can.dbc') +network = env.File('can.yml') -# Make DBC by running emitter script -[dbc_builder] = env.Command( - GENERATED_DBC, - DBC_EMITTER, - [f'python3 {DBC_EMITTER.path}', Move("$TARGET", "opencan.dbc")], +dbc_emmitter = env.Command( + 'create-dbc.py', + network, + [ + 'opencan-cli compose $SOURCE --dump-python > $TARGET', + # what a crime + f'sed -i -e s%opencan\\.dbc%{dbc.path}%g $TARGET', + ], ) -env.Alias('dbc', dbc_builder) -env['AddHelp']('dbc', 'Build igvc_can.dbc') -# --------------------------------------------------------- +dbc = env.Command('can.dbc', dbc_emmitter, 'python $SOURCE') +env.Alias('dbc', dbc) + + +Return('dbc') diff --git a/dbw/ember_bl/SConscript.py b/dbw/ember_bl/SConscript.py index 250bd684d..340d29b4c 100644 --- a/dbw/ember_bl/SConscript.py +++ b/dbw/ember_bl/SConscript.py @@ -1,29 +1,20 @@ # ruff: noqa: F821 +import os + + Import('env') -flags_opt = AddOption( - '--blpioflags', - dest='pioflags', - type='string', - action='store', - metavar='-e blink1.1', - help='PlatformIO environment', -) -env['AddHelp']( - "ember_bl --blpioflags=FLAGS", - 'Run pio for ember_bl with FLAGS, e.g. `scons ember_bl --blpioflags="run -e blink1.1"`', -) -pioflags = GetOption('pioflags') -command = None -if pioflags is None: - command = 'pio run -d dbw/ember_bl' -else: - command = f'pio {pioflags} -d dbw/ember_bl' +platformio_ini = env.File('platformio.ini') + +ember_bl = env.Command( + '.ember_bl', + platformio_ini, + 'platformio run --project-dir ' + os.path.dirname(str(platformio_ini)), +) +env.AlwaysBuild(ember_bl) +env.Alias('ember_bl', ember_bl) -[pio_builder] = env.Command(env.Dir('.'), [], command) -env.AlwaysBuild(pio_builder) -env.Alias('ember_bl', pio_builder) -env['AddHelp']('ember_bl', 'Build dbw/ember_bl') +Return('ember_bl') diff --git a/dbw/ember_bl/ember_identity.py b/dbw/ember_bl/ember_identity.py index b4ae0a7b2..dda0170f3 100644 --- a/dbw/ember_bl/ember_identity.py +++ b/dbw/ember_bl/ember_identity.py @@ -3,5 +3,6 @@ Import('env') + identity = env.GetProjectOption('board_node_identity') -env.Append(CPPDEFINES=[("EMBER_NODE_IDENTITY", f'{identity}')]) +env.Append(CPPDEFINES=[('EMBER_NODE_IDENTITY', f'{identity}')]) diff --git a/dbw/node_fw/SConscript.py b/dbw/node_fw/SConscript.py index e90c02d37..ae5a4d77b 100644 --- a/dbw/node_fw/SConscript.py +++ b/dbw/node_fw/SConscript.py @@ -1,29 +1,20 @@ # ruff: noqa: F821 +import os + + Import('env') -flags_opt = AddOption( - '--pioflags', - dest='pioflags', - type='string', - action='store', - metavar='-e blink1.1', - help='PlatformIO environment', -) -env['AddHelp']( - "node_fw --pioflags=FLAGS", - 'Run pio for node_fw with FLAGS, e.g. `scons node_fw --pioflags="run -e blink1.1"`', -) -pioflags = GetOption('pioflags') -command = None -if pioflags is None: - command = 'pio run -d dbw/node_fw' -else: - command = f'pio {pioflags} -d dbw/node_fw' +platformio_ini = env.File('platformio.ini') + +node_fw = env.Command( + '.node_fw', + platformio_ini, + 'platformio run --project-dir ' + os.path.dirname(str(platformio_ini)), +) +env.AlwaysBuild(node_fw) +env.Alias('node_fw', node_fw) -[pio_builder] = env.Command(env.Dir('.'), [], command) -env.AlwaysBuild(pio_builder) -env.Alias('node_fw', pio_builder) -env['AddHelp']('node_fw', 'Build dbw/node_fw') +Return('node_fw') diff --git a/dbw/node_fw/ember_identity.py b/dbw/node_fw/ember_identity.py index b1f8b2061..97b0a927f 100644 --- a/dbw/node_fw/ember_identity.py +++ b/dbw/node_fw/ember_identity.py @@ -8,10 +8,11 @@ identity = env.GetProjectOption('board_can_node', default=None) if identity is None: print( - "Error: board_node_identity or board_can_node must be set in platformio.ini" + 'Error: `board_node_identity` or `board_can_node` must be set in' + + ' platformio.ini' ) exit(-1) - print(f"Using board_can_node as node identity: {identity}") + print(f'Using board_can_node as node identity: {identity}') -env.Append(CPPDEFINES=[("EMBER_NODE_IDENTITY", f'{identity}')]) +env.Append(CPPDEFINES=[('EMBER_NODE_IDENTITY', f'{identity}')]) diff --git a/dbw/node_fw/opencan-pio.py b/dbw/node_fw/opencan-pio.py index 17142cdcf..f9637e248 100644 --- a/dbw/node_fw/opencan-pio.py +++ b/dbw/node_fw/opencan-pio.py @@ -1,16 +1,18 @@ # ruff: noqa: F821 -Import("env") +Import('env') + + +node = env.GetProjectOption('board_can_node') + +network = env.File('../../can/can.yml') -node = env.GetProjectOption("board_can_node") -yml = env.File("../../can/can.yml") build_dir = Dir(env['BUILD_DIR']) -gen_dir = build_dir.Dir(f"../opencan_generated/{node}") +gen_dir = build_dir.Dir(f'../opencan_generated/{node}') env.Execute(Mkdir(gen_dir.path)) - -if 0 != env.Execute(f'opencan-cli codegen {yml} {gen_dir} {node}'): - print("OpenCAN error; stopping build.") +if env.Execute(f'opencan-cli codegen {network} {gen_dir} {node}'): + print('OpenCAN error; stopping build.') exit(-1) # Add gen_dir to the CPPPATH From 9686251fdfac53bcc46a9a2bd7238bc51ceadef8 Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Thu, 1 Feb 2024 15:12:57 -0500 Subject: [PATCH 25/80] Add link to symlink information --- docs/getting-started.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/getting-started.md b/docs/getting-started.md index 27d55effd..f21002f7d 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -82,7 +82,7 @@ There's quite a bit to unpack here, so let's get to it! The [`components/`] directory contains components that serve as the building blocks of a project. -Each component has a `docs/` directory that contains symlinks to +Each component has a `docs/` directory that contains [symlinks] to relevant documentation. These symlinks need to stay up to date as they will automatically get triggered for manual review on pull requests to ensure that documentation stays up to date. Having these symlinks also @@ -155,6 +155,7 @@ lectures; however, understand they do nothing but benefit you! [q&a]: https://missing.csail.mit.edu/2020/qa/ [security and cryptography]: https://missing.csail.mit.edu/2020/security/ [shell tools and scripting]: https://missing.csail.mit.edu/2020/shell-tools/ +[symlinks]: https://en.wikipedia.org/wiki/Symbolic_link [version control (git)]: https://missing.csail.mit.edu/2020/version-control/ [`can.yml`]: https://github.com/CooperUnion/selfdrive/blob/dev/can.yml [`components/`]: https://github.com/CooperUnion/selfdrive/tree/dev/components From 21edbb9e22fe3a62a88d085cabddcb806f90fe08 Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Thu, 1 Feb 2024 16:17:10 -0500 Subject: [PATCH 26/80] Add `Phony` pseudo-builder --- SConstruct.py | 6 +++++- site_scons/site_tools/Phony.py | 13 +++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 site_scons/site_tools/Phony.py diff --git a/SConstruct.py b/SConstruct.py index 32bff9446..7b223fbbc 100644 --- a/SConstruct.py +++ b/SConstruct.py @@ -16,7 +16,11 @@ **ENV, 'PATH': os.environ['PATH'], 'TERM': os.environ.get('TERM'), - } + }, + tools=[ + 'default', + 'Phony', + ], ) Export('env') diff --git a/site_scons/site_tools/Phony.py b/site_scons/site_tools/Phony.py new file mode 100644 index 000000000..2c9bd0ca5 --- /dev/null +++ b/site_scons/site_tools/Phony.py @@ -0,0 +1,13 @@ +def Phony(env, target, action): + return env.AlwaysBuild(env.Alias(target, [], action)) + + +def generate(env): + if env.Detect('Phony'): + return + + env.AddMethod(Phony, 'Phony') + + +def exists(env): + return env.Detect('Phony') From 822b82768a2267464a0e717c1892522fcacc76d9 Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Thu, 1 Feb 2024 16:20:10 -0500 Subject: [PATCH 27/80] Utilize `Phony` when using PlatformIO --- dbw/ember_bl/SConscript.py | 7 ++----- dbw/node_fw/SConscript.py | 7 ++----- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/dbw/ember_bl/SConscript.py b/dbw/ember_bl/SConscript.py index 340d29b4c..c4edf2881 100644 --- a/dbw/ember_bl/SConscript.py +++ b/dbw/ember_bl/SConscript.py @@ -8,13 +8,10 @@ platformio_ini = env.File('platformio.ini') -ember_bl = env.Command( - '.ember_bl', - platformio_ini, +ember_bl = env.Phony( + 'ember_bl', 'platformio run --project-dir ' + os.path.dirname(str(platformio_ini)), ) -env.AlwaysBuild(ember_bl) -env.Alias('ember_bl', ember_bl) Return('ember_bl') diff --git a/dbw/node_fw/SConscript.py b/dbw/node_fw/SConscript.py index ae5a4d77b..cad5e4af2 100644 --- a/dbw/node_fw/SConscript.py +++ b/dbw/node_fw/SConscript.py @@ -8,13 +8,10 @@ platformio_ini = env.File('platformio.ini') -node_fw = env.Command( - '.node_fw', - platformio_ini, +node_fw = env.Phony( + 'node_fw', 'platformio run --project-dir ' + os.path.dirname(str(platformio_ini)), ) -env.AlwaysBuild(node_fw) -env.Alias('node_fw', node_fw) Return('node_fw') From b2d9fee07e9da2e150125092170758922d39f457 Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Wed, 7 Feb 2024 15:31:42 -0500 Subject: [PATCH 28/80] Add `esp-idf` as a submodule --- .gitmodules | 3 +++ lib/esp-idf | 1 + 2 files changed, 4 insertions(+) create mode 160000 lib/esp-idf diff --git a/.gitmodules b/.gitmodules index d12124bd0..0014d21ad 100644 --- a/.gitmodules +++ b/.gitmodules @@ -10,3 +10,6 @@ [submodule "dbw/ember_bl/lib/ember"] path = dbw/ember_bl/lib/ember url = git@github.com:cooperunion/ember.git +[submodule "lib/esp-idf"] + path = lib/esp-idf + url = ../../espressif/esp-idf.git diff --git a/lib/esp-idf b/lib/esp-idf new file mode 160000 index 000000000..cc649ea86 --- /dev/null +++ b/lib/esp-idf @@ -0,0 +1 @@ +Subproject commit cc649ea869b8c24d19ba2d94c4d3f1146cb2947b From 04f41e6d1ccf2a3e95302b1068a2ca645043e8ca Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Wed, 7 Feb 2024 15:33:27 -0500 Subject: [PATCH 29/80] Set relative `url` for `ember` submodule --- .gitmodules | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.gitmodules b/.gitmodules index 0014d21ad..8acff9938 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,15 +1,15 @@ [submodule "can/cantools"] path = common/cantools url = ../cantools-autonomylab.git -[submodule "dbw/node_fw/lib/ember"] - path = dbw/node_fw/lib/ember +[submodule "dbw/ember_bl/lib/ember"] + path = dbw/ember_bl/lib/ember url = ../ember.git [submodule "dbw/node_fw/ccmn_defs"] path = dbw/node_fw/ccmn_defs url = ../ccmn_defs.git -[submodule "dbw/ember_bl/lib/ember"] - path = dbw/ember_bl/lib/ember - url = git@github.com:cooperunion/ember.git +[submodule "dbw/node_fw/lib/ember"] + path = dbw/node_fw/lib/ember + url = ../ember.git [submodule "lib/esp-idf"] path = lib/esp-idf url = ../../espressif/esp-idf.git From 9f9b5ac8b1039328263bc67692510f345da8f0e2 Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Wed, 7 Feb 2024 16:23:55 -0500 Subject: [PATCH 30/80] Install `esp-idf` --- .envrc | 9 +++++++++ .gitignore | 1 + site_scons/env.py | 3 +++ 3 files changed, 13 insertions(+) diff --git a/.envrc b/.envrc index 15bd92c91..4edce52fc 100644 --- a/.envrc +++ b/.envrc @@ -23,6 +23,15 @@ msg_info() use flake +if [ ! -f "$IDF_TOOLS_PATH/.requirements-installed" ]; then + msg_info 'installing esp-idf since it seems to be missing' + + "$IDF_PATH/install.sh" "$IDF_TARGETS" + + touch "$IDF_TOOLS_PATH/.requirements-installed" +fi + + if [ ! -d "$VIRTUAL_ENV" ]; then msg_info "creating \`$VIRTUAL_ENV\` because it doesn't seem to exist" diff --git a/.gitignore b/.gitignore index b9625dfdb..e65be2def 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ *.egg-info .cargo .direnv +.espressif .platformio .ruff_cache .sconsign.dblite diff --git a/site_scons/env.py b/site_scons/env.py index 8e83c5aae..70ed69795 100755 --- a/site_scons/env.py +++ b/site_scons/env.py @@ -10,6 +10,8 @@ key: os.path.abspath(value) for key, value in { 'CARGO_HOME': '.cargo', + 'IDF_PATH': 'lib/esp-idf', + 'IDF_TOOLS_PATH': '.espressif', 'REPO_ROOT': '.', 'VIRTUAL_ENV': '.venv', }.items() @@ -18,6 +20,7 @@ ENV: typing.Final[dict[str, str]] = { **PATHS, + 'IDF_TARGETS': 'esp32s3', } From ef3d6e4feb75edd6a24cc85e59b70e3e16cc1d6c Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Thu, 8 Feb 2024 15:17:04 -0500 Subject: [PATCH 31/80] Bump `flake.lock` --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index a39b954a2..427d38e90 100644 --- a/flake.lock +++ b/flake.lock @@ -5,11 +5,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", "owner": "numtide", "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", "type": "github" }, "original": { @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1698553279, - "narHash": "sha256-T/9P8yBSLcqo/v+FTOBK+0rjzjPMctVymZydbvR/Fak=", + "lastModified": 1707393347, + "narHash": "sha256-xmHgBMyF+Glxs3f8r+AMxJDTNUS01Q5kMjQdgAyw+B8=", "owner": "nixos", "repo": "nixpkgs", - "rev": "90e85bc7c1a6fc0760a94ace129d3a1c61c3d035", + "rev": "c0b7a892fb042ede583bdaecbbdc804acb85eabe", "type": "github" }, "original": { @@ -51,11 +51,11 @@ ] }, "locked": { - "lastModified": 1698631970, - "narHash": "sha256-uO+iqGslP1TdH0q3pMkpo6XHtzoEa6bjjF3dEQJSDcc=", + "lastModified": 1707358215, + "narHash": "sha256-Nuhi8KEJ2e+2nTimSyEIPqN5eh7ECVWd+AnPXG6L+SY=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "44210df7a70dcf0a81a5919f9422b6ae589ee673", + "rev": "dd917bb1b67fc049fd56fe6de70266a9ab74a4aa", "type": "github" }, "original": { From 4df52cb85dc6233fd28d2efb36fe8ff58c6de2aa Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Thu, 8 Feb 2024 15:22:09 -0500 Subject: [PATCH 32/80] Bump Python version to `3.12` --- flake.nix | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/flake.nix b/flake.nix index f86e9737e..a9a91f0b3 100644 --- a/flake.nix +++ b/flake.nix @@ -21,7 +21,7 @@ overlays = [ (import rust-overlay) ]; }; - python = pkgs.python311; + python = pkgs.python312; rust-version = pkgs.rust-bin.fromRustupToolchainFile ./rust-toolchain.toml; rust = rust-version.override { }; diff --git a/pyproject.toml b/pyproject.toml index edd42e11f..895bfb861 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,7 +12,7 @@ authors = [ ] license = {'text' = 'GPL-3.0-only'} -requires-python = '>=3.11' +requires-python = '>=3.12' dependencies = [ 'black', 'can-isotp', From 111593e834b47074cad7994e57adce39daf864a3 Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Thu, 8 Feb 2024 15:28:51 -0500 Subject: [PATCH 33/80] Bump Python dependencies --- .pre-commit-config.yaml | 8 +- requirements.txt | 1255 ++++++++++++++++++++------------------- 2 files changed, 661 insertions(+), 602 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index d9049e4ef..46d292cb5 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -17,7 +17,7 @@ repos: - id: trailing-whitespace - repo: https://github.com/psf/black-pre-commit-mirror - rev: 23.10.0 + rev: 24.1.1 hooks: - id: black @@ -35,16 +35,16 @@ repos: - id: nixpkgs-fmt - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.1.1 + rev: v0.2.1 hooks: - id: ruff - repo: https://github.com/lyz-code/yamlfix/ - rev: 1.13.0 + rev: 1.16.0 hooks: - id: yamlfix - repo: https://github.com/adrienverge/yamllint - rev: v1.32.0 + rev: v1.34.0 hooks: - id: yamllint diff --git a/requirements.txt b/requirements.txt index 0d5f90485..193434f40 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,85 +1,93 @@ # -# This file is autogenerated by pip-compile with Python 3.11 +# This file is autogenerated by pip-compile with Python 3.12 # by the following command: # -# pip-compile --allow-unsafe --generate-hashes +# pip-compile --allow-unsafe --generate-hashes --output-file=requirements.txt # ajsonrpc==1.2.0 \ --hash=sha256:0fa2c1cf8e619d18ffee96043822032d6520eda65d3b712f9540a3a63e9cac25 \ --hash=sha256:791bac18f0bf0dee109194644f151cf8b7ff529c4b8d6239ac48104a3251a19f # via platformio -anyio==4.0.0 \ - --hash=sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f \ - --hash=sha256:f7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a +annotated-types==0.6.0 \ + --hash=sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43 \ + --hash=sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d + # via pydantic +anyio==4.2.0 \ + --hash=sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee \ + --hash=sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f # via starlette argparse-addons==0.12.0 \ --hash=sha256:48b70ecd719054fcb0d7e6f25a1fecc13607aac61d446e83f47d211b4ead0d61 \ --hash=sha256:6322a0dcd706887e76308d23136d5b86da0eab75a282dc6496701d1210b460af # via cantools -bitstruct==8.18.0 \ - --hash=sha256:03c93418ba361408be843cbea84d5bac325f313a6bae2715f3a6770f04f8cb0e \ - --hash=sha256:05ddf45791bef33d4f3348cecef9ec7b2dab13fc3bd890427e6dc01d38eee775 \ - --hash=sha256:0fcf1b9c46ab1f63161cabafc6393ec871a941cce5ba94238fbafa4fe17742f8 \ - --hash=sha256:1c7d6c01be00b5e1f09681cee34a20f800782b5a4ee1f3c309f86d469ab16d68 \ - --hash=sha256:2816598fe68fb20f356c86228d10ac10c01bd3fdf2f2adc47cadad7ad6403b83 \ - --hash=sha256:2ba3c2a13bd7ac5183e162271de26ad66417ecbf20f6b4f4b9ee8de0541a80f9 \ - --hash=sha256:3067c0d1be651f06c3242bdeb41dcabf0e08e436af01fd493f1893c85d650336 \ - --hash=sha256:3136043e56b9e96327629431752cdfdce2f0a0121ac0f117ff5cb2bdb5727ed7 \ - --hash=sha256:358571909a99acc1fa599b33d7e92a4a1c9939e3bc7c6d7713b797d5bf9fb3c3 \ - --hash=sha256:35ef7f1630b6d39fccae49332a3e1821da7c37f0a7d6cb08c1a8472ee58c857b \ - --hash=sha256:3a9acf21ce73e0b26298cc6358e9d42c774897199e51afa36dec7f6146c99895 \ - --hash=sha256:3b857d7744d4b38ba46c4c03082347c059fce824e199374e548445aac4f1034b \ - --hash=sha256:3c76859521c3e1f0bab65cc6da24c1721e28fc9a99b0895ada31f8a4efa5c029 \ - --hash=sha256:42739c23110b0dc74b5d8e3cac5c6a690ed37dc50aa184c2ad9b2622902a1954 \ - --hash=sha256:521eb051d7e75a87e6fcbb975d437fc96ca2fd17a5be415818306fbb239c0706 \ - --hash=sha256:558771c5aa3e3d9762fa0e74e40a8bb8a4cb0eda9c49377093a859af534a7129 \ - --hash=sha256:5be4fed9f63291740969e68c1e3f4d8bcb9a9fa58e28107c378f911adadd43a0 \ - --hash=sha256:5cd2d4eccafdb9661c0f5b0fe24de0c1c268c9b4931b1d7e2602cc76f63e86ac \ - --hash=sha256:62cd199d03abce0480dbad1546eaf981246b4bfb80b9f4ead8dba3b975798c2e \ - --hash=sha256:65a9d05f89144f7c6d81aad9bc43ad1880dcec5b2ec4de83960e2a6ec5debcba \ - --hash=sha256:675fc4f6e6a601e30ce5eb95ccefdbb6353ad77b950941d6f082bec9aab5fac8 \ - --hash=sha256:70ad2da40e2d438b33f37b928f5d2ea1422a8acbd7d6509020dcb60efd2dd5e4 \ - --hash=sha256:80416b93674b35ea16dc733419b5e462ee4d1f5f42a87f26ad007da8e427b324 \ - --hash=sha256:823a72e9307d6aede9b4e0bdf41be95ac34803ccb0b75501c78502baf185f0ef \ - --hash=sha256:8348fb206238c59f65254b30940e8862c61fc4ca85f0b0111da2ab1e1fdbcfb0 \ - --hash=sha256:8350620dfca95065b7f3e843110e31e8a98c498461a799f4501d083cf48847c3 \ - --hash=sha256:844029a325bd89d6c2650ac828c08aa3de519cde71f5d8048148e802f496ebf3 \ - --hash=sha256:87a3da17dec195faf166643feddae13eb3955ffc3875551713d181afeeca383a \ - --hash=sha256:8943961bb7595ae8f57bbc573b33aec7b483847ab4b2c0536ad622d6584910d2 \ - --hash=sha256:91865b210a4bfa86817537c0d934fac97fe671717f08665dc134551cfed3be13 \ - --hash=sha256:9416d445f6f433e6b158f302aa2477d3cd4f570b1bedfbe5719dfb61d0a4fe90 \ - --hash=sha256:9b7fde6d8f051f6cfd1b89a7ffaaf28e7ae6e9704c38d6326039a1094b56c280 \ - --hash=sha256:9d6205f3c91c4c729f7d99808f0970edaab196c93e4311297fea8863ea3dca7c \ - --hash=sha256:9e25ef35f9ed34d60a2724e66f85b12396b24c9f17401d8a9c56c317c2e5e7d6 \ - --hash=sha256:a45854ae49a457fb21cf39574bc4cff93a4478947d3694d4e0a7b74ab60f4ca6 \ - --hash=sha256:a5bee1d7b5d37040867bff484583d311e34972446ba42e4d9ac0ac561b5c7dea \ - --hash=sha256:a95ed11fde1bf3b63a1778a65918f819570f1fe0bc5e57d36a262a06b5bead32 \ - --hash=sha256:a986dc460881d329738e5c8c8307780753e9b44b54929eea1f4b5a95e0a6e026 \ - --hash=sha256:aa58167c0c9289ece844c7b1d1f0283de5172b8efaec485267e5030050afaef3 \ - --hash=sha256:ce30cefab651bc3cd165365b98b03081ec3339ae601412fc60223f1553b28f04 \ - --hash=sha256:d7485bb90f7ebade3f96669a43ea07dd86aa45ea24ab5de891409cac05b57c04 \ - --hash=sha256:e6d6986f36f3675c56df09da4f8b55d2436c430df88fc78d90e5091fcb249d87 \ - --hash=sha256:e967fd9575c09d6379770e269c9d5ee419559e12938c99bb6a0c07e34f67f737 +bitstruct==8.19.0 \ + --hash=sha256:01402fbc3dba2286b3ac9b74d5936dd984736f928aacd371458a4b0cf95f0755 \ + --hash=sha256:01bdfc3adbe15b05ba27ab6dce7959caa29a000f066201944b29c64bb8888f03 \ + --hash=sha256:0e2fb23b5973ce1e9f349c4dc90873eeff9800fe917ffd345f39b9b964f6d119 \ + --hash=sha256:1300cd635814e40b1f4105aa4f404cb5d1b8cc54e06e267ba1616725f9c2beea \ + --hash=sha256:14c3ebdec92c486142327d934cb451d96b411543ec6f72aeb2b4b4334e9408bf \ + --hash=sha256:1c4d9b75248adee84e7e6c95bf95966f152b78363cb20a81920da2aeadc4375f \ + --hash=sha256:2bb49acc2ccc6efd3c9613cae8f7e1316c92f832bff860a6fcb78a4275974e90 \ + --hash=sha256:2c5eda42d55db67072c6cf7cc79b1df1074269004bad119b79e4ad38cfa61877 \ + --hash=sha256:2ea093522b12ce714a3a95851a8c3dd97f620126bbe983eb261b3bf18ac945e7 \ + --hash=sha256:45b66e20633f1e083e37fa396c81761e0fc688ffa06ff5559e990e37234f9e18 \ + --hash=sha256:464f102999402a2624ee3106dbfa1f3745810036814a33e6bc706b7d312c480f \ + --hash=sha256:55768b1f5e33594178f0b3e1596b89d831b006713a60caa09de61fd385bf22b1 \ + --hash=sha256:5732aff5c8eb3a572f7b20d09fc4c213215f9e60c0e66f2910b31eb65b457744 \ + --hash=sha256:59e0c18d557474d8452c4f8b59320fd4d9efcf52eae2144bdf317d25c64dcf85 \ + --hash=sha256:5e7f78aedec2881017026eb7f7ab79514aef09a24afd8acf5fa8c73b1cd0e9f4 \ + --hash=sha256:645da560acd20dd73a1ef220e3ddc08e108866e30a708ef2f6193e0a3725113e \ + --hash=sha256:7488fd4e2fde3d8111971e2040cd5b008be918381afc80387d3fdf047c801293 \ + --hash=sha256:7836852d5c15444e87a2029f922b48717e6e199d2332d55e8738e92d8590987e \ + --hash=sha256:7b4745b099d3d85307495e25ff0f265deeea675621dcecb25ba059ee68ce88d5 \ + --hash=sha256:7bed7b2761c18a515298145a4f67b6c71ce302453fe7d87ec6b7d2e77fd3c22b \ + --hash=sha256:7d1f3eb18ddc33ba73f5cbb55c885584bcec51c421ac3551b79edc0ffeaecc3d \ + --hash=sha256:7ea57e4e793b595cd3e037920852f2c676b4f5f1734c41985db3f48783928e2c \ + --hash=sha256:8d0cafd2e2974c4bbe349fb67951d43d221ea304218c2ee65f9fe4c62acabc2f \ + --hash=sha256:961845a29333119b70dd9aab54bc714bf9ba5efefc55cb4c747c35c1390b8842 \ + --hash=sha256:976c39ad771c6773d6fbd14d71e62242d5b3bca7b72428fd183e1f1085d5e858 \ + --hash=sha256:9c1542d5ae888ebc31614775938bfd13454f0d897dc2515363a4607efadc990b \ + --hash=sha256:9fbe12d464db909f58d5e2a2485b3047a488fa1373e8f74b22d6759ee6b2437a \ + --hash=sha256:a0ca55fba25d6c631e17933f20cf87f553d7bceec7659e3de9ef48dc85ced2bf \ + --hash=sha256:a35e0b267d12438e6a7b28850a15d4cffe767db6fc443a406d0ead97fa1d7d5b \ + --hash=sha256:abdb7bdb5b04c2f1bbda0eae828c627252243ddc042aea6b72af8fcc63696598 \ + --hash=sha256:b86d192d658eaf35f10efb2e1940ec755cc28e081f46de294a2e91a74ea298aa \ + --hash=sha256:bba06607f956cc39ceee19fd11b542e8e66a43180d48fa36c4609443893c273e \ + --hash=sha256:bc8f1871b42b705eb34b8722c3ec358fbf1b97fd37a62693564ee72648afb100 \ + --hash=sha256:bfa0326057c9b02c4e65e74e45b9914a7f8c59590a8e718e20a899a02b41f2e6 \ + --hash=sha256:c026a7cf8d954ef53cf4d0ae5ee3dd1ac66e24e9a474c5afe55467ab7d609f2e \ + --hash=sha256:d2c176ff6727206805760f45c2151468aed843256aa239c14f4730b9e1d84fc7 \ + --hash=sha256:d3f6e3aeb598215062c505a06135fbdfa3bb4eeb249b55f87e865a86b3fd9e99 \ + --hash=sha256:d75ba9dded85c17e885a209a00eb8e248ee40762149f2f2a79360ca857467dac \ + --hash=sha256:d7774e2a51e254ef1ba98a1ee38573c819d4ee7e396d5121c5ecae17df927501 \ + --hash=sha256:d9ba0299f624e7c8ea1eec926fc77741f82ffc5b3c3ba4f89303d33d5605f4d8 \ + --hash=sha256:da00da004830800323554e7a83f1f32a1f49345f5379476de4b5f6ae227ee962 \ + --hash=sha256:df74c72feba80014b05ab6f1e1a0bb90be9f9e7eb60a9bab1e00728f7f46d79d \ + --hash=sha256:f2fa607d111077145e6374d49be6098f33e7cee0967b42cfc117df53eee13332 # via cantools -black==23.10.1 \ - --hash=sha256:037e9b4664cafda5f025a1728c50a9e9aedb99a759c89f760bd83730e76ba884 \ - --hash=sha256:1b917a2aa020ca600483a7b340c165970b26e9029067f019e3755b56e8dd5916 \ - --hash=sha256:1f8ce316753428ff68749c65a5f7844631aa18c8679dfd3ca9dc1a289979c258 \ - --hash=sha256:33d40f5b06be80c1bbce17b173cda17994fbad096ce60eb22054da021bf933d1 \ - --hash=sha256:3f157a8945a7b2d424da3335f7ace89c14a3b0625e6593d21139c2d8214d55ce \ - --hash=sha256:5ed45ac9a613fb52dad3b61c8dea2ec9510bf3108d4db88422bacc7d1ba1243d \ - --hash=sha256:6d23d7822140e3fef190734216cefb262521789367fbdc0b3f22af6744058982 \ - --hash=sha256:7670242e90dc129c539e9ca17665e39a146a761e681805c54fbd86015c7c84f7 \ - --hash=sha256:7b4d10b0f016616a0d93d24a448100adf1699712fb7a4efd0e2c32bbb219b173 \ - --hash=sha256:7cb5936e686e782fddb1c73f8aa6f459e1ad38a6a7b0e54b403f1f05a1507ee9 \ - --hash=sha256:7d56124b7a61d092cb52cce34182a5280e160e6aff3137172a68c2c2c4b76bcb \ - --hash=sha256:840015166dbdfbc47992871325799fd2dc0dcf9395e401ada6d88fe11498abad \ - --hash=sha256:9c74de4c77b849e6359c6f01987e94873c707098322b91490d24296f66d067dc \ - --hash=sha256:b15b75fc53a2fbcac8a87d3e20f69874d161beef13954747e053bca7a1ce53a0 \ - --hash=sha256:cfcce6f0a384d0da692119f2d72d79ed07c7159879d0bb1bb32d2e443382bf3a \ - --hash=sha256:d431e6739f727bb2e0495df64a6c7a5310758e87505f5f8cde9ff6c0f2d7e4fe \ - --hash=sha256:e293e4c2f4a992b980032bbd62df07c1bcff82d6964d6c9496f2cd726e246ace \ - --hash=sha256:ec3f8e6234c4e46ff9e16d9ae96f4ef69fa328bb4ad08198c8cee45bb1f08c69 +black==24.1.1 \ + --hash=sha256:0269dfdea12442022e88043d2910429bed717b2d04523867a85dacce535916b8 \ + --hash=sha256:07204d078e25327aad9ed2c64790d681238686bce254c910de640c7cc4fc3aa6 \ + --hash=sha256:08b34e85170d368c37ca7bf81cf67ac863c9d1963b2c1780c39102187ec8dd62 \ + --hash=sha256:1a95915c98d6e32ca43809d46d932e2abc5f1f7d582ffbe65a5b4d1588af7445 \ + --hash=sha256:2588021038bd5ada078de606f2a804cadd0a3cc6a79cb3e9bb3a8bf581325a4c \ + --hash=sha256:2fa6a0e965779c8f2afb286f9ef798df770ba2b6cee063c650b96adec22c056a \ + --hash=sha256:34afe9da5056aa123b8bfda1664bfe6fb4e9c6f311d8e4a6eb089da9a9173bf9 \ + --hash=sha256:3897ae5a21ca132efa219c029cce5e6bfc9c3d34ed7e892113d199c0b1b444a2 \ + --hash=sha256:40657e1b78212d582a0edecafef133cf1dd02e6677f539b669db4746150d38f6 \ + --hash=sha256:48b5760dcbfe5cf97fd4fba23946681f3a81514c6ab8a45b50da67ac8fbc6c7b \ + --hash=sha256:5242ecd9e990aeb995b6d03dc3b2d112d4a78f2083e5a8e86d566340ae80fec4 \ + --hash=sha256:5cdc2e2195212208fbcae579b931407c1fa9997584f0a415421748aeafff1168 \ + --hash=sha256:5d7b06ea8816cbd4becfe5f70accae953c53c0e53aa98730ceccb0395520ee5d \ + --hash=sha256:7258c27115c1e3b5de9ac6c4f9957e3ee2c02c0b39222a24dc7aa03ba0e986f5 \ + --hash=sha256:854c06fb86fd854140f37fb24dbf10621f5dab9e3b0c29a690ba595e3d543024 \ + --hash=sha256:a21725862d0e855ae05da1dd25e3825ed712eaaccef6b03017fe0853a01aa45e \ + --hash=sha256:a83fe522d9698d8f9a101b860b1ee154c1d25f8a82ceb807d319f085b2627c5b \ + --hash=sha256:b3d64db762eae4a5ce04b6e3dd745dcca0fb9560eb931a5be97472e38652a161 \ + --hash=sha256:e298d588744efda02379521a19639ebcd314fba7a49be22136204d7ed1782717 \ + --hash=sha256:e2c8dfa14677f90d976f68e0c923947ae68fa3961d61ee30976c388adc0b02c8 \ + --hash=sha256:ecba2a15dfb2d97105be74bbfe5128bc5e9fa8477d8c46766505c1dda5883aac \ + --hash=sha256:fc1ec9aa6f4d98d022101e015261c056ddebe3da6a8ccfc2c792cbe0349d48b7 # via selfdrive (pyproject.toml) bottle==0.12.25 \ --hash=sha256:d6f15f9d422670b7c073d63bd8d287b135388da187a0f3e3c19293626ce034ea \ @@ -89,115 +97,115 @@ build==1.0.3 \ --hash=sha256:538aab1b64f9828977f84bc63ae570b060a8ed1be419e7870b8b4fc5e6ea553b \ --hash=sha256:589bf99a67df7c9cf07ec0ac0e5e2ea5d4b37ac63301c4986d1acb126aa83f8f # via pip-tools -can-isotp==1.9 \ - --hash=sha256:b69258bf528b2bcfe8de1bfa63f12ae4a19abb329f9520eec67e992f7a6107de \ - --hash=sha256:cbfa9b644054a9d68710f6e00e26d0c22342b55d9bdcaad654effb3046f96ee0 +can-isotp==2.0.4 \ + --hash=sha256:2cbe8bfc0d4a9357024657ac63cdc9bb9937e3df6789095112ad62d0073cd2a7 \ + --hash=sha256:32b235fdb7e30f8005a875d3682339ef1123b92c2e76e97a299d5347c88630e2 # via selfdrive (pyproject.toml) -cantools==39.2.0 \ - --hash=sha256:24045c5575217bb5331543e6a55cee822c37ad811dc4a08c75aa2eee3c6d529c \ - --hash=sha256:ebeded4cf9769bdab2e2b97691f014227878b7382a8abc8416e0aa2a90e7ae30 +cantools==39.4.3 \ + --hash=sha256:6063ab49624e683f3cc2e69845f97cac6f413f888a00b35db59ee1e40bb3f9a0 \ + --hash=sha256:7aaa3d246bc5328bb29c681fc8162d2800be05ee095b3edb9470fa1478f9e506 # via # opencan-cand # selfdrive (pyproject.toml) -certifi==2023.7.22 \ - --hash=sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082 \ - --hash=sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9 +certifi==2024.2.2 \ + --hash=sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f \ + --hash=sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1 # via requests cfgv==3.4.0 \ --hash=sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9 \ --hash=sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560 # via pre-commit -charset-normalizer==3.3.1 \ - --hash=sha256:06cf46bdff72f58645434d467bf5228080801298fbba19fe268a01b4534467f5 \ - --hash=sha256:0c8c61fb505c7dad1d251c284e712d4e0372cef3b067f7ddf82a7fa82e1e9a93 \ - --hash=sha256:10b8dd31e10f32410751b3430996f9807fc4d1587ca69772e2aa940a82ab571a \ - --hash=sha256:1171ef1fc5ab4693c5d151ae0fdad7f7349920eabbaca6271f95969fa0756c2d \ - --hash=sha256:17a866d61259c7de1bdadef418a37755050ddb4b922df8b356503234fff7932c \ - --hash=sha256:1d6bfc32a68bc0933819cfdfe45f9abc3cae3877e1d90aac7259d57e6e0f85b1 \ - --hash=sha256:1ec937546cad86d0dce5396748bf392bb7b62a9eeb8c66efac60e947697f0e58 \ - --hash=sha256:223b4d54561c01048f657fa6ce41461d5ad8ff128b9678cfe8b2ecd951e3f8a2 \ - --hash=sha256:2465aa50c9299d615d757c1c888bc6fef384b7c4aec81c05a0172b4400f98557 \ - --hash=sha256:28f512b9a33235545fbbdac6a330a510b63be278a50071a336afc1b78781b147 \ - --hash=sha256:2c092be3885a1b7899cd85ce24acedc1034199d6fca1483fa2c3a35c86e43041 \ - --hash=sha256:2c4c99f98fc3a1835af8179dcc9013f93594d0670e2fa80c83aa36346ee763d2 \ - --hash=sha256:31445f38053476a0c4e6d12b047b08ced81e2c7c712e5a1ad97bc913256f91b2 \ - --hash=sha256:31bbaba7218904d2eabecf4feec0d07469284e952a27400f23b6628439439fa7 \ - --hash=sha256:34d95638ff3613849f473afc33f65c401a89f3b9528d0d213c7037c398a51296 \ - --hash=sha256:352a88c3df0d1fa886562384b86f9a9e27563d4704ee0e9d56ec6fcd270ea690 \ - --hash=sha256:39b70a6f88eebe239fa775190796d55a33cfb6d36b9ffdd37843f7c4c1b5dc67 \ - --hash=sha256:3c66df3f41abee950d6638adc7eac4730a306b022570f71dd0bd6ba53503ab57 \ - --hash=sha256:3f70fd716855cd3b855316b226a1ac8bdb3caf4f7ea96edcccc6f484217c9597 \ - --hash=sha256:3f9bc2ce123637a60ebe819f9fccc614da1bcc05798bbbaf2dd4ec91f3e08846 \ - --hash=sha256:3fb765362688821404ad6cf86772fc54993ec11577cd5a92ac44b4c2ba52155b \ - --hash=sha256:45f053a0ece92c734d874861ffe6e3cc92150e32136dd59ab1fb070575189c97 \ - --hash=sha256:46fb9970aa5eeca547d7aa0de5d4b124a288b42eaefac677bde805013c95725c \ - --hash=sha256:4cb50a0335382aac15c31b61d8531bc9bb657cfd848b1d7158009472189f3d62 \ - --hash=sha256:4e12f8ee80aa35e746230a2af83e81bd6b52daa92a8afaef4fea4a2ce9b9f4fa \ - --hash=sha256:4f3100d86dcd03c03f7e9c3fdb23d92e32abbca07e7c13ebd7ddfbcb06f5991f \ - --hash=sha256:4f6e2a839f83a6a76854d12dbebde50e4b1afa63e27761549d006fa53e9aa80e \ - --hash=sha256:4f861d94c2a450b974b86093c6c027888627b8082f1299dfd5a4bae8e2292821 \ - --hash=sha256:501adc5eb6cd5f40a6f77fbd90e5ab915c8fd6e8c614af2db5561e16c600d6f3 \ - --hash=sha256:520b7a142d2524f999447b3a0cf95115df81c4f33003c51a6ab637cbda9d0bf4 \ - --hash=sha256:548eefad783ed787b38cb6f9a574bd8664468cc76d1538215d510a3cd41406cb \ - --hash=sha256:555fe186da0068d3354cdf4bbcbc609b0ecae4d04c921cc13e209eece7720727 \ - --hash=sha256:55602981b2dbf8184c098bc10287e8c245e351cd4fdcad050bd7199d5a8bf514 \ - --hash=sha256:58e875eb7016fd014c0eea46c6fa92b87b62c0cb31b9feae25cbbe62c919f54d \ - --hash=sha256:5a3580a4fdc4ac05f9e53c57f965e3594b2f99796231380adb2baaab96e22761 \ - --hash=sha256:5b70bab78accbc672f50e878a5b73ca692f45f5b5e25c8066d748c09405e6a55 \ - --hash=sha256:5ceca5876032362ae73b83347be8b5dbd2d1faf3358deb38c9c88776779b2e2f \ - --hash=sha256:61f1e3fb621f5420523abb71f5771a204b33c21d31e7d9d86881b2cffe92c47c \ - --hash=sha256:633968254f8d421e70f91c6ebe71ed0ab140220469cf87a9857e21c16687c034 \ - --hash=sha256:63a6f59e2d01310f754c270e4a257426fe5a591dc487f1983b3bbe793cf6bac6 \ - --hash=sha256:63accd11149c0f9a99e3bc095bbdb5a464862d77a7e309ad5938fbc8721235ae \ - --hash=sha256:6db3cfb9b4fcecb4390db154e75b49578c87a3b9979b40cdf90d7e4b945656e1 \ - --hash=sha256:71ef3b9be10070360f289aea4838c784f8b851be3ba58cf796262b57775c2f14 \ - --hash=sha256:7ae8e5142dcc7a49168f4055255dbcced01dc1714a90a21f87448dc8d90617d1 \ - --hash=sha256:7b6cefa579e1237ce198619b76eaa148b71894fb0d6bcf9024460f9bf30fd228 \ - --hash=sha256:800561453acdecedaac137bf09cd719c7a440b6800ec182f077bb8e7025fb708 \ - --hash=sha256:82ca51ff0fc5b641a2d4e1cc8c5ff108699b7a56d7f3ad6f6da9dbb6f0145b48 \ - --hash=sha256:851cf693fb3aaef71031237cd68699dded198657ec1e76a76eb8be58c03a5d1f \ - --hash=sha256:854cc74367180beb327ab9d00f964f6d91da06450b0855cbbb09187bcdb02de5 \ - --hash=sha256:87071618d3d8ec8b186d53cb6e66955ef2a0e4fa63ccd3709c0c90ac5a43520f \ - --hash=sha256:871d045d6ccc181fd863a3cd66ee8e395523ebfbc57f85f91f035f50cee8e3d4 \ - --hash=sha256:8aee051c89e13565c6bd366813c386939f8e928af93c29fda4af86d25b73d8f8 \ - --hash=sha256:8af5a8917b8af42295e86b64903156b4f110a30dca5f3b5aedea123fbd638bff \ - --hash=sha256:8ec8ef42c6cd5856a7613dcd1eaf21e5573b2185263d87d27c8edcae33b62a61 \ - --hash=sha256:91e43805ccafa0a91831f9cd5443aa34528c0c3f2cc48c4cb3d9a7721053874b \ - --hash=sha256:9505dc359edb6a330efcd2be825fdb73ee3e628d9010597aa1aee5aa63442e97 \ - --hash=sha256:985c7965f62f6f32bf432e2681173db41336a9c2611693247069288bcb0c7f8b \ - --hash=sha256:9a74041ba0bfa9bc9b9bb2cd3238a6ab3b7618e759b41bd15b5f6ad958d17605 \ - --hash=sha256:9edbe6a5bf8b56a4a84533ba2b2f489d0046e755c29616ef8830f9e7d9cf5728 \ - --hash=sha256:a15c1fe6d26e83fd2e5972425a772cca158eae58b05d4a25a4e474c221053e2d \ - --hash=sha256:a66bcdf19c1a523e41b8e9d53d0cedbfbac2e93c649a2e9502cb26c014d0980c \ - --hash=sha256:ae4070f741f8d809075ef697877fd350ecf0b7c5837ed68738607ee0a2c572cf \ - --hash=sha256:ae55d592b02c4349525b6ed8f74c692509e5adffa842e582c0f861751701a673 \ - --hash=sha256:b578cbe580e3b41ad17b1c428f382c814b32a6ce90f2d8e39e2e635d49e498d1 \ - --hash=sha256:b891a2f68e09c5ef989007fac11476ed33c5c9994449a4e2c3386529d703dc8b \ - --hash=sha256:baec8148d6b8bd5cee1ae138ba658c71f5b03e0d69d5907703e3e1df96db5e41 \ - --hash=sha256:bb06098d019766ca16fc915ecaa455c1f1cd594204e7f840cd6258237b5079a8 \ - --hash=sha256:bc791ec3fd0c4309a753f95bb6c749ef0d8ea3aea91f07ee1cf06b7b02118f2f \ - --hash=sha256:bd28b31730f0e982ace8663d108e01199098432a30a4c410d06fe08fdb9e93f4 \ - --hash=sha256:be4d9c2770044a59715eb57c1144dedea7c5d5ae80c68fb9959515037cde2008 \ - --hash=sha256:c0c72d34e7de5604df0fde3644cc079feee5e55464967d10b24b1de268deceb9 \ - --hash=sha256:c0e842112fe3f1a4ffcf64b06dc4c61a88441c2f02f373367f7b4c1aa9be2ad5 \ - --hash=sha256:c15070ebf11b8b7fd1bfff7217e9324963c82dbdf6182ff7050519e350e7ad9f \ - --hash=sha256:c2000c54c395d9e5e44c99dc7c20a64dc371f777faf8bae4919ad3e99ce5253e \ - --hash=sha256:c30187840d36d0ba2893bc3271a36a517a717f9fd383a98e2697ee890a37c273 \ - --hash=sha256:cb7cd68814308aade9d0c93c5bd2ade9f9441666f8ba5aa9c2d4b389cb5e2a45 \ - --hash=sha256:cd805513198304026bd379d1d516afbf6c3c13f4382134a2c526b8b854da1c2e \ - --hash=sha256:d0bf89afcbcf4d1bb2652f6580e5e55a840fdf87384f6063c4a4f0c95e378656 \ - --hash=sha256:d9137a876020661972ca6eec0766d81aef8a5627df628b664b234b73396e727e \ - --hash=sha256:dbd95e300367aa0827496fe75a1766d198d34385a58f97683fe6e07f89ca3e3c \ - --hash=sha256:dced27917823df984fe0c80a5c4ad75cf58df0fbfae890bc08004cd3888922a2 \ - --hash=sha256:de0b4caa1c8a21394e8ce971997614a17648f94e1cd0640fbd6b4d14cab13a72 \ - --hash=sha256:debb633f3f7856f95ad957d9b9c781f8e2c6303ef21724ec94bea2ce2fcbd056 \ - --hash=sha256:e372d7dfd154009142631de2d316adad3cc1c36c32a38b16a4751ba78da2a397 \ - --hash=sha256:ecd26be9f112c4f96718290c10f4caea6cc798459a3a76636b817a0ed7874e42 \ - --hash=sha256:edc0202099ea1d82844316604e17d2b175044f9bcb6b398aab781eba957224bd \ - --hash=sha256:f194cce575e59ffe442c10a360182a986535fd90b57f7debfaa5c845c409ecc3 \ - --hash=sha256:f5fb672c396d826ca16a022ac04c9dce74e00a1c344f6ad1a0fdc1ba1f332213 \ - --hash=sha256:f6a02a3c7950cafaadcd46a226ad9e12fc9744652cc69f9e5534f98b47f3bbcf \ - --hash=sha256:fe81b35c33772e56f4b6cf62cf4aedc1762ef7162a31e6ac7fe5e40d0149eb67 +charset-normalizer==3.3.2 \ + --hash=sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027 \ + --hash=sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087 \ + --hash=sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786 \ + --hash=sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8 \ + --hash=sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09 \ + --hash=sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185 \ + --hash=sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574 \ + --hash=sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e \ + --hash=sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519 \ + --hash=sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898 \ + --hash=sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269 \ + --hash=sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3 \ + --hash=sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f \ + --hash=sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6 \ + --hash=sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8 \ + --hash=sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a \ + --hash=sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73 \ + --hash=sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc \ + --hash=sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714 \ + --hash=sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2 \ + --hash=sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc \ + --hash=sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce \ + --hash=sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d \ + --hash=sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e \ + --hash=sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6 \ + --hash=sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269 \ + --hash=sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96 \ + --hash=sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d \ + --hash=sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a \ + --hash=sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4 \ + --hash=sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77 \ + --hash=sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d \ + --hash=sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0 \ + --hash=sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed \ + --hash=sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068 \ + --hash=sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac \ + --hash=sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25 \ + --hash=sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8 \ + --hash=sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab \ + --hash=sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26 \ + --hash=sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2 \ + --hash=sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db \ + --hash=sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f \ + --hash=sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5 \ + --hash=sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99 \ + --hash=sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c \ + --hash=sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d \ + --hash=sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811 \ + --hash=sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa \ + --hash=sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a \ + --hash=sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03 \ + --hash=sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b \ + --hash=sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04 \ + --hash=sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c \ + --hash=sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001 \ + --hash=sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458 \ + --hash=sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389 \ + --hash=sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99 \ + --hash=sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985 \ + --hash=sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537 \ + --hash=sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238 \ + --hash=sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f \ + --hash=sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d \ + --hash=sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796 \ + --hash=sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a \ + --hash=sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143 \ + --hash=sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8 \ + --hash=sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c \ + --hash=sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5 \ + --hash=sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5 \ + --hash=sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711 \ + --hash=sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4 \ + --hash=sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6 \ + --hash=sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c \ + --hash=sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7 \ + --hash=sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4 \ + --hash=sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b \ + --hash=sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae \ + --hash=sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12 \ + --hash=sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c \ + --hash=sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae \ + --hash=sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8 \ + --hash=sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887 \ + --hash=sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b \ + --hash=sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4 \ + --hash=sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f \ + --hash=sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5 \ + --hash=sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33 \ + --hash=sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519 \ + --hash=sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561 # via requests click==8.1.7 \ --hash=sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28 \ @@ -217,59 +225,51 @@ coloredlogs==15.0.1 \ --hash=sha256:612ee75c546f53e92e70049c9dbfcc18c935a2b9a53b66085ce9ef6a6e5c0934 \ --hash=sha256:7c991aa71a4577af2f82600d8f8f3a89f936baeaf9b50a9c197da014e5bf16b0 # via opencan-cand -contourpy==1.1.1 \ - --hash=sha256:059c3d2a94b930f4dafe8105bcdc1b21de99b30b51b5bce74c753686de858cb6 \ - --hash=sha256:0683e1ae20dc038075d92e0e0148f09ffcefab120e57f6b4c9c0f477ec171f33 \ - --hash=sha256:07d6f11dfaf80a84c97f1a5ba50d129d9303c5b4206f776e94037332e298dda8 \ - --hash=sha256:081f3c0880712e40effc5f4c3b08feca6d064cb8cfbb372ca548105b86fd6c3d \ - --hash=sha256:0e48694d6a9c5a26ee85b10130c77a011a4fedf50a7279fa0bdaf44bafb4299d \ - --hash=sha256:11b836b7dbfb74e049c302bbf74b4b8f6cb9d0b6ca1bf86cfa8ba144aedadd9c \ - --hash=sha256:19557fa407e70f20bfaba7d55b4d97b14f9480856c4fb65812e8a05fe1c6f9bf \ - --hash=sha256:229a25f68046c5cf8067d6d6351c8b99e40da11b04d8416bf8d2b1d75922521e \ - --hash=sha256:24216552104ae8f3b34120ef84825400b16eb6133af2e27a190fdc13529f023e \ - --hash=sha256:3b53d5769aa1f2d4ea407c65f2d1d08002952fac1d9e9d307aa2e1023554a163 \ - --hash=sha256:3de23ca4f381c3770dee6d10ead6fff524d540c0f662e763ad1530bde5112532 \ - --hash=sha256:407d864db716a067cc696d61fa1ef6637fedf03606e8417fe2aeed20a061e6b2 \ - --hash=sha256:41339b24471c58dc1499e56783fedc1afa4bb018bcd035cfb0ee2ad2a7501ef8 \ - --hash=sha256:462c59914dc6d81e0b11f37e560b8a7c2dbab6aca4f38be31519d442d6cde1a1 \ - --hash=sha256:46e24f5412c948d81736509377e255f6040e94216bf1a9b5ea1eaa9d29f6ec1b \ - --hash=sha256:498e53573e8b94b1caeb9e62d7c2d053c263ebb6aa259c81050766beb50ff8d9 \ - --hash=sha256:4ebf42695f75ee1a952f98ce9775c873e4971732a87334b099dde90b6af6a916 \ - --hash=sha256:4f9147051cb8fdb29a51dc2482d792b3b23e50f8f57e3720ca2e3d438b7adf23 \ - --hash=sha256:549174b0713d49871c6dee90a4b499d3f12f5e5f69641cd23c50a4542e2ca1eb \ - --hash=sha256:560f1d68a33e89c62da5da4077ba98137a5e4d3a271b29f2f195d0fba2adcb6a \ - --hash=sha256:566f0e41df06dfef2431defcfaa155f0acfa1ca4acbf8fd80895b1e7e2ada40e \ - --hash=sha256:56de98a2fb23025882a18b60c7f0ea2d2d70bbbcfcf878f9067234b1c4818442 \ - --hash=sha256:66544f853bfa85c0d07a68f6c648b2ec81dafd30f272565c37ab47a33b220684 \ - --hash=sha256:6c06e4c6e234fcc65435223c7b2a90f286b7f1b2733058bdf1345d218cc59e34 \ - --hash=sha256:6d0a8efc258659edc5299f9ef32d8d81de8b53b45d67bf4bfa3067f31366764d \ - --hash=sha256:70e5a10f8093d228bb2b552beeb318b8928b8a94763ef03b858ef3612b29395d \ - --hash=sha256:8394e652925a18ef0091115e3cc191fef350ab6dc3cc417f06da66bf98071ae9 \ - --hash=sha256:8636cd2fc5da0fb102a2504fa2c4bea3cbc149533b345d72cdf0e7a924decc45 \ - --hash=sha256:93df44ab351119d14cd1e6b52a5063d3336f0754b72736cc63db59307dabb718 \ - --hash=sha256:96ba37c2e24b7212a77da85004c38e7c4d155d3e72a45eeaf22c1f03f607e8ab \ - --hash=sha256:a10dab5ea1bd4401c9483450b5b0ba5416be799bbd50fc7a6cc5e2a15e03e8a3 \ - --hash=sha256:a66045af6cf00e19d02191ab578a50cb93b2028c3eefed999793698e9ea768ae \ - --hash=sha256:a75cc163a5f4531a256f2c523bd80db509a49fc23721b36dd1ef2f60ff41c3cb \ - --hash=sha256:b04c2f0adaf255bf756cf08ebef1be132d3c7a06fe6f9877d55640c5e60c72c5 \ - --hash=sha256:ba42e3810999a0ddd0439e6e5dbf6d034055cdc72b7c5c839f37a7c274cb4eba \ - --hash=sha256:bfc8a5e9238232a45ebc5cb3bfee71f1167064c8d382cadd6076f0d51cff1da0 \ - --hash=sha256:c5bd5680f844c3ff0008523a71949a3ff5e4953eb7701b28760805bc9bcff217 \ - --hash=sha256:c84fdf3da00c2827d634de4fcf17e3e067490c4aea82833625c4c8e6cdea0887 \ - --hash=sha256:ca6fab080484e419528e98624fb5c4282148b847e3602dc8dbe0cb0669469887 \ - --hash=sha256:d0c188ae66b772d9d61d43c6030500344c13e3f73a00d1dc241da896f379bb62 \ - --hash=sha256:d6ab42f223e58b7dac1bb0af32194a7b9311065583cc75ff59dcf301afd8a431 \ - --hash=sha256:dfe80c017973e6a4c367e037cb31601044dd55e6bfacd57370674867d15a899b \ - --hash=sha256:e0c02b75acfea5cab07585d25069207e478d12309557f90a61b5a3b4f77f46ce \ - --hash=sha256:e30aaf2b8a2bac57eb7e1650df1b3a4130e8d0c66fc2f861039d507a11760e1b \ - --hash=sha256:eafbef886566dc1047d7b3d4b14db0d5b7deb99638d8e1be4e23a7c7ac59ff0f \ - --hash=sha256:efe0fab26d598e1ec07d72cf03eaeeba8e42b4ecf6b9ccb5a356fde60ff08b85 \ - --hash=sha256:f08e469821a5e4751c97fcd34bcb586bc243c39c2e39321822060ba902eac49e \ - --hash=sha256:f1eaac5257a8f8a047248d60e8f9315c6cff58f7803971170d952555ef6344a7 \ - --hash=sha256:f29fb0b3f1217dfe9362ec55440d0743fe868497359f2cf93293f4b2701b8251 \ - --hash=sha256:f44d78b61740e4e8c71db1cf1fd56d9050a4747681c59ec1094750a658ceb970 \ - --hash=sha256:f6aec19457617ef468ff091669cca01fa7ea557b12b59a7908b9474bb9674cf0 \ - --hash=sha256:f9dc7f933975367251c1b34da882c4f0e0b2e24bb35dc906d2f598a40b72bfc7 +contourpy==1.2.0 \ + --hash=sha256:0274c1cb63625972c0c007ab14dd9ba9e199c36ae1a231ce45d725cbcbfd10a8 \ + --hash=sha256:0d7e03c0f9a4f90dc18d4e77e9ef4ec7b7bbb437f7f675be8e530d65ae6ef956 \ + --hash=sha256:11f8d2554e52f459918f7b8e6aa20ec2a3bce35ce95c1f0ef4ba36fbda306df5 \ + --hash=sha256:139d8d2e1c1dd52d78682f505e980f592ba53c9f73bd6be102233e358b401063 \ + --hash=sha256:16a7380e943a6d52472096cb7ad5264ecee36ed60888e2a3d3814991a0107286 \ + --hash=sha256:171f311cb758de7da13fc53af221ae47a5877be5a0843a9fe150818c51ed276a \ + --hash=sha256:18fc2b4ed8e4a8fe849d18dce4bd3c7ea637758c6343a1f2bae1e9bd4c9f4686 \ + --hash=sha256:1c203f617abc0dde5792beb586f827021069fb6d403d7f4d5c2b543d87edceb9 \ + --hash=sha256:1c2559d6cffc94890b0529ea7eeecc20d6fadc1539273aa27faf503eb4656d8f \ + --hash=sha256:1c88dfb9e0c77612febebb6ac69d44a8d81e3dc60f993215425b62c1161353f4 \ + --hash=sha256:1e9dc350fb4c58adc64df3e0703ab076f60aac06e67d48b3848c23647ae4310e \ + --hash=sha256:247b9d16535acaa766d03037d8e8fb20866d054d3c7fbf6fd1f993f11fc60ca0 \ + --hash=sha256:266270c6f6608340f6c9836a0fb9b367be61dde0c9a9a18d5ece97774105ff3e \ + --hash=sha256:34b9071c040d6fe45d9826cbbe3727d20d83f1b6110d219b83eb0e2a01d79488 \ + --hash=sha256:3d7d1f8871998cdff5d2ff6a087e5e1780139abe2838e85b0b46b7ae6cc25399 \ + --hash=sha256:461e3ae84cd90b30f8d533f07d87c00379644205b1d33a5ea03381edc4b69431 \ + --hash=sha256:464b423bc2a009088f19bdf1f232299e8b6917963e2b7e1d277da5041f33a779 \ + --hash=sha256:491b1917afdd8638a05b611a56d46587d5a632cabead889a5440f7c638bc6ed9 \ + --hash=sha256:4a1b1208102be6e851f20066bf0e7a96b7d48a07c9b0cfe6d0d4545c2f6cadab \ + --hash=sha256:575bcaf957a25d1194903a10bc9f316c136c19f24e0985a2b9b5608bdf5dbfe0 \ + --hash=sha256:5c6b28956b7b232ae801406e529ad7b350d3f09a4fde958dfdf3c0520cdde0dd \ + --hash=sha256:5d16edfc3fc09968e09ddffada434b3bf989bf4911535e04eada58469873e28e \ + --hash=sha256:5fd1810973a375ca0e097dee059c407913ba35723b111df75671a1976efa04bc \ + --hash=sha256:67b7f17679fa62ec82b7e3e611c43a016b887bd64fb933b3ae8638583006c6d6 \ + --hash=sha256:68ce4788b7d93e47f84edd3f1f95acdcd142ae60bc0e5493bfd120683d2d4316 \ + --hash=sha256:6d3364b999c62f539cd403f8123ae426da946e142312a514162adb2addd8d808 \ + --hash=sha256:6e739530c662a8d6d42c37c2ed52a6f0932c2d4a3e8c1f90692ad0ce1274abe0 \ + --hash=sha256:6fdd887f17c2f4572ce548461e4f96396681212d858cae7bd52ba3310bc6f00f \ + --hash=sha256:78e6ad33cf2e2e80c5dfaaa0beec3d61face0fb650557100ee36db808bfa6843 \ + --hash=sha256:884c3f9d42d7218304bc74a8a7693d172685c84bd7ab2bab1ee567b769696df9 \ + --hash=sha256:8d8faf05be5ec8e02a4d86f616fc2a0322ff4a4ce26c0f09d9f7fb5330a35c95 \ + --hash=sha256:999c71939aad2780f003979b25ac5b8f2df651dac7b38fb8ce6c46ba5abe6ae9 \ + --hash=sha256:99ad97258985328b4f207a5e777c1b44a83bfe7cf1f87b99f9c11d4ee477c4de \ + --hash=sha256:9e6c93b5b2dbcedad20a2f18ec22cae47da0d705d454308063421a3b290d9ea4 \ + --hash=sha256:ab459a1cbbf18e8698399c595a01f6dcc5c138220ca3ea9e7e6126232d102bb4 \ + --hash=sha256:b69303ceb2e4d4f146bf82fda78891ef7bcd80c41bf16bfca3d0d7eb545448aa \ + --hash=sha256:b7caf9b241464c404613512d5594a6e2ff0cc9cb5615c9475cc1d9b514218ae8 \ + --hash=sha256:b95a225d4948b26a28c08307a60ac00fb8671b14f2047fc5476613252a129776 \ + --hash=sha256:bd2f1ae63998da104f16a8b788f685e55d65760cd1929518fd94cd682bf03e41 \ + --hash=sha256:be16975d94c320432657ad2402f6760990cb640c161ae6da1363051805fa8108 \ + --hash=sha256:ce96dd400486e80ac7d195b2d800b03e3e6a787e2a522bfb83755938465a819e \ + --hash=sha256:dbd50d0a0539ae2e96e537553aff6d02c10ed165ef40c65b0e27e744a0f10af8 \ + --hash=sha256:dd10c26b4eadae44783c45ad6655220426f971c61d9b239e6f7b16d5cdaaa727 \ + --hash=sha256:ebeac59e9e1eb4b84940d076d9f9a6cec0064e241818bcb6e32124cc5c3e377a # via matplotlib crccheck==1.3.0 \ --hash=sha256:278ec53d6f417f197f7e0e29b485093d4879b0bc7a2d29b657ef8242e633b48d \ @@ -283,61 +283,61 @@ diskcache==5.6.3 \ --hash=sha256:2c3a3fa2743d8535d832ec61c2054a1641f41775aa7c556758a109941e33e4fc \ --hash=sha256:5e31b2d5fbad117cc363ebaf6b689474db18a1f6438bc82358b024abd4c2ca19 # via cantools -distlib==0.3.7 \ - --hash=sha256:2e24928bc811348f0feb63014e97aaae3037f2cf48712d51ae61df7fd6075057 \ - --hash=sha256:9dafe54b34a028eafd95039d5e5d4851a13734540f1331060d31c9916e7147a8 +distlib==0.3.8 \ + --hash=sha256:034db59a0b96f8ca18035f36290806a9a6e6bd9d1ff91e45a7f172eb17e51784 \ + --hash=sha256:1530ea13e350031b6312d8580ddb6b27a104275a31106523b8f123787f494f64 # via virtualenv -distro==1.8.0 \ - --hash=sha256:02e111d1dc6a50abb8eed6bf31c3e48ed8b0830d1ea2a1b78c61765c2513fdd8 \ - --hash=sha256:99522ca3e365cac527b44bde033f64c6945d90eb9f769703caaec52b09bbd3ff +distro==1.9.0 \ + --hash=sha256:2fa77c6fd8940f116ee1d6b94a2f90b13b5ea8d019b98bc8bafdcabcdd9bdbed \ + --hash=sha256:7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2 # via ruyaml -filelock==3.12.4 \ - --hash=sha256:08c21d87ded6e2b9da6728c3dff51baf1dcecf973b768ef35bcbc3447edb9ad4 \ - --hash=sha256:2e6f249f1f3654291606e046b09f1fd5eac39b360664c27f5aad072012f8bcbd +filelock==3.13.1 \ + --hash=sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e \ + --hash=sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c # via virtualenv -fonttools==4.43.1 \ - --hash=sha256:10003ebd81fec0192c889e63a9c8c63f88c7d72ae0460b7ba0cd2a1db246e5ad \ - --hash=sha256:10b3922875ffcba636674f406f9ab9a559564fdbaa253d66222019d569db869c \ - --hash=sha256:13a9a185259ed144def3682f74fdcf6596f2294e56fe62dfd2be736674500dba \ - --hash=sha256:17dbc2eeafb38d5d0e865dcce16e313c58265a6d2d20081c435f84dc5a9d8212 \ - --hash=sha256:18a2477c62a728f4d6e88c45ee9ee0229405e7267d7d79ce1f5ce0f3e9f8ab86 \ - --hash=sha256:18eefac1b247049a3a44bcd6e8c8fd8b97f3cad6f728173b5d81dced12d6c477 \ - --hash=sha256:1952c89a45caceedf2ab2506d9a95756e12b235c7182a7a0fff4f5e52227204f \ - --hash=sha256:1cf9e974f63b1080b1d2686180fc1fbfd3bfcfa3e1128695b5de337eb9075cef \ - --hash=sha256:1e09da7e8519e336239fbd375156488a4c4945f11c4c5792ee086dd84f784d02 \ - --hash=sha256:2062542a7565091cea4cc14dd99feff473268b5b8afdee564f7067dd9fff5860 \ - --hash=sha256:25d3da8a01442cbc1106490eddb6d31d7dffb38c1edbfabbcc8db371b3386d72 \ - --hash=sha256:34f713dad41aa21c637b4e04fe507c36b986a40f7179dcc86402237e2d39dcd3 \ - --hash=sha256:360201d46165fc0753229afe785900bc9596ee6974833124f4e5e9f98d0f592b \ - --hash=sha256:3b7ad05b2beeebafb86aa01982e9768d61c2232f16470f9d0d8e385798e37184 \ - --hash=sha256:4c54466f642d2116686268c3e5f35ebb10e49b0d48d41a847f0e171c785f7ac7 \ - --hash=sha256:4d9740e3783c748521e77d3c397dc0662062c88fd93600a3c2087d3d627cd5e5 \ - --hash=sha256:4f88cae635bfe4bbbdc29d479a297bb525a94889184bb69fa9560c2d4834ddb9 \ - --hash=sha256:51669b60ee2a4ad6c7fc17539a43ffffc8ef69fd5dbed186a38a79c0ac1f5db7 \ - --hash=sha256:5db46659cfe4e321158de74c6f71617e65dc92e54980086823a207f1c1c0e24b \ - --hash=sha256:5f37e31291bf99a63328668bb83b0669f2688f329c4c0d80643acee6e63cd933 \ - --hash=sha256:6bb5ea9076e0e39defa2c325fc086593ae582088e91c0746bee7a5a197be3da0 \ - --hash=sha256:748015d6f28f704e7d95cd3c808b483c5fb87fd3eefe172a9da54746ad56bfb6 \ - --hash=sha256:7bbbf8174501285049e64d174e29f9578495e1b3b16c07c31910d55ad57683d8 \ - --hash=sha256:884ef38a5a2fd47b0c1291647b15f4e88b9de5338ffa24ee52c77d52b4dfd09c \ - --hash=sha256:8da417431bfc9885a505e86ba706f03f598c85f5a9c54f67d63e84b9948ce590 \ - --hash=sha256:95e974d70238fc2be5f444fa91f6347191d0e914d5d8ae002c9aa189572cc215 \ - --hash=sha256:9648518ef687ba818db3fcc5d9aae27a369253ac09a81ed25c3867e8657a0680 \ - --hash=sha256:9a2f0aa6ca7c9bc1058a9d0b35483d4216e0c1bbe3962bc62ce112749954c7b8 \ - --hash=sha256:9c36da88422e0270fbc7fd959dc9749d31a958506c1d000e16703c2fce43e3d0 \ - --hash=sha256:9c60ecfa62839f7184f741d0509b5c039d391c3aff71dc5bc57b87cc305cff3b \ - --hash=sha256:9f727c3e3d08fd25352ed76cc3cb61486f8ed3f46109edf39e5a60fc9fecf6ca \ - --hash=sha256:a7a06f8d95b7496e53af80d974d63516ffb263a468e614978f3899a6df52d4b3 \ - --hash=sha256:ad0b3f6342cfa14be996971ea2b28b125ad681c6277c4cd0fbdb50340220dfb6 \ - --hash=sha256:b2adca1b46d69dce4a37eecc096fe01a65d81a2f5c13b25ad54d5430ae430b13 \ - --hash=sha256:b84a1c00f832feb9d0585ca8432fba104c819e42ff685fcce83537e2e7e91204 \ - --hash=sha256:bb6d2f8ef81ea076877d76acfb6f9534a9c5f31dc94ba70ad001267ac3a8e56f \ - --hash=sha256:bf11e2cca121df35e295bd34b309046c29476ee739753bc6bc9d5050de319273 \ - --hash=sha256:d21099b411e2006d3c3e1f9aaf339e12037dbf7bf9337faf0e93ec915991f43b \ - --hash=sha256:d4071bd1c183b8d0b368cc9ed3c07a0f6eb1bdfc4941c4c024c49a35429ac7cd \ - --hash=sha256:e117a92b07407a061cde48158c03587ab97e74e7d73cb65e6aadb17af191162a \ - --hash=sha256:f7a58eb5e736d7cf198eee94844b81c9573102ae5989ebcaa1d1a37acd04b33d \ - --hash=sha256:fe9b1ec799b6086460a7480e0f55c447b1aca0a4eecc53e444f639e967348896 +fonttools==4.48.1 \ + --hash=sha256:0452fcbfbce752ba596737a7c5ec5cf76bc5f83847ce1781f4f90eab14ece252 \ + --hash=sha256:0a2417547462e468edf35b32e3dd06a6215ac26aa6316b41e03b8eeaf9f079ea \ + --hash=sha256:0d2b01428f7da26f229a5656defc824427b741e454b4e210ad2b25ed6ea2aed4 \ + --hash=sha256:0d533f89819f9b3ee2dbedf0fed3825c425850e32bdda24c558563c71be0064e \ + --hash=sha256:12ee86abca46193359ea69216b3a724e90c66ab05ab220d39e3fc068c1eb72ac \ + --hash=sha256:18b35fd1a850ed7233a99bbd6774485271756f717dac8b594958224b54118b61 \ + --hash=sha256:292922dc356d7f11f5063b4111a8b719efb8faea92a2a88ed296408d449d8c2e \ + --hash=sha256:2eb4167bde04e172a93cf22c875d8b0cff76a2491f67f5eb069566215302d45d \ + --hash=sha256:3cdb9a92521b81bf717ebccf592bd0292e853244d84115bfb4db0c426de58348 \ + --hash=sha256:4108b1d247953dd7c90ec8f457a2dec5fceb373485973cc852b14200118a51ee \ + --hash=sha256:4709c5bf123ba10eac210d2d5c9027d3f472591d9f1a04262122710fa3d23199 \ + --hash=sha256:5057ade278e67923000041e2b195c9ea53e87f227690d499b6a4edd3702f7f01 \ + --hash=sha256:56339ec557f0c342bddd7c175f5e41c45fc21282bee58a86bd9aa322bec715f2 \ + --hash=sha256:578c00f93868f64a4102ecc5aa600a03b49162c654676c3fadc33de2ddb88a81 \ + --hash=sha256:594206b31c95fcfa65f484385171fabb4ec69f7d2d7f56d27f17db26b7a31814 \ + --hash=sha256:63c73b9dd56a94a3cbd2f90544b5fca83666948a9e03370888994143b8d7c070 \ + --hash=sha256:63dc592a16cd08388d8c4c7502b59ac74190b23e16dfc863c69fe1ea74605b68 \ + --hash=sha256:6978bade7b6c0335095bdd0bd97f8f3d590d2877b370f17e03e0865241694eb5 \ + --hash=sha256:6f30e605c7565d0da6f0aec75a30ec372072d016957cd8fc4469721a36ea59b7 \ + --hash=sha256:702ae93058c81f46461dc4b2c79f11d3c3d8fd7296eaf8f75b4ba5bbf813cd5f \ + --hash=sha256:8b8a45254218679c7f1127812761e7854ed5c8e34349aebf581e8c9204e7495a \ + --hash=sha256:902e9c4e9928301912f34a6638741b8ae0b64824112b42aaf240e06b735774b1 \ + --hash=sha256:97f0a49fa6aa2d6205c6f72f4f98b74ef4b9bfdcb06fd78e6fe6c7af4989b63e \ + --hash=sha256:9b4ec6d42a7555f5ae35f3b805482f0aad0f1baeeef54859492ea3b782959d4a \ + --hash=sha256:9b58638d8a85e3a1b32ec0a91d9f8171a877b4b81c408d4cb3257d0dee63e092 \ + --hash=sha256:a8c8b54bd1420c184a995f980f1a8076f87363e2bb24239ef8c171a369d85a31 \ + --hash=sha256:aee76fd81a8571c68841d6ef0da750d5ff08ff2c5f025576473016f16ac3bcf7 \ + --hash=sha256:b10633aafc5932995a391ec07eba5e79f52af0003a1735b2306b3dab8a056d48 \ + --hash=sha256:bcd77f89fc1a6b18428e7a55dde8ef56dae95640293bfb8f4e929929eba5e2a2 \ + --hash=sha256:bff5b38d0e76eb18e0b8abbf35d384e60b3371be92f7be36128ee3e67483b3ec \ + --hash=sha256:c900508c46274d32d308ae8e82335117f11aaee1f7d369ac16502c9a78930b0a \ + --hash=sha256:cad5cfd044ea2e306fda44482b3dd32ee47830fa82dfa4679374b41baa294f5f \ + --hash=sha256:cdfd7557d1bd294a200bd211aa665ca3b02998dcc18f8211a5532da5b8fad5c5 \ + --hash=sha256:cf5a0cd974f85a80b74785db2d5c3c1fd6cc09a2ba3c837359b2b5da629ee1b0 \ + --hash=sha256:d10979ef14a8beaaa32f613bb698743f7241d92f437a3b5e32356dfb9769c65d \ + --hash=sha256:d20588466367f05025bb1efdf4e5d498ca6d14bde07b6928b79199c588800f0a \ + --hash=sha256:d3260db55f1843e57115256e91247ad9f68cb02a434b51262fe0019e95a98738 \ + --hash=sha256:df48798f9a4fc4c315ab46e17873436c8746f5df6eddd02fad91299b2af7af95 \ + --hash=sha256:e3e33862fc5261d46d9aae3544acb36203b1a337d00bdb5d3753aae50dac860e \ + --hash=sha256:e740a7602c2bb71e1091269b5dbe89549749a8817dc294b34628ffd8b2bf7124 \ + --hash=sha256:f40441437b039930428e04fb05ac3a132e77458fb57666c808d74a556779e784 \ + --hash=sha256:f7449493886da6a17472004d3818cc050ba3f4a0aa03fb47972e4fa5578e6703 # via matplotlib h11==0.14.0 \ --hash=sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d \ @@ -349,13 +349,13 @@ humanfriendly==10.0 \ --hash=sha256:1697e1a8a8f550fd43c2865cd84542fc175a61dcb779b6fee18cf6b6ccba1477 \ --hash=sha256:6b0b831ce8f15f7300721aa49829fc4e83921a9a301cc7f606be6686a2288ddc # via coloredlogs -identify==2.5.30 \ - --hash=sha256:afe67f26ae29bab007ec21b03d4114f41316ab9dd15aa8736a167481e108da54 \ - --hash=sha256:f302a4256a15c849b91cfcdcec052a8ce914634b2f77ae87dad29cd749f2d88d +identify==2.5.33 \ + --hash=sha256:161558f9fe4559e1557e1bff323e8631f6a0e4837f7497767c1782832f16b62d \ + --hash=sha256:d40ce5fcd762817627670da8a7d8d8e65f24342d14539c59488dc603bf662e34 # via pre-commit -idna==3.4 \ - --hash=sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4 \ - --hash=sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2 +idna==3.6 \ + --hash=sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca \ + --hash=sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f # via # anyio # requests @@ -465,54 +465,54 @@ kiwisolver==1.4.5 \ --hash=sha256:fd32ea360bcbb92d28933fc05ed09bffcb1704ba3fc7942e81db0fd4f81a7892 \ --hash=sha256:fdb7adb641a0d13bdcd4ef48e062363d8a9ad4a182ac7647ec88f695e719ae9f # via matplotlib -linkify-it-py==2.0.2 \ - --hash=sha256:19f3060727842c254c808e99d465c80c49d2c7306788140987a1a7a29b0d6ad2 \ - --hash=sha256:a3a24428f6c96f27370d7fe61d2ac0be09017be5190d68d8658233171f1b6541 +linkify-it-py==2.0.3 \ + --hash=sha256:68cda27e162e9215c17d786649d1da0021a451bdc436ef9e0fa0ba5234b9b048 \ + --hash=sha256:6bcbc417b0ac14323382aef5c5192c0075bf8a9d6b41820a2b66371eac6b6d79 # via markdown-it-py -maison==1.4.0 \ - --hash=sha256:591a6ffe972558685cf2c3fdbff3dfa1e6b57a0227c50d387426ab9745e5939b \ - --hash=sha256:9843758d7772e0fc3ca93cf3abfdd39656f41bc75f026fd8bfb5a0ac17f27a7e +maison==1.4.3 \ + --hash=sha256:766222ce82ae27138256c4af9d0bc6b3226288349601e095dcc567884cf0ce36 \ + --hash=sha256:a36208d0befb3bd8aa3b002ac198ce6f6e61efe568b195132640f4032eff46ac # via yamlfix -markdown-it-py[linkify]==2.2.0 \ - --hash=sha256:5a35f8d1870171d9acc47b99612dc146129b631baf04970128b568f190d0cc30 \ - --hash=sha256:7c9a5e412688bc771c67432cbfebcdd686c93ce6484913dccf06cb5a0bea35a1 +markdown-it-py[linkify]==3.0.0 \ + --hash=sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1 \ + --hash=sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb # via # mdformat # mdformat-gfm # mdit-py-plugins -marshmallow==3.20.1 \ - --hash=sha256:5d2371bbe42000f2b3fb5eaa065224df7d8f8597bc19a1bbfa5bfe7fba8da889 \ - --hash=sha256:684939db93e80ad3561392f47be0230743131560a41c5110684c16e21ade0a5c +marshmallow==3.20.2 \ + --hash=sha256:4c1daff273513dc5eb24b219a8035559dc573c8f322558ef85f5438ddd1236dd \ + --hash=sha256:c21d4b98fee747c130e6bc8f45c4b3199ea66bc00c12ee1f639f0aeca034d5e9 # via platformio -matplotlib==3.8.0 \ - --hash=sha256:061ee58facb3580cd2d046a6d227fb77e9295599c5ec6ad069f06b5821ad1cfc \ - --hash=sha256:0b11f354aae62a2aa53ec5bb09946f5f06fc41793e351a04ff60223ea9162955 \ - --hash=sha256:0d5ee602ef517a89d1f2c508ca189cfc395dd0b4a08284fb1b97a78eec354644 \ - --hash=sha256:0e723f5b96f3cd4aad99103dc93e9e3cdc4f18afdcc76951f4857b46f8e39d2d \ - --hash=sha256:23ed11654fc83cd6cfdf6170b453e437674a050a452133a064d47f2f1371f8d3 \ - --hash=sha256:2ea6886e93401c22e534bbfd39201ce8931b75502895cfb115cbdbbe2d31f287 \ - --hash=sha256:31e793c8bd4ea268cc5d3a695c27b30650ec35238626961d73085d5e94b6ab68 \ - --hash=sha256:36eafe2128772195b373e1242df28d1b7ec6c04c15b090b8d9e335d55a323900 \ - --hash=sha256:3cc3776836d0f4f22654a7f2d2ec2004618d5cf86b7185318381f73b80fd8a2d \ - --hash=sha256:5dc945a9cb2deb7d197ba23eb4c210e591d52d77bf0ba27c35fc82dec9fa78d4 \ - --hash=sha256:5de39dc61ca35342cf409e031f70f18219f2c48380d3886c1cf5ad9f17898e06 \ - --hash=sha256:60a6e04dfd77c0d3bcfee61c3cd335fff1b917c2f303b32524cd1235e194ef99 \ - --hash=sha256:6c49a2bd6981264bddcb8c317b6bd25febcece9e2ebfcbc34e7f4c0c867c09dc \ - --hash=sha256:6f25ffb6ad972cdffa7df8e5be4b1e3cadd2f8d43fc72085feb1518006178394 \ - --hash=sha256:7b37b74f00c4cb6af908cb9a00779d97d294e89fd2145ad43f0cdc23f635760c \ - --hash=sha256:7f54b9fb87ca5acbcdd0f286021bedc162e1425fa5555ebf3b3dfc167b955ad9 \ - --hash=sha256:87df75f528020a6299f76a1d986c0ed4406e3b2bd44bc5e306e46bca7d45e53e \ - --hash=sha256:90d74a95fe055f73a6cd737beecc1b81c26f2893b7a3751d52b53ff06ca53f36 \ - --hash=sha256:a33bd3045c7452ca1fa65676d88ba940867880e13e2546abb143035fa9072a9d \ - --hash=sha256:c3499c312f5def8f362a2bf761d04fa2d452b333f3a9a3f58805273719bf20d9 \ - --hash=sha256:c4940bad88a932ddc69734274f6fb047207e008389489f2b6f77d9ca485f0e7a \ - --hash=sha256:d670b9348e712ec176de225d425f150dc8e37b13010d85233c539b547da0be39 \ - --hash=sha256:dae97fdd6996b3a25da8ee43e3fc734fff502f396801063c6b76c20b56683196 \ - --hash=sha256:dd386c80a98b5f51571b9484bf6c6976de383cd2a8cd972b6a9562d85c6d2087 \ - --hash=sha256:df8505e1c19d5c2c26aff3497a7cbd3ccfc2e97043d1e4db3e76afa399164b69 \ - --hash=sha256:eee482731c8c17d86d9ddb5194d38621f9b0f0d53c99006275a12523ab021732 \ - --hash=sha256:f691b4ef47c7384d0936b2e8ebdeb5d526c81d004ad9403dfb9d4c76b9979a93 \ - --hash=sha256:f8b5a1bf27d078453aa7b5b27f52580e16360d02df6d3dc9504f3d2ce11f6309 +matplotlib==3.8.2 \ + --hash=sha256:01a978b871b881ee76017152f1f1a0cbf6bd5f7b8ff8c96df0df1bd57d8755a1 \ + --hash=sha256:03f9d160a29e0b65c0790bb07f4f45d6a181b1ac33eb1bb0dd225986450148f0 \ + --hash=sha256:091275d18d942cf1ee9609c830a1bc36610607d8223b1b981c37d5c9fc3e46a4 \ + --hash=sha256:09796f89fb71a0c0e1e2f4bdaf63fb2cefc84446bb963ecdeb40dfee7dfa98c7 \ + --hash=sha256:0f4fc5d72b75e2c18e55eb32292659cf731d9d5b312a6eb036506304f4675630 \ + --hash=sha256:172f4d0fbac3383d39164c6caafd3255ce6fa58f08fc392513a0b1d3b89c4f89 \ + --hash=sha256:1b0f3b8ea0e99e233a4bcc44590f01604840d833c280ebb8fe5554fd3e6cfe8d \ + --hash=sha256:3773002da767f0a9323ba1a9b9b5d00d6257dbd2a93107233167cfb581f64717 \ + --hash=sha256:46a569130ff53798ea5f50afce7406e91fdc471ca1e0e26ba976a8c734c9427a \ + --hash=sha256:4c318c1e95e2f5926fba326f68177dee364aa791d6df022ceb91b8221bd0a627 \ + --hash=sha256:4e208f46cf6576a7624195aa047cb344a7f802e113bb1a06cfd4bee431de5e31 \ + --hash=sha256:533b0e3b0c6768eef8cbe4b583731ce25a91ab54a22f830db2b031e83cca9213 \ + --hash=sha256:5864bdd7da445e4e5e011b199bb67168cdad10b501750367c496420f2ad00843 \ + --hash=sha256:5ba9cbd8ac6cf422f3102622b20f8552d601bf8837e49a3afed188d560152788 \ + --hash=sha256:6f9c6976748a25e8b9be51ea028df49b8e561eed7809146da7a47dbecebab367 \ + --hash=sha256:7c48d9e221b637c017232e3760ed30b4e8d5dfd081daf327e829bf2a72c731b4 \ + --hash=sha256:830f00640c965c5b7f6bc32f0d4ce0c36dfe0379f7dd65b07a00c801713ec40a \ + --hash=sha256:9a5430836811b7652991939012f43d2808a2db9b64ee240387e8c43e2e5578c8 \ + --hash=sha256:aa11b3c6928a1e496c1a79917d51d4cd5d04f8a2e75f21df4949eeefdf697f4b \ + --hash=sha256:b78e4f2cedf303869b782071b55fdde5987fda3038e9d09e58c91cc261b5ad18 \ + --hash=sha256:b9576723858a78751d5aacd2497b8aef29ffea6d1c95981505877f7ac28215c6 \ + --hash=sha256:bddfb1db89bfaa855912261c805bd0e10218923cc262b9159a49c29a7a1c1afa \ + --hash=sha256:c7d36c2209d9136cd8e02fab1c0ddc185ce79bc914c45054a9f514e44c787917 \ + --hash=sha256:d1095fecf99eeb7384dabad4bf44b965f929a5f6079654b681193edf7169ec20 \ + --hash=sha256:d7b1704a530395aaf73912be741c04d181f82ca78084fbd80bc737be04848331 \ + --hash=sha256:d86593ccf546223eb75a39b44c32788e6f6440d13cfc4750c1c15d0fcb850b63 \ + --hash=sha256:deaed9ad4da0b1aea77fe0aa0cebb9ef611c70b3177be936a95e5d01fa05094f \ + --hash=sha256:ef8345b48e95cee45ff25192ed1f4857273117917a4dcd48e3905619bcd9c9b8 # via selfdrive (pyproject.toml) mdformat==0.7.17 \ --hash=sha256:91ffc5e203f5814a6ad17515c77767fd2737fc12ffd8b58b7bb1d8b9aa6effaa \ @@ -520,17 +520,17 @@ mdformat==0.7.17 \ # via # mdformat-gfm # mdformat-tables -mdformat-gfm==0.3.5 \ - --hash=sha256:1e627edc7665b59e008b3b9e5decc18c40cbd625c196d77e5ea3bc624e80ac8a \ - --hash=sha256:5ee5f0de1d3b56d5edfced023bfff0aeed958be328e5460dac3221ac1b61ce7c +mdformat-gfm==0.3.6 \ + --hash=sha256:579e3619bedd3b7123df888b6929ab8ac5dfc8205d0b67153b1633262bdafc42 \ + --hash=sha256:b405ebf651a15c186ca06712100e33bbe72afeafb02aa4a4a28ea26cc3219678 # via selfdrive (pyproject.toml) mdformat-tables==0.4.1 \ --hash=sha256:3024e88e9d29d7b8bb07fd6b59c9d5dcf14d2060122be29e30e72d27b65d7da9 \ --hash=sha256:981f3dc7350027f78e3fd6a5fe8a16e123eec423af2d140e588d855751501019 # via mdformat-gfm -mdit-py-plugins==0.3.5 \ - --hash=sha256:ca9a0714ea59a24b2b044a1831f48d817dd0c817e84339f20e7889f392d77c4e \ - --hash=sha256:eee0adc7195e5827e17e02d2a258a2ba159944a0748f59c5099a4a27f78fcf6a +mdit-py-plugins==0.4.0 \ + --hash=sha256:b51b3bb70691f57f974e257e367107857a93b36f322a9e6d44ca5bf28ec2def9 \ + --hash=sha256:d8ab27e9aed6c38aa716819fedfde15ca275715955f8a185a8e1cf90fb1d2c1b # via mdformat-gfm mdurl==0.1.2 \ --hash=sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8 \ @@ -604,39 +604,43 @@ nodeenv==1.8.0 \ --hash=sha256:d51e0c37e64fbf47d017feac3145cdbb58836d7eee8c6f6d3b6880c5456227d2 \ --hash=sha256:df865724bb3c3adc86b3876fa209771517b0cfe596beff01a92700e0e8be4cec # via pre-commit -numpy==1.26.1 \ - --hash=sha256:06934e1a22c54636a059215d6da99e23286424f316fddd979f5071093b648668 \ - --hash=sha256:1c59c046c31a43310ad0199d6299e59f57a289e22f0f36951ced1c9eac3665b9 \ - --hash=sha256:1d1bd82d539607951cac963388534da3b7ea0e18b149a53cf883d8f699178c0f \ - --hash=sha256:1e11668d6f756ca5ef534b5be8653d16c5352cbb210a5c2a79ff288e937010d5 \ - --hash=sha256:3649d566e2fc067597125428db15d60eb42a4e0897fc48d28cb75dc2e0454e53 \ - --hash=sha256:59227c981d43425ca5e5c01094d59eb14e8772ce6975d4b2fc1e106a833d5ae2 \ - --hash=sha256:6081aed64714a18c72b168a9276095ef9155dd7888b9e74b5987808f0dd0a974 \ - --hash=sha256:6965888d65d2848e8768824ca8288db0a81263c1efccec881cb35a0d805fcd2f \ - --hash=sha256:76ff661a867d9272cd2a99eed002470f46dbe0943a5ffd140f49be84f68ffc42 \ - --hash=sha256:78ca54b2f9daffa5f323f34cdf21e1d9779a54073f0018a3094ab907938331a2 \ - --hash=sha256:82e871307a6331b5f09efda3c22e03c095d957f04bf6bc1804f30048d0e5e7af \ - --hash=sha256:8ab9163ca8aeb7fd32fe93866490654d2f7dda4e61bc6297bf72ce07fdc02f67 \ - --hash=sha256:9696aa2e35cc41e398a6d42d147cf326f8f9d81befcb399bc1ed7ffea339b64e \ - --hash=sha256:97e5d6a9f0702c2863aaabf19f0d1b6c2628fbe476438ce0b5ce06e83085064c \ - --hash=sha256:9f42284ebf91bdf32fafac29d29d4c07e5e9d1af862ea73686581773ef9e73a7 \ - --hash=sha256:a03fb25610ef560a6201ff06df4f8105292ba56e7cdd196ea350d123fc32e24e \ - --hash=sha256:a5b411040beead47a228bde3b2241100454a6abde9df139ed087bd73fc0a4908 \ - --hash=sha256:af22f3d8e228d84d1c0c44c1fbdeb80f97a15a0abe4f080960393a00db733b66 \ - --hash=sha256:afd5ced4e5a96dac6725daeb5242a35494243f2239244fad10a90ce58b071d24 \ - --hash=sha256:b9d45d1dbb9de84894cc50efece5b09939752a2d75aab3a8b0cef6f3a35ecd6b \ - --hash=sha256:bb894accfd16b867d8643fc2ba6c8617c78ba2828051e9a69511644ce86ce83e \ - --hash=sha256:c8c6c72d4a9f831f328efb1312642a1cafafaa88981d9ab76368d50d07d93cbe \ - --hash=sha256:cd7837b2b734ca72959a1caf3309457a318c934abef7a43a14bb984e574bbb9a \ - --hash=sha256:cdd9ec98f0063d93baeb01aad472a1a0840dee302842a2746a7a8e92968f9575 \ - --hash=sha256:d1cfc92db6af1fd37a7bb58e55c8383b4aa1ba23d012bdbba26b4bcca45ac297 \ - --hash=sha256:d1d2c6b7dd618c41e202c59c1413ef9b2c8e8a15f5039e344af64195459e3104 \ - --hash=sha256:d2984cb6caaf05294b8466966627e80bf6c7afd273279077679cb010acb0e5ab \ - --hash=sha256:d58e8c51a7cf43090d124d5073bc29ab2755822181fcad978b12e144e5e5a4b3 \ - --hash=sha256:d78f269e0c4fd365fc2992c00353e4530d274ba68f15e968d8bc3c69ce5f5244 \ - --hash=sha256:dcfaf015b79d1f9f9c9fd0731a907407dc3e45769262d657d754c3a028586124 \ - --hash=sha256:e44ccb93f30c75dfc0c3aa3ce38f33486a75ec9abadabd4e59f114994a9c4617 \ - --hash=sha256:e509cbc488c735b43b5ffea175235cec24bbc57b227ef1acc691725beb230d1c +numpy==1.26.4 \ + --hash=sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b \ + --hash=sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818 \ + --hash=sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20 \ + --hash=sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0 \ + --hash=sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010 \ + --hash=sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a \ + --hash=sha256:3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea \ + --hash=sha256:47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c \ + --hash=sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71 \ + --hash=sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110 \ + --hash=sha256:52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be \ + --hash=sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a \ + --hash=sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a \ + --hash=sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5 \ + --hash=sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed \ + --hash=sha256:679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd \ + --hash=sha256:7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c \ + --hash=sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e \ + --hash=sha256:7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0 \ + --hash=sha256:95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c \ + --hash=sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a \ + --hash=sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b \ + --hash=sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0 \ + --hash=sha256:a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6 \ + --hash=sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2 \ + --hash=sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a \ + --hash=sha256:afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30 \ + --hash=sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218 \ + --hash=sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5 \ + --hash=sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07 \ + --hash=sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2 \ + --hash=sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4 \ + --hash=sha256:d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764 \ + --hash=sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef \ + --hash=sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3 \ + --hash=sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f # via # contourpy # matplotlib @@ -653,127 +657,187 @@ packaging==23.2 \ # marshmallow # matplotlib # python-can -pathspec==0.11.2 \ - --hash=sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20 \ - --hash=sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3 +pathspec==0.12.1 \ + --hash=sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08 \ + --hash=sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712 # via # black # yamllint -pillow==10.1.0 \ - --hash=sha256:00f438bb841382b15d7deb9a05cc946ee0f2c352653c7aa659e75e592f6fa17d \ - --hash=sha256:0248f86b3ea061e67817c47ecbe82c23f9dd5d5226200eb9090b3873d3ca32de \ - --hash=sha256:04f6f6149f266a100374ca3cc368b67fb27c4af9f1cc8cb6306d849dcdf12616 \ - --hash=sha256:062a1610e3bc258bff2328ec43f34244fcec972ee0717200cb1425214fe5b839 \ - --hash=sha256:0a026c188be3b443916179f5d04548092e253beb0c3e2ee0a4e2cdad72f66099 \ - --hash=sha256:0f7c276c05a9767e877a0b4c5050c8bee6a6d960d7f0c11ebda6b99746068c2a \ - --hash=sha256:1a8413794b4ad9719346cd9306118450b7b00d9a15846451549314a58ac42219 \ - --hash=sha256:1ab05f3db77e98f93964697c8efc49c7954b08dd61cff526b7f2531a22410106 \ - --hash=sha256:1c3ac5423c8c1da5928aa12c6e258921956757d976405e9467c5f39d1d577a4b \ - --hash=sha256:1c41d960babf951e01a49c9746f92c5a7e0d939d1652d7ba30f6b3090f27e412 \ - --hash=sha256:1fafabe50a6977ac70dfe829b2d5735fd54e190ab55259ec8aea4aaea412fa0b \ - --hash=sha256:1fb29c07478e6c06a46b867e43b0bcdb241b44cc52be9bc25ce5944eed4648e7 \ - --hash=sha256:24fadc71218ad2b8ffe437b54876c9382b4a29e030a05a9879f615091f42ffc2 \ - --hash=sha256:2cdc65a46e74514ce742c2013cd4a2d12e8553e3a2563c64879f7c7e4d28bce7 \ - --hash=sha256:2ef6721c97894a7aa77723740a09547197533146fba8355e86d6d9a4a1056b14 \ - --hash=sha256:3b834f4b16173e5b92ab6566f0473bfb09f939ba14b23b8da1f54fa63e4b623f \ - --hash=sha256:3d929a19f5469b3f4df33a3df2983db070ebb2088a1e145e18facbc28cae5b27 \ - --hash=sha256:41f67248d92a5e0a2076d3517d8d4b1e41a97e2df10eb8f93106c89107f38b57 \ - --hash=sha256:47e5bf85b80abc03be7455c95b6d6e4896a62f6541c1f2ce77a7d2bb832af262 \ - --hash=sha256:4d0152565c6aa6ebbfb1e5d8624140a440f2b99bf7afaafbdbf6430426497f28 \ - --hash=sha256:50d08cd0a2ecd2a8657bd3d82c71efd5a58edb04d9308185d66c3a5a5bed9610 \ - --hash=sha256:61f1a9d247317fa08a308daaa8ee7b3f760ab1809ca2da14ecc88ae4257d6172 \ - --hash=sha256:6932a7652464746fcb484f7fc3618e6503d2066d853f68a4bd97193a3996e273 \ - --hash=sha256:7a7e3daa202beb61821c06d2517428e8e7c1aab08943e92ec9e5755c2fc9ba5e \ - --hash=sha256:7dbaa3c7de82ef37e7708521be41db5565004258ca76945ad74a8e998c30af8d \ - --hash=sha256:7df5608bc38bd37ef585ae9c38c9cd46d7c81498f086915b0f97255ea60c2818 \ - --hash=sha256:806abdd8249ba3953c33742506fe414880bad78ac25cc9a9b1c6ae97bedd573f \ - --hash=sha256:883f216eac8712b83a63f41b76ddfb7b2afab1b74abbb413c5df6680f071a6b9 \ - --hash=sha256:912e3812a1dbbc834da2b32299b124b5ddcb664ed354916fd1ed6f193f0e2d01 \ - --hash=sha256:937bdc5a7f5343d1c97dc98149a0be7eb9704e937fe3dc7140e229ae4fc572a7 \ - --hash=sha256:9882a7451c680c12f232a422730f986a1fcd808da0fd428f08b671237237d651 \ - --hash=sha256:9a92109192b360634a4489c0c756364c0c3a2992906752165ecb50544c251312 \ - --hash=sha256:9d7bc666bd8c5a4225e7ac71f2f9d12466ec555e89092728ea0f5c0c2422ea80 \ - --hash=sha256:a5f63b5a68daedc54c7c3464508d8c12075e56dcfbd42f8c1bf40169061ae666 \ - --hash=sha256:a646e48de237d860c36e0db37ecaecaa3619e6f3e9d5319e527ccbc8151df061 \ - --hash=sha256:a89b8312d51715b510a4fe9fc13686283f376cfd5abca8cd1c65e4c76e21081b \ - --hash=sha256:a92386125e9ee90381c3369f57a2a50fa9e6aa8b1cf1d9c4b200d41a7dd8e992 \ - --hash=sha256:ae88931f93214777c7a3aa0a8f92a683f83ecde27f65a45f95f22d289a69e593 \ - --hash=sha256:afc8eef765d948543a4775f00b7b8c079b3321d6b675dde0d02afa2ee23000b4 \ - --hash=sha256:b0eb01ca85b2361b09480784a7931fc648ed8b7836f01fb9241141b968feb1db \ - --hash=sha256:b1c25762197144e211efb5f4e8ad656f36c8d214d390585d1d21281f46d556ba \ - --hash=sha256:b4005fee46ed9be0b8fb42be0c20e79411533d1fd58edabebc0dd24626882cfd \ - --hash=sha256:b920e4d028f6442bea9a75b7491c063f0b9a3972520731ed26c83e254302eb1e \ - --hash=sha256:baada14941c83079bf84c037e2d8b7506ce201e92e3d2fa0d1303507a8538212 \ - --hash=sha256:bb40c011447712d2e19cc261c82655f75f32cb724788df315ed992a4d65696bb \ - --hash=sha256:c0949b55eb607898e28eaccb525ab104b2d86542a85c74baf3a6dc24002edec2 \ - --hash=sha256:c9aeea7b63edb7884b031a35305629a7593272b54f429a9869a4f63a1bf04c34 \ - --hash=sha256:cfe96560c6ce2f4c07d6647af2d0f3c54cc33289894ebd88cfbb3bcd5391e256 \ - --hash=sha256:d27b5997bdd2eb9fb199982bb7eb6164db0426904020dc38c10203187ae2ff2f \ - --hash=sha256:d921bc90b1defa55c9917ca6b6b71430e4286fc9e44c55ead78ca1a9f9eba5f2 \ - --hash=sha256:e6bf8de6c36ed96c86ea3b6e1d5273c53f46ef518a062464cd7ef5dd2cf92e38 \ - --hash=sha256:eaed6977fa73408b7b8a24e8b14e59e1668cfc0f4c40193ea7ced8e210adf996 \ - --hash=sha256:fa1d323703cfdac2036af05191b969b910d8f115cf53093125e4058f62012c9a \ - --hash=sha256:fe1e26e1ffc38be097f0ba1d0d07fcade2bcfd1d023cda5b29935ae8052bd793 +pillow==10.2.0 \ + --hash=sha256:0304004f8067386b477d20a518b50f3fa658a28d44e4116970abfcd94fac34a8 \ + --hash=sha256:0689b5a8c5288bc0504d9fcee48f61a6a586b9b98514d7d29b840143d6734f39 \ + --hash=sha256:0eae2073305f451d8ecacb5474997c08569fb4eb4ac231ffa4ad7d342fdc25ac \ + --hash=sha256:0fb3e7fc88a14eacd303e90481ad983fd5b69c761e9e6ef94c983f91025da869 \ + --hash=sha256:11fa2e5984b949b0dd6d7a94d967743d87c577ff0b83392f17cb3990d0d2fd6e \ + --hash=sha256:127cee571038f252a552760076407f9cff79761c3d436a12af6000cd182a9d04 \ + --hash=sha256:154e939c5f0053a383de4fd3d3da48d9427a7e985f58af8e94d0b3c9fcfcf4f9 \ + --hash=sha256:15587643b9e5eb26c48e49a7b33659790d28f190fc514a322d55da2fb5c2950e \ + --hash=sha256:170aeb00224ab3dc54230c797f8404507240dd868cf52066f66a41b33169bdbe \ + --hash=sha256:1b5e1b74d1bd1b78bc3477528919414874748dd363e6272efd5abf7654e68bef \ + --hash=sha256:1da3b2703afd040cf65ec97efea81cfba59cdbed9c11d8efc5ab09df9509fc56 \ + --hash=sha256:1e23412b5c41e58cec602f1135c57dfcf15482013ce6e5f093a86db69646a5aa \ + --hash=sha256:2247178effb34a77c11c0e8ac355c7a741ceca0a732b27bf11e747bbc950722f \ + --hash=sha256:257d8788df5ca62c980314053197f4d46eefedf4e6175bc9412f14412ec4ea2f \ + --hash=sha256:3031709084b6e7852d00479fd1d310b07d0ba82765f973b543c8af5061cf990e \ + --hash=sha256:322209c642aabdd6207517e9739c704dc9f9db943015535783239022002f054a \ + --hash=sha256:322bdf3c9b556e9ffb18f93462e5f749d3444ce081290352c6070d014c93feb2 \ + --hash=sha256:33870dc4653c5017bf4c8873e5488d8f8d5f8935e2f1fb9a2208c47cdd66efd2 \ + --hash=sha256:35bb52c37f256f662abdfa49d2dfa6ce5d93281d323a9af377a120e89a9eafb5 \ + --hash=sha256:3c31822339516fb3c82d03f30e22b1d038da87ef27b6a78c9549888f8ceda39a \ + --hash=sha256:3eedd52442c0a5ff4f887fab0c1c0bb164d8635b32c894bc1faf4c618dd89df2 \ + --hash=sha256:3ff074fc97dd4e80543a3e91f69d58889baf2002b6be64347ea8cf5533188213 \ + --hash=sha256:47c0995fc4e7f79b5cfcab1fc437ff2890b770440f7696a3ba065ee0fd496563 \ + --hash=sha256:49d9ba1ed0ef3e061088cd1e7538a0759aab559e2e0a80a36f9fd9d8c0c21591 \ + --hash=sha256:51f1a1bffc50e2e9492e87d8e09a17c5eea8409cda8d3f277eb6edc82813c17c \ + --hash=sha256:52a50aa3fb3acb9cf7213573ef55d31d6eca37f5709c69e6858fe3bc04a5c2a2 \ + --hash=sha256:54f1852cd531aa981bc0965b7d609f5f6cc8ce8c41b1139f6ed6b3c54ab82bfb \ + --hash=sha256:609448742444d9290fd687940ac0b57fb35e6fd92bdb65386e08e99af60bf757 \ + --hash=sha256:69ffdd6120a4737710a9eee73e1d2e37db89b620f702754b8f6e62594471dee0 \ + --hash=sha256:6fad5ff2f13d69b7e74ce5b4ecd12cc0ec530fcee76356cac6742785ff71c452 \ + --hash=sha256:7049e301399273a0136ff39b84c3678e314f2158f50f517bc50285fb5ec847ad \ + --hash=sha256:70c61d4c475835a19b3a5aa42492409878bbca7438554a1f89d20d58a7c75c01 \ + --hash=sha256:716d30ed977be8b37d3ef185fecb9e5a1d62d110dfbdcd1e2a122ab46fddb03f \ + --hash=sha256:753cd8f2086b2b80180d9b3010dd4ed147efc167c90d3bf593fe2af21265e5a5 \ + --hash=sha256:773efe0603db30c281521a7c0214cad7836c03b8ccff897beae9b47c0b657d61 \ + --hash=sha256:7823bdd049099efa16e4246bdf15e5a13dbb18a51b68fa06d6c1d4d8b99a796e \ + --hash=sha256:7c8f97e8e7a9009bcacbe3766a36175056c12f9a44e6e6f2d5caad06dcfbf03b \ + --hash=sha256:823ef7a27cf86df6597fa0671066c1b596f69eba53efa3d1e1cb8b30f3533068 \ + --hash=sha256:8373c6c251f7ef8bda6675dd6d2b3a0fcc31edf1201266b5cf608b62a37407f9 \ + --hash=sha256:83b2021f2ade7d1ed556bc50a399127d7fb245e725aa0113ebd05cfe88aaf588 \ + --hash=sha256:870ea1ada0899fd0b79643990809323b389d4d1d46c192f97342eeb6ee0b8483 \ + --hash=sha256:8d12251f02d69d8310b046e82572ed486685c38f02176bd08baf216746eb947f \ + --hash=sha256:9c23f307202661071d94b5e384e1e1dc7dfb972a28a2310e4ee16103e66ddb67 \ + --hash=sha256:9d189550615b4948f45252d7f005e53c2040cea1af5b60d6f79491a6e147eef7 \ + --hash=sha256:a086c2af425c5f62a65e12fbf385f7c9fcb8f107d0849dba5839461a129cf311 \ + --hash=sha256:a2b56ba36e05f973d450582fb015594aaa78834fefe8dfb8fcd79b93e64ba4c6 \ + --hash=sha256:aebb6044806f2e16ecc07b2a2637ee1ef67a11840a66752751714a0d924adf72 \ + --hash=sha256:b1b3020d90c2d8e1dae29cf3ce54f8094f7938460fb5ce8bc5c01450b01fbaf6 \ + --hash=sha256:b4b6b1e20608493548b1f32bce8cca185bf0480983890403d3b8753e44077129 \ + --hash=sha256:b6f491cdf80ae540738859d9766783e3b3c8e5bd37f5dfa0b76abdecc5081f13 \ + --hash=sha256:b792a349405fbc0163190fde0dc7b3fef3c9268292586cf5645598b48e63dc67 \ + --hash=sha256:b7c2286c23cd350b80d2fc9d424fc797575fb16f854b831d16fd47ceec078f2c \ + --hash=sha256:babf5acfede515f176833ed6028754cbcd0d206f7f614ea3447d67c33be12516 \ + --hash=sha256:c365fd1703040de1ec284b176d6af5abe21b427cb3a5ff68e0759e1e313a5e7e \ + --hash=sha256:c4225f5220f46b2fde568c74fca27ae9771536c2e29d7c04f4fb62c83275ac4e \ + --hash=sha256:c570f24be1e468e3f0ce7ef56a89a60f0e05b30a3669a459e419c6eac2c35364 \ + --hash=sha256:c6dafac9e0f2b3c78df97e79af707cdc5ef8e88208d686a4847bab8266870023 \ + --hash=sha256:c8de2789052ed501dd829e9cae8d3dcce7acb4777ea4a479c14521c942d395b1 \ + --hash=sha256:cb28c753fd5eb3dd859b4ee95de66cc62af91bcff5db5f2571d32a520baf1f04 \ + --hash=sha256:cb4c38abeef13c61d6916f264d4845fab99d7b711be96c326b84df9e3e0ff62d \ + --hash=sha256:d1b35bcd6c5543b9cb547dee3150c93008f8dd0f1fef78fc0cd2b141c5baf58a \ + --hash=sha256:d8e6aeb9201e655354b3ad049cb77d19813ad4ece0df1249d3c793de3774f8c7 \ + --hash=sha256:d8ecd059fdaf60c1963c58ceb8997b32e9dc1b911f5da5307aab614f1ce5c2fb \ + --hash=sha256:da2b52b37dad6d9ec64e653637a096905b258d2fc2b984c41ae7d08b938a67e4 \ + --hash=sha256:e87f0b2c78157e12d7686b27d63c070fd65d994e8ddae6f328e0dcf4a0cd007e \ + --hash=sha256:edca80cbfb2b68d7b56930b84a0e45ae1694aeba0541f798e908a49d66b837f1 \ + --hash=sha256:f379abd2f1e3dddb2b61bc67977a6b5a0a3f7485538bcc6f39ec76163891ee48 \ + --hash=sha256:fe4c15f6c9285dc54ce6553a3ce908ed37c8f3825b5a51a15c91442bb955b868 # via matplotlib pip-tools==7.3.0 \ --hash=sha256:8717693288720a8c6ebd07149c93ab0be1fced0b5191df9e9decd3263e20d85e \ --hash=sha256:8e9c99127fe024c025b46a0b2d15c7bd47f18f33226cf7330d35493663fc1d1d # via selfdrive (pyproject.toml) -platformdirs==3.11.0 \ - --hash=sha256:cf8ee52a3afdb965072dcc652433e0c7e3e40cf5ea1477cd4b3b1d2eb75495b3 \ - --hash=sha256:e9d171d00af68be50e9202731309c4e658fd8bc76f55c11c7dd760d023bda68e +platformdirs==4.2.0 \ + --hash=sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068 \ + --hash=sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768 # via # black # virtualenv -platformio==6.1.11 \ - --hash=sha256:1977201887cd11487adf1babf17a28f45f6dbbec8cbc5e3cc144cb43b320a0d0 \ - --hash=sha256:2bd7feb936f1b07b34f0556a47ab68a4f8764de39be30c636f216006f2e911ca +platformio==6.1.13 \ + --hash=sha256:ed7c6397f0ced579bc8137c8253465c0cfab6c0cc38d4f63da4502e995bdb5ce # via selfdrive (pyproject.toml) -pre-commit==3.5.0 \ - --hash=sha256:5804465c675b659b0862f07907f96295d490822a450c4c40e747d0b1c6ebcb32 \ - --hash=sha256:841dc9aef25daba9a0238cd27984041fa0467b4199fc4852e27950664919f660 +pre-commit==3.6.0 \ + --hash=sha256:c255039ef399049a5544b6ce13d135caba8f2c28c3b4033277a788f434308376 \ + --hash=sha256:d30bad9abf165f7785c15a21a1f46da7d0677cb00ee7ff4c579fd38922efe15d # via selfdrive (pyproject.toml) -pydantic==1.10.13 \ - --hash=sha256:1740068fd8e2ef6eb27a20e5651df000978edce6da6803c2bef0bc74540f9548 \ - --hash=sha256:210ce042e8f6f7c01168b2d84d4c9eb2b009fe7bf572c2266e235edf14bacd80 \ - --hash=sha256:32c8b48dcd3b2ac4e78b0ba4af3a2c2eb6048cb75202f0ea7b34feb740efc340 \ - --hash=sha256:3ecea2b9d80e5333303eeb77e180b90e95eea8f765d08c3d278cd56b00345d01 \ - --hash=sha256:4b03e42ec20286f052490423682016fd80fda830d8e4119f8ab13ec7464c0132 \ - --hash=sha256:4c5370a7edaac06daee3af1c8b1192e305bc102abcbf2a92374b5bc793818599 \ - --hash=sha256:56e3ff861c3b9c6857579de282ce8baabf443f42ffba355bf070770ed63e11e1 \ - --hash=sha256:5a1f9f747851338933942db7af7b6ee8268568ef2ed86c4185c6ef4402e80ba8 \ - --hash=sha256:5e08865bc6464df8c7d61439ef4439829e3ab62ab1669cddea8dd00cd74b9ffe \ - --hash=sha256:61d9dce220447fb74f45e73d7ff3b530e25db30192ad8d425166d43c5deb6df0 \ - --hash=sha256:654db58ae399fe6434e55325a2c3e959836bd17a6f6a0b6ca8107ea0571d2e17 \ - --hash=sha256:678bcf5591b63cc917100dc50ab6caebe597ac67e8c9ccb75e698f66038ea953 \ - --hash=sha256:6cf25c1a65c27923a17b3da28a0bdb99f62ee04230c931d83e888012851f4e7f \ - --hash=sha256:75ac15385a3534d887a99c713aa3da88a30fbd6204a5cd0dc4dab3d770b9bd2f \ - --hash=sha256:75b297827b59bc229cac1a23a2f7a4ac0031068e5be0ce385be1462e7e17a35d \ - --hash=sha256:7d6f6e7305244bddb4414ba7094ce910560c907bdfa3501e9db1a7fd7eaea127 \ - --hash=sha256:84bafe2e60b5e78bc64a2941b4c071a4b7404c5c907f5f5a99b0139781e69ed8 \ - --hash=sha256:854223752ba81e3abf663d685f105c64150873cc6f5d0c01d3e3220bcff7d36f \ - --hash=sha256:8ae5dd6b721459bfa30805f4c25880e0dd78fc5b5879f9f7a692196ddcb5a580 \ - --hash=sha256:8ef467901d7a41fa0ca6db9ae3ec0021e3f657ce2c208e98cd511f3161c762c6 \ - --hash=sha256:968ac42970f57b8344ee08837b62f6ee6f53c33f603547a55571c954a4225691 \ - --hash=sha256:97cce3ae7341f7620a0ba5ef6cf043975cd9d2b81f3aa5f4ea37928269bc1b87 \ - --hash=sha256:9849f031cf8a2f0a928fe885e5a04b08006d6d41876b8bbd2fc68a18f9f2e3fd \ - --hash=sha256:9f00790179497767aae6bcdc36355792c79e7bbb20b145ff449700eb076c5f96 \ - --hash=sha256:b87326822e71bd5f313e7d3bfdc77ac3247035ac10b0c0618bd99dcf95b1e687 \ - --hash=sha256:b97c1fac8c49be29486df85968682b0afa77e1b809aff74b83081cc115e52f33 \ - --hash=sha256:bc0898c12f8e9c97f6cd44c0ed70d55749eaf783716896960b4ecce2edfd2d69 \ - --hash=sha256:c553f6a156deb868ba38a23cf0df886c63492e9257f60a79c0fd8e7173537653 \ - --hash=sha256:c636925f38b8db208e09d344c7aa4f29a86bb9947495dd6b6d376ad10334fb78 \ - --hash=sha256:c958d053453a1c4b1c2062b05cd42d9d5c8eb67537b8d5a7e3c3032943ecd261 \ - --hash=sha256:d3a3c792a58e1622667a2837512099eac62490cdfd63bd407993aaf200a4cf1f \ - --hash=sha256:e31647d85a2013d926ce60b84f9dd5300d44535a9941fe825dc349ae1f760df9 \ - --hash=sha256:e70ca129d2053fb8b728ee7d1af8e553a928d7e301a311094b8a0501adc8763d \ - --hash=sha256:efff03cc7a4f29d9009d1c96ceb1e7a70a65cfe86e89d34e4a5f2ab1e5693737 \ - --hash=sha256:f59ef915cac80275245824e9d771ee939133be38215555e9dc90c6cb148aaeb5 \ - --hash=sha256:f8e81fc5fb17dae698f52bdd1c4f18b6ca674d7068242b2aff075f588301bbb0 +pydantic==2.6.1 \ + --hash=sha256:0b6a909df3192245cb736509a92ff69e4fef76116feffec68e93a567347bae6f \ + --hash=sha256:4fd5c182a2488dc63e6d32737ff19937888001e2a6d86e94b3f233104a5d1fa9 # via maison -pyelftools==0.29 \ - --hash=sha256:519f38cf412f073b2d7393aa4682b0190fa901f7c3fa0bff2b82d537690c7fc1 \ - --hash=sha256:ec761596aafa16e282a31de188737e5485552469ac63b60cfcccf22263fd24ff +pydantic-core==2.16.2 \ + --hash=sha256:02906e7306cb8c5901a1feb61f9ab5e5c690dbbeaa04d84c1b9ae2a01ebe9379 \ + --hash=sha256:0ba503850d8b8dcc18391f10de896ae51d37fe5fe43dbfb6a35c5c5cad271a06 \ + --hash=sha256:16aa02e7a0f539098e215fc193c8926c897175d64c7926d00a36188917717a05 \ + --hash=sha256:18de31781cdc7e7b28678df7c2d7882f9692ad060bc6ee3c94eb15a5d733f8f7 \ + --hash=sha256:22c5f022799f3cd6741e24f0443ead92ef42be93ffda0d29b2597208c94c3753 \ + --hash=sha256:2924b89b16420712e9bb8192396026a8fbd6d8726224f918353ac19c4c043d2a \ + --hash=sha256:308974fdf98046db28440eb3377abba274808bf66262e042c412eb2adf852731 \ + --hash=sha256:396fdf88b1b503c9c59c84a08b6833ec0c3b5ad1a83230252a9e17b7dfb4cffc \ + --hash=sha256:3ac426704840877a285d03a445e162eb258924f014e2f074e209d9b4ff7bf380 \ + --hash=sha256:3b052c753c4babf2d1edc034c97851f867c87d6f3ea63a12e2700f159f5c41c3 \ + --hash=sha256:3fab4e75b8c525a4776e7630b9ee48aea50107fea6ca9f593c98da3f4d11bf7c \ + --hash=sha256:406fac1d09edc613020ce9cf3f2ccf1a1b2f57ab00552b4c18e3d5276c67eb11 \ + --hash=sha256:40a0bd0bed96dae5712dab2aba7d334a6c67cbcac2ddfca7dbcc4a8176445990 \ + --hash=sha256:41dac3b9fce187a25c6253ec79a3f9e2a7e761eb08690e90415069ea4a68ff7a \ + --hash=sha256:459c0d338cc55d099798618f714b21b7ece17eb1a87879f2da20a3ff4c7628e2 \ + --hash=sha256:459d6be6134ce3b38e0ef76f8a672924460c455d45f1ad8fdade36796df1ddc8 \ + --hash=sha256:46b0d5520dbcafea9a8645a8164658777686c5c524d381d983317d29687cce97 \ + --hash=sha256:47924039e785a04d4a4fa49455e51b4eb3422d6eaacfde9fc9abf8fdef164e8a \ + --hash=sha256:4bfcbde6e06c56b30668a0c872d75a7ef3025dc3c1823a13cf29a0e9b33f67e8 \ + --hash=sha256:4f9ee4febb249c591d07b2d4dd36ebcad0ccd128962aaa1801508320896575ef \ + --hash=sha256:55749f745ebf154c0d63d46c8c58594d8894b161928aa41adbb0709c1fe78b77 \ + --hash=sha256:5864b0242f74b9dd0b78fd39db1768bc3f00d1ffc14e596fd3e3f2ce43436a33 \ + --hash=sha256:5f60f920691a620b03082692c378661947d09415743e437a7478c309eb0e4f82 \ + --hash=sha256:60eb8ceaa40a41540b9acae6ae7c1f0a67d233c40dc4359c256ad2ad85bdf5e5 \ + --hash=sha256:69a7b96b59322a81c2203be537957313b07dd333105b73db0b69212c7d867b4b \ + --hash=sha256:6ad84731a26bcfb299f9eab56c7932d46f9cad51c52768cace09e92a19e4cf55 \ + --hash=sha256:6db58c22ac6c81aeac33912fb1af0e930bc9774166cdd56eade913d5f2fff35e \ + --hash=sha256:70651ff6e663428cea902dac297066d5c6e5423fda345a4ca62430575364d62b \ + --hash=sha256:72f7919af5de5ecfaf1eba47bf9a5d8aa089a3340277276e5636d16ee97614d7 \ + --hash=sha256:732bd062c9e5d9582a30e8751461c1917dd1ccbdd6cafb032f02c86b20d2e7ec \ + --hash=sha256:7924e54f7ce5d253d6160090ddc6df25ed2feea25bfb3339b424a9dd591688bc \ + --hash=sha256:7afb844041e707ac9ad9acad2188a90bffce2c770e6dc2318be0c9916aef1469 \ + --hash=sha256:7b883af50eaa6bb3299780651e5be921e88050ccf00e3e583b1e92020333304b \ + --hash=sha256:7beec26729d496a12fd23cf8da9944ee338c8b8a17035a560b585c36fe81af20 \ + --hash=sha256:7bf26c2e2ea59d32807081ad51968133af3025c4ba5753e6a794683d2c91bf6e \ + --hash=sha256:7c31669e0c8cc68400ef0c730c3a1e11317ba76b892deeefaf52dcb41d56ed5d \ + --hash=sha256:7e6231aa5bdacda78e96ad7b07d0c312f34ba35d717115f4b4bff6cb87224f0f \ + --hash=sha256:870dbfa94de9b8866b37b867a2cb37a60c401d9deb4a9ea392abf11a1f98037b \ + --hash=sha256:88646cae28eb1dd5cd1e09605680c2b043b64d7481cdad7f5003ebef401a3039 \ + --hash=sha256:8aafeedb6597a163a9c9727d8a8bd363a93277701b7bfd2749fbefee2396469e \ + --hash=sha256:8bde5b48c65b8e807409e6f20baee5d2cd880e0fad00b1a811ebc43e39a00ab2 \ + --hash=sha256:8f9142a6ed83d90c94a3efd7af8873bf7cefed2d3d44387bf848888482e2d25f \ + --hash=sha256:936a787f83db1f2115ee829dd615c4f684ee48ac4de5779ab4300994d8af325b \ + --hash=sha256:98dc6f4f2095fc7ad277782a7c2c88296badcad92316b5a6e530930b1d475ebc \ + --hash=sha256:9957433c3a1b67bdd4c63717eaf174ebb749510d5ea612cd4e83f2d9142f3fc8 \ + --hash=sha256:99af961d72ac731aae2a1b55ccbdae0733d816f8bfb97b41909e143de735f522 \ + --hash=sha256:9b5f13857da99325dcabe1cc4e9e6a3d7b2e2c726248ba5dd4be3e8e4a0b6d0e \ + --hash=sha256:9d776d30cde7e541b8180103c3f294ef7c1862fd45d81738d156d00551005784 \ + --hash=sha256:9da90d393a8227d717c19f5397688a38635afec89f2e2d7af0df037f3249c39a \ + --hash=sha256:a3b7352b48fbc8b446b75f3069124e87f599d25afb8baa96a550256c031bb890 \ + --hash=sha256:a477932664d9611d7a0816cc3c0eb1f8856f8a42435488280dfbf4395e141485 \ + --hash=sha256:a7e41e3ada4cca5f22b478c08e973c930e5e6c7ba3588fb8e35f2398cdcc1545 \ + --hash=sha256:a90fec23b4b05a09ad988e7a4f4e081711a90eb2a55b9c984d8b74597599180f \ + --hash=sha256:a9e523474998fb33f7c1a4d55f5504c908d57add624599e095c20fa575b8d943 \ + --hash=sha256:aa057095f621dad24a1e906747179a69780ef45cc8f69e97463692adbcdae878 \ + --hash=sha256:aa6c8c582036275997a733427b88031a32ffa5dfc3124dc25a730658c47a572f \ + --hash=sha256:ae34418b6b389d601b31153b84dce480351a352e0bb763684a1b993d6be30f17 \ + --hash=sha256:b0d7a9165167269758145756db43a133608a531b1e5bb6a626b9ee24bc38a8f7 \ + --hash=sha256:b30b0dd58a4509c3bd7eefddf6338565c4905406aee0c6e4a5293841411a1286 \ + --hash=sha256:b8f9186ca45aee030dc8234118b9c0784ad91a0bb27fc4e7d9d6608a5e3d386c \ + --hash=sha256:b94cbda27267423411c928208e89adddf2ea5dd5f74b9528513f0358bba019cb \ + --hash=sha256:cc6f6c9be0ab6da37bc77c2dda5f14b1d532d5dbef00311ee6e13357a418e646 \ + --hash=sha256:ce232a6170dd6532096cadbf6185271e4e8c70fc9217ebe105923ac105da9978 \ + --hash=sha256:cf903310a34e14651c9de056fcc12ce090560864d5a2bb0174b971685684e1d8 \ + --hash=sha256:d5362d099c244a2d2f9659fb3c9db7c735f0004765bbe06b99be69fbd87c3f15 \ + --hash=sha256:dffaf740fe2e147fedcb6b561353a16243e654f7fe8e701b1b9db148242e1272 \ + --hash=sha256:e0f686549e32ccdb02ae6f25eee40cc33900910085de6aa3790effd391ae10c2 \ + --hash=sha256:e4b52776a2e3230f4854907a1e0946eec04d41b1fc64069ee774876bbe0eab55 \ + --hash=sha256:e4ba0884a91f1aecce75202473ab138724aa4fb26d7707f2e1fa6c3e68c84fbf \ + --hash=sha256:e6294e76b0380bb7a61eb8a39273c40b20beb35e8c87ee101062834ced19c545 \ + --hash=sha256:ebb892ed8599b23fa8f1799e13a12c87a97a6c9d0f497525ce9858564c4575a4 \ + --hash=sha256:eca58e319f4fd6df004762419612122b2c7e7d95ffafc37e890252f869f3fb2a \ + --hash=sha256:ed957db4c33bc99895f3a1672eca7e80e8cda8bd1e29a80536b4ec2153fa9804 \ + --hash=sha256:ef551c053692b1e39e3f7950ce2296536728871110e7d75c4e7753fb30ca87f4 \ + --hash=sha256:ef6113cd31411eaf9b39fc5a8848e71c72656fd418882488598758b2c8c6dfa0 \ + --hash=sha256:f685dbc1fdadb1dcd5b5e51e0a378d4685a891b2ddaf8e2bba89bd3a7144e44a \ + --hash=sha256:f8ed79883b4328b7f0bd142733d99c8e6b22703e908ec63d930b06be3a0e7113 \ + --hash=sha256:fe56851c3f1d6f5384b3051c536cc81b3a93a73faf931f404fef95217cf1e10d \ + --hash=sha256:ff7c97eb7a29aba230389a2661edf2e9e06ce616c7e35aa764879b6894a44b25 + # via pydantic +pyelftools==0.30 \ + --hash=sha256:2fc92b0d534f8b081f58c7c370967379123d8e00984deb53c209364efd575b40 \ + --hash=sha256:544c3440eddb9a0dce70b6611de0b28163d71def759d2ed57a0d00118fc5da86 # via platformio pyparsing==3.1.1 \ --hash=sha256:32c7c0b711493c72ff18a981d24f28aaf9c1fb7ed5e9667c9e84e3db623bdbfb \ @@ -787,9 +851,9 @@ pyserial==3.5 \ --hash=sha256:3c77e014170dfffbd816e6ffc205e9842efb10be9f58ec16d3e8675b4925cddb \ --hash=sha256:c4451db6ba391ca6ca299fb3ec7bae67a5c55dde170964c7a14ceefec02f2cf0 # via platformio -python-can==4.2.2 \ - --hash=sha256:6ad50f4613289f3c4d276b6d2ac8901d776dcb929994cce93f55a69e858c595f \ - --hash=sha256:7eea9b81b0ff908000a825db024313f622895bd578e8a17433e0474cd7d2da83 +python-can==4.3.1 \ + --hash=sha256:008bea1c12e31586e1aa76971126b831bf01056a900e91862a11360e011ab933 \ + --hash=sha256:eebb68db388b8c997fc7c92dce311656946c968ff407706f5b5f9cc671879479 # via # cantools # opencan-cand @@ -829,6 +893,7 @@ pyyaml==6.0.1 \ --hash=sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4 \ --hash=sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba \ --hash=sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8 \ + --hash=sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef \ --hash=sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5 \ --hash=sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd \ --hash=sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3 \ @@ -861,32 +926,32 @@ requests==2.31.0 \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 # via platformio -ruff==0.1.1 \ - --hash=sha256:2a909d3930afdbc2e9fd893b0034479e90e7981791879aab50ce3d9f55205bd6 \ - --hash=sha256:2d68367d1379a6b47e61bc9de144a47bcdb1aad7903bbf256e4c3d31f11a87ae \ - --hash=sha256:3305d1cb4eb8ff6d3e63a48d1659d20aab43b49fe987b3ca4900528342367145 \ - --hash=sha256:3521bf910104bf781e6753282282acc145cbe3eff79a1ce6b920404cd756075a \ - --hash=sha256:3ff3006c97d9dc396b87fb46bb65818e614ad0181f059322df82bbfe6944e264 \ - --hash=sha256:620d4b34302538dbd8bbbe8fdb8e8f98d72d29bd47e972e2b59ce6c1e8862257 \ - --hash=sha256:6aa7e63c3852cf8fe62698aef31e563e97143a4b801b57f920012d0e07049a8d \ - --hash=sha256:8f5b24daddf35b6c207619301170cae5d2699955829cda77b6ce1e5fc69340df \ - --hash=sha256:b7cdc893aef23ccc14c54bd79a8109a82a2c527e11d030b62201d86f6c2b81c5 \ - --hash=sha256:ba3208543ab91d3e4032db2652dcb6c22a25787b85b8dc3aeff084afdc612e5c \ - --hash=sha256:bc11955f6ce3398d2afe81ad7e49d0ebf0a581d8bcb27b8c300281737735e3a3 \ - --hash=sha256:c34ae501d0ec71acf19ee5d4d889e379863dcc4b796bf8ce2934a9357dc31db7 \ - --hash=sha256:c90461ae4abec261609e5ea436de4a4b5f2822921cf04c16d2cc9327182dbbcc \ - --hash=sha256:cbbd8eead88ea83a250499074e2a8e9d80975f0b324b1e2e679e4594da318c25 \ - --hash=sha256:d3f9ac658ba29e07b95c80fa742b059a55aefffa8b1e078bc3c08768bdd4b11a \ - --hash=sha256:e140bd717c49164c8feb4f65c644046fe929c46f42493672853e3213d7bdbce2 \ - --hash=sha256:f4780e2bb52f3863a565ec3f699319d3493b83ff95ebbb4993e59c62aaf6e75e +ruff==0.2.1 \ + --hash=sha256:0034d5b6323e6e8fe91b2a1e55b02d92d0b582d2953a2b37a67a2d7dedbb7acc \ + --hash=sha256:00a818e2db63659570403e44383ab03c529c2b9678ba4ba6c105af7854008105 \ + --hash=sha256:0a725823cb2a3f08ee743a534cb6935727d9e47409e4ad72c10a3faf042ad5ba \ + --hash=sha256:13471684694d41ae0f1e8e3a7497e14cd57ccb7dd72ae08d56a159d6c9c3e30e \ + --hash=sha256:3b42b5d8677cd0c72b99fcaf068ffc62abb5a19e71b4a3b9cfa50658a0af02f1 \ + --hash=sha256:6b95ac9ce49b4fb390634d46d6ece32ace3acdd52814671ccaf20b7f60adb232 \ + --hash=sha256:7022d66366d6fded4ba3889f73cd791c2d5621b2ccf34befc752cb0df70f5fad \ + --hash=sha256:a11567e20ea39d1f51aebd778685582d4c56ccb082c1161ffc10f79bebe6df35 \ + --hash=sha256:be60592f9d218b52f03384d1325efa9d3b41e4c4d55ea022cd548547cc42cd2b \ + --hash=sha256:c92db7101ef5bfc18e96777ed7bc7c822d545fa5977e90a585accac43d22f18a \ + --hash=sha256:dc586724a95b7d980aa17f671e173df00f0a2eef23f8babbeee663229a938fec \ + --hash=sha256:dd81b911d28925e7e8b323e8d06951554655021df8dd4ac3045d7212ac4ba080 \ + --hash=sha256:e3affdcbc2afb6f5bd0eb3130139ceedc5e3f28d206fe49f63073cb9e65988e0 \ + --hash=sha256:e5cb5526d69bb9143c2e4d2a115d08ffca3d8e0fddc84925a7b54931c96f5c02 \ + --hash=sha256:efababa8e12330aa94a53e90a81eb6e2d55f348bc2e71adbf17d9cad23c03ee6 \ + --hash=sha256:f3ef052283da7dec1987bba8d8733051c2325654641dfe5877a4022108098683 \ + --hash=sha256:fbd2288890b88e8aab4499e55148805b58ec711053588cc2f0196a44f6e3d855 # via selfdrive (pyproject.toml) ruyaml==0.91.0 \ --hash=sha256:50e0ee3389c77ad340e209472e0effd41ae0275246df00cdad0a067532171755 \ --hash=sha256:6ce9de9f4d082d696d3bde264664d1bcdca8f5a9dff9d1a1f1a127969ab871ab # via yamlfix -scons==4.5.2 \ - --hash=sha256:2f66a1c5c485068a496c12356583eefb2d79e17177278c7334b12b460f0503ce \ - --hash=sha256:813360b2bce476bc9cc12a0f3a22d46ce520796b352557202cb07d3e402f5458 +scons==4.6.0.post1 \ + --hash=sha256:9e0527b7a924e7af2b312c1f8961ef2776847bdc46a4d886af5a75f301da7ce3 \ + --hash=sha256:d467a34546f5366a32e4d4419611d0138dd680210f24aa8491ebe9e4b83456cf # via selfdrive (pyproject.toml) semantic-version==2.10.0 \ --hash=sha256:bdabb6d336998cbb378d4b9db3a4b56a1e3235701dc05ea2690d9a997ed5041c \ @@ -900,9 +965,9 @@ sniffio==1.3.0 \ --hash=sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101 \ --hash=sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384 # via anyio -starlette==0.31.1 \ - --hash=sha256:009fb98ecd551a55017d204f033c58b13abcd4719cb5c41503abbf6d260fde11 \ - --hash=sha256:a4dc2a3448fb059000868d7eb774dd71229261b6d49b6851e7849bec69c0a011 +starlette==0.35.1 \ + --hash=sha256:3e2639dac3520e4f58734ed22553f950d3f3cb1001cd2eaac4d57e8cdc5f66bc \ + --hash=sha256:50bbbda9baa098e361f398fda0928062abbaf1f54f4fadcbe17c092a01eb9a25 # via platformio strictyaml==1.7.3 \ --hash=sha256:22f854a5fcab42b5ddba8030a0e4be51ca89af0267961c8d6cfa86395586c407 \ @@ -924,134 +989,128 @@ tqdm==4.66.1 \ --hash=sha256:d302b3c5b53d47bce91fea46679d9c3c6508cf6332229aa1e7d8653723793386 \ --hash=sha256:d88e651f9db8d8551a62556d3cff9e3034274ca5d66e93197cf2490e2dcb69c7 # via selfdrive (pyproject.toml) -typing-extensions==4.8.0 \ - --hash=sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0 \ - --hash=sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef +typing-extensions==4.9.0 \ + --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ + --hash=sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd # via - # cantools # pydantic + # pydantic-core # python-can uc-micro-py==1.0.2 \ --hash=sha256:30ae2ac9c49f39ac6dce743bd187fcd2b574b16ca095fa74cd9396795c954c54 \ --hash=sha256:8c9110c309db9d9e87302e2f4ad2c3152770930d88ab385cd544e7a7e75f3de0 # via linkify-it-py -urllib3==2.0.7 \ - --hash=sha256:c97dfde1f7bd43a71c8d2a58e369e9b2bf692d1334ea9f9cae55add7d0dd0f84 \ - --hash=sha256:fdb6d215c776278489906c2f8916e6e7d4f5a9b602ccbcfdf7f016fc8da0596e +urllib3==2.2.0 \ + --hash=sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20 \ + --hash=sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224 # via requests -uvicorn==0.23.2 \ - --hash=sha256:1f9be6558f01239d4fdf22ef8126c39cb1ad0addf76c40e760549d2c2f43ab53 \ - --hash=sha256:4d3cc12d7727ba72b64d12d3cc7743124074c0a69f7b201512fc50c3e3f1569a +uvicorn==0.25.0 \ + --hash=sha256:6dddbad1d7ee0f5140aba5ec138ddc9612c5109399903828b4874c9937f009c2 \ + --hash=sha256:ce107f5d9bd02b4636001a77a4e74aab5e1e2b146868ebbad565237145af444c # via platformio -virtualenv==20.24.6 \ - --hash=sha256:02ece4f56fbf939dbbc33c0715159951d6bf14aaf5457b092e4548e1382455af \ - --hash=sha256:520d056652454c5098a00c0f073611ccbea4c79089331f60bf9d7ba247bb7381 +virtualenv==20.25.0 \ + --hash=sha256:4238949c5ffe6876362d9c0180fc6c3a824a7b12b80604eeb8085f2ed7460de3 \ + --hash=sha256:bf51c0d9c7dd63ea8e44086fa1e4fb1093a31e963b86959257378aef020e1f1b # via pre-commit -wheel==0.41.2 \ - --hash=sha256:0c5ac5ff2afb79ac23ab82bab027a0be7b5dbcf2e54dc50efe4bf507de1f7985 \ - --hash=sha256:75909db2664838d015e3d9139004ee16711748a52c8f336b52882266540215d8 +wheel==0.42.0 \ + --hash=sha256:177f9c9b0d45c47873b619f5b650346d632cdc35fb5e4d25058e09c9e581433d \ + --hash=sha256:c45be39f7882c9d34243236f2d63cbd58039e360f85d0913425fbd7ceea617a8 # via pip-tools -wrapt==1.15.0 \ - --hash=sha256:02fce1852f755f44f95af51f69d22e45080102e9d00258053b79367d07af39c0 \ - --hash=sha256:077ff0d1f9d9e4ce6476c1a924a3332452c1406e59d90a2cf24aeb29eeac9420 \ - --hash=sha256:078e2a1a86544e644a68422f881c48b84fef6d18f8c7a957ffd3f2e0a74a0d4a \ - --hash=sha256:0970ddb69bba00670e58955f8019bec4a42d1785db3faa043c33d81de2bf843c \ - --hash=sha256:1286eb30261894e4c70d124d44b7fd07825340869945c79d05bda53a40caa079 \ - --hash=sha256:21f6d9a0d5b3a207cdf7acf8e58d7d13d463e639f0c7e01d82cdb671e6cb7923 \ - --hash=sha256:230ae493696a371f1dbffaad3dafbb742a4d27a0afd2b1aecebe52b740167e7f \ - --hash=sha256:26458da5653aa5b3d8dc8b24192f574a58984c749401f98fff994d41d3f08da1 \ - --hash=sha256:2cf56d0e237280baed46f0b5316661da892565ff58309d4d2ed7dba763d984b8 \ - --hash=sha256:2e51de54d4fb8fb50d6ee8327f9828306a959ae394d3e01a1ba8b2f937747d86 \ - --hash=sha256:2fbfbca668dd15b744418265a9607baa970c347eefd0db6a518aaf0cfbd153c0 \ - --hash=sha256:38adf7198f8f154502883242f9fe7333ab05a5b02de7d83aa2d88ea621f13364 \ - --hash=sha256:3a8564f283394634a7a7054b7983e47dbf39c07712d7b177b37e03f2467a024e \ - --hash=sha256:3abbe948c3cbde2689370a262a8d04e32ec2dd4f27103669a45c6929bcdbfe7c \ - --hash=sha256:3bbe623731d03b186b3d6b0d6f51865bf598587c38d6f7b0be2e27414f7f214e \ - --hash=sha256:40737a081d7497efea35ab9304b829b857f21558acfc7b3272f908d33b0d9d4c \ - --hash=sha256:41d07d029dd4157ae27beab04d22b8e261eddfc6ecd64ff7000b10dc8b3a5727 \ - --hash=sha256:46ed616d5fb42f98630ed70c3529541408166c22cdfd4540b88d5f21006b0eff \ - --hash=sha256:493d389a2b63c88ad56cdc35d0fa5752daac56ca755805b1b0c530f785767d5e \ - --hash=sha256:4ff0d20f2e670800d3ed2b220d40984162089a6e2c9646fdb09b85e6f9a8fc29 \ - --hash=sha256:54accd4b8bc202966bafafd16e69da9d5640ff92389d33d28555c5fd4f25ccb7 \ - --hash=sha256:56374914b132c702aa9aa9959c550004b8847148f95e1b824772d453ac204a72 \ - --hash=sha256:578383d740457fa790fdf85e6d346fda1416a40549fe8db08e5e9bd281c6a475 \ - --hash=sha256:58d7a75d731e8c63614222bcb21dd992b4ab01a399f1f09dd82af17bbfc2368a \ - --hash=sha256:5c5aa28df055697d7c37d2099a7bc09f559d5053c3349b1ad0c39000e611d317 \ - --hash=sha256:5fc8e02f5984a55d2c653f5fea93531e9836abbd84342c1d1e17abc4a15084c2 \ - --hash=sha256:63424c681923b9f3bfbc5e3205aafe790904053d42ddcc08542181a30a7a51bd \ - --hash=sha256:64b1df0f83706b4ef4cfb4fb0e4c2669100fd7ecacfb59e091fad300d4e04640 \ - --hash=sha256:74934ebd71950e3db69960a7da29204f89624dde411afbfb3b4858c1409b1e98 \ - --hash=sha256:75669d77bb2c071333417617a235324a1618dba66f82a750362eccbe5b61d248 \ - --hash=sha256:75760a47c06b5974aa5e01949bf7e66d2af4d08cb8c1d6516af5e39595397f5e \ - --hash=sha256:76407ab327158c510f44ded207e2f76b657303e17cb7a572ffe2f5a8a48aa04d \ - --hash=sha256:76e9c727a874b4856d11a32fb0b389afc61ce8aaf281ada613713ddeadd1cfec \ - --hash=sha256:77d4c1b881076c3ba173484dfa53d3582c1c8ff1f914c6461ab70c8428b796c1 \ - --hash=sha256:780c82a41dc493b62fc5884fb1d3a3b81106642c5c5c78d6a0d4cbe96d62ba7e \ - --hash=sha256:7dc0713bf81287a00516ef43137273b23ee414fe41a3c14be10dd95ed98a2df9 \ - --hash=sha256:7eebcdbe3677e58dd4c0e03b4f2cfa346ed4049687d839adad68cc38bb559c92 \ - --hash=sha256:896689fddba4f23ef7c718279e42f8834041a21342d95e56922e1c10c0cc7afb \ - --hash=sha256:96177eb5645b1c6985f5c11d03fc2dbda9ad24ec0f3a46dcce91445747e15094 \ - --hash=sha256:96e25c8603a155559231c19c0349245eeb4ac0096fe3c1d0be5c47e075bd4f46 \ - --hash=sha256:9d37ac69edc5614b90516807de32d08cb8e7b12260a285ee330955604ed9dd29 \ - --hash=sha256:9ed6aa0726b9b60911f4aed8ec5b8dd7bf3491476015819f56473ffaef8959bd \ - --hash=sha256:a487f72a25904e2b4bbc0817ce7a8de94363bd7e79890510174da9d901c38705 \ - --hash=sha256:a4cbb9ff5795cd66f0066bdf5947f170f5d63a9274f99bdbca02fd973adcf2a8 \ - --hash=sha256:a74d56552ddbde46c246b5b89199cb3fd182f9c346c784e1a93e4dc3f5ec9975 \ - --hash=sha256:a89ce3fd220ff144bd9d54da333ec0de0399b52c9ac3d2ce34b569cf1a5748fb \ - --hash=sha256:abd52a09d03adf9c763d706df707c343293d5d106aea53483e0ec8d9e310ad5e \ - --hash=sha256:abd8f36c99512755b8456047b7be10372fca271bf1467a1caa88db991e7c421b \ - --hash=sha256:af5bd9ccb188f6a5fdda9f1f09d9f4c86cc8a539bd48a0bfdc97723970348418 \ - --hash=sha256:b02f21c1e2074943312d03d243ac4388319f2456576b2c6023041c4d57cd7019 \ - --hash=sha256:b06fa97478a5f478fb05e1980980a7cdf2712015493b44d0c87606c1513ed5b1 \ - --hash=sha256:b0724f05c396b0a4c36a3226c31648385deb6a65d8992644c12a4963c70326ba \ - --hash=sha256:b130fe77361d6771ecf5a219d8e0817d61b236b7d8b37cc045172e574ed219e6 \ - --hash=sha256:b56d5519e470d3f2fe4aa7585f0632b060d532d0696c5bdfb5e8319e1d0f69a2 \ - --hash=sha256:b67b819628e3b748fd3c2192c15fb951f549d0f47c0449af0764d7647302fda3 \ - --hash=sha256:ba1711cda2d30634a7e452fc79eabcadaffedf241ff206db2ee93dd2c89a60e7 \ - --hash=sha256:bbeccb1aa40ab88cd29e6c7d8585582c99548f55f9b2581dfc5ba68c59a85752 \ - --hash=sha256:bd84395aab8e4d36263cd1b9308cd504f6cf713b7d6d3ce25ea55670baec5416 \ - --hash=sha256:c99f4309f5145b93eca6e35ac1a988f0dc0a7ccf9ccdcd78d3c0adf57224e62f \ - --hash=sha256:ca1cccf838cd28d5a0883b342474c630ac48cac5df0ee6eacc9c7290f76b11c1 \ - --hash=sha256:cd525e0e52a5ff16653a3fc9e3dd827981917d34996600bbc34c05d048ca35cc \ - --hash=sha256:cdb4f085756c96a3af04e6eca7f08b1345e94b53af8921b25c72f096e704e145 \ - --hash=sha256:ce42618f67741d4697684e501ef02f29e758a123aa2d669e2d964ff734ee00ee \ - --hash=sha256:d06730c6aed78cee4126234cf2d071e01b44b915e725a6cb439a879ec9754a3a \ - --hash=sha256:d5fe3e099cf07d0fb5a1e23d399e5d4d1ca3e6dfcbe5c8570ccff3e9208274f7 \ - --hash=sha256:d6bcbfc99f55655c3d93feb7ef3800bd5bbe963a755687cbf1f490a71fb7794b \ - --hash=sha256:d787272ed958a05b2c86311d3a4135d3c2aeea4fc655705f074130aa57d71653 \ - --hash=sha256:e169e957c33576f47e21864cf3fc9ff47c223a4ebca8960079b8bd36cb014fd0 \ - --hash=sha256:e20076a211cd6f9b44a6be58f7eeafa7ab5720eb796975d0c03f05b47d89eb90 \ - --hash=sha256:e826aadda3cae59295b95343db8f3d965fb31059da7de01ee8d1c40a60398b29 \ - --hash=sha256:eef4d64c650f33347c1f9266fa5ae001440b232ad9b98f1f43dfe7a79435c0a6 \ - --hash=sha256:f2e69b3ed24544b0d3dbe2c5c0ba5153ce50dcebb576fdc4696d52aa22db6034 \ - --hash=sha256:f87ec75864c37c4c6cb908d282e1969e79763e0d9becdfe9fe5473b7bb1e5f09 \ - --hash=sha256:fbec11614dba0424ca72f4e8ba3c420dba07b4a7c206c8c8e4e73f2e98f4c559 \ - --hash=sha256:fd69666217b62fa5d7c6aa88e507493a34dec4fa20c5bd925e4bc12fce586639 +wrapt==1.16.0 \ + --hash=sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc \ + --hash=sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81 \ + --hash=sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09 \ + --hash=sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e \ + --hash=sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca \ + --hash=sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0 \ + --hash=sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb \ + --hash=sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487 \ + --hash=sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40 \ + --hash=sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c \ + --hash=sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060 \ + --hash=sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202 \ + --hash=sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41 \ + --hash=sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9 \ + --hash=sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b \ + --hash=sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664 \ + --hash=sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d \ + --hash=sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362 \ + --hash=sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00 \ + --hash=sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc \ + --hash=sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1 \ + --hash=sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267 \ + --hash=sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956 \ + --hash=sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966 \ + --hash=sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1 \ + --hash=sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228 \ + --hash=sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72 \ + --hash=sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d \ + --hash=sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292 \ + --hash=sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0 \ + --hash=sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0 \ + --hash=sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36 \ + --hash=sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c \ + --hash=sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5 \ + --hash=sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f \ + --hash=sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73 \ + --hash=sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b \ + --hash=sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2 \ + --hash=sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593 \ + --hash=sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39 \ + --hash=sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389 \ + --hash=sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf \ + --hash=sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf \ + --hash=sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89 \ + --hash=sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c \ + --hash=sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c \ + --hash=sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f \ + --hash=sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440 \ + --hash=sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465 \ + --hash=sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136 \ + --hash=sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b \ + --hash=sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8 \ + --hash=sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3 \ + --hash=sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8 \ + --hash=sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6 \ + --hash=sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e \ + --hash=sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f \ + --hash=sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c \ + --hash=sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e \ + --hash=sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8 \ + --hash=sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2 \ + --hash=sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020 \ + --hash=sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35 \ + --hash=sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d \ + --hash=sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3 \ + --hash=sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537 \ + --hash=sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809 \ + --hash=sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d \ + --hash=sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a \ + --hash=sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4 # via python-can wsproto==1.2.0 \ --hash=sha256:ad565f26ecb92588a3e43bc3d96164de84cd9902482b130d0ddbaa9664a85065 \ --hash=sha256:b9acddd652b585d75b20477888c56642fdade28bdfd3579aa24a4d2c037dd736 # via platformio -yamlfix==1.15.0 \ - --hash=sha256:22095f0aaa9a6c07b279385b3b567b1553d6cb12d6f2c41dd2bb0a4361efc70d \ - --hash=sha256:6aa50eac3b308ef8d31f5e0d0c36aa5c5bd46de4d8f943ae6cb62df60e8e7e72 +yamlfix==1.16.0 \ + --hash=sha256:72f7990e5b2b4459ef3249df4724dacbd85ce7b87f4ea3503d8a72c48574cc32 \ + --hash=sha256:d92bf8a6d5b6f186bd9d643d633549a1c2424555cb8d176a5d38bce3e678b2b0 # via selfdrive (pyproject.toml) -yamllint==1.32.0 \ - --hash=sha256:d01dde008c65de5b235188ab3110bebc59d18e5c65fc8a58267cd211cd9df34a \ - --hash=sha256:d97a66e48da820829d96077d76b8dfbe6c6140f106e558dae87e81ac4e6b30b7 +yamllint==1.34.0 \ + --hash=sha256:33b813f6ff2ffad2e57a288281098392b85f7463ce1f3d5cd45aa848b916a806 \ + --hash=sha256:7f0a6a41e8aab3904878da4ae34b6248b6bc74634e0d3a90f0fb2d7e723a3d4f # via selfdrive (pyproject.toml) # The following packages are considered to be unsafe in a requirements file: -pip==23.3.1 \ - --hash=sha256:1fcaa041308d01f14575f6d0d2ea4b75a3e2871fe4f9c694976f908768e14174 \ - --hash=sha256:55eb67bb6171d37447e82213be585b75fe2b12b359e993773aca4de9247a052b +pip==24.0 \ + --hash=sha256:ba0d021a166865d2265246961bec0152ff124de910c5cc39f1156ce3fa7c69dc \ + --hash=sha256:ea9bd1a847e8c5774a5777bb398c19e80bcd4e2aa16a4b301b718fe6f593aba2 # via pip-tools -setuptools==68.2.2 \ - --hash=sha256:4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87 \ - --hash=sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a +setuptools==69.0.3 \ + --hash=sha256:385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05 \ + --hash=sha256:be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78 # via # nodeenv # pip-tools - # python-can # ruyaml # scons From 5febfc8ed5674cd8c37503c67c66ad97d58f0395 Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Thu, 8 Feb 2024 15:32:48 -0500 Subject: [PATCH 34/80] Add `invoke` as a dependency --- pyproject.toml | 1 + requirements.txt | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index 895bfb861..3c148b5dc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -17,6 +17,7 @@ dependencies = [ 'black', 'can-isotp', 'cantools', + 'invoke', 'matplotlib', 'mdformat-gfm', 'opencan-cand', diff --git a/requirements.txt b/requirements.txt index 193434f40..200ba10e9 100644 --- a/requirements.txt +++ b/requirements.txt @@ -359,6 +359,10 @@ idna==3.6 \ # via # anyio # requests +invoke==2.2.0 \ + --hash=sha256:6ea924cc53d4f78e3d98bc436b08069a03077e6f85ad1ddaa8a116d7dad15820 \ + --hash=sha256:ee6cbb101af1a859c7fe84f2a264c059020b0cb7fe3535f9424300ab568f6bd5 + # via selfdrive (pyproject.toml) kiwisolver==1.4.5 \ --hash=sha256:00bd361b903dc4bbf4eb165f24d1acbee754fce22ded24c3d56eec268658a5cf \ --hash=sha256:040c1aebeda72197ef477a906782b5ab0d387642e93bda547336b8957c61022e \ From bc56b5d00fe6661256c354b24c180696f6abb250 Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Thu, 8 Feb 2024 16:00:34 -0500 Subject: [PATCH 35/80] Move linter settings to `lint` section --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 3c148b5dc..27ec057af 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -52,7 +52,7 @@ line-length = 79 [tool.ruff.format] quote-style = 'single' -[tool.ruff.isort] +[tool.ruff.lint.isort] force-single-line = true [tool.setuptools.packages.find] From b6657081b6b6f42ae09ca6ce8178af301bfa4280 Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Thu, 8 Feb 2024 16:01:48 -0500 Subject: [PATCH 36/80] Add `deps.python.install-requirements` task --- tasks/__init__.py | 7 +++++++ tasks/deps/__init__.py | 9 +++++++++ tasks/deps/python.py | 7 +++++++ 3 files changed, 23 insertions(+) create mode 100644 tasks/__init__.py create mode 100644 tasks/deps/__init__.py create mode 100644 tasks/deps/python.py diff --git a/tasks/__init__.py b/tasks/__init__.py new file mode 100644 index 000000000..ea2786efe --- /dev/null +++ b/tasks/__init__.py @@ -0,0 +1,7 @@ +import deps + +from invoke import Collection + +ns = Collection() + +ns.add_collection(deps) diff --git a/tasks/deps/__init__.py b/tasks/deps/__init__.py new file mode 100644 index 000000000..fa7d50a85 --- /dev/null +++ b/tasks/deps/__init__.py @@ -0,0 +1,9 @@ +from invoke import Collection + +from . import ( + python, +) + +ns = Collection() + +ns.add_collection(Collection.from_module(python)) diff --git a/tasks/deps/python.py b/tasks/deps/python.py new file mode 100644 index 000000000..8c3f0edc3 --- /dev/null +++ b/tasks/deps/python.py @@ -0,0 +1,7 @@ +from invoke import task + + +@task +def install_requirements(c): + c.run('pip install --requirement requirements.txt') + c.run('pip install --requirement requirements-local.txt') From 720fd4e8e5b4c55cfc4ba6e8e03d32b7963a1f56 Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Thu, 8 Feb 2024 16:05:28 -0500 Subject: [PATCH 37/80] Add `deps.python.pip-compile` task --- tasks/deps/python.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tasks/deps/python.py b/tasks/deps/python.py index 8c3f0edc3..fd6728d3d 100644 --- a/tasks/deps/python.py +++ b/tasks/deps/python.py @@ -5,3 +5,8 @@ def install_requirements(c): c.run('pip install --requirement requirements.txt') c.run('pip install --requirement requirements-local.txt') + + +@task +def pip_compile(c): + c.run('pip-compile --output-file requirements.txt') From 13f656efcb6ec5d21d550ba78b2aab96f9f99540 Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Thu, 8 Feb 2024 16:06:38 -0500 Subject: [PATCH 38/80] Add `deps.python.venv` task --- tasks/deps/python.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tasks/deps/python.py b/tasks/deps/python.py index fd6728d3d..eeef3d432 100644 --- a/tasks/deps/python.py +++ b/tasks/deps/python.py @@ -10,3 +10,8 @@ def install_requirements(c): @task def pip_compile(c): c.run('pip-compile --output-file requirements.txt') + + +@task +def venv(c): + c.run('python -m venv .venv') From bce0d2fe971c177d73ac1e29e93aaecdef2f485b Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Thu, 8 Feb 2024 16:38:43 -0500 Subject: [PATCH 39/80] Manage Python dependency install with `invoke` --- .envrc | 11 +++-------- flake.nix | 2 ++ 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/.envrc b/.envrc index 4edce52fc..2eda0ba13 100644 --- a/.envrc +++ b/.envrc @@ -35,20 +35,15 @@ fi if [ ! -d "$VIRTUAL_ENV" ]; then msg_info "creating \`$VIRTUAL_ENV\` because it doesn't seem to exist" - python -m venv "$VIRTUAL_ENV" + invoke deps.python.venv fi -if [ -n "${FISH_VERISON-}" ]; then - . "$VIRTUAL_ENV/bin/activate.fish" -else - . "$VIRTUAL_ENV/bin/activate" -fi +. "$VIRTUAL_ENV/bin/activate" if [ ! -f "$VIRTUAL_ENV/.requirements-installed" ]; then msg_info 'installing python requirements since they seem to be missing' - pip install -r 'requirements.txt' - pip install -r 'requirements-local.txt' + invoke deps.python.install-requirements touch "$VIRTUAL_ENV/.requirements-installed" fi diff --git a/flake.nix b/flake.nix index a9a91f0b3..ae9785959 100644 --- a/flake.nix +++ b/flake.nix @@ -22,6 +22,7 @@ }; python = pkgs.python312; + pythonPackages = pkgs.python312Packages; rust-version = pkgs.rust-bin.fromRustupToolchainFile ./rust-toolchain.toml; rust = rust-version.override { }; @@ -35,6 +36,7 @@ pkgs.nixpkgs-fmt pkgs.zlib python + pythonPackages.invoke rust ]; From d8a581b27c4646243039878f6d682ac2016cfc40 Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Fri, 9 Feb 2024 01:31:06 -0500 Subject: [PATCH 40/80] Set environment variables for `direnv` installed dependencies --- .envrc | 14 +++++++------- site_scons/env.py | 21 ++++++++++++++++++--- 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/.envrc b/.envrc index 2eda0ba13..5e2d3dd17 100644 --- a/.envrc +++ b/.envrc @@ -23,12 +23,12 @@ msg_info() use flake -if [ ! -f "$IDF_TOOLS_PATH/.requirements-installed" ]; then - msg_info 'installing esp-idf since it seems to be missing' +if [ ! -f "$DIRENV_INSTALLED_IDF_TOOLS" ]; then + msg_info 'installing idf-tools since they seem to be missing' "$IDF_PATH/install.sh" "$IDF_TARGETS" - touch "$IDF_TOOLS_PATH/.requirements-installed" + touch "$DIRENV_INSTALLED_IDF_TOOLS" fi @@ -40,24 +40,24 @@ fi . "$VIRTUAL_ENV/bin/activate" -if [ ! -f "$VIRTUAL_ENV/.requirements-installed" ]; then +if [ ! -f "$DIRENV_INSTALLED_PYTHON_REQUIREMENTS" ]; then msg_info 'installing python requirements since they seem to be missing' invoke deps.python.install-requirements - touch "$VIRTUAL_ENV/.requirements-installed" + touch "$DIRENV_INSTALLED_PYTHON_REQUIREMENTS" fi PATH_add "$CARGO_HOME/bin" watch_file './tools/cargo-install-gen.py' -if [ ! -f "$CARGO_HOME/.crates-installed" ]; then +if [ ! -f "$DIRENV_INSTALLED_CRATES" ]; then msg_info 'installing rust crates since they seem to be missing' eval $(./tools/cargo-install-gen.py --config 'crates.toml') - touch "$CARGO_HOME/.crates-installed" + touch "$DIRENV_INSTALLED_CRATES" fi diff --git a/site_scons/env.py b/site_scons/env.py index 70ed69795..c90c4f54c 100755 --- a/site_scons/env.py +++ b/site_scons/env.py @@ -5,15 +5,30 @@ import shlex import typing +_CARGO_HOME = '.cargo' +_IDF_TOOLS_PATH = '.espressif' +_VIRTUAL_ENV = '.venv' + + +DIRENV_INSTALLED: typing.Final[dict[str, str]] = { + f'DIRENV_INSTALLED_{key}': f'{value}/.direnv.installed' + for key, value in { + 'CRATES': _CARGO_HOME, + 'IDF_TOOLS': _IDF_TOOLS_PATH, + 'PYTHON_REQUIREMENTS': _VIRTUAL_ENV, + }.items() +} + PATHS: typing.Final[dict[str, str]] = { key: os.path.abspath(value) for key, value in { - 'CARGO_HOME': '.cargo', + **DIRENV_INSTALLED, + 'CARGO_HOME': _CARGO_HOME, 'IDF_PATH': 'lib/esp-idf', - 'IDF_TOOLS_PATH': '.espressif', + 'IDF_TOOLS_PATH': _IDF_TOOLS_PATH, 'REPO_ROOT': '.', - 'VIRTUAL_ENV': '.venv', + 'VIRTUAL_ENV': _VIRTUAL_ENV, }.items() } From 3a38fb7ace867af6cd64fa006ff033a1b4d9d08e Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Fri, 9 Feb 2024 01:43:14 -0500 Subject: [PATCH 41/80] Add `deps.cargo.install` task --- tasks/deps/__init__.py | 2 ++ tasks/deps/cargo.py | 9 +++++++++ 2 files changed, 11 insertions(+) create mode 100644 tasks/deps/cargo.py diff --git a/tasks/deps/__init__.py b/tasks/deps/__init__.py index fa7d50a85..50062aa3d 100644 --- a/tasks/deps/__init__.py +++ b/tasks/deps/__init__.py @@ -1,9 +1,11 @@ from invoke import Collection from . import ( + cargo, python, ) ns = Collection() +ns.add_collection(Collection.from_module(cargo)) ns.add_collection(Collection.from_module(python)) diff --git a/tasks/deps/cargo.py b/tasks/deps/cargo.py new file mode 100644 index 000000000..27b79e776 --- /dev/null +++ b/tasks/deps/cargo.py @@ -0,0 +1,9 @@ +from invoke import task + + +@task +def install(c): + result = c.run('./tools/cargo-install-gen.py --config \'crates.toml\'') + + for command in result.stdout.strip().split('\n'): + c.run(command) From 57006667126e4b2550fea092c1a41c3b5dd3ca24 Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Fri, 9 Feb 2024 01:44:00 -0500 Subject: [PATCH 42/80] Manage `cargo` dependency install with `invoke` --- .envrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.envrc b/.envrc index 5e2d3dd17..927789bf0 100644 --- a/.envrc +++ b/.envrc @@ -55,7 +55,7 @@ watch_file './tools/cargo-install-gen.py' if [ ! -f "$DIRENV_INSTALLED_CRATES" ]; then msg_info 'installing rust crates since they seem to be missing' - eval $(./tools/cargo-install-gen.py --config 'crates.toml') + invoke deps.cargo.install touch "$DIRENV_INSTALLED_CRATES" fi From 44fa9a4798ad120be5aca34e6ae6eaf5ef6def05 Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Fri, 9 Feb 2024 01:48:42 -0500 Subject: [PATCH 43/80] Add `deps.idf.install` task --- tasks/deps/__init__.py | 2 ++ tasks/deps/idf.py | 8 ++++++++ 2 files changed, 10 insertions(+) create mode 100644 tasks/deps/idf.py diff --git a/tasks/deps/__init__.py b/tasks/deps/__init__.py index 50062aa3d..35dc1792c 100644 --- a/tasks/deps/__init__.py +++ b/tasks/deps/__init__.py @@ -2,10 +2,12 @@ from . import ( cargo, + idf, python, ) ns = Collection() ns.add_collection(Collection.from_module(cargo)) +ns.add_collection(Collection.from_module(idf)) ns.add_collection(Collection.from_module(python)) diff --git a/tasks/deps/idf.py b/tasks/deps/idf.py new file mode 100644 index 000000000..f4a6420c1 --- /dev/null +++ b/tasks/deps/idf.py @@ -0,0 +1,8 @@ +import os + +from invoke import task + + +@task +def install(c): + c.run(f'{os.environ["IDF_PATH"]}/install.sh') From e691a070c897f60ed90acb44c5ac443a0e7f2fa6 Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Fri, 9 Feb 2024 01:49:31 -0500 Subject: [PATCH 44/80] Modules are already detected --- tasks/deps/__init__.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tasks/deps/__init__.py b/tasks/deps/__init__.py index 35dc1792c..36d0a4ff3 100644 --- a/tasks/deps/__init__.py +++ b/tasks/deps/__init__.py @@ -8,6 +8,6 @@ ns = Collection() -ns.add_collection(Collection.from_module(cargo)) -ns.add_collection(Collection.from_module(idf)) -ns.add_collection(Collection.from_module(python)) +ns.add_collection(cargo) +ns.add_collection(idf) +ns.add_collection(python) From b2e2a42704240c0e28187e2c32026580c1f5cb4d Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Fri, 9 Feb 2024 02:18:30 -0500 Subject: [PATCH 45/80] Add `pkgs.cmake` --- flake.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/flake.nix b/flake.nix index ae9785959..021c537ef 100644 --- a/flake.nix +++ b/flake.nix @@ -32,6 +32,7 @@ devShells.default = pkgs.mkShell { packages = [ pkgs.act + pkgs.cmake pkgs.mdbook pkgs.nixpkgs-fmt pkgs.zlib From fdf5435f2afbe28055d9065b87d339e4d9c4f5cd Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Fri, 9 Feb 2024 02:19:03 -0500 Subject: [PATCH 46/80] Add `pkgs.ninja` --- flake.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/flake.nix b/flake.nix index 021c537ef..7378499d0 100644 --- a/flake.nix +++ b/flake.nix @@ -34,6 +34,7 @@ pkgs.act pkgs.cmake pkgs.mdbook + pkgs.ninja pkgs.nixpkgs-fmt pkgs.zlib python From 8bae8397e8301e91f882693ee0702c7aade7212b Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Fri, 9 Feb 2024 02:19:37 -0500 Subject: [PATCH 47/80] Set `CMAKE_GENERATOR` --- site_scons/env.py | 1 + 1 file changed, 1 insertion(+) diff --git a/site_scons/env.py b/site_scons/env.py index c90c4f54c..9f62c64c6 100755 --- a/site_scons/env.py +++ b/site_scons/env.py @@ -35,6 +35,7 @@ ENV: typing.Final[dict[str, str]] = { **PATHS, + 'CMAKE_GENERATOR': 'Ninja', 'IDF_TARGETS': 'esp32s3', } From 72bafb21f380edd3f98346d996caeb16520d73db Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Fri, 9 Feb 2024 02:26:32 -0500 Subject: [PATCH 48/80] Add `esp32s3` `esp-idf` project --- lib/march/esp32s3/CMakeLists.txt | 5 + lib/march/esp32s3/main/CMakeLists.txt | 6 + lib/march/esp32s3/main/main.c | 5 + lib/march/esp32s3/sdkconfig | 2052 +++++++++++++++++++++++++ 4 files changed, 2068 insertions(+) create mode 100644 lib/march/esp32s3/CMakeLists.txt create mode 100644 lib/march/esp32s3/main/CMakeLists.txt create mode 100644 lib/march/esp32s3/main/main.c create mode 100644 lib/march/esp32s3/sdkconfig diff --git a/lib/march/esp32s3/CMakeLists.txt b/lib/march/esp32s3/CMakeLists.txt new file mode 100644 index 000000000..8563a9aa5 --- /dev/null +++ b/lib/march/esp32s3/CMakeLists.txt @@ -0,0 +1,5 @@ +cmake_minimum_required(VERSION 3.27.8) + +include($ENV{IDF_PATH}/tools/cmake/project.cmake) + +project(selfdrive) diff --git a/lib/march/esp32s3/main/CMakeLists.txt b/lib/march/esp32s3/main/CMakeLists.txt new file mode 100644 index 000000000..311e51093 --- /dev/null +++ b/lib/march/esp32s3/main/CMakeLists.txt @@ -0,0 +1,6 @@ +idf_component_register( + SRCS + "main.c" + INCLUDE_DIRS + "" +) diff --git a/lib/march/esp32s3/main/main.c b/lib/march/esp32s3/main/main.c new file mode 100644 index 000000000..6ecde2ef3 --- /dev/null +++ b/lib/march/esp32s3/main/main.c @@ -0,0 +1,5 @@ +__attribute__((weak)) +int app_main(void) +{ + return 0; +} diff --git a/lib/march/esp32s3/sdkconfig b/lib/march/esp32s3/sdkconfig new file mode 100644 index 000000000..d7d64a70c --- /dev/null +++ b/lib/march/esp32s3/sdkconfig @@ -0,0 +1,2052 @@ +# +# Automatically generated file. DO NOT EDIT. +# Espressif IoT Development Framework (ESP-IDF) 5.2.0 Project Configuration +# +CONFIG_SOC_MPU_MIN_REGION_SIZE=0x20000000 +CONFIG_SOC_MPU_REGIONS_MAX_NUM=8 +CONFIG_SOC_ADC_SUPPORTED=y +CONFIG_SOC_UART_SUPPORTED=y +CONFIG_SOC_PCNT_SUPPORTED=y +CONFIG_SOC_WIFI_SUPPORTED=y +CONFIG_SOC_TWAI_SUPPORTED=y +CONFIG_SOC_GDMA_SUPPORTED=y +CONFIG_SOC_AHB_GDMA_SUPPORTED=y +CONFIG_SOC_GPTIMER_SUPPORTED=y +CONFIG_SOC_LCDCAM_SUPPORTED=y +CONFIG_SOC_MCPWM_SUPPORTED=y +CONFIG_SOC_DEDICATED_GPIO_SUPPORTED=y +CONFIG_SOC_CACHE_SUPPORT_WRAP=y +CONFIG_SOC_ULP_SUPPORTED=y +CONFIG_SOC_ULP_FSM_SUPPORTED=y +CONFIG_SOC_RISCV_COPROC_SUPPORTED=y +CONFIG_SOC_BT_SUPPORTED=y +CONFIG_SOC_USB_OTG_SUPPORTED=y +CONFIG_SOC_USB_SERIAL_JTAG_SUPPORTED=y +CONFIG_SOC_CCOMP_TIMER_SUPPORTED=y +CONFIG_SOC_ASYNC_MEMCPY_SUPPORTED=y +CONFIG_SOC_SUPPORTS_SECURE_DL_MODE=y +CONFIG_SOC_EFUSE_KEY_PURPOSE_FIELD=y +CONFIG_SOC_EFUSE_SUPPORTED=y +CONFIG_SOC_SDMMC_HOST_SUPPORTED=y +CONFIG_SOC_RTC_FAST_MEM_SUPPORTED=y +CONFIG_SOC_RTC_SLOW_MEM_SUPPORTED=y +CONFIG_SOC_RTC_MEM_SUPPORTED=y +CONFIG_SOC_PSRAM_DMA_CAPABLE=y +CONFIG_SOC_XT_WDT_SUPPORTED=y +CONFIG_SOC_I2S_SUPPORTED=y +CONFIG_SOC_RMT_SUPPORTED=y +CONFIG_SOC_SDM_SUPPORTED=y +CONFIG_SOC_GPSPI_SUPPORTED=y +CONFIG_SOC_LEDC_SUPPORTED=y +CONFIG_SOC_I2C_SUPPORTED=y +CONFIG_SOC_SYSTIMER_SUPPORTED=y +CONFIG_SOC_SUPPORT_COEXISTENCE=y +CONFIG_SOC_TEMP_SENSOR_SUPPORTED=y +CONFIG_SOC_AES_SUPPORTED=y +CONFIG_SOC_MPI_SUPPORTED=y +CONFIG_SOC_SHA_SUPPORTED=y +CONFIG_SOC_HMAC_SUPPORTED=y +CONFIG_SOC_DIG_SIGN_SUPPORTED=y +CONFIG_SOC_FLASH_ENC_SUPPORTED=y +CONFIG_SOC_SECURE_BOOT_SUPPORTED=y +CONFIG_SOC_MEMPROT_SUPPORTED=y +CONFIG_SOC_TOUCH_SENSOR_SUPPORTED=y +CONFIG_SOC_BOD_SUPPORTED=y +CONFIG_SOC_CLK_TREE_SUPPORTED=y +CONFIG_SOC_MPU_SUPPORTED=y +CONFIG_SOC_WDT_SUPPORTED=y +CONFIG_SOC_SPI_FLASH_SUPPORTED=y +CONFIG_SOC_XTAL_SUPPORT_40M=y +CONFIG_SOC_APPCPU_HAS_CLOCK_GATING_BUG=y +CONFIG_SOC_ADC_RTC_CTRL_SUPPORTED=y +CONFIG_SOC_ADC_DIG_CTRL_SUPPORTED=y +CONFIG_SOC_ADC_ARBITER_SUPPORTED=y +CONFIG_SOC_ADC_DIG_IIR_FILTER_SUPPORTED=y +CONFIG_SOC_ADC_MONITOR_SUPPORTED=y +CONFIG_SOC_ADC_DMA_SUPPORTED=y +CONFIG_SOC_ADC_PERIPH_NUM=2 +CONFIG_SOC_ADC_MAX_CHANNEL_NUM=10 +CONFIG_SOC_ADC_ATTEN_NUM=4 +CONFIG_SOC_ADC_DIGI_CONTROLLER_NUM=2 +CONFIG_SOC_ADC_PATT_LEN_MAX=24 +CONFIG_SOC_ADC_DIGI_MIN_BITWIDTH=12 +CONFIG_SOC_ADC_DIGI_MAX_BITWIDTH=12 +CONFIG_SOC_ADC_DIGI_RESULT_BYTES=4 +CONFIG_SOC_ADC_DIGI_DATA_BYTES_PER_CONV=4 +CONFIG_SOC_ADC_DIGI_IIR_FILTER_NUM=2 +CONFIG_SOC_ADC_DIGI_MONITOR_NUM=2 +CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_HIGH=83333 +CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_LOW=611 +CONFIG_SOC_ADC_RTC_MIN_BITWIDTH=12 +CONFIG_SOC_ADC_RTC_MAX_BITWIDTH=12 +CONFIG_SOC_ADC_CALIBRATION_V1_SUPPORTED=y +CONFIG_SOC_ADC_SELF_HW_CALI_SUPPORTED=y +CONFIG_SOC_ADC_SHARED_POWER=y +CONFIG_SOC_APB_BACKUP_DMA=y +CONFIG_SOC_BROWNOUT_RESET_SUPPORTED=y +CONFIG_SOC_CACHE_WRITEBACK_SUPPORTED=y +CONFIG_SOC_CACHE_FREEZE_SUPPORTED=y +CONFIG_SOC_CPU_CORES_NUM=2 +CONFIG_SOC_CPU_INTR_NUM=32 +CONFIG_SOC_CPU_HAS_FPU=y +CONFIG_SOC_HP_CPU_HAS_MULTIPLE_CORES=y +CONFIG_SOC_CPU_BREAKPOINTS_NUM=2 +CONFIG_SOC_CPU_WATCHPOINTS_NUM=2 +CONFIG_SOC_CPU_WATCHPOINT_MAX_REGION_SIZE=64 +CONFIG_SOC_DS_SIGNATURE_MAX_BIT_LEN=4096 +CONFIG_SOC_DS_KEY_PARAM_MD_IV_LENGTH=16 +CONFIG_SOC_DS_KEY_CHECK_MAX_WAIT_US=1100 +CONFIG_SOC_AHB_GDMA_VERSION=1 +CONFIG_SOC_GDMA_NUM_GROUPS_MAX=1 +CONFIG_SOC_GDMA_PAIRS_PER_GROUP=5 +CONFIG_SOC_GDMA_PAIRS_PER_GROUP_MAX=5 +CONFIG_SOC_AHB_GDMA_SUPPORT_PSRAM=y +CONFIG_SOC_GPIO_PORT=1 +CONFIG_SOC_GPIO_PIN_COUNT=49 +CONFIG_SOC_GPIO_SUPPORT_PIN_GLITCH_FILTER=y +CONFIG_SOC_GPIO_FILTER_CLK_SUPPORT_APB=y +CONFIG_SOC_GPIO_SUPPORT_RTC_INDEPENDENT=y +CONFIG_SOC_GPIO_SUPPORT_FORCE_HOLD=y +CONFIG_SOC_GPIO_VALID_GPIO_MASK=0x1FFFFFFFFFFFF +CONFIG_SOC_GPIO_IN_RANGE_MAX=48 +CONFIG_SOC_GPIO_OUT_RANGE_MAX=48 +CONFIG_SOC_GPIO_VALID_DIGITAL_IO_PAD_MASK=0x0001FFFFFC000000 +CONFIG_SOC_GPIO_CLOCKOUT_BY_IO_MUX=y +CONFIG_SOC_DEDIC_GPIO_OUT_CHANNELS_NUM=8 +CONFIG_SOC_DEDIC_GPIO_IN_CHANNELS_NUM=8 +CONFIG_SOC_DEDIC_GPIO_OUT_AUTO_ENABLE=y +CONFIG_SOC_I2C_NUM=2 +CONFIG_SOC_I2C_FIFO_LEN=32 +CONFIG_SOC_I2C_CMD_REG_NUM=8 +CONFIG_SOC_I2C_SUPPORT_SLAVE=y +CONFIG_SOC_I2C_SUPPORT_HW_CLR_BUS=y +CONFIG_SOC_I2C_SUPPORT_XTAL=y +CONFIG_SOC_I2C_SUPPORT_RTC=y +CONFIG_SOC_I2C_SUPPORT_10BIT_ADDR=y +CONFIG_SOC_I2C_SLAVE_SUPPORT_BROADCAST=y +CONFIG_SOC_I2C_SLAVE_SUPPORT_I2CRAM_ACCESS=y +CONFIG_SOC_I2S_NUM=2 +CONFIG_SOC_I2S_HW_VERSION_2=y +CONFIG_SOC_I2S_SUPPORTS_XTAL=y +CONFIG_SOC_I2S_SUPPORTS_PLL_F160M=y +CONFIG_SOC_I2S_SUPPORTS_PCM=y +CONFIG_SOC_I2S_SUPPORTS_PDM=y +CONFIG_SOC_I2S_SUPPORTS_PDM_TX=y +CONFIG_SOC_I2S_PDM_MAX_TX_LINES=2 +CONFIG_SOC_I2S_SUPPORTS_PDM_RX=y +CONFIG_SOC_I2S_PDM_MAX_RX_LINES=4 +CONFIG_SOC_I2S_SUPPORTS_TDM=y +CONFIG_SOC_LEDC_SUPPORT_APB_CLOCK=y +CONFIG_SOC_LEDC_SUPPORT_XTAL_CLOCK=y +CONFIG_SOC_LEDC_CHANNEL_NUM=8 +CONFIG_SOC_LEDC_TIMER_BIT_WIDTH=14 +CONFIG_SOC_LEDC_SUPPORT_FADE_STOP=y +CONFIG_SOC_MCPWM_GROUPS=2 +CONFIG_SOC_MCPWM_TIMERS_PER_GROUP=3 +CONFIG_SOC_MCPWM_OPERATORS_PER_GROUP=3 +CONFIG_SOC_MCPWM_COMPARATORS_PER_OPERATOR=2 +CONFIG_SOC_MCPWM_GENERATORS_PER_OPERATOR=2 +CONFIG_SOC_MCPWM_TRIGGERS_PER_OPERATOR=2 +CONFIG_SOC_MCPWM_GPIO_FAULTS_PER_GROUP=3 +CONFIG_SOC_MCPWM_CAPTURE_TIMERS_PER_GROUP=y +CONFIG_SOC_MCPWM_CAPTURE_CHANNELS_PER_TIMER=3 +CONFIG_SOC_MCPWM_GPIO_SYNCHROS_PER_GROUP=3 +CONFIG_SOC_MCPWM_SWSYNC_CAN_PROPAGATE=y +CONFIG_SOC_MMU_LINEAR_ADDRESS_REGION_NUM=1 +CONFIG_SOC_MMU_PERIPH_NUM=1 +CONFIG_SOC_PCNT_GROUPS=1 +CONFIG_SOC_PCNT_UNITS_PER_GROUP=4 +CONFIG_SOC_PCNT_CHANNELS_PER_UNIT=2 +CONFIG_SOC_PCNT_THRES_POINT_PER_UNIT=2 +CONFIG_SOC_RMT_GROUPS=1 +CONFIG_SOC_RMT_TX_CANDIDATES_PER_GROUP=4 +CONFIG_SOC_RMT_RX_CANDIDATES_PER_GROUP=4 +CONFIG_SOC_RMT_CHANNELS_PER_GROUP=8 +CONFIG_SOC_RMT_MEM_WORDS_PER_CHANNEL=48 +CONFIG_SOC_RMT_SUPPORT_RX_PINGPONG=y +CONFIG_SOC_RMT_SUPPORT_RX_DEMODULATION=y +CONFIG_SOC_RMT_SUPPORT_TX_ASYNC_STOP=y +CONFIG_SOC_RMT_SUPPORT_TX_LOOP_COUNT=y +CONFIG_SOC_RMT_SUPPORT_TX_LOOP_AUTO_STOP=y +CONFIG_SOC_RMT_SUPPORT_TX_SYNCHRO=y +CONFIG_SOC_RMT_SUPPORT_TX_CARRIER_DATA_ONLY=y +CONFIG_SOC_RMT_SUPPORT_XTAL=y +CONFIG_SOC_RMT_SUPPORT_RC_FAST=y +CONFIG_SOC_RMT_SUPPORT_APB=y +CONFIG_SOC_RMT_SUPPORT_DMA=y +CONFIG_SOC_LCD_I80_SUPPORTED=y +CONFIG_SOC_LCD_RGB_SUPPORTED=y +CONFIG_SOC_LCD_I80_BUSES=1 +CONFIG_SOC_LCD_RGB_PANELS=1 +CONFIG_SOC_LCD_I80_BUS_WIDTH=16 +CONFIG_SOC_LCD_RGB_DATA_WIDTH=16 +CONFIG_SOC_LCD_SUPPORT_RGB_YUV_CONV=y +CONFIG_SOC_RTC_CNTL_CPU_PD_DMA_BUS_WIDTH=128 +CONFIG_SOC_RTC_CNTL_CPU_PD_REG_FILE_NUM=549 +CONFIG_SOC_RTC_CNTL_TAGMEM_PD_DMA_BUS_WIDTH=128 +CONFIG_SOC_RTCIO_PIN_COUNT=22 +CONFIG_SOC_RTCIO_INPUT_OUTPUT_SUPPORTED=y +CONFIG_SOC_RTCIO_HOLD_SUPPORTED=y +CONFIG_SOC_RTCIO_WAKE_SUPPORTED=y +CONFIG_SOC_SDM_GROUPS=y +CONFIG_SOC_SDM_CHANNELS_PER_GROUP=8 +CONFIG_SOC_SDM_CLK_SUPPORT_APB=y +CONFIG_SOC_SPI_PERIPH_NUM=3 +CONFIG_SOC_SPI_MAX_CS_NUM=6 +CONFIG_SOC_SPI_MAXIMUM_BUFFER_SIZE=64 +CONFIG_SOC_SPI_SUPPORT_DDRCLK=y +CONFIG_SOC_SPI_SLAVE_SUPPORT_SEG_TRANS=y +CONFIG_SOC_SPI_SUPPORT_CD_SIG=y +CONFIG_SOC_SPI_SUPPORT_CONTINUOUS_TRANS=y +CONFIG_SOC_SPI_SUPPORT_SLAVE_HD_VER2=y +CONFIG_SOC_SPI_SUPPORT_CLK_APB=y +CONFIG_SOC_SPI_SUPPORT_CLK_XTAL=y +CONFIG_SOC_SPI_PERIPH_SUPPORT_CONTROL_DUMMY_OUT=y +CONFIG_SOC_MEMSPI_IS_INDEPENDENT=y +CONFIG_SOC_SPI_MAX_PRE_DIVIDER=16 +CONFIG_SOC_SPI_SUPPORT_OCT=y +CONFIG_SOC_MEMSPI_SRC_FREQ_120M=y +CONFIG_SOC_MEMSPI_SRC_FREQ_80M_SUPPORTED=y +CONFIG_SOC_MEMSPI_SRC_FREQ_40M_SUPPORTED=y +CONFIG_SOC_MEMSPI_SRC_FREQ_20M_SUPPORTED=y +CONFIG_SOC_SPIRAM_SUPPORTED=y +CONFIG_SOC_SPIRAM_XIP_SUPPORTED=y +CONFIG_SOC_SYSTIMER_COUNTER_NUM=2 +CONFIG_SOC_SYSTIMER_ALARM_NUM=3 +CONFIG_SOC_SYSTIMER_BIT_WIDTH_LO=32 +CONFIG_SOC_SYSTIMER_BIT_WIDTH_HI=20 +CONFIG_SOC_SYSTIMER_FIXED_DIVIDER=y +CONFIG_SOC_SYSTIMER_INT_LEVEL=y +CONFIG_SOC_SYSTIMER_ALARM_MISS_COMPENSATE=y +CONFIG_SOC_TIMER_GROUPS=2 +CONFIG_SOC_TIMER_GROUP_TIMERS_PER_GROUP=2 +CONFIG_SOC_TIMER_GROUP_COUNTER_BIT_WIDTH=54 +CONFIG_SOC_TIMER_GROUP_SUPPORT_XTAL=y +CONFIG_SOC_TIMER_GROUP_SUPPORT_APB=y +CONFIG_SOC_TIMER_GROUP_TOTAL_TIMERS=4 +CONFIG_SOC_TOUCH_VERSION_2=y +CONFIG_SOC_TOUCH_SENSOR_NUM=15 +CONFIG_SOC_TOUCH_PROXIMITY_CHANNEL_NUM=3 +CONFIG_SOC_TOUCH_PROXIMITY_MEAS_DONE_SUPPORTED=y +CONFIG_SOC_TOUCH_PAD_THRESHOLD_MAX=0x1FFFFF +CONFIG_SOC_TOUCH_PAD_MEASURE_WAIT_MAX=0xFF +CONFIG_SOC_TWAI_CONTROLLER_NUM=1 +CONFIG_SOC_TWAI_CLK_SUPPORT_APB=y +CONFIG_SOC_TWAI_BRP_MIN=2 +CONFIG_SOC_TWAI_BRP_MAX=16384 +CONFIG_SOC_TWAI_SUPPORTS_RX_STATUS=y +CONFIG_SOC_UART_NUM=3 +CONFIG_SOC_UART_HP_NUM=3 +CONFIG_SOC_UART_FIFO_LEN=128 +CONFIG_SOC_UART_BITRATE_MAX=5000000 +CONFIG_SOC_UART_SUPPORT_FSM_TX_WAIT_SEND=y +CONFIG_SOC_UART_SUPPORT_WAKEUP_INT=y +CONFIG_SOC_UART_SUPPORT_APB_CLK=y +CONFIG_SOC_UART_SUPPORT_RTC_CLK=y +CONFIG_SOC_UART_SUPPORT_XTAL_CLK=y +CONFIG_SOC_USB_OTG_PERIPH_NUM=1 +CONFIG_SOC_SHA_DMA_MAX_BUFFER_SIZE=3968 +CONFIG_SOC_SHA_SUPPORT_DMA=y +CONFIG_SOC_SHA_SUPPORT_RESUME=y +CONFIG_SOC_SHA_GDMA=y +CONFIG_SOC_SHA_SUPPORT_SHA1=y +CONFIG_SOC_SHA_SUPPORT_SHA224=y +CONFIG_SOC_SHA_SUPPORT_SHA256=y +CONFIG_SOC_SHA_SUPPORT_SHA384=y +CONFIG_SOC_SHA_SUPPORT_SHA512=y +CONFIG_SOC_SHA_SUPPORT_SHA512_224=y +CONFIG_SOC_SHA_SUPPORT_SHA512_256=y +CONFIG_SOC_SHA_SUPPORT_SHA512_T=y +CONFIG_SOC_MPI_MEM_BLOCKS_NUM=4 +CONFIG_SOC_MPI_OPERATIONS_NUM=3 +CONFIG_SOC_RSA_MAX_BIT_LEN=4096 +CONFIG_SOC_AES_SUPPORT_DMA=y +CONFIG_SOC_AES_GDMA=y +CONFIG_SOC_AES_SUPPORT_AES_128=y +CONFIG_SOC_AES_SUPPORT_AES_256=y +CONFIG_SOC_PM_SUPPORT_EXT0_WAKEUP=y +CONFIG_SOC_PM_SUPPORT_EXT1_WAKEUP=y +CONFIG_SOC_PM_SUPPORT_EXT_WAKEUP=y +CONFIG_SOC_PM_SUPPORT_WIFI_WAKEUP=y +CONFIG_SOC_PM_SUPPORT_BT_WAKEUP=y +CONFIG_SOC_PM_SUPPORT_TOUCH_SENSOR_WAKEUP=y +CONFIG_SOC_PM_SUPPORT_CPU_PD=y +CONFIG_SOC_PM_SUPPORT_TAGMEM_PD=y +CONFIG_SOC_PM_SUPPORT_RTC_PERIPH_PD=y +CONFIG_SOC_PM_SUPPORT_RC_FAST_PD=y +CONFIG_SOC_PM_SUPPORT_VDDSDIO_PD=y +CONFIG_SOC_PM_SUPPORT_MAC_BB_PD=y +CONFIG_SOC_PM_SUPPORT_MODEM_PD=y +CONFIG_SOC_CONFIGURABLE_VDDSDIO_SUPPORTED=y +CONFIG_SOC_PM_SUPPORT_DEEPSLEEP_CHECK_STUB_ONLY=y +CONFIG_SOC_PM_CPU_RETENTION_BY_RTCCNTL=y +CONFIG_SOC_PM_MODEM_RETENTION_BY_BACKUPDMA=y +CONFIG_SOC_CLK_RC_FAST_D256_SUPPORTED=y +CONFIG_SOC_RTC_SLOW_CLK_SUPPORT_RC_FAST_D256=y +CONFIG_SOC_CLK_RC_FAST_SUPPORT_CALIBRATION=y +CONFIG_SOC_CLK_XTAL32K_SUPPORTED=y +CONFIG_SOC_EFUSE_DIS_DOWNLOAD_ICACHE=y +CONFIG_SOC_EFUSE_DIS_DOWNLOAD_DCACHE=y +CONFIG_SOC_EFUSE_HARD_DIS_JTAG=y +CONFIG_SOC_EFUSE_DIS_USB_JTAG=y +CONFIG_SOC_EFUSE_SOFT_DIS_JTAG=y +CONFIG_SOC_EFUSE_DIS_DIRECT_BOOT=y +CONFIG_SOC_EFUSE_DIS_ICACHE=y +CONFIG_SOC_EFUSE_BLOCK9_KEY_PURPOSE_QUIRK=y +CONFIG_SOC_SECURE_BOOT_V2_RSA=y +CONFIG_SOC_EFUSE_SECURE_BOOT_KEY_DIGESTS=3 +CONFIG_SOC_EFUSE_REVOKE_BOOT_KEY_DIGESTS=y +CONFIG_SOC_SUPPORT_SECURE_BOOT_REVOKE_KEY=y +CONFIG_SOC_FLASH_ENCRYPTED_XTS_AES_BLOCK_MAX=64 +CONFIG_SOC_FLASH_ENCRYPTION_XTS_AES=y +CONFIG_SOC_FLASH_ENCRYPTION_XTS_AES_OPTIONS=y +CONFIG_SOC_FLASH_ENCRYPTION_XTS_AES_128=y +CONFIG_SOC_FLASH_ENCRYPTION_XTS_AES_256=y +CONFIG_SOC_MEMPROT_CPU_PREFETCH_PAD_SIZE=16 +CONFIG_SOC_MEMPROT_MEM_ALIGN_SIZE=256 +CONFIG_SOC_PHY_DIG_REGS_MEM_SIZE=21 +CONFIG_SOC_MAC_BB_PD_MEM_SIZE=192 +CONFIG_SOC_WIFI_LIGHT_SLEEP_CLK_WIDTH=12 +CONFIG_SOC_SPI_MEM_SUPPORT_AUTO_WAIT_IDLE=y +CONFIG_SOC_SPI_MEM_SUPPORT_AUTO_SUSPEND=y +CONFIG_SOC_SPI_MEM_SUPPORT_AUTO_RESUME=y +CONFIG_SOC_SPI_MEM_SUPPORT_SW_SUSPEND=y +CONFIG_SOC_SPI_MEM_SUPPORT_OPI_MODE=y +CONFIG_SOC_SPI_MEM_SUPPORT_TIMING_TUNING=y +CONFIG_SOC_SPI_MEM_SUPPORT_CONFIG_GPIO_BY_EFUSE=y +CONFIG_SOC_SPI_MEM_SUPPORT_WRAP=y +CONFIG_SOC_MEMSPI_TIMING_TUNING_BY_MSPI_DELAY=y +CONFIG_SOC_MEMSPI_CORE_CLK_SHARED_WITH_PSRAM=y +CONFIG_SOC_COEX_HW_PTI=y +CONFIG_SOC_EXTERNAL_COEX_LEADER_TX_LINE=y +CONFIG_SOC_SDMMC_USE_GPIO_MATRIX=y +CONFIG_SOC_SDMMC_NUM_SLOTS=2 +CONFIG_SOC_SDMMC_SUPPORT_XTAL_CLOCK=y +CONFIG_SOC_SDMMC_DELAY_PHASE_NUM=4 +CONFIG_SOC_TEMPERATURE_SENSOR_SUPPORT_FAST_RC=y +CONFIG_SOC_WIFI_HW_TSF=y +CONFIG_SOC_WIFI_FTM_SUPPORT=y +CONFIG_SOC_WIFI_GCMP_SUPPORT=y +CONFIG_SOC_WIFI_WAPI_SUPPORT=y +CONFIG_SOC_WIFI_CSI_SUPPORT=y +CONFIG_SOC_WIFI_MESH_SUPPORT=y +CONFIG_SOC_WIFI_SUPPORT_VARIABLE_BEACON_WINDOW=y +CONFIG_SOC_BLE_SUPPORTED=y +CONFIG_SOC_BLE_MESH_SUPPORTED=y +CONFIG_SOC_BLE_50_SUPPORTED=y +CONFIG_SOC_BLE_DEVICE_PRIVACY_SUPPORTED=y +CONFIG_SOC_BLUFI_SUPPORTED=y +CONFIG_SOC_ULP_HAS_ADC=y +CONFIG_SOC_PHY_COMBO_MODULE=y +CONFIG_IDF_CMAKE=y +CONFIG_IDF_TOOLCHAIN="gcc" +CONFIG_IDF_TARGET_ARCH_XTENSA=y +CONFIG_IDF_TARGET_ARCH="xtensa" +CONFIG_IDF_TARGET="esp32s3" +CONFIG_IDF_INIT_VERSION="5.2.0" +CONFIG_IDF_TARGET_ESP32S3=y +CONFIG_IDF_FIRMWARE_CHIP_ID=0x0009 + +# +# Build type +# +CONFIG_APP_BUILD_TYPE_APP_2NDBOOT=y +# CONFIG_APP_BUILD_TYPE_RAM is not set +CONFIG_APP_BUILD_GENERATE_BINARIES=y +CONFIG_APP_BUILD_BOOTLOADER=y +CONFIG_APP_BUILD_USE_FLASH_SECTIONS=y +# CONFIG_APP_REPRODUCIBLE_BUILD is not set +# CONFIG_APP_NO_BLOBS is not set +# end of Build type + +# +# Bootloader config +# + +# +# Bootloader manager +# +CONFIG_BOOTLOADER_COMPILE_TIME_DATE=y +CONFIG_BOOTLOADER_PROJECT_VER=1 +# end of Bootloader manager + +CONFIG_BOOTLOADER_OFFSET_IN_FLASH=0x0 +CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_SIZE=y +# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_DEBUG is not set +# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_PERF is not set +# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_NONE is not set +# CONFIG_BOOTLOADER_LOG_LEVEL_NONE is not set +# CONFIG_BOOTLOADER_LOG_LEVEL_ERROR is not set +# CONFIG_BOOTLOADER_LOG_LEVEL_WARN is not set +CONFIG_BOOTLOADER_LOG_LEVEL_INFO=y +# CONFIG_BOOTLOADER_LOG_LEVEL_DEBUG is not set +# CONFIG_BOOTLOADER_LOG_LEVEL_VERBOSE is not set +CONFIG_BOOTLOADER_LOG_LEVEL=3 + +# +# Serial Flash Configurations +# +# CONFIG_BOOTLOADER_FLASH_DC_AWARE is not set +CONFIG_BOOTLOADER_FLASH_XMC_SUPPORT=y +# end of Serial Flash Configurations + +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y +# CONFIG_BOOTLOADER_FACTORY_RESET is not set +# CONFIG_BOOTLOADER_APP_TEST is not set +CONFIG_BOOTLOADER_REGION_PROTECTION_ENABLE=y +CONFIG_BOOTLOADER_WDT_ENABLE=y +# CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE is not set +CONFIG_BOOTLOADER_WDT_TIME_MS=9000 +# CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE is not set +# CONFIG_BOOTLOADER_SKIP_VALIDATE_IN_DEEP_SLEEP is not set +# CONFIG_BOOTLOADER_SKIP_VALIDATE_ON_POWER_ON is not set +# CONFIG_BOOTLOADER_SKIP_VALIDATE_ALWAYS is not set +CONFIG_BOOTLOADER_RESERVE_RTC_SIZE=0 +# CONFIG_BOOTLOADER_CUSTOM_RESERVE_RTC is not set +# end of Bootloader config + +# +# Security features +# +CONFIG_SECURE_BOOT_V2_RSA_SUPPORTED=y +CONFIG_SECURE_BOOT_V2_PREFERRED=y +# CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT is not set +# CONFIG_SECURE_BOOT is not set +# CONFIG_SECURE_FLASH_ENC_ENABLED is not set +CONFIG_SECURE_ROM_DL_MODE_ENABLED=y +# end of Security features + +# +# Application manager +# +CONFIG_APP_COMPILE_TIME_DATE=y +# CONFIG_APP_EXCLUDE_PROJECT_VER_VAR is not set +# CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR is not set +# CONFIG_APP_PROJECT_VER_FROM_CONFIG is not set +CONFIG_APP_RETRIEVE_LEN_ELF_SHA=9 +# end of Application manager + +CONFIG_ESP_ROM_HAS_CRC_LE=y +CONFIG_ESP_ROM_HAS_CRC_BE=y +CONFIG_ESP_ROM_HAS_MZ_CRC32=y +CONFIG_ESP_ROM_HAS_JPEG_DECODE=y +CONFIG_ESP_ROM_UART_CLK_IS_XTAL=y +CONFIG_ESP_ROM_HAS_RETARGETABLE_LOCKING=y +CONFIG_ESP_ROM_USB_OTG_NUM=3 +CONFIG_ESP_ROM_USB_SERIAL_DEVICE_NUM=4 +CONFIG_ESP_ROM_HAS_ERASE_0_REGION_BUG=y +CONFIG_ESP_ROM_GET_CLK_FREQ=y +CONFIG_ESP_ROM_HAS_HAL_WDT=y +CONFIG_ESP_ROM_NEEDS_SWSETUP_WORKAROUND=y +CONFIG_ESP_ROM_HAS_LAYOUT_TABLE=y +CONFIG_ESP_ROM_HAS_SPI_FLASH=y +CONFIG_ESP_ROM_HAS_ETS_PRINTF_BUG=y +CONFIG_ESP_ROM_HAS_NEWLIB_NANO_FORMAT=y +CONFIG_ESP_ROM_NEEDS_SET_CACHE_MMU_SIZE=y +CONFIG_ESP_ROM_RAM_APP_NEEDS_MMU_INIT=y +CONFIG_ESP_ROM_HAS_FLASH_COUNT_PAGES_BUG=y +CONFIG_ESP_ROM_HAS_CACHE_SUSPEND_WAITI_BUG=y +CONFIG_ESP_ROM_HAS_CACHE_WRITEBACK_BUG=y +CONFIG_ESP_ROM_HAS_SW_FLOAT=y + +# +# Boot ROM Behavior +# +CONFIG_BOOT_ROM_LOG_ALWAYS_ON=y +# CONFIG_BOOT_ROM_LOG_ALWAYS_OFF is not set +# CONFIG_BOOT_ROM_LOG_ON_GPIO_HIGH is not set +# CONFIG_BOOT_ROM_LOG_ON_GPIO_LOW is not set +# end of Boot ROM Behavior + +# +# Serial flasher config +# +# CONFIG_ESPTOOLPY_NO_STUB is not set +# CONFIG_ESPTOOLPY_OCT_FLASH is not set +CONFIG_ESPTOOLPY_FLASH_MODE_AUTO_DETECT=y +# CONFIG_ESPTOOLPY_FLASHMODE_QIO is not set +# CONFIG_ESPTOOLPY_FLASHMODE_QOUT is not set +CONFIG_ESPTOOLPY_FLASHMODE_DIO=y +# CONFIG_ESPTOOLPY_FLASHMODE_DOUT is not set +CONFIG_ESPTOOLPY_FLASH_SAMPLE_MODE_STR=y +CONFIG_ESPTOOLPY_FLASHMODE="dio" +# CONFIG_ESPTOOLPY_FLASHFREQ_120M is not set +CONFIG_ESPTOOLPY_FLASHFREQ_80M=y +# CONFIG_ESPTOOLPY_FLASHFREQ_40M is not set +# CONFIG_ESPTOOLPY_FLASHFREQ_20M is not set +CONFIG_ESPTOOLPY_FLASHFREQ_80M_DEFAULT=y +CONFIG_ESPTOOLPY_FLASHFREQ="80m" +# CONFIG_ESPTOOLPY_FLASHSIZE_1MB is not set +CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y +# CONFIG_ESPTOOLPY_FLASHSIZE_4MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_8MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_16MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_32MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_64MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_128MB is not set +CONFIG_ESPTOOLPY_FLASHSIZE="2MB" +# CONFIG_ESPTOOLPY_HEADER_FLASHSIZE_UPDATE is not set +CONFIG_ESPTOOLPY_BEFORE_RESET=y +# CONFIG_ESPTOOLPY_BEFORE_NORESET is not set +CONFIG_ESPTOOLPY_BEFORE="default_reset" +CONFIG_ESPTOOLPY_AFTER_RESET=y +# CONFIG_ESPTOOLPY_AFTER_NORESET is not set +CONFIG_ESPTOOLPY_AFTER="hard_reset" +CONFIG_ESPTOOLPY_MONITOR_BAUD=115200 +# end of Serial flasher config + +# +# Partition Table +# +CONFIG_PARTITION_TABLE_SINGLE_APP=y +# CONFIG_PARTITION_TABLE_SINGLE_APP_LARGE is not set +# CONFIG_PARTITION_TABLE_TWO_OTA is not set +# CONFIG_PARTITION_TABLE_CUSTOM is not set +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" +CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp.csv" +CONFIG_PARTITION_TABLE_OFFSET=0x8000 +CONFIG_PARTITION_TABLE_MD5=y +# end of Partition Table + +# +# Compiler options +# +CONFIG_COMPILER_OPTIMIZATION_DEBUG=y +# CONFIG_COMPILER_OPTIMIZATION_SIZE is not set +# CONFIG_COMPILER_OPTIMIZATION_PERF is not set +# CONFIG_COMPILER_OPTIMIZATION_NONE is not set +CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y +# CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_SILENT is not set +# CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE is not set +CONFIG_COMPILER_FLOAT_LIB_FROM_GCCLIB=y +CONFIG_COMPILER_OPTIMIZATION_ASSERTION_LEVEL=2 +# CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT is not set +CONFIG_COMPILER_HIDE_PATHS_MACROS=y +# CONFIG_COMPILER_CXX_EXCEPTIONS is not set +# CONFIG_COMPILER_CXX_RTTI is not set +CONFIG_COMPILER_STACK_CHECK_MODE_NONE=y +# CONFIG_COMPILER_STACK_CHECK_MODE_NORM is not set +# CONFIG_COMPILER_STACK_CHECK_MODE_STRONG is not set +# CONFIG_COMPILER_STACK_CHECK_MODE_ALL is not set +# CONFIG_COMPILER_WARN_WRITE_STRINGS is not set +# CONFIG_COMPILER_DISABLE_GCC12_WARNINGS is not set +# CONFIG_COMPILER_DISABLE_GCC13_WARNINGS is not set +# CONFIG_COMPILER_DUMP_RTL_FILES is not set +CONFIG_COMPILER_RT_LIB_GCCLIB=y +CONFIG_COMPILER_RT_LIB_NAME="gcc" +# end of Compiler options + +# +# Component config +# + +# +# Application Level Tracing +# +# CONFIG_APPTRACE_DEST_JTAG is not set +CONFIG_APPTRACE_DEST_NONE=y +# CONFIG_APPTRACE_DEST_UART1 is not set +# CONFIG_APPTRACE_DEST_UART2 is not set +# CONFIG_APPTRACE_DEST_USB_CDC is not set +CONFIG_APPTRACE_DEST_UART_NONE=y +CONFIG_APPTRACE_UART_TASK_PRIO=1 +CONFIG_APPTRACE_LOCK_ENABLE=y +# end of Application Level Tracing + +# +# Bluetooth +# +# CONFIG_BT_ENABLED is not set +# end of Bluetooth + +# +# Driver Configurations +# + +# +# Legacy ADC Configuration +# +# CONFIG_ADC_SUPPRESS_DEPRECATE_WARN is not set + +# +# Legacy ADC Calibration Configuration +# +# CONFIG_ADC_CALI_SUPPRESS_DEPRECATE_WARN is not set +# end of Legacy ADC Calibration Configuration +# end of Legacy ADC Configuration + +# +# SPI Configuration +# +# CONFIG_SPI_MASTER_IN_IRAM is not set +CONFIG_SPI_MASTER_ISR_IN_IRAM=y +# CONFIG_SPI_SLAVE_IN_IRAM is not set +CONFIG_SPI_SLAVE_ISR_IN_IRAM=y +# end of SPI Configuration + +# +# TWAI Configuration +# +# CONFIG_TWAI_ISR_IN_IRAM is not set +CONFIG_TWAI_ERRATA_FIX_LISTEN_ONLY_DOM=y +# end of TWAI Configuration + +# +# Temperature sensor Configuration +# +# CONFIG_TEMP_SENSOR_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_TEMP_SENSOR_ENABLE_DEBUG_LOG is not set +# end of Temperature sensor Configuration + +# +# UART Configuration +# +# CONFIG_UART_ISR_IN_IRAM is not set +# end of UART Configuration + +# +# GPIO Configuration +# +# CONFIG_GPIO_CTRL_FUNC_IN_IRAM is not set +# end of GPIO Configuration + +# +# Sigma Delta Modulator Configuration +# +# CONFIG_SDM_CTRL_FUNC_IN_IRAM is not set +# CONFIG_SDM_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_SDM_ENABLE_DEBUG_LOG is not set +# end of Sigma Delta Modulator Configuration + +# +# GPTimer Configuration +# +CONFIG_GPTIMER_ISR_HANDLER_IN_IRAM=y +# CONFIG_GPTIMER_CTRL_FUNC_IN_IRAM is not set +# CONFIG_GPTIMER_ISR_IRAM_SAFE is not set +# CONFIG_GPTIMER_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_GPTIMER_ENABLE_DEBUG_LOG is not set +# end of GPTimer Configuration + +# +# PCNT Configuration +# +# CONFIG_PCNT_CTRL_FUNC_IN_IRAM is not set +# CONFIG_PCNT_ISR_IRAM_SAFE is not set +# CONFIG_PCNT_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_PCNT_ENABLE_DEBUG_LOG is not set +# end of PCNT Configuration + +# +# RMT Configuration +# +# CONFIG_RMT_ISR_IRAM_SAFE is not set +# CONFIG_RMT_RECV_FUNC_IN_IRAM is not set +# CONFIG_RMT_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_RMT_ENABLE_DEBUG_LOG is not set +# end of RMT Configuration + +# +# MCPWM Configuration +# +# CONFIG_MCPWM_ISR_IRAM_SAFE is not set +# CONFIG_MCPWM_CTRL_FUNC_IN_IRAM is not set +# CONFIG_MCPWM_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_MCPWM_ENABLE_DEBUG_LOG is not set +# end of MCPWM Configuration + +# +# I2S Configuration +# +# CONFIG_I2S_ISR_IRAM_SAFE is not set +# CONFIG_I2S_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_I2S_ENABLE_DEBUG_LOG is not set +# end of I2S Configuration + +# +# USB Serial/JTAG Configuration +# +# end of USB Serial/JTAG Configuration + +# +# LEDC Configuration +# +# CONFIG_LEDC_CTRL_FUNC_IN_IRAM is not set +# end of LEDC Configuration + +# +# I2C Configuration +# +# CONFIG_I2C_ISR_IRAM_SAFE is not set +# CONFIG_I2C_ENABLE_DEBUG_LOG is not set +# end of I2C Configuration +# end of Driver Configurations + +# +# eFuse Bit Manager +# +# CONFIG_EFUSE_CUSTOM_TABLE is not set +# CONFIG_EFUSE_VIRTUAL is not set +CONFIG_EFUSE_MAX_BLK_LEN=256 +# end of eFuse Bit Manager + +# +# ESP-TLS +# +CONFIG_ESP_TLS_USING_MBEDTLS=y +CONFIG_ESP_TLS_USE_DS_PERIPHERAL=y +# CONFIG_ESP_TLS_CLIENT_SESSION_TICKETS is not set +# CONFIG_ESP_TLS_SERVER is not set +# CONFIG_ESP_TLS_PSK_VERIFICATION is not set +# CONFIG_ESP_TLS_INSECURE is not set +# end of ESP-TLS + +# +# ADC and ADC Calibration +# +# CONFIG_ADC_ONESHOT_CTRL_FUNC_IN_IRAM is not set +# CONFIG_ADC_CONTINUOUS_ISR_IRAM_SAFE is not set +# CONFIG_ADC_CONTINUOUS_FORCE_USE_ADC2_ON_C3_S3 is not set +# end of ADC and ADC Calibration + +# +# Wireless Coexistence +# +# CONFIG_ESP_COEX_EXTERNAL_COEXIST_ENABLE is not set +# end of Wireless Coexistence + +# +# Common ESP-related +# +CONFIG_ESP_ERR_TO_NAME_LOOKUP=y +# end of Common ESP-related + +# +# Ethernet +# +CONFIG_ETH_ENABLED=y +CONFIG_ETH_USE_SPI_ETHERNET=y +# CONFIG_ETH_SPI_ETHERNET_DM9051 is not set +# CONFIG_ETH_SPI_ETHERNET_W5500 is not set +# CONFIG_ETH_SPI_ETHERNET_KSZ8851SNL is not set +# CONFIG_ETH_USE_OPENETH is not set +# CONFIG_ETH_TRANSMIT_MUTEX is not set +# end of Ethernet + +# +# Event Loop Library +# +# CONFIG_ESP_EVENT_LOOP_PROFILING is not set +CONFIG_ESP_EVENT_POST_FROM_ISR=y +CONFIG_ESP_EVENT_POST_FROM_IRAM_ISR=y +# end of Event Loop Library + +# +# GDB Stub +# +# CONFIG_ESP_SYSTEM_GDBSTUB_RUNTIME is not set +# end of GDB Stub + +# +# ESP HTTP client +# +CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=y +# CONFIG_ESP_HTTP_CLIENT_ENABLE_BASIC_AUTH is not set +# CONFIG_ESP_HTTP_CLIENT_ENABLE_DIGEST_AUTH is not set +# end of ESP HTTP client + +# +# HTTP Server +# +CONFIG_HTTPD_MAX_REQ_HDR_LEN=512 +CONFIG_HTTPD_MAX_URI_LEN=512 +CONFIG_HTTPD_ERR_RESP_NO_DELAY=y +CONFIG_HTTPD_PURGE_BUF_LEN=32 +# CONFIG_HTTPD_LOG_PURGE_DATA is not set +# CONFIG_HTTPD_WS_SUPPORT is not set +# CONFIG_HTTPD_QUEUE_WORK_BLOCKING is not set +# end of HTTP Server + +# +# ESP HTTPS OTA +# +# CONFIG_ESP_HTTPS_OTA_DECRYPT_CB is not set +# CONFIG_ESP_HTTPS_OTA_ALLOW_HTTP is not set +# end of ESP HTTPS OTA + +# +# ESP HTTPS server +# +# CONFIG_ESP_HTTPS_SERVER_ENABLE is not set +# end of ESP HTTPS server + +# +# Hardware Settings +# + +# +# Chip revision +# +CONFIG_ESP32S3_REV_MIN_0=y +# CONFIG_ESP32S3_REV_MIN_1 is not set +# CONFIG_ESP32S3_REV_MIN_2 is not set +CONFIG_ESP32S3_REV_MIN_FULL=0 +CONFIG_ESP_REV_MIN_FULL=0 + +# +# Maximum Supported ESP32-S3 Revision (Rev v0.99) +# +CONFIG_ESP32S3_REV_MAX_FULL=99 +CONFIG_ESP_REV_MAX_FULL=99 +# end of Chip revision + +# +# MAC Config +# +CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_STA=y +CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_AP=y +CONFIG_ESP_MAC_ADDR_UNIVERSE_BT=y +CONFIG_ESP_MAC_ADDR_UNIVERSE_ETH=y +CONFIG_ESP_MAC_UNIVERSAL_MAC_ADDRESSES_FOUR=y +# CONFIG_ESP32S3_UNIVERSAL_MAC_ADDRESSES_TWO is not set +CONFIG_ESP32S3_UNIVERSAL_MAC_ADDRESSES_FOUR=y +CONFIG_ESP32S3_UNIVERSAL_MAC_ADDRESSES=4 +# CONFIG_ESP_MAC_USE_CUSTOM_MAC_AS_BASE_MAC is not set +# end of MAC Config + +# +# Sleep Config +# +# CONFIG_ESP_SLEEP_POWER_DOWN_FLASH is not set +CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND=y +CONFIG_ESP_SLEEP_MSPI_NEED_ALL_IO_PU=y +CONFIG_ESP_SLEEP_RTC_BUS_ISO_WORKAROUND=y +CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND=y +CONFIG_ESP_SLEEP_WAIT_FLASH_READY_EXTRA_DELAY=2000 +# CONFIG_ESP_SLEEP_CACHE_SAFE_ASSERTION is not set +# CONFIG_ESP_SLEEP_DEBUG is not set +CONFIG_ESP_SLEEP_GPIO_ENABLE_INTERNAL_RESISTORS=y +# end of Sleep Config + +# +# RTC Clock Config +# +CONFIG_RTC_CLK_SRC_INT_RC=y +# CONFIG_RTC_CLK_SRC_EXT_CRYS is not set +# CONFIG_RTC_CLK_SRC_EXT_OSC is not set +# CONFIG_RTC_CLK_SRC_INT_8MD256 is not set +CONFIG_RTC_CLK_CAL_CYCLES=1024 +# end of RTC Clock Config + +# +# Peripheral Control +# +CONFIG_PERIPH_CTRL_FUNC_IN_IRAM=y +# end of Peripheral Control + +# +# GDMA Configuration +# +# CONFIG_GDMA_CTRL_FUNC_IN_IRAM is not set +# CONFIG_GDMA_ISR_IRAM_SAFE is not set +# CONFIG_GDMA_ENABLE_DEBUG_LOG is not set +# end of GDMA Configuration + +# +# Main XTAL Config +# +CONFIG_XTAL_FREQ_40=y +CONFIG_XTAL_FREQ=40 +# end of Main XTAL Config +# end of Hardware Settings + +# +# LCD and Touch Panel +# + +# +# LCD Touch Drivers are maintained in the IDF Component Registry +# + +# +# LCD Peripheral Configuration +# +CONFIG_LCD_PANEL_IO_FORMAT_BUF_SIZE=32 +# CONFIG_LCD_ENABLE_DEBUG_LOG is not set +# CONFIG_LCD_RGB_ISR_IRAM_SAFE is not set +# CONFIG_LCD_RGB_RESTART_IN_VSYNC is not set +# end of LCD Peripheral Configuration +# end of LCD and Touch Panel + +# +# ESP NETIF Adapter +# +CONFIG_ESP_NETIF_IP_LOST_TIMER_INTERVAL=120 +CONFIG_ESP_NETIF_TCPIP_LWIP=y +# CONFIG_ESP_NETIF_LOOPBACK is not set +CONFIG_ESP_NETIF_USES_TCPIP_WITH_BSD_API=y +# CONFIG_ESP_NETIF_RECEIVE_REPORT_ERRORS is not set +# CONFIG_ESP_NETIF_L2_TAP is not set +# CONFIG_ESP_NETIF_BRIDGE_EN is not set +# end of ESP NETIF Adapter + +# +# Partition API Configuration +# +# end of Partition API Configuration + +# +# PHY +# +CONFIG_ESP_PHY_CALIBRATION_AND_DATA_STORAGE=y +# CONFIG_ESP_PHY_INIT_DATA_IN_PARTITION is not set +CONFIG_ESP_PHY_MAX_WIFI_TX_POWER=20 +CONFIG_ESP_PHY_MAX_TX_POWER=20 +# CONFIG_ESP_PHY_REDUCE_TX_POWER is not set +CONFIG_ESP_PHY_ENABLE_USB=y +# CONFIG_ESP_PHY_ENABLE_CERT_TEST is not set +CONFIG_ESP_PHY_RF_CAL_PARTIAL=y +# CONFIG_ESP_PHY_RF_CAL_NONE is not set +# CONFIG_ESP_PHY_RF_CAL_FULL is not set +CONFIG_ESP_PHY_CALIBRATION_MODE=0 +# end of PHY + +# +# Power Management +# +# CONFIG_PM_ENABLE is not set +CONFIG_PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP=y +CONFIG_PM_RESTORE_CACHE_TAGMEM_AFTER_LIGHT_SLEEP=y +# end of Power Management + +# +# ESP PSRAM +# +# CONFIG_SPIRAM is not set +# end of ESP PSRAM + +# +# ESP Ringbuf +# +# CONFIG_RINGBUF_PLACE_FUNCTIONS_INTO_FLASH is not set +# end of ESP Ringbuf + +# +# ESP System Settings +# +# CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_80 is not set +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_160=y +# CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240 is not set +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ=160 + +# +# Cache config +# +CONFIG_ESP32S3_INSTRUCTION_CACHE_16KB=y +# CONFIG_ESP32S3_INSTRUCTION_CACHE_32KB is not set +CONFIG_ESP32S3_INSTRUCTION_CACHE_SIZE=0x4000 +# CONFIG_ESP32S3_INSTRUCTION_CACHE_4WAYS is not set +CONFIG_ESP32S3_INSTRUCTION_CACHE_8WAYS=y +CONFIG_ESP32S3_ICACHE_ASSOCIATED_WAYS=8 +# CONFIG_ESP32S3_INSTRUCTION_CACHE_LINE_16B is not set +CONFIG_ESP32S3_INSTRUCTION_CACHE_LINE_32B=y +CONFIG_ESP32S3_INSTRUCTION_CACHE_LINE_SIZE=32 +# CONFIG_ESP32S3_DATA_CACHE_16KB is not set +CONFIG_ESP32S3_DATA_CACHE_32KB=y +# CONFIG_ESP32S3_DATA_CACHE_64KB is not set +CONFIG_ESP32S3_DATA_CACHE_SIZE=0x8000 +# CONFIG_ESP32S3_DATA_CACHE_4WAYS is not set +CONFIG_ESP32S3_DATA_CACHE_8WAYS=y +CONFIG_ESP32S3_DCACHE_ASSOCIATED_WAYS=8 +# CONFIG_ESP32S3_DATA_CACHE_LINE_16B is not set +CONFIG_ESP32S3_DATA_CACHE_LINE_32B=y +# CONFIG_ESP32S3_DATA_CACHE_LINE_64B is not set +CONFIG_ESP32S3_DATA_CACHE_LINE_SIZE=32 +# end of Cache config + +# +# Memory +# +# CONFIG_ESP32S3_RTCDATA_IN_FAST_MEM is not set +# CONFIG_ESP32S3_USE_FIXED_STATIC_RAM_SIZE is not set +# end of Memory + +# +# Trace memory +# +# CONFIG_ESP32S3_TRAX is not set +CONFIG_ESP32S3_TRACEMEM_RESERVE_DRAM=0x0 +# end of Trace memory + +# CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT is not set +CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT=y +# CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT is not set +# CONFIG_ESP_SYSTEM_PANIC_GDBSTUB is not set +CONFIG_ESP_SYSTEM_PANIC_REBOOT_DELAY_SECONDS=0 +CONFIG_ESP_SYSTEM_RTC_FAST_MEM_AS_HEAP_DEPCHECK=y +CONFIG_ESP_SYSTEM_ALLOW_RTC_FAST_MEM_AS_HEAP=y + +# +# Memory protection +# +CONFIG_ESP_SYSTEM_MEMPROT_FEATURE=y +CONFIG_ESP_SYSTEM_MEMPROT_FEATURE_LOCK=y +# end of Memory protection + +CONFIG_ESP_SYSTEM_EVENT_QUEUE_SIZE=32 +CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=2304 +CONFIG_ESP_MAIN_TASK_STACK_SIZE=3584 +CONFIG_ESP_MAIN_TASK_AFFINITY_CPU0=y +# CONFIG_ESP_MAIN_TASK_AFFINITY_CPU1 is not set +# CONFIG_ESP_MAIN_TASK_AFFINITY_NO_AFFINITY is not set +CONFIG_ESP_MAIN_TASK_AFFINITY=0x0 +CONFIG_ESP_MINIMAL_SHARED_STACK_SIZE=2048 +CONFIG_ESP_CONSOLE_UART_DEFAULT=y +# CONFIG_ESP_CONSOLE_USB_CDC is not set +# CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG is not set +# CONFIG_ESP_CONSOLE_UART_CUSTOM is not set +# CONFIG_ESP_CONSOLE_NONE is not set +# CONFIG_ESP_CONSOLE_SECONDARY_NONE is not set +CONFIG_ESP_CONSOLE_SECONDARY_USB_SERIAL_JTAG=y +CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG_ENABLED=y +CONFIG_ESP_CONSOLE_UART=y +CONFIG_ESP_CONSOLE_UART_NUM=0 +CONFIG_ESP_CONSOLE_UART_BAUDRATE=115200 +CONFIG_ESP_INT_WDT=y +CONFIG_ESP_INT_WDT_TIMEOUT_MS=300 +CONFIG_ESP_INT_WDT_CHECK_CPU1=y +CONFIG_ESP_TASK_WDT_EN=y +CONFIG_ESP_TASK_WDT_INIT=y +# CONFIG_ESP_TASK_WDT_PANIC is not set +CONFIG_ESP_TASK_WDT_TIMEOUT_S=5 +CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU1=y +# CONFIG_ESP_PANIC_HANDLER_IRAM is not set +# CONFIG_ESP_DEBUG_STUBS_ENABLE is not set +CONFIG_ESP_DEBUG_OCDAWARE=y +CONFIG_ESP_SYSTEM_CHECK_INT_LEVEL_4=y + +# +# Brownout Detector +# +CONFIG_ESP_BROWNOUT_DET=y +CONFIG_ESP_BROWNOUT_DET_LVL_SEL_7=y +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_6 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_5 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_4 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_3 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_2 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_1 is not set +CONFIG_ESP_BROWNOUT_DET_LVL=7 +# end of Brownout Detector + +CONFIG_ESP_SYSTEM_BROWNOUT_INTR=y +CONFIG_ESP_SYSTEM_BBPLL_RECALIB=y +# end of ESP System Settings + +# +# IPC (Inter-Processor Call) +# +CONFIG_ESP_IPC_TASK_STACK_SIZE=1280 +CONFIG_ESP_IPC_USES_CALLERS_PRIORITY=y +CONFIG_ESP_IPC_ISR_ENABLE=y +# end of IPC (Inter-Processor Call) + +# +# High resolution timer (esp_timer) +# +# CONFIG_ESP_TIMER_PROFILING is not set +CONFIG_ESP_TIME_FUNCS_USE_RTC_TIMER=y +CONFIG_ESP_TIME_FUNCS_USE_ESP_TIMER=y +CONFIG_ESP_TIMER_TASK_STACK_SIZE=3584 +CONFIG_ESP_TIMER_INTERRUPT_LEVEL=1 +# CONFIG_ESP_TIMER_SHOW_EXPERIMENTAL is not set +CONFIG_ESP_TIMER_TASK_AFFINITY=0x0 +CONFIG_ESP_TIMER_TASK_AFFINITY_CPU0=y +CONFIG_ESP_TIMER_ISR_AFFINITY=0x1 +CONFIG_ESP_TIMER_ISR_AFFINITY_CPU0=y +# CONFIG_ESP_TIMER_SUPPORTS_ISR_DISPATCH_METHOD is not set +CONFIG_ESP_TIMER_IMPL_SYSTIMER=y +# end of High resolution timer (esp_timer) + +# +# Wi-Fi +# +CONFIG_ESP_WIFI_ENABLED=y +CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=10 +CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=32 +# CONFIG_ESP_WIFI_STATIC_TX_BUFFER is not set +CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER=y +CONFIG_ESP_WIFI_TX_BUFFER_TYPE=1 +CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER_NUM=32 +CONFIG_ESP_WIFI_STATIC_RX_MGMT_BUFFER=y +# CONFIG_ESP_WIFI_DYNAMIC_RX_MGMT_BUFFER is not set +CONFIG_ESP_WIFI_DYNAMIC_RX_MGMT_BUF=0 +CONFIG_ESP_WIFI_RX_MGMT_BUF_NUM_DEF=5 +# CONFIG_ESP_WIFI_CSI_ENABLED is not set +CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=y +CONFIG_ESP_WIFI_TX_BA_WIN=6 +CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=y +CONFIG_ESP_WIFI_RX_BA_WIN=6 +CONFIG_ESP_WIFI_NVS_ENABLED=y +CONFIG_ESP_WIFI_TASK_PINNED_TO_CORE_0=y +# CONFIG_ESP_WIFI_TASK_PINNED_TO_CORE_1 is not set +CONFIG_ESP_WIFI_SOFTAP_BEACON_MAX_LEN=752 +CONFIG_ESP_WIFI_MGMT_SBUF_NUM=32 +CONFIG_ESP_WIFI_IRAM_OPT=y +# CONFIG_ESP_WIFI_EXTRA_IRAM_OPT is not set +CONFIG_ESP_WIFI_RX_IRAM_OPT=y +CONFIG_ESP_WIFI_ENABLE_WPA3_SAE=y +CONFIG_ESP_WIFI_ENABLE_SAE_PK=y +CONFIG_ESP_WIFI_SOFTAP_SAE_SUPPORT=y +CONFIG_ESP_WIFI_ENABLE_WPA3_OWE_STA=y +# CONFIG_ESP_WIFI_SLP_IRAM_OPT is not set +# CONFIG_ESP_WIFI_FTM_ENABLE is not set +CONFIG_ESP_WIFI_STA_DISCONNECTED_PM_ENABLE=y +# CONFIG_ESP_WIFI_GCMP_SUPPORT is not set +# CONFIG_ESP_WIFI_GMAC_SUPPORT is not set +CONFIG_ESP_WIFI_SOFTAP_SUPPORT=y +# CONFIG_ESP_WIFI_SLP_BEACON_LOST_OPT is not set +CONFIG_ESP_WIFI_ESPNOW_MAX_ENCRYPT_NUM=7 +CONFIG_ESP_WIFI_MBEDTLS_CRYPTO=y +CONFIG_ESP_WIFI_MBEDTLS_TLS_CLIENT=y +# CONFIG_ESP_WIFI_WAPI_PSK is not set +# CONFIG_ESP_WIFI_SUITE_B_192 is not set +# CONFIG_ESP_WIFI_11KV_SUPPORT is not set +# CONFIG_ESP_WIFI_MBO_SUPPORT is not set +# CONFIG_ESP_WIFI_DPP_SUPPORT is not set +# CONFIG_ESP_WIFI_11R_SUPPORT is not set +# CONFIG_ESP_WIFI_WPS_SOFTAP_REGISTRAR is not set + +# +# WPS Configuration Options +# +# CONFIG_ESP_WIFI_WPS_STRICT is not set +# CONFIG_ESP_WIFI_WPS_PASSPHRASE is not set +# end of WPS Configuration Options + +# CONFIG_ESP_WIFI_DEBUG_PRINT is not set +# CONFIG_ESP_WIFI_TESTING_OPTIONS is not set +CONFIG_ESP_WIFI_ENTERPRISE_SUPPORT=y +# end of Wi-Fi + +# +# Core dump +# +# CONFIG_ESP_COREDUMP_ENABLE_TO_FLASH is not set +# CONFIG_ESP_COREDUMP_ENABLE_TO_UART is not set +CONFIG_ESP_COREDUMP_ENABLE_TO_NONE=y +# end of Core dump + +# +# FAT Filesystem support +# +CONFIG_FATFS_VOLUME_COUNT=2 +CONFIG_FATFS_LFN_NONE=y +# CONFIG_FATFS_LFN_HEAP is not set +# CONFIG_FATFS_LFN_STACK is not set +# CONFIG_FATFS_SECTOR_512 is not set +CONFIG_FATFS_SECTOR_4096=y +# CONFIG_FATFS_CODEPAGE_DYNAMIC is not set +CONFIG_FATFS_CODEPAGE_437=y +# CONFIG_FATFS_CODEPAGE_720 is not set +# CONFIG_FATFS_CODEPAGE_737 is not set +# CONFIG_FATFS_CODEPAGE_771 is not set +# CONFIG_FATFS_CODEPAGE_775 is not set +# CONFIG_FATFS_CODEPAGE_850 is not set +# CONFIG_FATFS_CODEPAGE_852 is not set +# CONFIG_FATFS_CODEPAGE_855 is not set +# CONFIG_FATFS_CODEPAGE_857 is not set +# CONFIG_FATFS_CODEPAGE_860 is not set +# CONFIG_FATFS_CODEPAGE_861 is not set +# CONFIG_FATFS_CODEPAGE_862 is not set +# CONFIG_FATFS_CODEPAGE_863 is not set +# CONFIG_FATFS_CODEPAGE_864 is not set +# CONFIG_FATFS_CODEPAGE_865 is not set +# CONFIG_FATFS_CODEPAGE_866 is not set +# CONFIG_FATFS_CODEPAGE_869 is not set +# CONFIG_FATFS_CODEPAGE_932 is not set +# CONFIG_FATFS_CODEPAGE_936 is not set +# CONFIG_FATFS_CODEPAGE_949 is not set +# CONFIG_FATFS_CODEPAGE_950 is not set +CONFIG_FATFS_CODEPAGE=437 +CONFIG_FATFS_FS_LOCK=0 +CONFIG_FATFS_TIMEOUT_MS=10000 +CONFIG_FATFS_PER_FILE_CACHE=y +# CONFIG_FATFS_USE_FASTSEEK is not set +CONFIG_FATFS_VFS_FSTAT_BLKSIZE=0 +# CONFIG_FATFS_IMMEDIATE_FSYNC is not set +# end of FAT Filesystem support + +# +# FreeRTOS +# + +# +# Kernel +# +# CONFIG_FREERTOS_SMP is not set +# CONFIG_FREERTOS_UNICORE is not set +CONFIG_FREERTOS_HZ=100 +# CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE is not set +# CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL is not set +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 +CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1536 +# CONFIG_FREERTOS_USE_IDLE_HOOK is not set +# CONFIG_FREERTOS_USE_TICK_HOOK is not set +CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 +# CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY is not set +CONFIG_FREERTOS_TIMER_SERVICE_TASK_NAME="Tmr Svc" +CONFIG_FREERTOS_TIMER_TASK_PRIORITY=1 +CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_FREERTOS_TIMER_QUEUE_LENGTH=10 +CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 +CONFIG_FREERTOS_TASK_NOTIFICATION_ARRAY_ENTRIES=1 +# CONFIG_FREERTOS_USE_TRACE_FACILITY is not set +# CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS is not set +# end of Kernel + +# +# Port +# +CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER=y +# CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK is not set +CONFIG_FREERTOS_TLSP_DELETION_CALLBACKS=y +# CONFIG_FREERTOS_TASK_PRE_DELETION_HOOK is not set +# CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP is not set +CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER=y +CONFIG_FREERTOS_ISR_STACKSIZE=1536 +CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y +CONFIG_FREERTOS_TICK_SUPPORT_SYSTIMER=y +CONFIG_FREERTOS_CORETIMER_SYSTIMER_LVL1=y +# CONFIG_FREERTOS_CORETIMER_SYSTIMER_LVL3 is not set +CONFIG_FREERTOS_SYSTICK_USES_SYSTIMER=y +# CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH is not set +# CONFIG_FREERTOS_CHECK_PORT_CRITICAL_COMPLIANCE is not set +# end of Port + +CONFIG_FREERTOS_PORT=y +CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF +CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION=y +CONFIG_FREERTOS_DEBUG_OCDAWARE=y +CONFIG_FREERTOS_ENABLE_TASK_SNAPSHOT=y +CONFIG_FREERTOS_PLACE_SNAPSHOT_FUNS_INTO_FLASH=y +# end of FreeRTOS + +# +# Hardware Abstraction Layer (HAL) and Low Level (LL) +# +CONFIG_HAL_ASSERTION_EQUALS_SYSTEM=y +# CONFIG_HAL_ASSERTION_DISABLE is not set +# CONFIG_HAL_ASSERTION_SILENT is not set +# CONFIG_HAL_ASSERTION_ENABLE is not set +CONFIG_HAL_DEFAULT_ASSERTION_LEVEL=2 +CONFIG_HAL_WDT_USE_ROM_IMPL=y +CONFIG_HAL_SPI_MASTER_FUNC_IN_IRAM=y +CONFIG_HAL_SPI_SLAVE_FUNC_IN_IRAM=y +# end of Hardware Abstraction Layer (HAL) and Low Level (LL) + +# +# Heap memory debugging +# +CONFIG_HEAP_POISONING_DISABLED=y +# CONFIG_HEAP_POISONING_LIGHT is not set +# CONFIG_HEAP_POISONING_COMPREHENSIVE is not set +CONFIG_HEAP_TRACING_OFF=y +# CONFIG_HEAP_TRACING_STANDALONE is not set +# CONFIG_HEAP_TRACING_TOHOST is not set +# CONFIG_HEAP_USE_HOOKS is not set +# CONFIG_HEAP_TASK_TRACKING is not set +# CONFIG_HEAP_ABORT_WHEN_ALLOCATION_FAILS is not set +# CONFIG_HEAP_PLACE_FUNCTION_INTO_FLASH is not set +# end of Heap memory debugging + +# +# Log output +# +# CONFIG_LOG_DEFAULT_LEVEL_NONE is not set +# CONFIG_LOG_DEFAULT_LEVEL_ERROR is not set +# CONFIG_LOG_DEFAULT_LEVEL_WARN is not set +CONFIG_LOG_DEFAULT_LEVEL_INFO=y +# CONFIG_LOG_DEFAULT_LEVEL_DEBUG is not set +# CONFIG_LOG_DEFAULT_LEVEL_VERBOSE is not set +CONFIG_LOG_DEFAULT_LEVEL=3 +CONFIG_LOG_MAXIMUM_EQUALS_DEFAULT=y +# CONFIG_LOG_MAXIMUM_LEVEL_DEBUG is not set +# CONFIG_LOG_MAXIMUM_LEVEL_VERBOSE is not set +CONFIG_LOG_MAXIMUM_LEVEL=3 +# CONFIG_LOG_MASTER_LEVEL is not set +CONFIG_LOG_COLORS=y +CONFIG_LOG_TIMESTAMP_SOURCE_RTOS=y +# CONFIG_LOG_TIMESTAMP_SOURCE_SYSTEM is not set +# end of Log output + +# +# LWIP +# +CONFIG_LWIP_ENABLE=y +CONFIG_LWIP_LOCAL_HOSTNAME="espressif" +# CONFIG_LWIP_NETIF_API is not set +CONFIG_LWIP_TCPIP_TASK_PRIO=18 +# CONFIG_LWIP_TCPIP_CORE_LOCKING is not set +# CONFIG_LWIP_CHECK_THREAD_SAFETY is not set +CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES=y +# CONFIG_LWIP_L2_TO_L3_COPY is not set +# CONFIG_LWIP_IRAM_OPTIMIZATION is not set +# CONFIG_LWIP_EXTRA_IRAM_OPTIMIZATION is not set +CONFIG_LWIP_TIMERS_ONDEMAND=y +CONFIG_LWIP_ND6=y +# CONFIG_LWIP_FORCE_ROUTER_FORWARDING is not set +CONFIG_LWIP_MAX_SOCKETS=10 +# CONFIG_LWIP_USE_ONLY_LWIP_SELECT is not set +# CONFIG_LWIP_SO_LINGER is not set +CONFIG_LWIP_SO_REUSE=y +CONFIG_LWIP_SO_REUSE_RXTOALL=y +# CONFIG_LWIP_SO_RCVBUF is not set +# CONFIG_LWIP_NETBUF_RECVINFO is not set +CONFIG_LWIP_IP_DEFAULT_TTL=64 +CONFIG_LWIP_IP4_FRAG=y +CONFIG_LWIP_IP6_FRAG=y +# CONFIG_LWIP_IP4_REASSEMBLY is not set +# CONFIG_LWIP_IP6_REASSEMBLY is not set +CONFIG_LWIP_IP_REASS_MAX_PBUFS=10 +# CONFIG_LWIP_IP_FORWARD is not set +# CONFIG_LWIP_STATS is not set +CONFIG_LWIP_ESP_GRATUITOUS_ARP=y +CONFIG_LWIP_GARP_TMR_INTERVAL=60 +CONFIG_LWIP_ESP_MLDV6_REPORT=y +CONFIG_LWIP_MLDV6_TMR_INTERVAL=40 +CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32 +CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y +# CONFIG_LWIP_DHCP_DISABLE_CLIENT_ID is not set +CONFIG_LWIP_DHCP_DISABLE_VENDOR_CLASS_ID=y +# CONFIG_LWIP_DHCP_RESTORE_LAST_IP is not set +CONFIG_LWIP_DHCP_OPTIONS_LEN=68 +CONFIG_LWIP_NUM_NETIF_CLIENT_DATA=0 +CONFIG_LWIP_DHCP_COARSE_TIMER_SECS=1 + +# +# DHCP server +# +CONFIG_LWIP_DHCPS=y +CONFIG_LWIP_DHCPS_LEASE_UNIT=60 +CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8 +CONFIG_LWIP_DHCPS_STATIC_ENTRIES=y +# end of DHCP server + +# CONFIG_LWIP_AUTOIP is not set +CONFIG_LWIP_IPV4=y +CONFIG_LWIP_IPV6=y +# CONFIG_LWIP_IPV6_AUTOCONFIG is not set +CONFIG_LWIP_IPV6_NUM_ADDRESSES=3 +# CONFIG_LWIP_IPV6_FORWARD is not set +# CONFIG_LWIP_NETIF_STATUS_CALLBACK is not set +CONFIG_LWIP_NETIF_LOOPBACK=y +CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 + +# +# TCP +# +CONFIG_LWIP_MAX_ACTIVE_TCP=16 +CONFIG_LWIP_MAX_LISTENING_TCP=16 +CONFIG_LWIP_TCP_HIGH_SPEED_RETRANSMISSION=y +CONFIG_LWIP_TCP_MAXRTX=12 +CONFIG_LWIP_TCP_SYNMAXRTX=12 +CONFIG_LWIP_TCP_MSS=1440 +CONFIG_LWIP_TCP_TMR_INTERVAL=250 +CONFIG_LWIP_TCP_MSL=60000 +CONFIG_LWIP_TCP_FIN_WAIT_TIMEOUT=20000 +CONFIG_LWIP_TCP_SND_BUF_DEFAULT=5760 +CONFIG_LWIP_TCP_WND_DEFAULT=5760 +CONFIG_LWIP_TCP_RECVMBOX_SIZE=6 +CONFIG_LWIP_TCP_QUEUE_OOSEQ=y +CONFIG_LWIP_TCP_OOSEQ_TIMEOUT=6 +CONFIG_LWIP_TCP_OOSEQ_MAX_PBUFS=4 +# CONFIG_LWIP_TCP_SACK_OUT is not set +CONFIG_LWIP_TCP_OVERSIZE_MSS=y +# CONFIG_LWIP_TCP_OVERSIZE_QUARTER_MSS is not set +# CONFIG_LWIP_TCP_OVERSIZE_DISABLE is not set +CONFIG_LWIP_TCP_RTO_TIME=1500 +# end of TCP + +# +# UDP +# +CONFIG_LWIP_MAX_UDP_PCBS=16 +CONFIG_LWIP_UDP_RECVMBOX_SIZE=6 +# end of UDP + +# +# Checksums +# +# CONFIG_LWIP_CHECKSUM_CHECK_IP is not set +# CONFIG_LWIP_CHECKSUM_CHECK_UDP is not set +CONFIG_LWIP_CHECKSUM_CHECK_ICMP=y +# end of Checksums + +CONFIG_LWIP_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_LWIP_TCPIP_TASK_AFFINITY_NO_AFFINITY=y +# CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU0 is not set +# CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU1 is not set +CONFIG_LWIP_TCPIP_TASK_AFFINITY=0x7FFFFFFF +# CONFIG_LWIP_PPP_SUPPORT is not set +CONFIG_LWIP_IPV6_MEMP_NUM_ND6_QUEUE=3 +CONFIG_LWIP_IPV6_ND6_NUM_NEIGHBORS=5 +# CONFIG_LWIP_SLIP_SUPPORT is not set + +# +# ICMP +# +CONFIG_LWIP_ICMP=y +# CONFIG_LWIP_MULTICAST_PING is not set +# CONFIG_LWIP_BROADCAST_PING is not set +# end of ICMP + +# +# LWIP RAW API +# +CONFIG_LWIP_MAX_RAW_PCBS=16 +# end of LWIP RAW API + +# +# SNTP +# +CONFIG_LWIP_SNTP_MAX_SERVERS=1 +# CONFIG_LWIP_DHCP_GET_NTP_SRV is not set +CONFIG_LWIP_SNTP_UPDATE_DELAY=3600000 +# end of SNTP + +CONFIG_LWIP_BRIDGEIF_MAX_PORTS=7 +CONFIG_LWIP_ESP_LWIP_ASSERT=y + +# +# Hooks +# +# CONFIG_LWIP_HOOK_TCP_ISN_NONE is not set +CONFIG_LWIP_HOOK_TCP_ISN_DEFAULT=y +# CONFIG_LWIP_HOOK_TCP_ISN_CUSTOM is not set +CONFIG_LWIP_HOOK_IP6_ROUTE_NONE=y +# CONFIG_LWIP_HOOK_IP6_ROUTE_DEFAULT is not set +# CONFIG_LWIP_HOOK_IP6_ROUTE_CUSTOM is not set +CONFIG_LWIP_HOOK_ND6_GET_GW_NONE=y +# CONFIG_LWIP_HOOK_ND6_GET_GW_DEFAULT is not set +# CONFIG_LWIP_HOOK_ND6_GET_GW_CUSTOM is not set +CONFIG_LWIP_HOOK_IP6_SELECT_SRC_ADDR_NONE=y +# CONFIG_LWIP_HOOK_IP6_SELECT_SRC_ADDR_DEFAULT is not set +# CONFIG_LWIP_HOOK_IP6_SELECT_SRC_ADDR_CUSTOM is not set +CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_NONE=y +# CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_DEFAULT is not set +# CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_CUSTOM is not set +CONFIG_LWIP_HOOK_IP6_INPUT_NONE=y +# CONFIG_LWIP_HOOK_IP6_INPUT_DEFAULT is not set +# CONFIG_LWIP_HOOK_IP6_INPUT_CUSTOM is not set +# end of Hooks + +# CONFIG_LWIP_DEBUG is not set +# end of LWIP + +# +# mbedTLS +# +CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y +# CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC is not set +# CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC is not set +CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=y +CONFIG_MBEDTLS_SSL_IN_CONTENT_LEN=16384 +CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN=4096 +# CONFIG_MBEDTLS_DYNAMIC_BUFFER is not set +# CONFIG_MBEDTLS_DEBUG is not set + +# +# mbedTLS v3.x related +# +# CONFIG_MBEDTLS_SSL_PROTO_TLS1_3 is not set +# CONFIG_MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH is not set +# CONFIG_MBEDTLS_X509_TRUSTED_CERT_CALLBACK is not set +# CONFIG_MBEDTLS_SSL_CONTEXT_SERIALIZATION is not set +CONFIG_MBEDTLS_SSL_KEEP_PEER_CERTIFICATE=y +CONFIG_MBEDTLS_PKCS7_C=y +# end of mbedTLS v3.x related + +# +# Certificate Bundle +# +CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=y +CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_FULL=y +# CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_CMN is not set +# CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_NONE is not set +# CONFIG_MBEDTLS_CUSTOM_CERTIFICATE_BUNDLE is not set +CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_MAX_CERTS=200 +# end of Certificate Bundle + +# CONFIG_MBEDTLS_ECP_RESTARTABLE is not set +CONFIG_MBEDTLS_CMAC_C=y +CONFIG_MBEDTLS_HARDWARE_AES=y +CONFIG_MBEDTLS_AES_USE_INTERRUPT=y +CONFIG_MBEDTLS_AES_INTERRUPT_LEVEL=0 +CONFIG_MBEDTLS_HARDWARE_MPI=y +CONFIG_MBEDTLS_MPI_USE_INTERRUPT=y +CONFIG_MBEDTLS_MPI_INTERRUPT_LEVEL=0 +CONFIG_MBEDTLS_HARDWARE_SHA=y +CONFIG_MBEDTLS_ROM_MD5=y +# CONFIG_MBEDTLS_ATCA_HW_ECDSA_SIGN is not set +# CONFIG_MBEDTLS_ATCA_HW_ECDSA_VERIFY is not set +CONFIG_MBEDTLS_HAVE_TIME=y +# CONFIG_MBEDTLS_PLATFORM_TIME_ALT is not set +# CONFIG_MBEDTLS_HAVE_TIME_DATE is not set +CONFIG_MBEDTLS_ECDSA_DETERMINISTIC=y +CONFIG_MBEDTLS_SHA512_C=y +CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y +# CONFIG_MBEDTLS_TLS_SERVER_ONLY is not set +# CONFIG_MBEDTLS_TLS_CLIENT_ONLY is not set +# CONFIG_MBEDTLS_TLS_DISABLED is not set +CONFIG_MBEDTLS_TLS_SERVER=y +CONFIG_MBEDTLS_TLS_CLIENT=y +CONFIG_MBEDTLS_TLS_ENABLED=y + +# +# TLS Key Exchange Methods +# +# CONFIG_MBEDTLS_PSK_MODES is not set +CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y +# end of TLS Key Exchange Methods + +CONFIG_MBEDTLS_SSL_RENEGOTIATION=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y +# CONFIG_MBEDTLS_SSL_PROTO_GMTSSL1_1 is not set +# CONFIG_MBEDTLS_SSL_PROTO_DTLS is not set +CONFIG_MBEDTLS_SSL_ALPN=y +CONFIG_MBEDTLS_CLIENT_SSL_SESSION_TICKETS=y +CONFIG_MBEDTLS_SERVER_SSL_SESSION_TICKETS=y + +# +# Symmetric Ciphers +# +CONFIG_MBEDTLS_AES_C=y +# CONFIG_MBEDTLS_CAMELLIA_C is not set +# CONFIG_MBEDTLS_DES_C is not set +# CONFIG_MBEDTLS_BLOWFISH_C is not set +# CONFIG_MBEDTLS_XTEA_C is not set +CONFIG_MBEDTLS_CCM_C=y +CONFIG_MBEDTLS_GCM_C=y +# CONFIG_MBEDTLS_NIST_KW_C is not set +# end of Symmetric Ciphers + +# CONFIG_MBEDTLS_RIPEMD160_C is not set + +# +# Certificates +# +CONFIG_MBEDTLS_PEM_PARSE_C=y +CONFIG_MBEDTLS_PEM_WRITE_C=y +CONFIG_MBEDTLS_X509_CRL_PARSE_C=y +CONFIG_MBEDTLS_X509_CSR_PARSE_C=y +# end of Certificates + +CONFIG_MBEDTLS_ECP_C=y +# CONFIG_MBEDTLS_DHM_C is not set +CONFIG_MBEDTLS_ECDH_C=y +CONFIG_MBEDTLS_ECDSA_C=y +# CONFIG_MBEDTLS_ECJPAKE_C is not set +CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y +CONFIG_MBEDTLS_ECP_NIST_OPTIM=y +CONFIG_MBEDTLS_ECP_FIXED_POINT_OPTIM=y +# CONFIG_MBEDTLS_POLY1305_C is not set +# CONFIG_MBEDTLS_CHACHA20_C is not set +# CONFIG_MBEDTLS_HKDF_C is not set +# CONFIG_MBEDTLS_THREADING_C is not set +# CONFIG_MBEDTLS_LARGE_KEY_SOFTWARE_MPI is not set +# end of mbedTLS + +# +# ESP-MQTT Configurations +# +CONFIG_MQTT_PROTOCOL_311=y +# CONFIG_MQTT_PROTOCOL_5 is not set +CONFIG_MQTT_TRANSPORT_SSL=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y +# CONFIG_MQTT_MSG_ID_INCREMENTAL is not set +# CONFIG_MQTT_SKIP_PUBLISH_IF_DISCONNECTED is not set +# CONFIG_MQTT_REPORT_DELETED_MESSAGES is not set +# CONFIG_MQTT_USE_CUSTOM_CONFIG is not set +# CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED is not set +# CONFIG_MQTT_CUSTOM_OUTBOX is not set +# end of ESP-MQTT Configurations + +# +# Newlib +# +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y +# CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF is not set +# CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR is not set +# CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF is not set +# CONFIG_NEWLIB_STDIN_LINE_ENDING_LF is not set +CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y +# CONFIG_NEWLIB_NANO_FORMAT is not set +CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC_HRT=y +# CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC is not set +# CONFIG_NEWLIB_TIME_SYSCALL_USE_HRT is not set +# CONFIG_NEWLIB_TIME_SYSCALL_USE_NONE is not set +# end of Newlib + +# +# NVS +# +# CONFIG_NVS_ENCRYPTION is not set +# CONFIG_NVS_ASSERT_ERROR_CHECK is not set +# CONFIG_NVS_LEGACY_DUP_KEYS_COMPATIBILITY is not set +# end of NVS + +# +# OpenThread +# +# CONFIG_OPENTHREAD_ENABLED is not set + +# +# Thread Operational Dataset +# +CONFIG_OPENTHREAD_NETWORK_NAME="OpenThread-ESP" +CONFIG_OPENTHREAD_MESH_LOCAL_PREFIX="fd00:db8:a0:0::/64" +CONFIG_OPENTHREAD_NETWORK_CHANNEL=15 +CONFIG_OPENTHREAD_NETWORK_PANID=0x1234 +CONFIG_OPENTHREAD_NETWORK_EXTPANID="dead00beef00cafe" +CONFIG_OPENTHREAD_NETWORK_MASTERKEY="00112233445566778899aabbccddeeff" +CONFIG_OPENTHREAD_NETWORK_PSKC="104810e2315100afd6bc9215a6bfac53" +# end of Thread Operational Dataset + +CONFIG_OPENTHREAD_XTAL_ACCURACY=130 +# end of OpenThread + +# +# Protocomm +# +CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_0=y +CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_1=y +CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_2=y +# end of Protocomm + +# +# PThreads +# +CONFIG_PTHREAD_TASK_PRIO_DEFAULT=5 +CONFIG_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 +CONFIG_PTHREAD_STACK_MIN=768 +CONFIG_PTHREAD_DEFAULT_CORE_NO_AFFINITY=y +# CONFIG_PTHREAD_DEFAULT_CORE_0 is not set +# CONFIG_PTHREAD_DEFAULT_CORE_1 is not set +CONFIG_PTHREAD_TASK_CORE_DEFAULT=-1 +CONFIG_PTHREAD_TASK_NAME_DEFAULT="pthread" +# end of PThreads + +# +# MMU Config +# +CONFIG_MMU_PAGE_SIZE_64KB=y +CONFIG_MMU_PAGE_MODE="64KB" +CONFIG_MMU_PAGE_SIZE=0x10000 +# end of MMU Config + +# +# Main Flash configuration +# + +# +# SPI Flash behavior when brownout +# +CONFIG_SPI_FLASH_BROWNOUT_RESET_XMC=y +CONFIG_SPI_FLASH_BROWNOUT_RESET=y +# end of SPI Flash behavior when brownout + +# +# Optional and Experimental Features (READ DOCS FIRST) +# + +# +# Features here require specific hardware (READ DOCS FIRST!) +# +# CONFIG_SPI_FLASH_HPM_ENA is not set +CONFIG_SPI_FLASH_HPM_AUTO=y +# CONFIG_SPI_FLASH_HPM_DIS is not set +CONFIG_SPI_FLASH_HPM_ON=y +CONFIG_SPI_FLASH_HPM_DC_AUTO=y +# CONFIG_SPI_FLASH_HPM_DC_DISABLE is not set +CONFIG_SPI_FLASH_SUSPEND_QVL_SUPPORTED=y +# CONFIG_SPI_FLASH_AUTO_SUSPEND is not set +# end of Optional and Experimental Features (READ DOCS FIRST) +# end of Main Flash configuration + +# +# SPI Flash driver +# +# CONFIG_SPI_FLASH_VERIFY_WRITE is not set +# CONFIG_SPI_FLASH_ENABLE_COUNTERS is not set +CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y +# CONFIG_SPI_FLASH_ROM_IMPL is not set +CONFIG_SPI_FLASH_DANGEROUS_WRITE_ABORTS=y +# CONFIG_SPI_FLASH_DANGEROUS_WRITE_FAILS is not set +# CONFIG_SPI_FLASH_DANGEROUS_WRITE_ALLOWED is not set +# CONFIG_SPI_FLASH_BYPASS_BLOCK_ERASE is not set +CONFIG_SPI_FLASH_YIELD_DURING_ERASE=y +CONFIG_SPI_FLASH_ERASE_YIELD_DURATION_MS=20 +CONFIG_SPI_FLASH_ERASE_YIELD_TICKS=1 +CONFIG_SPI_FLASH_WRITE_CHUNK_SIZE=8192 +# CONFIG_SPI_FLASH_SIZE_OVERRIDE is not set +# CONFIG_SPI_FLASH_CHECK_ERASE_TIMEOUT_DISABLED is not set +# CONFIG_SPI_FLASH_OVERRIDE_CHIP_DRIVER_LIST is not set + +# +# Auto-detect flash chips +# +CONFIG_SPI_FLASH_VENDOR_XMC_SUPPORTED=y +CONFIG_SPI_FLASH_VENDOR_GD_SUPPORTED=y +CONFIG_SPI_FLASH_VENDOR_ISSI_SUPPORTED=y +CONFIG_SPI_FLASH_VENDOR_MXIC_SUPPORTED=y +CONFIG_SPI_FLASH_VENDOR_WINBOND_SUPPORTED=y +CONFIG_SPI_FLASH_VENDOR_BOYA_SUPPORTED=y +CONFIG_SPI_FLASH_VENDOR_TH_SUPPORTED=y +CONFIG_SPI_FLASH_SUPPORT_ISSI_CHIP=y +CONFIG_SPI_FLASH_SUPPORT_MXIC_CHIP=y +CONFIG_SPI_FLASH_SUPPORT_GD_CHIP=y +CONFIG_SPI_FLASH_SUPPORT_WINBOND_CHIP=y +CONFIG_SPI_FLASH_SUPPORT_BOYA_CHIP=y +CONFIG_SPI_FLASH_SUPPORT_TH_CHIP=y +CONFIG_SPI_FLASH_SUPPORT_MXIC_OPI_CHIP=y +# end of Auto-detect flash chips + +CONFIG_SPI_FLASH_ENABLE_ENCRYPTED_READ_WRITE=y +# end of SPI Flash driver + +# +# SPIFFS Configuration +# +CONFIG_SPIFFS_MAX_PARTITIONS=3 + +# +# SPIFFS Cache Configuration +# +CONFIG_SPIFFS_CACHE=y +CONFIG_SPIFFS_CACHE_WR=y +# CONFIG_SPIFFS_CACHE_STATS is not set +# end of SPIFFS Cache Configuration + +CONFIG_SPIFFS_PAGE_CHECK=y +CONFIG_SPIFFS_GC_MAX_RUNS=10 +# CONFIG_SPIFFS_GC_STATS is not set +CONFIG_SPIFFS_PAGE_SIZE=256 +CONFIG_SPIFFS_OBJ_NAME_LEN=32 +# CONFIG_SPIFFS_FOLLOW_SYMLINKS is not set +CONFIG_SPIFFS_USE_MAGIC=y +CONFIG_SPIFFS_USE_MAGIC_LENGTH=y +CONFIG_SPIFFS_META_LENGTH=4 +CONFIG_SPIFFS_USE_MTIME=y + +# +# Debug Configuration +# +# CONFIG_SPIFFS_DBG is not set +# CONFIG_SPIFFS_API_DBG is not set +# CONFIG_SPIFFS_GC_DBG is not set +# CONFIG_SPIFFS_CACHE_DBG is not set +# CONFIG_SPIFFS_CHECK_DBG is not set +# CONFIG_SPIFFS_TEST_VISUALISATION is not set +# end of Debug Configuration +# end of SPIFFS Configuration + +# +# TCP Transport +# + +# +# Websocket +# +CONFIG_WS_TRANSPORT=y +CONFIG_WS_BUFFER_SIZE=1024 +# CONFIG_WS_DYNAMIC_BUFFER is not set +# end of Websocket +# end of TCP Transport + +# +# Ultra Low Power (ULP) Co-processor +# +# CONFIG_ULP_COPROC_ENABLED is not set +# end of Ultra Low Power (ULP) Co-processor + +# +# Unity unit testing library +# +CONFIG_UNITY_ENABLE_FLOAT=y +CONFIG_UNITY_ENABLE_DOUBLE=y +# CONFIG_UNITY_ENABLE_64BIT is not set +# CONFIG_UNITY_ENABLE_COLOR is not set +CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y +# CONFIG_UNITY_ENABLE_FIXTURE is not set +# CONFIG_UNITY_ENABLE_BACKTRACE_ON_FAIL is not set +# end of Unity unit testing library + +# +# USB-OTG +# +CONFIG_USB_OTG_SUPPORTED=y +CONFIG_USB_HOST_CONTROL_TRANSFER_MAX_SIZE=256 +CONFIG_USB_HOST_HW_BUFFER_BIAS_BALANCED=y +# CONFIG_USB_HOST_HW_BUFFER_BIAS_IN is not set +# CONFIG_USB_HOST_HW_BUFFER_BIAS_PERIODIC_OUT is not set + +# +# Root Hub configuration +# +CONFIG_USB_HOST_DEBOUNCE_DELAY_MS=250 +CONFIG_USB_HOST_RESET_HOLD_MS=30 +CONFIG_USB_HOST_RESET_RECOVERY_MS=30 +CONFIG_USB_HOST_SET_ADDR_RECOVERY_MS=10 +# end of Root Hub configuration +# end of USB-OTG + +# +# Virtual file system +# +CONFIG_VFS_SUPPORT_IO=y +CONFIG_VFS_SUPPORT_DIR=y +CONFIG_VFS_SUPPORT_SELECT=y +CONFIG_VFS_SUPPRESS_SELECT_DEBUG_OUTPUT=y +# CONFIG_VFS_SELECT_IN_RAM is not set +CONFIG_VFS_SUPPORT_TERMIOS=y +CONFIG_VFS_MAX_COUNT=8 + +# +# Host File System I/O (Semihosting) +# +CONFIG_VFS_SEMIHOSTFS_MAX_MOUNT_POINTS=1 +# end of Host File System I/O (Semihosting) +# end of Virtual file system + +# +# Wear Levelling +# +# CONFIG_WL_SECTOR_SIZE_512 is not set +CONFIG_WL_SECTOR_SIZE_4096=y +CONFIG_WL_SECTOR_SIZE=4096 +# end of Wear Levelling + +# +# Wi-Fi Provisioning Manager +# +CONFIG_WIFI_PROV_SCAN_MAX_ENTRIES=16 +CONFIG_WIFI_PROV_AUTOSTOP_TIMEOUT=30 +# CONFIG_WIFI_PROV_BLE_FORCE_ENCRYPTION is not set +CONFIG_WIFI_PROV_STA_ALL_CHANNEL_SCAN=y +# CONFIG_WIFI_PROV_STA_FAST_SCAN is not set +# end of Wi-Fi Provisioning Manager +# end of Component config + +# CONFIG_IDF_EXPERIMENTAL_FEATURES is not set + +# Deprecated options for backward compatibility +# CONFIG_APP_BUILD_TYPE_ELF_RAM is not set +# CONFIG_NO_BLOBS is not set +# CONFIG_LOG_BOOTLOADER_LEVEL_NONE is not set +# CONFIG_LOG_BOOTLOADER_LEVEL_ERROR is not set +# CONFIG_LOG_BOOTLOADER_LEVEL_WARN is not set +CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y +# CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG is not set +# CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE is not set +CONFIG_LOG_BOOTLOADER_LEVEL=3 +# CONFIG_APP_ROLLBACK_ENABLE is not set +# CONFIG_FLASH_ENCRYPTION_ENABLED is not set +# CONFIG_FLASHMODE_QIO is not set +# CONFIG_FLASHMODE_QOUT is not set +CONFIG_FLASHMODE_DIO=y +# CONFIG_FLASHMODE_DOUT is not set +CONFIG_MONITOR_BAUD=115200 +CONFIG_OPTIMIZATION_LEVEL_DEBUG=y +CONFIG_COMPILER_OPTIMIZATION_LEVEL_DEBUG=y +CONFIG_COMPILER_OPTIMIZATION_DEFAULT=y +# CONFIG_OPTIMIZATION_LEVEL_RELEASE is not set +# CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE is not set +CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y +# CONFIG_OPTIMIZATION_ASSERTIONS_SILENT is not set +# CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED is not set +CONFIG_OPTIMIZATION_ASSERTION_LEVEL=2 +# CONFIG_CXX_EXCEPTIONS is not set +CONFIG_STACK_CHECK_NONE=y +# CONFIG_STACK_CHECK_NORM is not set +# CONFIG_STACK_CHECK_STRONG is not set +# CONFIG_STACK_CHECK_ALL is not set +# CONFIG_WARN_WRITE_STRINGS is not set +# CONFIG_ESP32_APPTRACE_DEST_TRAX is not set +CONFIG_ESP32_APPTRACE_DEST_NONE=y +CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y +# CONFIG_MCPWM_ISR_IN_IRAM is not set +# CONFIG_EXTERNAL_COEX_ENABLE is not set +# CONFIG_ESP_WIFI_EXTERNAL_COEXIST_ENABLE is not set +# CONFIG_EVENT_LOOP_PROFILING is not set +CONFIG_POST_EVENTS_FROM_ISR=y +CONFIG_POST_EVENTS_FROM_IRAM_ISR=y +# CONFIG_OTA_ALLOW_HTTP is not set +# CONFIG_ESP_SYSTEM_PD_FLASH is not set +CONFIG_ESP32S3_DEEP_SLEEP_WAKEUP_DELAY=2000 +CONFIG_ESP_SLEEP_DEEP_SLEEP_WAKEUP_DELAY=2000 +CONFIG_ESP32S3_RTC_CLK_SRC_INT_RC=y +# CONFIG_ESP32S3_RTC_CLK_SRC_EXT_CRYS is not set +# CONFIG_ESP32S3_RTC_CLK_SRC_EXT_OSC is not set +# CONFIG_ESP32S3_RTC_CLK_SRC_INT_8MD256 is not set +CONFIG_ESP32S3_RTC_CLK_CAL_CYCLES=1024 +CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y +# CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION is not set +CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 +CONFIG_ESP32_PHY_MAX_TX_POWER=20 +# CONFIG_REDUCE_PHY_TX_POWER is not set +# CONFIG_ESP32_REDUCE_PHY_TX_POWER is not set +CONFIG_ESP_SYSTEM_PM_POWER_DOWN_CPU=y +CONFIG_PM_POWER_DOWN_TAGMEM_IN_LIGHT_SLEEP=y +# CONFIG_ESP32S3_SPIRAM_SUPPORT is not set +# CONFIG_ESP32S3_DEFAULT_CPU_FREQ_80 is not set +CONFIG_ESP32S3_DEFAULT_CPU_FREQ_160=y +# CONFIG_ESP32S3_DEFAULT_CPU_FREQ_240 is not set +CONFIG_ESP32S3_DEFAULT_CPU_FREQ_MHZ=160 +CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 +CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 +CONFIG_MAIN_TASK_STACK_SIZE=3584 +CONFIG_CONSOLE_UART_DEFAULT=y +# CONFIG_CONSOLE_UART_CUSTOM is not set +# CONFIG_CONSOLE_UART_NONE is not set +# CONFIG_ESP_CONSOLE_UART_NONE is not set +CONFIG_CONSOLE_UART=y +CONFIG_CONSOLE_UART_NUM=0 +CONFIG_CONSOLE_UART_BAUDRATE=115200 +CONFIG_INT_WDT=y +CONFIG_INT_WDT_TIMEOUT_MS=300 +CONFIG_INT_WDT_CHECK_CPU1=y +CONFIG_TASK_WDT=y +CONFIG_ESP_TASK_WDT=y +# CONFIG_TASK_WDT_PANIC is not set +CONFIG_TASK_WDT_TIMEOUT_S=5 +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y +# CONFIG_ESP32_DEBUG_STUBS_ENABLE is not set +CONFIG_ESP32S3_DEBUG_OCDAWARE=y +CONFIG_BROWNOUT_DET=y +CONFIG_ESP32S3_BROWNOUT_DET=y +CONFIG_ESP32S3_BROWNOUT_DET=y +CONFIG_BROWNOUT_DET_LVL_SEL_7=y +CONFIG_ESP32S3_BROWNOUT_DET_LVL_SEL_7=y +# CONFIG_BROWNOUT_DET_LVL_SEL_6 is not set +# CONFIG_ESP32S3_BROWNOUT_DET_LVL_SEL_6 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_5 is not set +# CONFIG_ESP32S3_BROWNOUT_DET_LVL_SEL_5 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_4 is not set +# CONFIG_ESP32S3_BROWNOUT_DET_LVL_SEL_4 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_3 is not set +# CONFIG_ESP32S3_BROWNOUT_DET_LVL_SEL_3 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_2 is not set +# CONFIG_ESP32S3_BROWNOUT_DET_LVL_SEL_2 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_1 is not set +# CONFIG_ESP32S3_BROWNOUT_DET_LVL_SEL_1 is not set +CONFIG_BROWNOUT_DET_LVL=7 +CONFIG_ESP32S3_BROWNOUT_DET_LVL=7 +CONFIG_IPC_TASK_STACK_SIZE=1280 +CONFIG_TIMER_TASK_STACK_SIZE=3584 +CONFIG_ESP32_WIFI_ENABLED=y +CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 +CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 +# CONFIG_ESP32_WIFI_STATIC_TX_BUFFER is not set +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y +CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1 +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32 +# CONFIG_ESP32_WIFI_CSI_ENABLED is not set +CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y +CONFIG_ESP32_WIFI_TX_BA_WIN=6 +CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y +CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y +CONFIG_ESP32_WIFI_RX_BA_WIN=6 +CONFIG_ESP32_WIFI_RX_BA_WIN=6 +CONFIG_ESP32_WIFI_NVS_ENABLED=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y +# CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1 is not set +CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752 +CONFIG_ESP32_WIFI_MGMT_SBUF_NUM=32 +CONFIG_ESP32_WIFI_IRAM_OPT=y +CONFIG_ESP32_WIFI_RX_IRAM_OPT=y +CONFIG_ESP32_WIFI_ENABLE_WPA3_SAE=y +CONFIG_ESP32_WIFI_ENABLE_WPA3_OWE_STA=y +CONFIG_WPA_MBEDTLS_CRYPTO=y +CONFIG_WPA_MBEDTLS_TLS_CLIENT=y +# CONFIG_WPA_WAPI_PSK is not set +# CONFIG_WPA_SUITE_B_192 is not set +# CONFIG_WPA_11KV_SUPPORT is not set +# CONFIG_WPA_MBO_SUPPORT is not set +# CONFIG_WPA_DPP_SUPPORT is not set +# CONFIG_WPA_11R_SUPPORT is not set +# CONFIG_WPA_WPS_SOFTAP_REGISTRAR is not set +# CONFIG_WPA_WPS_STRICT is not set +# CONFIG_WPA_DEBUG_PRINT is not set +# CONFIG_WPA_TESTING_OPTIONS is not set +# CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH is not set +# CONFIG_ESP32_ENABLE_COREDUMP_TO_UART is not set +CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y +CONFIG_TIMER_TASK_PRIORITY=1 +CONFIG_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_TIMER_QUEUE_LENGTH=10 +# CONFIG_ENABLE_STATIC_TASK_CLEAN_UP_HOOK is not set +# CONFIG_HAL_ASSERTION_SILIENT is not set +# CONFIG_L2_TO_L3_COPY is not set +CONFIG_ESP_GRATUITOUS_ARP=y +CONFIG_GARP_TMR_INTERVAL=60 +CONFIG_TCPIP_RECVMBOX_SIZE=32 +CONFIG_TCP_MAXRTX=12 +CONFIG_TCP_SYNMAXRTX=12 +CONFIG_TCP_MSS=1440 +CONFIG_TCP_MSL=60000 +CONFIG_TCP_SND_BUF_DEFAULT=5760 +CONFIG_TCP_WND_DEFAULT=5760 +CONFIG_TCP_RECVMBOX_SIZE=6 +CONFIG_TCP_QUEUE_OOSEQ=y +CONFIG_TCP_OVERSIZE_MSS=y +# CONFIG_TCP_OVERSIZE_QUARTER_MSS is not set +# CONFIG_TCP_OVERSIZE_DISABLE is not set +CONFIG_UDP_RECVMBOX_SIZE=6 +CONFIG_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y +# CONFIG_TCPIP_TASK_AFFINITY_CPU0 is not set +# CONFIG_TCPIP_TASK_AFFINITY_CPU1 is not set +CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF +# CONFIG_PPP_SUPPORT is not set +CONFIG_ESP32S3_TIME_SYSCALL_USE_RTC_SYSTIMER=y +CONFIG_ESP32S3_TIME_SYSCALL_USE_RTC_FRC1=y +# CONFIG_ESP32S3_TIME_SYSCALL_USE_RTC is not set +# CONFIG_ESP32S3_TIME_SYSCALL_USE_SYSTIMER is not set +# CONFIG_ESP32S3_TIME_SYSCALL_USE_FRC1 is not set +# CONFIG_ESP32S3_TIME_SYSCALL_USE_NONE is not set +CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5 +CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 +CONFIG_ESP32_PTHREAD_STACK_MIN=768 +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_NO_AFFINITY=y +# CONFIG_ESP32_DEFAULT_PTHREAD_CORE_0 is not set +# CONFIG_ESP32_DEFAULT_PTHREAD_CORE_1 is not set +CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1 +CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread" +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y +# CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS is not set +# CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED is not set +CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y +CONFIG_SUPPORT_TERMIOS=y +CONFIG_SEMIHOSTFS_MAX_MOUNT_POINTS=1 +# End of deprecated options From 652b9f0f99c17116ca7b4c95d55e72ed9a08515f Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Fri, 9 Feb 2024 19:39:45 -0500 Subject: [PATCH 49/80] Supply `IDF_TARGETS` as an argument --- tasks/deps/idf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasks/deps/idf.py b/tasks/deps/idf.py index f4a6420c1..ffac9a600 100644 --- a/tasks/deps/idf.py +++ b/tasks/deps/idf.py @@ -5,4 +5,4 @@ @task def install(c): - c.run(f'{os.environ["IDF_PATH"]}/install.sh') + c.run(f'{os.environ["IDF_PATH"]}/install.sh "{os.environ["IDF_TARGETS"]}"') From bf06b7a3197914d5dfedd90764f99e3e7510f374 Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Sat, 10 Feb 2024 00:10:49 -0500 Subject: [PATCH 50/80] Add `deps.idf.scons-env-gen` task --- .gitignore | 1 + site_scons/env.py | 3 ++ tasks/deps/idf.py | 74 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 78 insertions(+) diff --git a/.gitignore b/.gitignore index e65be2def..940bea4ab 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ *.egg-info .cargo .direnv +.esp-idf .espressif .platformio .ruff_cache diff --git a/site_scons/env.py b/site_scons/env.py index 9f62c64c6..cce738c9a 100755 --- a/site_scons/env.py +++ b/site_scons/env.py @@ -6,6 +6,7 @@ import typing _CARGO_HOME = '.cargo' +_IDF_BUILD = '.esp-idf' _IDF_TOOLS_PATH = '.espressif' _VIRTUAL_ENV = '.venv' @@ -25,6 +26,8 @@ for key, value in { **DIRENV_INSTALLED, 'CARGO_HOME': _CARGO_HOME, + 'IDF_BUILD': _IDF_BUILD, + 'IDF_BUILD_SCONS_ESP32S3': f'{_IDF_BUILD}/scons/esp32s3.json', 'IDF_PATH': 'lib/esp-idf', 'IDF_TOOLS_PATH': _IDF_TOOLS_PATH, 'REPO_ROOT': '.', diff --git a/tasks/deps/idf.py b/tasks/deps/idf.py index ffac9a600..ce027101f 100644 --- a/tasks/deps/idf.py +++ b/tasks/deps/idf.py @@ -1,4 +1,6 @@ +import json import os +import shlex from invoke import task @@ -6,3 +8,75 @@ @task def install(c): c.run(f'{os.environ["IDF_PATH"]}/install.sh "{os.environ["IDF_TARGETS"]}"') + + +@task +def scons_env_gen(c): + # forgive me lord, for i have sinned + # esp-idf really doesn't like multi-binary builds... + # to get around this, we instead link a static object with a shared + # installation of esp-idf, however, scons needs the following information + # generated so that the experience is seamless + + prefix = f'. {os.environ["IDF_PATH"]}/export.sh' + + with c.prefix(prefix): + # we insert a \r to allow us to ignore export.sh output + result = c.run('echo -e \'\\r\'"$PATH"') + + path = result.stdout.strip().split('\r')[-1] + + # keep only the new paths + idf_path = list(set(path.split(':')) ^ set(result.env['PATH'].split(':'))) + + for target in os.environ['IDF_TARGETS'].split(','): + build = f'{os.environ["IDF_BUILD"]}/march/{target}' + src = f'lib/march/{target}' + + c.run( + f'cmake -B "{build}" -S "{src}"', + env={ + 'IDF_TARGET': target, + 'PATH': path, + }, + ) + + with open(f'{build}/compile_commands.json') as f: + compile_commands = json.load(f) + + main_c = f'{src}/main/main.c' + main = list( + filter(lambda x: x['file'].endswith(main_c), compile_commands) + )[0] + + flags = shlex.split(main['command']) + + def startswith(x): + return lambda y: y.startswith(x) + + includes = list(filter(startswith('-I'), flags)) + includes = [include.removeprefix('-I') for include in includes] + + options = list(filter(startswith('-f'), flags)) + options.remove('-fdiagnostics-color=always') + + defines = list(filter(startswith('-D'), flags)) + optimiation = list(filter(startswith('-O'), flags)) + debug = list(filter(startswith('-g'), flags)) + march = list(filter(startswith('-m'), flags)) + std = list(filter(startswith('-std'), flags)) + + cflags = options + defines + optimiation + debug + march + std + + env = { + 'prefix': f'xtensa-{target}-elf-', + 'cflags': cflags, + 'includes': includes, + 'path': idf_path, + } + + env_file = os.environ['IDF_BUILD_SCONS_ESP32S3'] + + os.makedirs(os.path.dirname(env_file), exist_ok=True) + with open(env_file, 'w') as f: + json.dump(env, f, indent=4) From 02a676b4b8af260c02660bf255bb6d131cba2f5b Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Sat, 10 Feb 2024 00:14:05 -0500 Subject: [PATCH 51/80] Manage `esp-idf` dependency install with `invoke` --- .envrc | 11 ++++++++++- site_scons/env.py | 1 + 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/.envrc b/.envrc index 927789bf0..200ffc8fe 100644 --- a/.envrc +++ b/.envrc @@ -26,12 +26,21 @@ use flake if [ ! -f "$DIRENV_INSTALLED_IDF_TOOLS" ]; then msg_info 'installing idf-tools since they seem to be missing' - "$IDF_PATH/install.sh" "$IDF_TARGETS" + invoke deps.idf.install touch "$DIRENV_INSTALLED_IDF_TOOLS" fi +if [ ! -f "$DIRENV_INSTALLED_SCONS_ESP_IDF_ENVIRONMENT" ]; then + msg_info 'generating scons esp-idf environment since is seems to be missing' + + invoke deps.idf.scons-env-gen + + touch "$DIRENV_INSTALLED_SCONS_ESP_IDF_ENVIRONMENT" +fi + + if [ ! -d "$VIRTUAL_ENV" ]; then msg_info "creating \`$VIRTUAL_ENV\` because it doesn't seem to exist" diff --git a/site_scons/env.py b/site_scons/env.py index cce738c9a..9f304e95f 100755 --- a/site_scons/env.py +++ b/site_scons/env.py @@ -17,6 +17,7 @@ 'CRATES': _CARGO_HOME, 'IDF_TOOLS': _IDF_TOOLS_PATH, 'PYTHON_REQUIREMENTS': _VIRTUAL_ENV, + 'SCONS_ESP_IDF_ENVIRONMENT': _IDF_BUILD, }.items() } From 9cc4caed748b926912d4678550e59e86a29edba6 Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Sat, 10 Feb 2024 00:35:31 -0500 Subject: [PATCH 52/80] Add `deps.direnv.installed` task --- tasks/deps/__init__.py | 2 ++ tasks/deps/direnv.py | 9 +++++++++ 2 files changed, 11 insertions(+) create mode 100644 tasks/deps/direnv.py diff --git a/tasks/deps/__init__.py b/tasks/deps/__init__.py index 36d0a4ff3..ac5e3159e 100644 --- a/tasks/deps/__init__.py +++ b/tasks/deps/__init__.py @@ -2,6 +2,7 @@ from . import ( cargo, + direnv, idf, python, ) @@ -9,5 +10,6 @@ ns = Collection() ns.add_collection(cargo) +ns.add_collection(direnv) ns.add_collection(idf) ns.add_collection(python) diff --git a/tasks/deps/direnv.py b/tasks/deps/direnv.py new file mode 100644 index 000000000..2f95bf61b --- /dev/null +++ b/tasks/deps/direnv.py @@ -0,0 +1,9 @@ +import os + +from invoke import task + + +@task +def installed(c, var): + path = os.environ[f'DIRENV_INSTALLED_{var}'] + c.run(f'touch "{path}"') From d187aca31446ee7c112597b9bb323ee6f9d0fa81 Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Sat, 10 Feb 2024 00:42:27 -0500 Subject: [PATCH 53/80] Create `.direnv.installed` with `invoke` --- .envrc | 8 -------- tasks/deps/cargo.py | 9 +++++++-- tasks/deps/idf.py | 11 ++++++++--- tasks/deps/python.py | 9 +++++++-- 4 files changed, 22 insertions(+), 15 deletions(-) diff --git a/.envrc b/.envrc index 200ffc8fe..f0dbb181e 100644 --- a/.envrc +++ b/.envrc @@ -27,8 +27,6 @@ if [ ! -f "$DIRENV_INSTALLED_IDF_TOOLS" ]; then msg_info 'installing idf-tools since they seem to be missing' invoke deps.idf.install - - touch "$DIRENV_INSTALLED_IDF_TOOLS" fi @@ -36,8 +34,6 @@ if [ ! -f "$DIRENV_INSTALLED_SCONS_ESP_IDF_ENVIRONMENT" ]; then msg_info 'generating scons esp-idf environment since is seems to be missing' invoke deps.idf.scons-env-gen - - touch "$DIRENV_INSTALLED_SCONS_ESP_IDF_ENVIRONMENT" fi @@ -53,8 +49,6 @@ if [ ! -f "$DIRENV_INSTALLED_PYTHON_REQUIREMENTS" ]; then msg_info 'installing python requirements since they seem to be missing' invoke deps.python.install-requirements - - touch "$DIRENV_INSTALLED_PYTHON_REQUIREMENTS" fi @@ -65,8 +59,6 @@ if [ ! -f "$DIRENV_INSTALLED_CRATES" ]; then msg_info 'installing rust crates since they seem to be missing' invoke deps.cargo.install - - touch "$DIRENV_INSTALLED_CRATES" fi diff --git a/tasks/deps/cargo.py b/tasks/deps/cargo.py index 27b79e776..123f896fa 100644 --- a/tasks/deps/cargo.py +++ b/tasks/deps/cargo.py @@ -1,7 +1,12 @@ -from invoke import task +from invoke import ( + call, + task, +) +from . import direnv -@task + +@task(post=[call(direnv.installed, 'CRATES')]) def install(c): result = c.run('./tools/cargo-install-gen.py --config \'crates.toml\'') diff --git a/tasks/deps/idf.py b/tasks/deps/idf.py index ce027101f..79c78f617 100644 --- a/tasks/deps/idf.py +++ b/tasks/deps/idf.py @@ -2,15 +2,20 @@ import os import shlex -from invoke import task +from invoke import ( + call, + task, +) +from . import direnv -@task + +@task(post=[call(direnv.installed, 'IDF_TOOLS')]) def install(c): c.run(f'{os.environ["IDF_PATH"]}/install.sh "{os.environ["IDF_TARGETS"]}"') -@task +@task(post=[call(direnv.installed, 'SCONS_ESP_IDF_ENVIRONMENT')]) def scons_env_gen(c): # forgive me lord, for i have sinned # esp-idf really doesn't like multi-binary builds... diff --git a/tasks/deps/python.py b/tasks/deps/python.py index eeef3d432..348415638 100644 --- a/tasks/deps/python.py +++ b/tasks/deps/python.py @@ -1,7 +1,12 @@ -from invoke import task +from invoke import ( + call, + task, +) +from . import direnv -@task + +@task(post=[call(direnv.installed, 'PYTHON_REQUIREMENTS')]) def install_requirements(c): c.run('pip install --requirement requirements.txt') c.run('pip install --requirement requirements-local.txt') From 29b129baefa24b2e0b299fd529a08de9fc49b0d7 Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Sat, 10 Feb 2024 01:37:33 -0500 Subject: [PATCH 54/80] Define `idf()` --- site_scons/env.py | 39 +++++++++++++++++++++++++++++++++++++++ tasks/deps/idf.py | 17 +++++++++++------ 2 files changed, 50 insertions(+), 6 deletions(-) diff --git a/site_scons/env.py b/site_scons/env.py index 9f304e95f..e8f40faad 100755 --- a/site_scons/env.py +++ b/site_scons/env.py @@ -1,10 +1,13 @@ #!/usr/bin/env python3 import argparse +import json import os import shlex import typing +from SCons.Script.SConscript import SConsEnvironment + _CARGO_HOME = '.cargo' _IDF_BUILD = '.esp-idf' _IDF_TOOLS_PATH = '.espressif' @@ -44,6 +47,42 @@ } +def idf(env: SConsEnvironment, target: str) -> SConsEnvironment: + env = env.Clone() + + with open(PATHS[f'IDF_BUILD_SCONS_{target.upper()}']) as f: + idf = json.load(f) + + env.AppendENVPath('PATH', idf['path']) + + env.AppendUnique( + CPPPATH=idf['includes'], + CPPDEFINES=idf['defines'], + CCFLAGS=idf['options'] + + idf['optimization'] + + idf['debug'] + + idf['march'] + + idf['std'], + ) + + prefix = idf['prefix'] + + env.Replace( + **{ + key: f'{prefix}{val}' + for key, val in { + 'AR': 'ar', + 'AS': 'as', + 'CC': 'gcc', + 'CXX': 'g++', + 'SHLINK': 'ld', + }.items() + } + ) + + return env + + if __name__ == '__main__': parser = argparse.ArgumentParser( prog='env.py', diff --git a/tasks/deps/idf.py b/tasks/deps/idf.py index 79c78f617..25d0d31ce 100644 --- a/tasks/deps/idf.py +++ b/tasks/deps/idf.py @@ -62,22 +62,27 @@ def startswith(x): includes = list(filter(startswith('-I'), flags)) includes = [include.removeprefix('-I') for include in includes] + defines = list(filter(startswith('-D'), flags)) + defines = [define.removeprefix('-D') for define in defines] + options = list(filter(startswith('-f'), flags)) options.remove('-fdiagnostics-color=always') - defines = list(filter(startswith('-D'), flags)) - optimiation = list(filter(startswith('-O'), flags)) + optimization = list(filter(startswith('-O'), flags)) debug = list(filter(startswith('-g'), flags)) march = list(filter(startswith('-m'), flags)) std = list(filter(startswith('-std'), flags)) - cflags = options + defines + optimiation + debug + march + std - env = { 'prefix': f'xtensa-{target}-elf-', - 'cflags': cflags, - 'includes': includes, 'path': idf_path, + 'includes': includes, + 'defines': defines, + 'options': options, + 'optimization': optimization, + 'debug': debug, + 'march': march, + 'std': std, } env_file = os.environ['IDF_BUILD_SCONS_ESP32S3'] From 6fdc603dd6d100eaacfa4af612bfd43556981a85 Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Sat, 10 Feb 2024 01:40:03 -0500 Subject: [PATCH 55/80] Create `esp32s3` environment --- SConstruct.py | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/SConstruct.py b/SConstruct.py index 7b223fbbc..e88c1bf4c 100644 --- a/SConstruct.py +++ b/SConstruct.py @@ -2,7 +2,7 @@ import os -from env import ENV +import env as uenv EnsureSConsVersion(4, 5, 2) EnsurePythonVersion(3, 11) @@ -13,7 +13,7 @@ env = Environment( ENV={ - **ENV, + **uenv.ENV, 'PATH': os.environ['PATH'], 'TERM': os.environ.get('TERM'), }, @@ -22,8 +22,25 @@ 'Phony', ], ) +env.AppendUnique( + CCFLAGS=[ + '-Wall', + '-Wextra', + '-Wpedantic', + '-g', + '-std=gnu17', + ] +) + +esp32s3 = uenv.idf(env, 'esp32s3') + +envs = { + 'env': env, + 'esp32s3': esp32s3, +} Export('env') +Export('envs') can = env.SConscript( From f2386af2e541d84d93a2266d4ec50a38037908c9 Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Sat, 10 Feb 2024 03:38:03 -0500 Subject: [PATCH 56/80] Register `libprebuilt.a` with `esp-idf` --- lib/march/esp32s3/main/.gitignore | 1 + lib/march/esp32s3/main/CMakeLists.txt | 11 +++++------ tasks/deps/idf.py | 4 ++++ 3 files changed, 10 insertions(+), 6 deletions(-) create mode 100644 lib/march/esp32s3/main/.gitignore diff --git a/lib/march/esp32s3/main/.gitignore b/lib/march/esp32s3/main/.gitignore new file mode 100644 index 000000000..f0bd85567 --- /dev/null +++ b/lib/march/esp32s3/main/.gitignore @@ -0,0 +1 @@ +libprebuilt.a diff --git a/lib/march/esp32s3/main/CMakeLists.txt b/lib/march/esp32s3/main/CMakeLists.txt index 311e51093..0173819e8 100644 --- a/lib/march/esp32s3/main/CMakeLists.txt +++ b/lib/march/esp32s3/main/CMakeLists.txt @@ -1,6 +1,5 @@ -idf_component_register( - SRCS - "main.c" - INCLUDE_DIRS - "" -) +idf_component_register(SRCS "main.c") + +add_prebuilt_library(prebuilt "libprebuilt.a") + +target_link_libraries(${COMPONENT_LIB} PRIVATE prebuilt) diff --git a/tasks/deps/idf.py b/tasks/deps/idf.py index 25d0d31ce..88c7054b3 100644 --- a/tasks/deps/idf.py +++ b/tasks/deps/idf.py @@ -38,6 +38,10 @@ def scons_env_gen(c): build = f'{os.environ["IDF_BUILD"]}/march/{target}' src = f'lib/march/{target}' + # create our symlink placeholder to make cmake happy + libprebuilt = f'{src}/main/libprebuilt.a' + c.run(f'touch "{libprebuilt}"') + c.run( f'cmake -B "{build}" -S "{src}"', env={ From 6b4a210ad9e892026f8bb07f7317de6718f12022 Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Sat, 10 Feb 2024 03:42:14 -0500 Subject: [PATCH 57/80] Prepend `PATH` so Python modules can be found --- site_scons/env.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/site_scons/env.py b/site_scons/env.py index e8f40faad..918e75cf3 100755 --- a/site_scons/env.py +++ b/site_scons/env.py @@ -53,8 +53,6 @@ def idf(env: SConsEnvironment, target: str) -> SConsEnvironment: with open(PATHS[f'IDF_BUILD_SCONS_{target.upper()}']) as f: idf = json.load(f) - env.AppendENVPath('PATH', idf['path']) - env.AppendUnique( CPPPATH=idf['includes'], CPPDEFINES=idf['defines'], @@ -65,6 +63,8 @@ def idf(env: SConsEnvironment, target: str) -> SConsEnvironment: + idf['std'], ) + env.PrependENVPath('PATH', idf['path']) + prefix = idf['prefix'] env.Replace( From 86c535e8cd45e65698afa867d2163b5577ba865e Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Sat, 10 Feb 2024 03:46:20 -0500 Subject: [PATCH 58/80] Remove existing symlink to prevent failures --- tasks/deps/idf.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tasks/deps/idf.py b/tasks/deps/idf.py index 88c7054b3..04825d9c0 100644 --- a/tasks/deps/idf.py +++ b/tasks/deps/idf.py @@ -40,6 +40,7 @@ def scons_env_gen(c): # create our symlink placeholder to make cmake happy libprebuilt = f'{src}/main/libprebuilt.a' + c.run(f'rm "{libprebuilt}"') c.run(f'touch "{libprebuilt}"') c.run( From 3fbfbef73f912c0b618026c5bbce02295f13d46d Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Sat, 10 Feb 2024 04:15:43 -0500 Subject: [PATCH 59/80] Suppress `cmake` regeneration --- lib/march/esp32s3/CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/march/esp32s3/CMakeLists.txt b/lib/march/esp32s3/CMakeLists.txt index 8563a9aa5..8a82d46f1 100644 --- a/lib/march/esp32s3/CMakeLists.txt +++ b/lib/march/esp32s3/CMakeLists.txt @@ -2,4 +2,6 @@ cmake_minimum_required(VERSION 3.27.8) include($ENV{IDF_PATH}/tools/cmake/project.cmake) +set(CMAKE_SUPPRESS_REGENERATION ON) + project(selfdrive) From 073dc373f1295b861e4578c8bfa4bb622f4ba69c Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Sat, 10 Feb 2024 04:33:20 -0500 Subject: [PATCH 60/80] Forcefully remove in case `libprebuilt.a` doesn't exist --- tasks/deps/idf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasks/deps/idf.py b/tasks/deps/idf.py index 04825d9c0..39c690eae 100644 --- a/tasks/deps/idf.py +++ b/tasks/deps/idf.py @@ -40,7 +40,7 @@ def scons_env_gen(c): # create our symlink placeholder to make cmake happy libprebuilt = f'{src}/main/libprebuilt.a' - c.run(f'rm "{libprebuilt}"') + c.run(f'rm -f "{libprebuilt}"') c.run(f'touch "{libprebuilt}"') c.run( From 6def751192ac8d18b789ac283dfbabc42ce40811 Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Sat, 10 Feb 2024 04:37:38 -0500 Subject: [PATCH 61/80] Change project name to `firmware` --- lib/march/esp32s3/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/march/esp32s3/CMakeLists.txt b/lib/march/esp32s3/CMakeLists.txt index 8a82d46f1..b671a7553 100644 --- a/lib/march/esp32s3/CMakeLists.txt +++ b/lib/march/esp32s3/CMakeLists.txt @@ -4,4 +4,4 @@ include($ENV{IDF_PATH}/tools/cmake/project.cmake) set(CMAKE_SUPPRESS_REGENERATION ON) -project(selfdrive) +project(firmware) From 4a15fc23f7a98c35ffaec9ecb6e9e6939fd1738f Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Sat, 10 Feb 2024 04:42:48 -0500 Subject: [PATCH 62/80] Add `EspIdf` pseudo-builder --- SConstruct.py | 1 + site_scons/site_tools/EspIdf.py | 67 +++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 site_scons/site_tools/EspIdf.py diff --git a/SConstruct.py b/SConstruct.py index e88c1bf4c..f616301db 100644 --- a/SConstruct.py +++ b/SConstruct.py @@ -19,6 +19,7 @@ }, tools=[ 'default', + 'EspIdf', 'Phony', ], ) diff --git a/site_scons/site_tools/EspIdf.py b/site_scons/site_tools/EspIdf.py new file mode 100644 index 000000000..d5a70ad78 --- /dev/null +++ b/site_scons/site_tools/EspIdf.py @@ -0,0 +1,67 @@ +import os + +from SCons.Defaults import ( + Copy, + Mkdir, +) +from SCons.Util.filelock import FileLock + + +OUTPUTS = [ + 'bootloader/bootloader.bin', + 'bootloader/bootloader.elf', + 'bootloader/bootloader.map', + 'partition_table/partition-table.bin', + '.bin_timestamp', + 'app-flash_args', + 'bootloader-flash_args', + 'flash_app_args', + 'flash_args', + 'flash_bootloader_args', + 'flash_project_args', + 'flasher_args.json', + 'ldgen_libraries', + 'partition-table-flash_args', + 'firmware.bin', + 'firmware.elf', + 'firmware.map', + 'x509_crt_bundle.S', +] + + +def EspIdf(env, library, target): + build = f'{os.environ["IDF_BUILD"]}/march/{target}' + outdir = f'{os.path.dirname(library.abspath)}/esp-idf' + libprebuilt = ( + f'{os.environ["REPO_ROOT"]}/lib/march/{target}/main/libprebuilt.a' + ) + + actions = [ + f'rm -f {libprebuilt}', + f'ln -s {library.abspath} {libprebuilt}', + f'ninja -C {build}', + Mkdir(f'{outdir}/bootloader'), + Mkdir(f'{outdir}/partition_table'), + *[ + Copy(f'{outdir}/{output}', f'{build}/{output}') + for output in OUTPUTS + ], + ] + + with FileLock(build, timeout=0, writer=True) as _: + out = env.Command( + [f'{outdir}/{output}' for output in OUTPUTS], library, actions + ) + + return out + + +def generate(env): + if env.Detect('EspIdf'): + return + + env.AddMethod(EspIdf, 'EspIdf') + + +def exists(env): + return env.Detect('EspIdf') From 98ed91cfc5c9ac81d1bdeb42905723694d61d347 Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Sat, 10 Feb 2024 15:46:00 -0500 Subject: [PATCH 63/80] Set `RANLIB` --- site_scons/env.py | 1 + 1 file changed, 1 insertion(+) diff --git a/site_scons/env.py b/site_scons/env.py index 918e75cf3..f8834e5b8 100755 --- a/site_scons/env.py +++ b/site_scons/env.py @@ -75,6 +75,7 @@ def idf(env: SConsEnvironment, target: str) -> SConsEnvironment: 'AS': 'as', 'CC': 'gcc', 'CXX': 'g++', + 'RANLIB': 'ranlib', 'SHLINK': 'ld', }.items() } From 0f3377cf67d63396f6caa568164a897581c08ff4 Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Sat, 10 Feb 2024 22:59:39 -0500 Subject: [PATCH 64/80] Add additional outputs --- site_scons/site_tools/EspIdf.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/site_scons/site_tools/EspIdf.py b/site_scons/site_tools/EspIdf.py index d5a70ad78..33c2efdb7 100644 --- a/site_scons/site_tools/EspIdf.py +++ b/site_scons/site_tools/EspIdf.py @@ -8,13 +8,20 @@ OUTPUTS = [ + 'bootloader/config/sdkconfig.h', + 'bootloader/.bin_timestamp', 'bootloader/bootloader.bin', 'bootloader/bootloader.elf', 'bootloader/bootloader.map', + 'bootloader/prefix_map_gdbinit', + 'config/sdkconfig.h', 'partition_table/partition-table.bin', '.bin_timestamp', 'app-flash_args', 'bootloader-flash_args', + 'firmware.bin', + 'firmware.elf', + 'firmware.map', 'flash_app_args', 'flash_args', 'flash_bootloader_args', @@ -22,9 +29,7 @@ 'flasher_args.json', 'ldgen_libraries', 'partition-table-flash_args', - 'firmware.bin', - 'firmware.elf', - 'firmware.map', + 'prefix_map_gdbinit', 'x509_crt_bundle.S', ] From 1ae1f4208654612871e42fc62d89e15db557e574 Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Sat, 10 Feb 2024 23:00:12 -0500 Subject: [PATCH 65/80] Allow for `outdir` to be changed --- site_scons/site_tools/EspIdf.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/site_scons/site_tools/EspIdf.py b/site_scons/site_tools/EspIdf.py index 33c2efdb7..35e137a2e 100644 --- a/site_scons/site_tools/EspIdf.py +++ b/site_scons/site_tools/EspIdf.py @@ -34,9 +34,10 @@ ] -def EspIdf(env, library, target): +def EspIdf(env, library, target, *, outdir='esp-idf'): build = f'{os.environ["IDF_BUILD"]}/march/{target}' - outdir = f'{os.path.dirname(library.abspath)}/esp-idf' + outdir = f'{os.path.dirname(library.abspath)}/{outdir}' + libprebuilt = ( f'{os.environ["REPO_ROOT"]}/lib/march/{target}/main/libprebuilt.a' ) From 46c7fc95dba1973e41ab66ceed859a76ae11cbf8 Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Sat, 10 Feb 2024 23:14:52 -0500 Subject: [PATCH 66/80] Lock `esp-idf` build with `flock` --- site_scons/site_tools/EspIdf.py | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/site_scons/site_tools/EspIdf.py b/site_scons/site_tools/EspIdf.py index 35e137a2e..7724487b3 100644 --- a/site_scons/site_tools/EspIdf.py +++ b/site_scons/site_tools/EspIdf.py @@ -1,11 +1,5 @@ import os -from SCons.Defaults import ( - Copy, - Mkdir, -) -from SCons.Util.filelock import FileLock - OUTPUTS = [ 'bootloader/config/sdkconfig.h', @@ -42,22 +36,26 @@ def EspIdf(env, library, target, *, outdir='esp-idf'): f'{os.environ["REPO_ROOT"]}/lib/march/{target}/main/libprebuilt.a' ) + # since the esp-idf build is shared resource we need to + # lock it while we compile and link with out shared library actions = [ + f'exec {{LOCKFD}}> {build}/scons.lock', + 'echo $$LOCKFD', + 'flock --exclusive $$LOCKFD', f'rm -f {libprebuilt}', f'ln -s {library.abspath} {libprebuilt}', f'ninja -C {build}', - Mkdir(f'{outdir}/bootloader'), - Mkdir(f'{outdir}/partition_table'), - *[ - Copy(f'{outdir}/{output}', f'{build}/{output}') - for output in OUTPUTS - ], + f'mkdir -p {outdir}/bootloader', + f'mkdir -p {outdir}/partition_table', + *[f'cp {build}/{output} {outdir}/{output}' for output in OUTPUTS], + 'exec {LOCKFD}>&-', ] - with FileLock(build, timeout=0, writer=True) as _: - out = env.Command( - [f'{outdir}/{output}' for output in OUTPUTS], library, actions - ) + actions = ' && '.join(actions) + + out = env.Command( + [f'{outdir}/{output}' for output in OUTPUTS], library, actions + ) return out From 36d3c8567102468fc9269b6f0596dd4b67218d59 Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Sat, 10 Feb 2024 23:21:25 -0500 Subject: [PATCH 67/80] Enable reproducible builds --- lib/march/esp32s3/sdkconfig | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/march/esp32s3/sdkconfig b/lib/march/esp32s3/sdkconfig index d7d64a70c..b061578c5 100644 --- a/lib/march/esp32s3/sdkconfig +++ b/lib/march/esp32s3/sdkconfig @@ -355,7 +355,7 @@ CONFIG_APP_BUILD_TYPE_APP_2NDBOOT=y CONFIG_APP_BUILD_GENERATE_BINARIES=y CONFIG_APP_BUILD_BOOTLOADER=y CONFIG_APP_BUILD_USE_FLASH_SECTIONS=y -# CONFIG_APP_REPRODUCIBLE_BUILD is not set +CONFIG_APP_REPRODUCIBLE_BUILD=y # CONFIG_APP_NO_BLOBS is not set # end of Build type @@ -366,7 +366,6 @@ CONFIG_APP_BUILD_USE_FLASH_SECTIONS=y # # Bootloader manager # -CONFIG_BOOTLOADER_COMPILE_TIME_DATE=y CONFIG_BOOTLOADER_PROJECT_VER=1 # end of Bootloader manager @@ -419,7 +418,6 @@ CONFIG_SECURE_ROM_DL_MODE_ENABLED=y # # Application manager # -CONFIG_APP_COMPILE_TIME_DATE=y # CONFIG_APP_EXCLUDE_PROJECT_VER_VAR is not set # CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR is not set # CONFIG_APP_PROJECT_VER_FROM_CONFIG is not set From 84eb226601ce0e7c7e5eb1542ab96dedabdbd8a2 Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Sat, 10 Feb 2024 23:21:55 -0500 Subject: [PATCH 68/80] Exclude project information from app --- lib/march/esp32s3/sdkconfig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/march/esp32s3/sdkconfig b/lib/march/esp32s3/sdkconfig index b061578c5..d046113e1 100644 --- a/lib/march/esp32s3/sdkconfig +++ b/lib/march/esp32s3/sdkconfig @@ -418,8 +418,8 @@ CONFIG_SECURE_ROM_DL_MODE_ENABLED=y # # Application manager # -# CONFIG_APP_EXCLUDE_PROJECT_VER_VAR is not set -# CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR is not set +CONFIG_APP_EXCLUDE_PROJECT_VER_VAR=y +CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR=y # CONFIG_APP_PROJECT_VER_FROM_CONFIG is not set CONFIG_APP_RETRIEVE_LEN_ELF_SHA=9 # end of Application manager From 2a867caab5618c91f83476b94d8a8d5d25e915bc Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Sat, 10 Feb 2024 23:31:31 -0500 Subject: [PATCH 69/80] Add `toml-sort` as a dependency --- pyproject.toml | 1 + requirements.txt | 38 +++++++++++++++++++++++--------------- 2 files changed, 24 insertions(+), 15 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 27ec057af..ce7d4e13d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,6 +27,7 @@ dependencies = [ 'ruff', 'scons', 'strictyaml', + 'toml-sort', 'tqdm', 'yamlfix', 'yamllint', diff --git a/requirements.txt b/requirements.txt index 200ba10e9..eeeded9fe 100644 --- a/requirements.txt +++ b/requirements.txt @@ -101,9 +101,9 @@ can-isotp==2.0.4 \ --hash=sha256:2cbe8bfc0d4a9357024657ac63cdc9bb9937e3df6789095112ad62d0073cd2a7 \ --hash=sha256:32b235fdb7e30f8005a875d3682339ef1123b92c2e76e97a299d5347c88630e2 # via selfdrive (pyproject.toml) -cantools==39.4.3 \ - --hash=sha256:6063ab49624e683f3cc2e69845f97cac6f413f888a00b35db59ee1e40bb3f9a0 \ - --hash=sha256:7aaa3d246bc5328bb29c681fc8162d2800be05ee095b3edb9470fa1478f9e506 +cantools==39.4.4 \ + --hash=sha256:6e8e918b6671a62a9f3990546ece5623e1deb71defb1cef85a9955ac301da99e \ + --hash=sha256:853f569dcb81d8a1384c4bd041dd2b30b2def60e9c124ece0f013776a44f7386 # via # opencan-cand # selfdrive (pyproject.toml) @@ -349,9 +349,9 @@ humanfriendly==10.0 \ --hash=sha256:1697e1a8a8f550fd43c2865cd84542fc175a61dcb779b6fee18cf6b6ccba1477 \ --hash=sha256:6b0b831ce8f15f7300721aa49829fc4e83921a9a301cc7f606be6686a2288ddc # via coloredlogs -identify==2.5.33 \ - --hash=sha256:161558f9fe4559e1557e1bff323e8631f6a0e4837f7497767c1782832f16b62d \ - --hash=sha256:d40ce5fcd762817627670da8a7d8d8e65f24342d14539c59488dc603bf662e34 +identify==2.5.34 \ + --hash=sha256:a4316013779e433d08b96e5eabb7f641e6c7942e4ab5d4c509ebd2e7a8994aed \ + --hash=sha256:ee17bc9d499899bc9eaec1ac7bf2dc9eedd480db9d88b96d123d3b64a9d34f5d # via pre-commit idna==3.6 \ --hash=sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca \ @@ -750,9 +750,9 @@ platformdirs==4.2.0 \ platformio==6.1.13 \ --hash=sha256:ed7c6397f0ced579bc8137c8253465c0cfab6c0cc38d4f63da4502e995bdb5ce # via selfdrive (pyproject.toml) -pre-commit==3.6.0 \ - --hash=sha256:c255039ef399049a5544b6ce13d135caba8f2c28c3b4033277a788f434308376 \ - --hash=sha256:d30bad9abf165f7785c15a21a1f46da7d0677cb00ee7ff4c579fd38922efe15d +pre-commit==3.6.1 \ + --hash=sha256:9fe989afcf095d2c4796ce7c553cf28d4d4a9b9346de3cda079bcf40748454a4 \ + --hash=sha256:c90961d8aa706f75d60935aba09469a6b0bcb8345f127c3fbee4bdc5f114cf4b # via selfdrive (pyproject.toml) pydantic==2.6.1 \ --hash=sha256:0b6a909df3192245cb736509a92ff69e4fef76116feffec68e93a567347bae6f \ @@ -989,9 +989,17 @@ toml==0.10.2 \ --hash=sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b \ --hash=sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f # via maison -tqdm==4.66.1 \ - --hash=sha256:d302b3c5b53d47bce91fea46679d9c3c6508cf6332229aa1e7d8653723793386 \ - --hash=sha256:d88e651f9db8d8551a62556d3cff9e3034274ca5d66e93197cf2490e2dcb69c7 +toml-sort==0.23.1 \ + --hash=sha256:69ae60de9c4d67478533697eb4119092e2b30ddffe5ca09bbad3912905c935a0 \ + --hash=sha256:833728c48b0f8d509aecd9ae8347768ca3a9332977b32c9fd2002932f0eb9c90 + # via selfdrive (pyproject.toml) +tomlkit==0.12.3 \ + --hash=sha256:75baf5012d06501f07bee5bf8e801b9f343e7aac5a92581f20f80ce632e6b5a4 \ + --hash=sha256:b0a645a9156dc7cb5d3a1f0d4bab66db287fcb8e0430bdd4664a095ea16414ba + # via toml-sort +tqdm==4.66.2 \ + --hash=sha256:1ee4f8a893eb9bef51c6e35730cebf234d5d0b6bd112b0271e10ed7c24a02bd9 \ + --hash=sha256:6cd52cdf0fef0e0f543299cfc96fec90d7b8a7e88745f411ec33eb44d5ed3531 # via selfdrive (pyproject.toml) typing-extensions==4.9.0 \ --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ @@ -1000,9 +1008,9 @@ typing-extensions==4.9.0 \ # pydantic # pydantic-core # python-can -uc-micro-py==1.0.2 \ - --hash=sha256:30ae2ac9c49f39ac6dce743bd187fcd2b574b16ca095fa74cd9396795c954c54 \ - --hash=sha256:8c9110c309db9d9e87302e2f4ad2c3152770930d88ab385cd544e7a7e75f3de0 +uc-micro-py==1.0.3 \ + --hash=sha256:d321b92cff673ec58027c04015fcaa8bb1e005478643ff4a500882eaab88c48a \ + --hash=sha256:db1dffff340817673d7b466ec86114a9dc0e9d4d9b5ba229d9d60e5c12600cd5 # via linkify-it-py urllib3==2.2.0 \ --hash=sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20 \ From e10e2edcc1b2d770acdf5b538e4a77443cd8cf79 Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Sat, 10 Feb 2024 23:34:24 -0500 Subject: [PATCH 70/80] Add `toml-sort-fix` hook --- .pre-commit-config.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 46d292cb5..ddf46d33a 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -39,6 +39,11 @@ repos: hooks: - id: ruff + - repo: https://github.com/pappasam/toml-sort + rev: v0.23.1 + hooks: + - id: toml-sort-fix + - repo: https://github.com/lyz-code/yamlfix/ rev: 1.16.0 hooks: From 7feea5e2d0b860a67b68438713b4693f80002320 Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Sat, 10 Feb 2024 23:45:41 -0500 Subject: [PATCH 71/80] Keep trailing commas in arrays --- pyproject.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index ce7d4e13d..a74eac641 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -59,6 +59,9 @@ force-single-line = true [tool.setuptools.packages.find] exclude = ['*'] +[tool.tomlsort] +trailing_comma_inline_array = true + [tool.yamlfix] exclude = ['common/cantools/**/*.yml'] none_representation = '~' From 32c5c386d0501a0bf8e07d2252bc37c17ead531d Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Sat, 10 Feb 2024 23:47:03 -0500 Subject: [PATCH 72/80] Apply `toml-sort-fix` hook --- book.toml | 10 ++++---- pyproject.toml | 64 ++++++++++++++++++++++++-------------------------- 2 files changed, 36 insertions(+), 38 deletions(-) diff --git a/book.toml b/book.toml index b0ed1f08c..4ed16d6ed 100644 --- a/book.toml +++ b/book.toml @@ -1,13 +1,13 @@ [book] -title = 'Autonomy Lab Documentation' +title = 'Autonomy Lab Documentation' description = 'The official documentation of Autonomy Lab at The Cooper Union for the Advancement of Science and Art' -language = 'en' -src = 'docs' +language = 'en' +src = 'docs' [build] build-dir = 'build/docs' [output.html] -mathjax-support = true -no-section-label = true +mathjax-support = true +no-section-label = true git-repository-url = 'https://github.com/CooperUnion/selfdrive' diff --git a/pyproject.toml b/pyproject.toml index a74eac641..fa571295d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,51 +1,49 @@ [build-system] -requires = ['setuptools'] +requires = ['setuptools'] build-backend = 'setuptools.build_meta' [project] -name = 'selfdrive' +name = 'selfdrive' description = "Autonomy Lab's monorepo" -version = '0.0.0' - +version = '0.0.0' authors = [ - {name = 'Autonomy Lab'}, + {name = 'Autonomy Lab'}, ] license = {'text' = 'GPL-3.0-only'} - requires-python = '>=3.12' dependencies = [ - 'black', - 'can-isotp', - 'cantools', - 'invoke', - 'matplotlib', - 'mdformat-gfm', - 'opencan-cand', - 'pip-tools', - 'platformio', - 'pre-commit', - 'ruff', - 'scons', - 'strictyaml', - 'toml-sort', - 'tqdm', - 'yamlfix', - 'yamllint', + 'black', + 'can-isotp', + 'cantools', + 'invoke', + 'matplotlib', + 'mdformat-gfm', + 'opencan-cand', + 'pip-tools', + 'platformio', + 'pre-commit', + 'ruff', + 'scons', + 'strictyaml', + 'toml-sort', + 'tqdm', + 'yamlfix', + 'yamllint', ] [project.urls] repo = 'https://github.com/CooperUnion/selfdrive' [tool.black] -line-length = 79 +line-length = 79 skip-string-normalization = true [tool.pip-tools] -allow-unsafe = true +allow-unsafe = true generate-hashes = true -strip-extras = false -upgrade = true -verbose = true +strip-extras = false +upgrade = true +verbose = true [tool.ruff] line-length = 79 @@ -63,8 +61,8 @@ exclude = ['*'] trailing_comma_inline_array = true [tool.yamlfix] -exclude = ['common/cantools/**/*.yml'] -none_representation = '~' -section_whitelines = 1 -sequence_style = 'block_style' -whitelines = 1 +exclude = ['common/cantools/**/*.yml'] +none_representation = '~' +section_whitelines = 1 +sequence_style = 'block_style' +whitelines = 1 From 82b80041399f12cade2fd30216556a8832cc5c25 Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Sat, 10 Feb 2024 23:49:45 -0500 Subject: [PATCH 73/80] Add `schema` as a dependency --- pyproject.toml | 1 + requirements.txt | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index fa571295d..a68c10c1d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -23,6 +23,7 @@ dependencies = [ 'platformio', 'pre-commit', 'ruff', + 'schema', 'scons', 'strictyaml', 'toml-sort', diff --git a/requirements.txt b/requirements.txt index eeeded9fe..a9c2b2203 100644 --- a/requirements.txt +++ b/requirements.txt @@ -225,6 +225,10 @@ coloredlogs==15.0.1 \ --hash=sha256:612ee75c546f53e92e70049c9dbfcc18c935a2b9a53b66085ce9ef6a6e5c0934 \ --hash=sha256:7c991aa71a4577af2f82600d8f8f3a89f936baeaf9b50a9c197da014e5bf16b0 # via opencan-cand +contextlib2==21.6.0 \ + --hash=sha256:3fbdb64466afd23abaf6c977627b75b6139a5a3e8ce38405c5b413aed7a0471f \ + --hash=sha256:ab1e2bfe1d01d968e1b7e8d9023bc51ef3509bba217bb730cee3827e1ee82869 + # via schema contourpy==1.2.0 \ --hash=sha256:0274c1cb63625972c0c007ab14dd9ba9e199c36ae1a231ce45d725cbcbfd10a8 \ --hash=sha256:0d7e03c0f9a4f90dc18d4e77e9ef4ec7b7bbb437f7f675be8e530d65ae6ef956 \ @@ -953,6 +957,10 @@ ruyaml==0.91.0 \ --hash=sha256:50e0ee3389c77ad340e209472e0effd41ae0275246df00cdad0a067532171755 \ --hash=sha256:6ce9de9f4d082d696d3bde264664d1bcdca8f5a9dff9d1a1f1a127969ab871ab # via yamlfix +schema==0.7.5 \ + --hash=sha256:f06717112c61895cabc4707752b88716e8420a8819d71404501e114f91043197 \ + --hash=sha256:f3ffdeeada09ec34bf40d7d79996d9f7175db93b7a5065de0faa7f41083c1e6c + # via selfdrive (pyproject.toml) scons==4.6.0.post1 \ --hash=sha256:9e0527b7a924e7af2b312c1f8961ef2776847bdc46a4d886af5a75f301da7ce3 \ --hash=sha256:d467a34546f5366a32e4d4419611d0138dd680210f24aa8491ebe9e4b83456cf From 270840c4ddb65a032da07323c45bce6ba44f97ac Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Sun, 11 Feb 2024 00:25:36 -0500 Subject: [PATCH 74/80] Add `Component` pseudo-builder --- SConstruct.py | 1 + site_scons/site_tools/Component.py | 38 ++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 site_scons/site_tools/Component.py diff --git a/SConstruct.py b/SConstruct.py index f616301db..4dd514805 100644 --- a/SConstruct.py +++ b/SConstruct.py @@ -19,6 +19,7 @@ }, tools=[ 'default', + 'Component', 'EspIdf', 'Phony', ], diff --git a/site_scons/site_tools/Component.py b/site_scons/site_tools/Component.py new file mode 100644 index 000000000..683a0a322 --- /dev/null +++ b/site_scons/site_tools/Component.py @@ -0,0 +1,38 @@ +import tomllib + +from schema import ( + Regex, + Schema, +) + + +schema = Schema( + { + 'metadata': { + 'name': Regex(r'^[a-z]+$'), + 'description': str, + }, + } +) + + +def Component(env, target, config): + with open(config.srcnode().abspath, 'rb') as f: + config = tomllib.load(f) + + assert schema.validate(config) == config + + name = config['metadata']['name'] + + return env.Phony(f'component:{name}', target) + + +def generate(env): + if env.Detect('Component'): + return + + env.AddMethod(Component, 'Component') + + +def exists(env): + return env.Detect('Component') From e739b17c67c414719d8235547b09c9497e9de8cd Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Sun, 11 Feb 2024 00:30:23 -0500 Subject: [PATCH 75/80] Add `jk` component --- SConstruct.py | 5 +++++ components/SConscript.py | 13 +++++++++++++ components/jk/SConscript.py | 15 +++++++++++++++ components/jk/component.toml | 3 +++ components/jk/src/SConscript.py | 10 ++++++++++ components/jk/src/main.c | 10 ++++++++++ 6 files changed, 56 insertions(+) create mode 100644 components/SConscript.py create mode 100644 components/jk/SConscript.py create mode 100644 components/jk/component.toml create mode 100644 components/jk/src/SConscript.py create mode 100644 components/jk/src/main.c diff --git a/SConstruct.py b/SConstruct.py index 4dd514805..39c964193 100644 --- a/SConstruct.py +++ b/SConstruct.py @@ -50,6 +50,11 @@ variant_dir=f'{build}/can', duplicate=False, ) +components = env.SConscript( + 'components/SConscript.py', + variant_dir=f'{build}/components', + duplicate=False, +) ember_bl = env.SConscript( 'dbw/ember_bl/SConscript.py', variant_dir=f'{build}/dbw/ember_bl', diff --git a/components/SConscript.py b/components/SConscript.py new file mode 100644 index 000000000..bc346e9cf --- /dev/null +++ b/components/SConscript.py @@ -0,0 +1,13 @@ +# ruff: noqa: F821 + +Import('env') + + +components = [] + +components += env.SConscript( + 'jk/SConscript.py', +) + + +Return('components') diff --git a/components/jk/SConscript.py b/components/jk/SConscript.py new file mode 100644 index 000000000..a54b165cb --- /dev/null +++ b/components/jk/SConscript.py @@ -0,0 +1,15 @@ +# ruff: noqa: F821 + +Import('env') +Import('envs') + + +firmware = env.SConscript( + 'src/SConscript.py', + exports={'env': envs['esp32s3']}, +) + +component = env.Component(firmware, env.File('component.toml')) + + +Return('component') diff --git a/components/jk/component.toml b/components/jk/component.toml new file mode 100644 index 000000000..c1525eee4 --- /dev/null +++ b/components/jk/component.toml @@ -0,0 +1,3 @@ +[metadata] +name = 'jk' +description = 'jk... unless?' diff --git a/components/jk/src/SConscript.py b/components/jk/src/SConscript.py new file mode 100644 index 000000000..cfba8681a --- /dev/null +++ b/components/jk/src/SConscript.py @@ -0,0 +1,10 @@ +# ruff: noqa: F821 + +Import('env') + + +main = env.StaticLibrary('main.c')[0] +firmware = env.EspIdf(main, 'esp32s3') + + +Return('firmware') diff --git a/components/jk/src/main.c b/components/jk/src/main.c new file mode 100644 index 000000000..6032612ae --- /dev/null +++ b/components/jk/src/main.c @@ -0,0 +1,10 @@ +#include +#include + + +int app_main(void) +{ + printf("jk... unless?\n"); + + return EXIT_SUCCESS; +} From 0067fcda1589ec96a45f0daefad6edfb904f4d39 Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Sun, 11 Feb 2024 00:32:35 -0500 Subject: [PATCH 76/80] Set `VIRTUAL_ENV_DISABLE_PROMPT` --- site_scons/env.py | 1 + 1 file changed, 1 insertion(+) diff --git a/site_scons/env.py b/site_scons/env.py index f8834e5b8..ea46e74bd 100755 --- a/site_scons/env.py +++ b/site_scons/env.py @@ -44,6 +44,7 @@ **PATHS, 'CMAKE_GENERATOR': 'Ninja', 'IDF_TARGETS': 'esp32s3', + 'VIRTUAL_ENV_DISABLE_PROMPT': 'true', } From 77a63fffe549ffba122523e1e82278878403cdf6 Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Sun, 11 Feb 2024 00:47:33 -0500 Subject: [PATCH 77/80] Remove `scons` type annotations This is done so that we can still source the output of the script on the host's original environment possibly without `scons` installed. --- site_scons/env.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/site_scons/env.py b/site_scons/env.py index ea46e74bd..0a2e14631 100755 --- a/site_scons/env.py +++ b/site_scons/env.py @@ -6,7 +6,6 @@ import shlex import typing -from SCons.Script.SConscript import SConsEnvironment _CARGO_HOME = '.cargo' _IDF_BUILD = '.esp-idf' @@ -48,7 +47,7 @@ } -def idf(env: SConsEnvironment, target: str) -> SConsEnvironment: +def idf(env, target: str): env = env.Clone() with open(PATHS[f'IDF_BUILD_SCONS_{target.upper()}']) as f: From 524eac639dca023eebb724969fef05893fb712d2 Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Sun, 11 Feb 2024 02:53:45 -0500 Subject: [PATCH 78/80] Remove `dependencies` cache --- .github/actions/checkout/action.yml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/.github/actions/checkout/action.yml b/.github/actions/checkout/action.yml index 765884772..e786b0647 100644 --- a/.github/actions/checkout/action.yml +++ b/.github/actions/checkout/action.yml @@ -6,13 +6,6 @@ runs: using: composite steps: - - uses: actions/cache@v3.3.2 - with: - key: dependencies - path: | - .cargo - .venv - - uses: DeterminateSystems/nix-installer-action@v6 - uses: DeterminateSystems/magic-nix-cache-action@v2 From ffbe2867febac522fe8a9529bc62c3992ba4a14a Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Sun, 11 Feb 2024 03:00:15 -0500 Subject: [PATCH 79/80] Move to `.toml` over `.yml` for metadata --- docs/getting-started.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/getting-started.md b/docs/getting-started.md index f21002f7d..21fe169be 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -57,7 +57,7 @@ selfdrive/ | +-- component/ | |   +-- docs/ | |   +-- src/ -| |   +-- component.yml +| |   +-- component.toml | | | +-- ... | @@ -66,7 +66,7 @@ selfdrive/ +-- projects/ | +-- project/ | |   +-- docs/ -| |   +-- project.yml +| |   +-- project.toml | | | +-- ... | @@ -93,7 +93,7 @@ The `src` directory contains the source files. The contents and layout of this directory highly depend on the component language(s) and use case. It is best to see existing components to get a feel for it. -Finally, `component.yml` contains metadata related to the component. +Finally, `component.toml` contains metadata related to the component. ### [`docs/`] @@ -112,7 +112,7 @@ you're curious. The [`projects/`] directory contains projects that are composed of various components. Like a component, each project has a `docs/` -directory with symlinks to relevant documentation and a `project.yml` +directory with symlinks to relevant documentation and a `project.toml` with related metadata. ### [`can.yml`] From aa9a5940d1a3ff5319135c7646271e3e48fc0fa0 Mon Sep 17 00:00:00 2001 From: Jacob Koziej Date: Mon, 12 Feb 2024 21:32:05 -0500 Subject: [PATCH 80/80] `Alias` `target` explicitly as a `source` --- site_scons/site_tools/Component.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site_scons/site_tools/Component.py b/site_scons/site_tools/Component.py index 683a0a322..7a1ba4222 100644 --- a/site_scons/site_tools/Component.py +++ b/site_scons/site_tools/Component.py @@ -24,7 +24,7 @@ def Component(env, target, config): name = config['metadata']['name'] - return env.Phony(f'component:{name}', target) + return env.Alias(f'component:{name}', target, '') def generate(env):