Skip to content

Conversation

@ManasijaBhargavan
Copy link

@ManasijaBhargavan ManasijaBhargavan commented Dec 4, 2025

Finite State Machine & Logical Control Loop

Problem and Scope

We need the car to work

Description

It makes the car work

Adds a comment layout for what the ideal state machine loop looks like, what it calls, etc.

Gotchas and Limitations

Comments, code still needs to be written and validated

Testing

  • HOOTL testing
  • HITL testing
  • Human tested

Testing Details

None

Larger Impact

Key to later ECU work

Additional Context and Ticket

Works for #151 and with #158

khoulihan27 and others added 26 commits November 3, 2025 20:54
Co-authored-by: ManasijaBhargavan <ManasijaBhargavan@users.noreply.github.com>
# State Machine Incorrect BSE/APPS Violation

## Problem and Scope
> is this the final state machine or just for example purposes?
>
> An APPS/BSE Violation should not reset the state to precharge complete
as that would require re-pressing RTD to engage the motor.
>
> During EV active tech, we are required to press the brake and
throttle, show that the motor cuts power, and then the throttle by
itself to show the motor spins immediately after with no faults.

## Description
Removes the BSE / APPS Violation arrow from the state machine mermaid.

## Gotchas and Limitations
Integral part of drive active to verify the proper behavior still

## Testing

- [ ] HOOTL testing
- [ ] HITL testing
- [x] Human tested

### Testing Details
Renders correctly

<img width="624" height="735" alt="image"
src="https://github.com/user-attachments/assets/c1f5808d-4be9-4610-ad26-56d12de85477"
/>

## Larger Impact
Part of a larger effort to implement the ECU

## Additional Context and Ticket
Resolves #98
# Light Mode State Machine Diagram

## Problem and Scope
State machine diagram in light mode has the white arrows between states
disappear, making it functionally useless

## Description
Change the way the mermaid is generated by making the colors off of the
default background

## Gotchas and Limitations
May be difficult for automatic screen readers, but not sure how that is
supposed to work

## Testing

- [ ] HOOTL testing
- [ ] HITL testing
- [x] Human tested

### Testing Details

<details>
<summary>Light default</summary>
<img width="631" height="745" alt="image"
src="https://github.com/user-attachments/assets/0c49d340-3bca-4949-9280-a36845745746"
/>
</details>

<details>
<summary>Light colorblind</summary>
<img width="631" height="745" alt="image"
src="https://github.com/user-attachments/assets/87a769d9-1f55-424f-82f6-03372bdc1e24"
/>
</details>

<details>
<summary>Light tritanopia</summary>
<img width="631" height="745" alt="image"
src="https://github.com/user-attachments/assets/73718998-49b5-4154-a941-da3605815bb5"
/>
</details>

<details>
<summary>Dark default</summary>
<img width="631" height="745" alt="image"
src="https://github.com/user-attachments/assets/f75fe431-a542-413e-b8f7-4f9379d4a152"
/>
</details>

<details>
<summary>Dark colorblind</summary>
<img width="631" height="745" alt="image"
src="https://github.com/user-attachments/assets/7a791f5b-2f66-4f9d-b841-9f61baffe3ed"
/>
</details>

<details>
<summary>Dark tritanopia</summary>
<img width="631" height="745" alt="image"
src="https://github.com/user-attachments/assets/7fd9ea3c-a307-471b-9e90-8eec3ca765c3"
/>
</details>

<details>
<summary>Soft dark</summary>
<img width="631" height="745" alt="image"
src="https://github.com/user-attachments/assets/458b43d4-9d97-47fa-bee9-aa659836d5bf"
/>
</details>

## Larger Impact
Readability

## Additional Context and Ticket
Resolves #99
# G4 Peripheral Testing Project

## Problem and Scope
We will eventually have to test all of our peripheral abstractions on a
board, yet not all existing projects have a board configured with the
correct peripherals. This could potentially slow down the testing
process for peripheral abstraction, as what may end up happening is that
separate groups spend time on CubeMX simply trying to configure a board
to be able to test their own peripheral.

## Description
G4PERTESTING is a new project for a STM32G4 that has support for SPI,
CAN, TIM, GPIO, DMA (only for ADC), I2C, USART (more like UART
actually), and ADC.

The exact pins should be listed in G4 Peripheral Testing under Misc
Resources in the Gaucho Racing Wiki, or you can just open the .ioc file
that should be included with the project folder.

## Gotchas and Limitations
As hinted above, the peripheral configurations aren't exactly perfect.
USART only has support for asynchronous communication (which is just
UART) and DMA isn't configured for all of the peripherals. In the
future, we may have to boot up CubeMX again and properly configure those
peripherals, but for the most part everything else should have
sufficient support. Shoot me if they don't though.

## Testing

- [X] CMake Builds
- [x] HOOTL testing

### Testing Details
Without the actual peripheral abstractions to work with, there's nothing
really to test other than making sure you can actually get it to debug
properly (which it does).

## Larger Impact
Hopefully this makes peripheral testing a lot easier in the oncoming
weeks when they start being ready to test.

## Additional Context and Ticket

---------

Signed-off-by: Bailey Say <baileyasay@gmail.com>
Co-authored-by: Daniel Hansen <dchansen06@gmail.com>
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Daniel Hansen <105574022+dchansen06@users.noreply.github.com>
# Dependabot

## Problem and Scope
GitHub Actions get updated by 3rd parties, and it is important to keep
them up to date

## Description
Enable dependabot which will automatically open PRs for out of date
action workflows

## Gotchas and Limitations
Does not update anything else

## Testing

- [x] Human tested

### Testing Details
Requires waiting until Monday 7pm, but must be on the `main` branch

## Larger Impact
None

## Additional Context and Ticket
Should be helpful
# Forked Format Feature

## Problem and Scope
091547b failed since the secret was not
available on a fork on the format actions even though no formatting was
needed

## Description
Add a fallback to the default GitHub token if the secret is not
available

## Gotchas and Limitations
Auto format tools will fail to apply a commit if running without the
secret and a format is needed

## Testing

- [x] HOOTL testing
- [ ] HITL testing
- [x] Human tested

### Testing Details
Testing on #105

## Larger Impact
None

## Additional Context and Ticket
Helps #105 after #104
Bumps the actions-updates group with 4 updates:
[actions/checkout](https://github.com/actions/checkout),
[actions/setup-python](https://github.com/actions/setup-python),
[actions/upload-artifact](https://github.com/actions/upload-artifact)
and
[awalsh128/cache-apt-pkgs-action](https://github.com/awalsh128/cache-apt-pkgs-action).

Updates `actions/checkout` from 4 to 5
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/checkout/releases">actions/checkout's
releases</a>.</em></p>
<blockquote>
<h2>v5.0.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Update actions checkout to use node 24 by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2226">actions/checkout#2226</a></li>
<li>Prepare v5.0.0 release by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2238">actions/checkout#2238</a></li>
</ul>
<h2>⚠️ Minimum Compatible Runner Version</h2>
<p><strong>v2.327.1</strong><br />
<a
href="https://github.com/actions/runner/releases/tag/v2.327.1">Release
Notes</a></p>
<p>Make sure your runner is updated to this version or newer to use this
release.</p>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/checkout/compare/v4...v5.0.0">https://github.com/actions/checkout/compare/v4...v5.0.0</a></p>
<h2>v4.3.0</h2>
<h2>What's Changed</h2>
<ul>
<li>docs: update README.md by <a
href="https://github.com/motss"><code>@​motss</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1971">actions/checkout#1971</a></li>
<li>Add internal repos for checking out multiple repositories by <a
href="https://github.com/mouismail"><code>@​mouismail</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1977">actions/checkout#1977</a></li>
<li>Documentation update - add recommended permissions to Readme by <a
href="https://github.com/benwells"><code>@​benwells</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2043">actions/checkout#2043</a></li>
<li>Adjust positioning of user email note and permissions heading by <a
href="https://github.com/joshmgross"><code>@​joshmgross</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2044">actions/checkout#2044</a></li>
<li>Update README.md by <a
href="https://github.com/nebuk89"><code>@​nebuk89</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2194">actions/checkout#2194</a></li>
<li>Update CODEOWNERS for actions by <a
href="https://github.com/TingluoHuang"><code>@​TingluoHuang</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/2224">actions/checkout#2224</a></li>
<li>Update package dependencies by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2236">actions/checkout#2236</a></li>
<li>Prepare release v4.3.0 by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2237">actions/checkout#2237</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/motss"><code>@​motss</code></a> made
their first contribution in <a
href="https://redirect.github.com/actions/checkout/pull/1971">actions/checkout#1971</a></li>
<li><a href="https://github.com/mouismail"><code>@​mouismail</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/checkout/pull/1977">actions/checkout#1977</a></li>
<li><a href="https://github.com/benwells"><code>@​benwells</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/checkout/pull/2043">actions/checkout#2043</a></li>
<li><a href="https://github.com/nebuk89"><code>@​nebuk89</code></a> made
their first contribution in <a
href="https://redirect.github.com/actions/checkout/pull/2194">actions/checkout#2194</a></li>
<li><a href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/checkout/pull/2236">actions/checkout#2236</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/checkout/compare/v4...v4.3.0">https://github.com/actions/checkout/compare/v4...v4.3.0</a></p>
<h2>v4.2.2</h2>
<h2>What's Changed</h2>
<ul>
<li><code>url-helper.ts</code> now leverages well-known environment
variables by <a href="https://github.com/jww3"><code>@​jww3</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/1941">actions/checkout#1941</a></li>
<li>Expand unit test coverage for <code>isGhes</code> by <a
href="https://github.com/jww3"><code>@​jww3</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1946">actions/checkout#1946</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/checkout/compare/v4.2.1...v4.2.2">https://github.com/actions/checkout/compare/v4.2.1...v4.2.2</a></p>
<h2>v4.2.1</h2>
<h2>What's Changed</h2>
<ul>
<li>Check out other refs/* by commit if provided, fall back to ref by <a
href="https://github.com/orhantoy"><code>@​orhantoy</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1924">actions/checkout#1924</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/Jcambass"><code>@​Jcambass</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/checkout/pull/1919">actions/checkout#1919</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/checkout/compare/v4.2.0...v4.2.1">https://github.com/actions/checkout/compare/v4.2.0...v4.2.1</a></p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/actions/checkout/blob/main/CHANGELOG.md">actions/checkout's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<h2>V5.0.0</h2>
<ul>
<li>Update actions checkout to use node 24 by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2226">actions/checkout#2226</a></li>
</ul>
<h2>V4.3.0</h2>
<ul>
<li>docs: update README.md by <a
href="https://github.com/motss"><code>@​motss</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1971">actions/checkout#1971</a></li>
<li>Add internal repos for checking out multiple repositories by <a
href="https://github.com/mouismail"><code>@​mouismail</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1977">actions/checkout#1977</a></li>
<li>Documentation update - add recommended permissions to Readme by <a
href="https://github.com/benwells"><code>@​benwells</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2043">actions/checkout#2043</a></li>
<li>Adjust positioning of user email note and permissions heading by <a
href="https://github.com/joshmgross"><code>@​joshmgross</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2044">actions/checkout#2044</a></li>
<li>Update README.md by <a
href="https://github.com/nebuk89"><code>@​nebuk89</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2194">actions/checkout#2194</a></li>
<li>Update CODEOWNERS for actions by <a
href="https://github.com/TingluoHuang"><code>@​TingluoHuang</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/2224">actions/checkout#2224</a></li>
<li>Update package dependencies by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2236">actions/checkout#2236</a></li>
</ul>
<h2>v4.2.2</h2>
<ul>
<li><code>url-helper.ts</code> now leverages well-known environment
variables by <a href="https://github.com/jww3"><code>@​jww3</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/1941">actions/checkout#1941</a></li>
<li>Expand unit test coverage for <code>isGhes</code> by <a
href="https://github.com/jww3"><code>@​jww3</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1946">actions/checkout#1946</a></li>
</ul>
<h2>v4.2.1</h2>
<ul>
<li>Check out other refs/* by commit if provided, fall back to ref by <a
href="https://github.com/orhantoy"><code>@​orhantoy</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1924">actions/checkout#1924</a></li>
</ul>
<h2>v4.2.0</h2>
<ul>
<li>Add Ref and Commit outputs by <a
href="https://github.com/lucacome"><code>@​lucacome</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1180">actions/checkout#1180</a></li>
<li>Dependency updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>- <a
href="https://redirect.github.com/actions/checkout/pull/1777">actions/checkout#1777</a>,
<a
href="https://redirect.github.com/actions/checkout/pull/1872">actions/checkout#1872</a></li>
</ul>
<h2>v4.1.7</h2>
<ul>
<li>Bump the minor-npm-dependencies group across 1 directory with 4
updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1739">actions/checkout#1739</a></li>
<li>Bump actions/checkout from 3 to 4 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1697">actions/checkout#1697</a></li>
<li>Check out other refs/* by commit by <a
href="https://github.com/orhantoy"><code>@​orhantoy</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1774">actions/checkout#1774</a></li>
<li>Pin actions/checkout's own workflows to a known, good, stable
version. by <a href="https://github.com/jww3"><code>@​jww3</code></a> in
<a
href="https://redirect.github.com/actions/checkout/pull/1776">actions/checkout#1776</a></li>
</ul>
<h2>v4.1.6</h2>
<ul>
<li>Check platform to set archive extension appropriately by <a
href="https://github.com/cory-miller"><code>@​cory-miller</code></a> in
<a
href="https://redirect.github.com/actions/checkout/pull/1732">actions/checkout#1732</a></li>
</ul>
<h2>v4.1.5</h2>
<ul>
<li>Update NPM dependencies by <a
href="https://github.com/cory-miller"><code>@​cory-miller</code></a> in
<a
href="https://redirect.github.com/actions/checkout/pull/1703">actions/checkout#1703</a></li>
<li>Bump github/codeql-action from 2 to 3 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1694">actions/checkout#1694</a></li>
<li>Bump actions/setup-node from 1 to 4 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1696">actions/checkout#1696</a></li>
<li>Bump actions/upload-artifact from 2 to 4 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1695">actions/checkout#1695</a></li>
<li>README: Suggest <code>user.email</code> to be
<code>41898282+github-actions[bot]@users.noreply.github.com</code> by <a
href="https://github.com/cory-miller"><code>@​cory-miller</code></a> in
<a
href="https://redirect.github.com/actions/checkout/pull/1707">actions/checkout#1707</a></li>
</ul>
<h2>v4.1.4</h2>
<ul>
<li>Disable <code>extensions.worktreeConfig</code> when disabling
<code>sparse-checkout</code> by <a
href="https://github.com/jww3"><code>@​jww3</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1692">actions/checkout#1692</a></li>
<li>Add dependabot config by <a
href="https://github.com/cory-miller"><code>@​cory-miller</code></a> in
<a
href="https://redirect.github.com/actions/checkout/pull/1688">actions/checkout#1688</a></li>
<li>Bump the minor-actions-dependencies group with 2 updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1693">actions/checkout#1693</a></li>
<li>Bump word-wrap from 1.2.3 to 1.2.5 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1643">actions/checkout#1643</a></li>
</ul>
<h2>v4.1.3</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/checkout/commit/08c6903cd8c0fde910a37f88322edcfb5dd907a8"><code>08c6903</code></a>
Prepare v5.0.0 release (<a
href="https://redirect.github.com/actions/checkout/issues/2238">#2238</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/9f265659d3bb64ab1440b03b12f4d47a24320917"><code>9f26565</code></a>
Update actions checkout to use node 24 (<a
href="https://redirect.github.com/actions/checkout/issues/2226">#2226</a>)</li>
<li>See full diff in <a
href="https://github.com/actions/checkout/compare/v4...v5">compare
view</a></li>
</ul>
</details>
<br />

Updates `actions/setup-python` from 4 to 6
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/setup-python/releases">actions/setup-python's
releases</a>.</em></p>
<blockquote>
<h2>v6.0.0</h2>
<h2>What's Changed</h2>
<h3>Breaking Changes</h3>
<ul>
<li>Upgrade to node 24 by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/setup-python/pull/1164">actions/setup-python#1164</a></li>
</ul>
<p>Make sure your runner is on version v2.327.1 or later to ensure
compatibility with this release. <a
href="https://github.com/actions/runner/releases/tag/v2.327.1">See
Release Notes</a></p>
<h3>Enhancements:</h3>
<ul>
<li>Add support for <code>pip-version</code> by <a
href="https://github.com/priyagupta108"><code>@​priyagupta108</code></a>
in <a
href="https://redirect.github.com/actions/setup-python/pull/1129">actions/setup-python#1129</a></li>
<li>Enhance reading from .python-version by <a
href="https://github.com/krystof-k"><code>@​krystof-k</code></a> in <a
href="https://redirect.github.com/actions/setup-python/pull/787">actions/setup-python#787</a></li>
<li>Add version parsing from Pipfile by <a
href="https://github.com/aradkdj"><code>@​aradkdj</code></a> in <a
href="https://redirect.github.com/actions/setup-python/pull/1067">actions/setup-python#1067</a></li>
</ul>
<h3>Bug fixes:</h3>
<ul>
<li>Clarify pythonLocation behaviour for PyPy and GraalPy in environment
variables by <a
href="https://github.com/aparnajyothi-y"><code>@​aparnajyothi-y</code></a>
in <a
href="https://redirect.github.com/actions/setup-python/pull/1183">actions/setup-python#1183</a></li>
<li>Change missing cache directory error to warning by <a
href="https://github.com/aparnajyothi-y"><code>@​aparnajyothi-y</code></a>
in <a
href="https://redirect.github.com/actions/setup-python/pull/1182">actions/setup-python#1182</a></li>
<li>Add Architecture-Specific PATH Management for Python with --user
Flag on Windows by <a
href="https://github.com/aparnajyothi-y"><code>@​aparnajyothi-y</code></a>
in <a
href="https://redirect.github.com/actions/setup-python/pull/1122">actions/setup-python#1122</a></li>
<li>Include python version in PyPy python-version output by <a
href="https://github.com/cdce8p"><code>@​cdce8p</code></a> in <a
href="https://redirect.github.com/actions/setup-python/pull/1110">actions/setup-python#1110</a></li>
<li>Update docs: clarification on pip authentication with setup-python
by <a
href="https://github.com/priya-kinthali"><code>@​priya-kinthali</code></a>
in <a
href="https://redirect.github.com/actions/setup-python/pull/1156">actions/setup-python#1156</a></li>
</ul>
<h3>Dependency updates:</h3>
<ul>
<li>Upgrade idna from 2.9 to 3.7 in /<strong>tests</strong>/data by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/setup-python/pull/843">actions/setup-python#843</a></li>
<li>Upgrade form-data to fix critical vulnerabilities <a
href="https://redirect.github.com/actions/setup-python/issues/182">#182</a>
&amp; <a
href="https://redirect.github.com/actions/setup-python/issues/183">#183</a>
by <a
href="https://github.com/aparnajyothi-y"><code>@​aparnajyothi-y</code></a>
in <a
href="https://redirect.github.com/actions/setup-python/pull/1163">actions/setup-python#1163</a></li>
<li>Upgrade setuptools to 78.1.1 to fix path traversal vulnerability in
PackageIndex.download by <a
href="https://github.com/aparnajyothi-y"><code>@​aparnajyothi-y</code></a>
in <a
href="https://redirect.github.com/actions/setup-python/pull/1165">actions/setup-python#1165</a></li>
<li>Upgrade actions/checkout from 4 to 5 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/setup-python/pull/1181">actions/setup-python#1181</a></li>
<li>Upgrade <code>@​actions/tool-cache</code> from 2.0.1 to 2.0.2 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/setup-python/pull/1095">actions/setup-python#1095</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/krystof-k"><code>@​krystof-k</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/setup-python/pull/787">actions/setup-python#787</a></li>
<li><a href="https://github.com/cdce8p"><code>@​cdce8p</code></a> made
their first contribution in <a
href="https://redirect.github.com/actions/setup-python/pull/1110">actions/setup-python#1110</a></li>
<li><a href="https://github.com/aradkdj"><code>@​aradkdj</code></a> made
their first contribution in <a
href="https://redirect.github.com/actions/setup-python/pull/1067">actions/setup-python#1067</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/setup-python/compare/v5...v6.0.0">https://github.com/actions/setup-python/compare/v5...v6.0.0</a></p>
<h2>v5.6.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Workflow updates related to Ubuntu 20.04 by <a
href="https://github.com/aparnajyothi-y"><code>@​aparnajyothi-y</code></a>
in <a
href="https://redirect.github.com/actions/setup-python/pull/1065">actions/setup-python#1065</a></li>
<li>Fix for Candidate Not Iterable Error by <a
href="https://github.com/aparnajyothi-y"><code>@​aparnajyothi-y</code></a>
in <a
href="https://redirect.github.com/actions/setup-python/pull/1082">actions/setup-python#1082</a></li>
<li>Upgrade semver and <code>@​types/semver</code> by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/setup-python/pull/1091">actions/setup-python#1091</a></li>
<li>Upgrade prettier from 2.8.8 to 3.5.3 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/setup-python/pull/1046">actions/setup-python#1046</a></li>
<li>Upgrade ts-jest from 29.1.2 to 29.3.2 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/setup-python/pull/1081">actions/setup-python#1081</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/setup-python/compare/v5...v5.6.0">https://github.com/actions/setup-python/compare/v5...v5.6.0</a></p>
<h2>v5.5.0</h2>
<h2>What's Changed</h2>
<h3>Enhancements:</h3>
<ul>
<li>Support free threaded Python versions like '3.13t' by <a
href="https://github.com/colesbury"><code>@​colesbury</code></a> in <a
href="https://redirect.github.com/actions/setup-python/pull/973">actions/setup-python#973</a></li>
<li>Enhance Workflows: Include ubuntu-arm runners, Add e2e Testing for
free threaded and Upgrade <code>@​action/cache</code> from 4.0.0 to
4.0.3 by <a
href="https://github.com/priya-kinthali"><code>@​priya-kinthali</code></a>
in <a
href="https://redirect.github.com/actions/setup-python/pull/1056">actions/setup-python#1056</a></li>
<li>Add support for .tool-versions file in setup-python by <a
href="https://github.com/mahabaleshwars"><code>@​mahabaleshwars</code></a>
in <a
href="https://redirect.github.com/actions/setup-python/pull/1043">actions/setup-python#1043</a></li>
</ul>
<h3>Bug fixes:</h3>
<ul>
<li>Fix architecture for pypy on Linux ARM64 by <a
href="https://github.com/mayeut"><code>@​mayeut</code></a> in <a
href="https://redirect.github.com/actions/setup-python/pull/1011">actions/setup-python#1011</a>
This update maps arm64 to aarch64 for Linux ARM64 PyPy
installations.</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/setup-python/commit/e797f83bcb11b83ae66e0230d6156d7c80228e7c"><code>e797f83</code></a>
Upgrade to node 24 (<a
href="https://redirect.github.com/actions/setup-python/issues/1164">#1164</a>)</li>
<li><a
href="https://github.com/actions/setup-python/commit/3d1e2d2ca0a067f27da6fec484fce7f5256def85"><code>3d1e2d2</code></a>
Revert &quot;Enhance cache-dependency-path handling to support files
outside the w...</li>
<li><a
href="https://github.com/actions/setup-python/commit/65b071217a8539818fdb8b54561bcbae40380a54"><code>65b0712</code></a>
Clarify pythonLocation behavior for PyPy and GraalPy in environment
variables...</li>
<li><a
href="https://github.com/actions/setup-python/commit/5b668cf7652160527499ee14ceaff4be9306cb88"><code>5b668cf</code></a>
Bump actions/checkout from 4 to 5 (<a
href="https://redirect.github.com/actions/setup-python/issues/1181">#1181</a>)</li>
<li><a
href="https://github.com/actions/setup-python/commit/f62a0e252fe7114e86949abfa6e1e89f85bb38c2"><code>f62a0e2</code></a>
Change missing cache directory error to warning (<a
href="https://redirect.github.com/actions/setup-python/issues/1182">#1182</a>)</li>
<li><a
href="https://github.com/actions/setup-python/commit/9322b3ca74000aeb2c01eb777b646334015ddd72"><code>9322b3c</code></a>
Upgrade setuptools to 78.1.1 to fix path traversal vulnerability in
PackageIn...</li>
<li><a
href="https://github.com/actions/setup-python/commit/fbeb884f69f0ac1c0257302f62aa524c2824b649"><code>fbeb884</code></a>
Bump form-data to fix critical vulnerabilities <a
href="https://redirect.github.com/actions/setup-python/issues/182">#182</a>
&amp; <a
href="https://redirect.github.com/actions/setup-python/issues/183">#183</a>
(<a
href="https://redirect.github.com/actions/setup-python/issues/1163">#1163</a>)</li>
<li><a
href="https://github.com/actions/setup-python/commit/03bb6152f4f691b9d64579a1bd791904a083c452"><code>03bb615</code></a>
Bump idna from 2.9 to 3.7 in /<strong>tests</strong>/data (<a
href="https://redirect.github.com/actions/setup-python/issues/843">#843</a>)</li>
<li><a
href="https://github.com/actions/setup-python/commit/36da51d563b70a972897150555bb025096d65565"><code>36da51d</code></a>
Add version parsing from Pipfile (<a
href="https://redirect.github.com/actions/setup-python/issues/1067">#1067</a>)</li>
<li><a
href="https://github.com/actions/setup-python/commit/3c6f142cc0036d53007e92fa1e327564a4cfb7aa"><code>3c6f142</code></a>
update documentation (<a
href="https://redirect.github.com/actions/setup-python/issues/1156">#1156</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/actions/setup-python/compare/v4...v6">compare
view</a></li>
</ul>
</details>
<br />

Updates `actions/upload-artifact` from 4 to 5
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/upload-artifact/releases">actions/upload-artifact's
releases</a>.</em></p>
<blockquote>
<h2>v5.0.0</h2>
<h2>What's Changed</h2>
<p><strong>BREAKING CHANGE:</strong> this update supports Node
<code>v24.x</code>. This is not a breaking change per-se but we're
treating it as such.</p>
<ul>
<li>Update README.md by <a
href="https://github.com/GhadimiR"><code>@​GhadimiR</code></a> in <a
href="https://redirect.github.com/actions/upload-artifact/pull/681">actions/upload-artifact#681</a></li>
<li>Update README.md by <a
href="https://github.com/nebuk89"><code>@​nebuk89</code></a> in <a
href="https://redirect.github.com/actions/upload-artifact/pull/712">actions/upload-artifact#712</a></li>
<li>Readme: spell out the first use of GHES by <a
href="https://github.com/danwkennedy"><code>@​danwkennedy</code></a> in
<a
href="https://redirect.github.com/actions/upload-artifact/pull/727">actions/upload-artifact#727</a></li>
<li>Update GHES guidance to include reference to Node 20 version by <a
href="https://github.com/patrikpolyak"><code>@​patrikpolyak</code></a>
in <a
href="https://redirect.github.com/actions/upload-artifact/pull/725">actions/upload-artifact#725</a></li>
<li>Bump <code>@actions/artifact</code> to <code>v4.0.0</code></li>
<li>Prepare <code>v5.0.0</code> by <a
href="https://github.com/danwkennedy"><code>@​danwkennedy</code></a> in
<a
href="https://redirect.github.com/actions/upload-artifact/pull/734">actions/upload-artifact#734</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/GhadimiR"><code>@​GhadimiR</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/upload-artifact/pull/681">actions/upload-artifact#681</a></li>
<li><a href="https://github.com/nebuk89"><code>@​nebuk89</code></a> made
their first contribution in <a
href="https://redirect.github.com/actions/upload-artifact/pull/712">actions/upload-artifact#712</a></li>
<li><a
href="https://github.com/danwkennedy"><code>@​danwkennedy</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/upload-artifact/pull/727">actions/upload-artifact#727</a></li>
<li><a
href="https://github.com/patrikpolyak"><code>@​patrikpolyak</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/upload-artifact/pull/725">actions/upload-artifact#725</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/upload-artifact/compare/v4...v5.0.0">https://github.com/actions/upload-artifact/compare/v4...v5.0.0</a></p>
<h2>v4.6.2</h2>
<h2>What's Changed</h2>
<ul>
<li>Update to use artifact 2.3.2 package &amp; prepare for new
upload-artifact release by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/upload-artifact/pull/685">actions/upload-artifact#685</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/upload-artifact/pull/685">actions/upload-artifact#685</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/upload-artifact/compare/v4...v4.6.2">https://github.com/actions/upload-artifact/compare/v4...v4.6.2</a></p>
<h2>v4.6.1</h2>
<h2>What's Changed</h2>
<ul>
<li>Update to use artifact 2.2.2 package by <a
href="https://github.com/yacaovsnc"><code>@​yacaovsnc</code></a> in <a
href="https://redirect.github.com/actions/upload-artifact/pull/673">actions/upload-artifact#673</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/upload-artifact/compare/v4...v4.6.1">https://github.com/actions/upload-artifact/compare/v4...v4.6.1</a></p>
<h2>v4.6.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Expose env vars to control concurrency and timeout by <a
href="https://github.com/yacaovsnc"><code>@​yacaovsnc</code></a> in <a
href="https://redirect.github.com/actions/upload-artifact/pull/662">actions/upload-artifact#662</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/upload-artifact/compare/v4...v4.6.0">https://github.com/actions/upload-artifact/compare/v4...v4.6.0</a></p>
<h2>v4.5.0</h2>
<h2>What's Changed</h2>
<ul>
<li>fix: deprecated <code>Node.js</code> version in action by <a
href="https://github.com/hamirmahal"><code>@​hamirmahal</code></a> in <a
href="https://redirect.github.com/actions/upload-artifact/pull/578">actions/upload-artifact#578</a></li>
<li>Add new <code>artifact-digest</code> output by <a
href="https://github.com/bdehamer"><code>@​bdehamer</code></a> in <a
href="https://redirect.github.com/actions/upload-artifact/pull/656">actions/upload-artifact#656</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/hamirmahal"><code>@​hamirmahal</code></a> made
their first contribution in <a
href="https://redirect.github.com/actions/upload-artifact/pull/578">actions/upload-artifact#578</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/upload-artifact/commit/330a01c490aca151604b8cf639adc76d48f6c5d4"><code>330a01c</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/upload-artifact/issues/734">#734</a>
from actions/danwkennedy/prepare-5.0.0</li>
<li><a
href="https://github.com/actions/upload-artifact/commit/03f282445299bbefc96171af272a984663b63a26"><code>03f2824</code></a>
Update <code>github.dep.yml</code></li>
<li><a
href="https://github.com/actions/upload-artifact/commit/905a1ecb5915b264cbc519e4eb415b5d82916018"><code>905a1ec</code></a>
Prepare <code>v5.0.0</code></li>
<li><a
href="https://github.com/actions/upload-artifact/commit/2d9f9cdfa99fedaddba68e9b5b5c281eca26cc63"><code>2d9f9cd</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/upload-artifact/issues/725">#725</a>
from patrikpolyak/patch-1</li>
<li><a
href="https://github.com/actions/upload-artifact/commit/9687587dec67f2a8bc69104e183d311c42af6d6f"><code>9687587</code></a>
Merge branch 'main' into patch-1</li>
<li><a
href="https://github.com/actions/upload-artifact/commit/2848b2cda0e5190984587ec6bb1f36730ca78d50"><code>2848b2c</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/upload-artifact/issues/727">#727</a>
from danwkennedy/patch-1</li>
<li><a
href="https://github.com/actions/upload-artifact/commit/9b511775fd9ce8c5710b38eea671f856de0e70a7"><code>9b51177</code></a>
Spell out the first use of GHES</li>
<li><a
href="https://github.com/actions/upload-artifact/commit/cd231ca1eda77976a84805c4194a1954f56b0727"><code>cd231ca</code></a>
Update GHES guidance to include reference to Node 20 version</li>
<li><a
href="https://github.com/actions/upload-artifact/commit/de65e23aa2b7e23d713bb51fbfcb6d502f8667d8"><code>de65e23</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/upload-artifact/issues/712">#712</a>
from actions/nebuk89-patch-1</li>
<li><a
href="https://github.com/actions/upload-artifact/commit/8747d8cd7632611ad6060b528f3e0f654c98869c"><code>8747d8c</code></a>
Update README.md</li>
<li>Additional commits viewable in <a
href="https://github.com/actions/upload-artifact/compare/v4...v5">compare
view</a></li>
</ul>
</details>
<br />

Updates `awalsh128/cache-apt-pkgs-action` from 1.5.4 to 1.6.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/awalsh128/cache-apt-pkgs-action/releases">awalsh128/cache-apt-pkgs-action's
releases</a>.</em></p>
<blockquote>
<h2>v1.6.0</h2>
<h2>What's Changed</h2>
<ul>
<li>fix: skip invalid lines by <a
href="https://github.com/SMoraisAnsys"><code>@​SMoraisAnsys</code></a>
in <a
href="https://redirect.github.com/awalsh128/cache-apt-pkgs-action/pull/160">awalsh128/cache-apt-pkgs-action#160</a></li>
<li>Add if-empty-packages optional input by <a
href="https://github.com/tueda"><code>@​tueda</code></a> in <a
href="https://redirect.github.com/awalsh128/cache-apt-pkgs-action/pull/154">awalsh128/cache-apt-pkgs-action#154</a></li>
<li>Fix ls error when no tar files exist in cache restore by <a
href="https://github.com/Copilot"><code>@​Copilot</code></a> in <a
href="https://redirect.github.com/awalsh128/cache-apt-pkgs-action/pull/170">awalsh128/cache-apt-pkgs-action#170</a></li>
<li>Add support for third-party PPA repositories via add-repository
parameter by <a
href="https://github.com/Copilot"><code>@​Copilot</code></a> in <a
href="https://redirect.github.com/awalsh128/cache-apt-pkgs-action/pull/173">awalsh128/cache-apt-pkgs-action#173</a></li>
<li>Pin actions by <a
href="https://github.com/danewilson"><code>@​danewilson</code></a> in <a
href="https://redirect.github.com/awalsh128/cache-apt-pkgs-action/pull/175">awalsh128/cache-apt-pkgs-action#175</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/SMoraisAnsys"><code>@​SMoraisAnsys</code></a>
made their first contribution in <a
href="https://redirect.github.com/awalsh128/cache-apt-pkgs-action/pull/160">awalsh128/cache-apt-pkgs-action#160</a></li>
<li><a href="https://github.com/tueda"><code>@​tueda</code></a> made
their first contribution in <a
href="https://redirect.github.com/awalsh128/cache-apt-pkgs-action/pull/154">awalsh128/cache-apt-pkgs-action#154</a></li>
<li><a href="https://github.com/Copilot"><code>@​Copilot</code></a> made
their first contribution in <a
href="https://redirect.github.com/awalsh128/cache-apt-pkgs-action/pull/170">awalsh128/cache-apt-pkgs-action#170</a></li>
<li><a
href="https://github.com/danewilson"><code>@​danewilson</code></a> made
their first contribution in <a
href="https://redirect.github.com/awalsh128/cache-apt-pkgs-action/pull/175">awalsh128/cache-apt-pkgs-action#175</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/awalsh128/cache-apt-pkgs-action/compare/v1.5.2...v1.5.4">https://github.com/awalsh128/cache-apt-pkgs-action/compare/v1.5.2...v1.5.4</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/awalsh128/cache-apt-pkgs-action/compare/v1.5.4...v1.6.0">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
Dependabot will merge this PR once CI passes on it, as requested by
@dchansen06.

[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
# Code Owners

## Problem and Scope
Current roles were overly restrictive (see #107) and blocked merges

## Description
Require approval from the firmware lead in the `CODEOWNERS` file before
merging

## Gotchas and Limitations
Must keep the file up to date, anyone with root can override it of
course

## Testing

- [ ] HOOTL testing
- [ ] HITL testing
- [x] Human tested

### Testing Details
To be seen, may auto-request reviews but that is life

## Larger Impact
None as all PRs are already reviewed by firmware lead

## Additional Context and Ticket
See the issues in #107

---------

Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
# Expand Gersemi Configuration

## Problem and Scope
CMake auto formatter was over-expanding certain functions and not being
super nice

## Description
Add and tweak a configuration file for Gersemi (the cmake auto format
engine), only real change was shrinking max line length

## Gotchas and Limitations
Should help with keeping code clean

## Testing

- [x] HOOTL testing
- [ ] HITL testing
- [x] Human tested

### Testing Details
Whether changes look right

## Larger Impact
Every in progress PR will need to pull the change but it should be
fairly automatic

## Additional Context and Ticket
Resolves #109

---------

Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
…#114)

# Removed Unused STM32L4 CMSIS Components

## Problem and Scope
CMSIS was imported for `STM32L476xG` with all of the header files and
startup assembly files in it for the `STM32L4` family, approximately 91%
larger than it needed to be (34 MB vs 3 MB)

## Description
Remove unused header files in the STM32L4 CMSIS library and unused
startup assembly files. Removed duplicate files in CMSIS that were in
`CompileDependencies`.

## Gotchas and Limitations
None

## Testing

- [x] HOOTL testing
- [ ] HITL testing
- [x] Human tested

### Testing Details
L4BLINKY blinks as expected (only @JayWango has one to test)

## Larger Impact
None, the removed header files would never be used considering the
platform in question is explicitly labeled the `STM32L476xG`. The
removed startup assembly files should definitely not be used as they are
for different chipset. Deduplicates the different CMSIS files in
`CompileDependencies`.

## Additional Context and Ticket
Removes ~31 MB.
Hopefully container based development will make development more
standardized

---------

Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Daniel Hansen <105574022+dchansen06@users.noreply.github.com>
# Shared Compilation Cache in GitHub Actions

## Problem and Scope
GitHub Actions does a lot of recompilation of things that do not change
much, notably HAL/LL and CMSIS drivers which are quite large.

## Description
Implement `sccache` to handle caching across runs of a given action

## Gotchas and Limitations
Cache becomes an issue, but should be automatically hashed against
correctly by `sccache` and is the preferred solution on Windows compared
to `ccache`

## Testing

- [x] HOOTL testing
- [ ] HITL testing
- [x] Human tested

### Testing Details
HOOTL tests run and correctly invalidate cache

Changing a header file invalidates the cache

## Larger Impact
Speeds up build times

## Additional Context and Ticket
Resolves #113
# Remove C++ Build Requirement

## Problem and Scope
`gcc-arm-none-eabi.cmake` required `arm-none-eabi-g++` for compilation
and linking, even though no C++ is used

## Description
Replace g++ with gcc where appropriate to simplify depedency management

## Gotchas and Limitations
To be seen, should be the exact same. Formally cannot do C++ now

## Testing

- [x] HOOTL testing
- [ ] HITL testing
- [x] Human tested

### Testing Details
Ran BLINKY on STM32G4 without having `arm-none-eabi-g++`

## Larger Impact
Slightly easier dependency resolution

## Additional Context and Ticket
Resolves #118
# Thread-safe Circular Buffer

## Problem and Scope
GR_CircularBuffer_Push can potentially cause GR_CircularBuffer_Pop to
return a de-allocated pointer if they are ran concurrently.

## Description
This branch solves the problem by moving the free() statement after
updating the head iterator to ensure that the freed item cannot be
accessed through the head iterator.

## Gotchas and Limitations
This concurrency fix does not take in consideration of the speed of
atomic operations.

## Testing

- [x] HOOTL testing
- [ ] HITL testing
- [ ] Human tested

### Testing Details
Covers all functions. See implementation for details.

## Larger Impact
Critical for thread across peripherals.
Right now, this psuedocode outputs `false`:
```c
buffer = GR_CircularBuffer_Create(5);
GR_CircularBuffer_Pop(buffer_ptr);
empty = GR_CircularBuffer_IsEmpty(buffer_ptr)
print(empty) // outputs false
```
i.e., it thinks that an empty buffer is not empty. This is because
`Pop()` always increments `head++` even if there is nothing to pop.

I added a simple check to fix this, as well as a test to prevent
regression. I verified that the test fails without my addition, and all
tests succeed with it.

---------

Co-authored-by: Thomas Xu <thomas.xu.7@outlook.com>
# Fedora Monorepo Tools

## Problem and Scope
Fedora 42 worked but Fedora 43 currently has a broken
`arm-none-eabi-gcc` toolchain

## Description
Direct users to install from the Arm website if running Fedora 43 until
a fix is out

## Gotchas and Limitations
Other OSs may have this limitation too

## Testing

- [ ] HOOTL testing
- [ ] HITL testing
- [x] Human tested

### Testing Details
@anthony9975 Will likely test and confirm it works

## Larger Impact
Helps new users

Also made FreeBSD use `sudo` for installation
0b5a272

## Additional Context and Ticket
Resolves #117

---------

Signed-off-by: Daniel Hansen <105574022+dchansen06@users.noreply.github.com>
# Bit Manipulation Library

## Problem and Scope
Bit manipulations get undecipherable quickly and this leads to bugs

## Description
Create a library that can handle basic bit operations

## Gotchas and Limitations
Intended strictly for transmission

## Testing

- [x] HOOTL testing
- [ ] HITL testing
- [x] Human tested

### Testing Details
Added lots of HOOTL tests and no problems were identified

## Larger Impact
Helps with CAN messages, super critical to get right

</details>

## Additional Context and Ticket
> message data is MSB (bit) first, the bytes of larger integers are sent
in little endian order

[GR24/25 CAN ID
Assignments](https://docs.google.com/spreadsheets/d/1XfJhhAQoDnuSuwluNitPsDWtuQu-bP-VbEGPmSo5ujA/edit?disco=AAABd7Xz9Us)

---------

Signed-off-by: Daniel Hansen <105574022+dchansen06@users.noreply.github.com>
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
# Unify CMSIS Together

## Problem and Scope
Each `Lib/Platform/<CHIP>` has its own CMSIS library, which are all
directly from Arm and have different versions and different behavior,
and also copies upwards of 5 MiB each time

It also does not scale well for including other CMSIS functionalities

## Description
Implement a `CMSIS_5_CORE` vendor library that can be linked to from
within a given platform that contains all of the CMSIS functionalities

## Gotchas and Limitations
Cannot upgrade to CMSIS 6 due to STM support

## Testing

- [x] HOOTL testing
- [ ] HITL testing
- [x] Human tested

### Testing Details

Compiles and flashes

- [x] Nucleo-G474RE projects
  - [x] `G4BLINKY`
  - [x] `G4HELLO`
  - [x] `ECU`
- [x] STM32U5
  - [x] `U5BLINKY`
- [ ] STM32L4
  - [ ] `L4BLINKY`

## Larger Impact
Extensible and modular things are nice

## Additional Context and Ticket
Resolves #115

---------

Signed-off-by: Daniel Hansen <105574022+dchansen06@users.noreply.github.com>
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
# Demystify `Platform`

## Problem and Scope
`Platform` contains HAL, LL, CMSIS, linker scripts, startup scripts,
compiler flags, and linker flags. This leads to a large block of obtuse
code that does not support easy modularization.

## Description
Move CMSIS, HAL, and LL to `Vendor` since they are libraries and package
each as appropriate as a separate CMake `INTERFACE`

## Gotchas and Limitations
None, simpler to make new boards and cleaner for sub-groupings

## Testing

- [x] HOOTL testing
- [ ] HITL testing
- [x] Human tested

### Testing Details

- [x] `G4BLINKY`
- [x] `G4HELLO`
- [x] `U5BLINKY`
- [ ] `L4BLINKY`
- [x] Current version of `ECU`

## Larger Impact
Makes code easier to maintain

## Additional Context and Ticket
Builds off of #126, plan to merge #126 before #128 for ease of upgrade
paths

Resolves #127

---------

Signed-off-by: Daniel Hansen <105574022+dchansen06@users.noreply.github.com>
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
# Temporary CAN Infrastructure

## Problem and Scope
Need a placeholder for using CAN inside of ECU and other boards since
URCA is not ready

## Description
Adds a temporary library that contains header file information from GR25
for use as a temporary holdover

## Gotchas and Limitations
Old and inaccurate but better than nothing, labelled as old everywhere
though

## Testing

- [ ] HOOTL testing
- [ ] HITL testing
- [x] Human tested

### Testing Details
Looked at

## Larger Impact
Enables ECU work to get moving

## Additional Context and Ticket
See [CSV-25](https://github.com/Gaucho-Racing/CSV-25) and the URCA work

---------

Co-authored-by: amysaffer <amysaffer@users.noreply.github.com>
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Signed-off-by: Daniel Hansen <105574022+dchansen06@users.noreply.github.com>
@dchansen06 dchansen06 marked this pull request as draft December 4, 2025 03:50
@dchansen06 dchansen06 changed the title Finite State Machine & Logical Control Loop Comment Finite State Machine & Logical Control Loop Jan 5, 2026
@dchansen06 dchansen06 marked this pull request as ready for review January 5, 2026 08:45
@dchansen06 dchansen06 marked this pull request as draft January 5, 2026 10:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

2 PRIORITY Important and a priority, but less than URGENT Boards Related to or involving any physical boards Documentation Improvements or additions to documentation Enhancement New feature or request Small Fry Something that is small, could include bug fixes or smaller changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Plan and Psuedocode ECU State Machine