139 Commits

Author SHA1 Message Date
Jason Wen
4a942697bd Merge branch 'upstream/panda/master' into sync-20260317
# Conflicts:
#	pyproject.toml
2026-03-17 17:07:31 -04:00
Adeeb Shihadeh
254767369e run all tests in test.sh (#2364) 2026-02-28 16:05:49 -08:00
Adeeb Shihadeh
25357d5c6f Revert "make test_misra.sh a lil nicer to run"
This reverts commit 16a8e521d8.
2026-02-28 14:35:23 -08:00
Adeeb Shihadeh
16a8e521d8 make test_misra.sh a lil nicer to run 2026-02-28 14:23:09 -08:00
Adeeb Shihadeh
d3cbcf91b0 build system simplifications (#2359)
* buidl system simplifications

* less j

* fix that
2026-02-28 14:14:17 -08:00
Jason Wen
de4640e341 Merge branch 'upstream/panda/master' into sync-20260227 2026-02-27 16:30:45 -05:00
Adeeb Shihadeh
5c1f2578ef use vendored cppcheck from dependencies repo (#2347) 2026-02-23 12:47:39 -08:00
Adeeb Shihadeh
259645f427 Revert "[bot] Update cppcheck to 2.19.1 (#2254)"
This reverts commit ae769db8b6.
2026-02-04 12:50:32 -08:00
commaci-public
ae769db8b6 [bot] Update cppcheck to 2.19.1 (#2254)
* [bot] Update cppcheck to 2.19.1

* update coverage table

---------

Co-authored-by: Vehicle Researcher <user@comma.ai>
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2026-02-02 07:37:23 -08:00
Jason Wen
4cc222c634 Merge branch 'upstream/panda/master' into sync-20251213
# Conflicts:
#	python/__init__.py
2025-12-13 01:00:11 -05:00
Jason Wen
5dc009be50 Merge branch 'upstream/panda/master' into sync-20251114 2025-11-16 02:40:37 -05:00
Jason Huang
515ac45fc0 Add comma body firmware (#2291)
* motors

* can

* cleanup unused stuff

* initial clean

* more clean

* remove integral and derivative clamps, revert pwm driver to original

* remove integral and derivative clamps, revert pwm driver to original

* remove integral and derivative clamps, revert pwm driver to original

* dont need this for now

* clean

* fix can rx and can version error

* ignore body for misra mutation test

* fix bus recovery, remove body rx hook
2025-10-24 17:14:39 -07:00
Adeeb Shihadeh
7973ba4492 CAN driver cleanup (#2276)
* it's all the same thing

* not live

* less macro

* lil more

* bool

* lil more
2025-09-10 20:00:41 -07:00
Jason Wen
39517742e6 Merge branch 'upstream/panda/master' into sync-20250908
# Conflicts:
#	python/__init__.py
2025-09-08 00:31:55 -04:00
Adeeb Shihadeh
e5a39a2cef misc cleanup (#2261)
* cleanup

* fix jungle

* one more
2025-08-26 15:01:22 -07:00
Adeeb Shihadeh
1ce986f75c bye bye f4 (#2259)
* bye bye f4

* lil more

* fix mac build

* update health idx
2025-08-26 12:37:36 -07:00
Jason Wen
2f42800648 Merge branch 'upstream/panda/master' into sync-20250731
# Conflicts:
#	pyproject.toml
#	python/__init__.py
2025-07-31 21:28:55 -04:00
Adeeb Shihadeh
7c97ab5f35 cleanup build (#2234)
* cleanup bootstub build

* cleanup rest of build

* less files

* all in same obj

* oops

* lil more
2025-07-20 11:29:58 -07:00
Adeeb Shihadeh
ca603115cb Include from project root (#2232)
* fix include paths

* cleanup
2025-07-19 21:58:58 -07:00
Adeeb Shihadeh
5ac6305a95 quick garbage collection pass (#2231)
* remove DPANDA

* -22

* lil more

* canfd

* lil more

* update cppcheck

* uart cleanup

* always harness

* sbu sense

* lil more

* enable spi

* rm ENABLE_SPI
2025-07-19 21:05:12 -07:00
DevTekVE
958f145012 Merge branch commaai/panda:master into branch sunnypilot/panda:master-new 2025-05-26 12:56:37 -07:00
Adeeb Shihadeh
4fc243b998 CI: speed up MISRA mutation job (#2213)
* CI: speed up MISRA mutation job

* install first
2025-05-20 10:18:47 -07:00
Adeeb Shihadeh
8bd83750c2 setup opendbc dependency properly (#2202)
* rm that

* bump

* lil more

* update

* fix libpanda

* update

* fix misra

* python3?

* update ref

* fix mutation
2025-05-17 19:15:19 -07:00
DevTekVE
d688a4b0dd Merge branch 'master-ref-sync-20250228' into sync-20250228
# Conflicts:
#	.github/workflows/test.yaml
#	Dockerfile
#	board/safety.h
#	board/safety/safety_chrysler.h
#	board/safety/safety_ford.h
#	board/safety/safety_gm.h
#	board/safety/safety_honda.h
#	board/safety/safety_hyundai.h
#	board/safety/safety_hyundai_canfd.h
#	board/safety/safety_hyundai_common.h
#	board/safety/safety_mazda.h
#	board/safety/safety_nissan.h
#	board/safety/safety_subaru.h
#	board/safety/safety_subaru_preglobal.h
#	board/safety/safety_toyota.h
#	tests/libpanda/safety_helpers.h
#	tests/libpanda/safety_helpers.py
#	tests/safety/common.py
#	tests/safety/hyundai_common.py
#	tests/safety/mutation.sh
#	tests/safety/test_chrysler.py
#	tests/safety/test_ford.py
#	tests/safety/test_honda.py
#	tests/safety/test_hyundai.py
#	tests/safety/test_hyundai_canfd.py
#	tests/safety/test_nissan.py
#	tests/safety/test_subaru.py
#	tests/safety/test_toyota.py
#	tests/safety_replay/replay_drive.py
2025-02-28 17:56:53 +01:00
Shane Smiskol
9804e2607e Move car safety modes to opendbc (#2143)
* move safety tests

* move libsafety

* move safety

* remove safety test job

* fix compilation

* update ref

* rm safety mutation test

* fix misra test

* no safety here

* fix build for both local and docker

* already tested

* fix misra mutation

* move Safety Model readme section to opendbc

* and panda

* fix

* in

* not here

* not here
2025-02-19 17:19:18 -08:00
Jason Wen
76c0bad638 Merge branch 'upstream/panda/master' into sync-20250116 2025-01-16 11:20:20 -05:00
Adeeb Shihadeh
a8f21d9273 update cppcheck to 2.16 (#2120) 2025-01-12 15:58:23 -08:00
Jason Wen
4f8015a5be Merge branch 'upstream/master' into sync-20241712
# Conflicts:
#	Dockerfile
2024-12-17 06:14:30 -05:00
Jason Wen
3ae376ecfe Modular Assistive Driving System (MADS) (#57)
* improvements on the state machine for exiting controls and improvements on replay drive, and optimizations

* New tests on hyundai for now to see how they behave with lkas  and main button pressed interchangeably

* cleaning up hyundai tests and ensuring we always cleanup mads states at the end of the tests

* Adjusting tests

* Adjusting the tests a bit more to ensure clean states

* Cleaning up and simplifying logic

* ensuring all tests always cleanup

* improving the state

* make static happy

* Refactor safety replay script for better debugging and update Honda safety code

The commit performs a comprehensive revision of the safety replay script, specifically focusing on introducing debug variables and enhancing the logging capabilities for improved debugging. Furthermore, changes were made to the Honda safety code. The test helpers within libpanda were also expanded for inclusion of additional test conditions.

* Introduce 'ACC_MAIN_OFF' as a new disengagement reason in Sunnypilot's 'safety_mads.h'

The Sunnypilot's 'safety_mads.h' file has been updated to include 'ACC_MAIN_OFF' as a new cause for disconnection in the 'DisengageReason' enumeration. If an 'acc_main_off' signal is received, the 'mads_exit_controls' function halts all requests for lateral control engagement. Additionally, the status of 'controls_requested_lat' now mirrors 'controls_allowed_lat' after a button press.

* simpler logic cleaner

* reorder code for readability

* tmp

* Refactor state transitions and add event handlers

Renamed StateTransition to EdgeTransition for clarity and updated related logic. Introduced event handlers for button presses and ACC state changes, reducing duplicated control flow code. Improved encapsulation and maintainability by restructuring state update functions.

* reorder

* Refactor MADS state handling logic

Removed redundant event handler functions and unnecessary timestamp fields to streamline the code. Simplified button and binary state updates by integrating logic directly into transition checks. Commented out unused fields

* adding some more tests

* split init

* format

* update naming

* Refine lateral control request logic in safety_mads.h

The logic for setting the `controls_requested_lat` variable in safety_mads.h has been refined. Previously, it switched state based on the current value of `controls_allowed_lat`. Now, it also takes into account the current state of `acc_main`, ensuring a more nuanced control request mechanism that accounts for different operational scenarios.

* Fix button state handling in mads_exit_controls logic.

Refactor button state transitions to better handle lateral control requests when ACC is active. Ensure controls are correctly disengaged under specific conditions, by setting `controls_requested_lat` more reliably during state transitions. This change improves safety by preventing inadvertent disengagement when ACC is not active.

* Add test for LKAS button press with ACC main on

This commit introduces a new test to ensure that controls remain enabled when the LKAS/LFA button is pressed while ACC main is on. It checks that LKAS button operations don't interfere with control permissions in this specific configuration, improving test coverage and preventing potential safety issues.

* Add mismatch detection and change mads_acc_main to bool

Enhanced mismatch detection logic by tracking cases where 'controls_allowed' is true while 'controls_allowed_lat' is false, updating the script to print relevant debug information. Additionally, changed the data type of 'mads_acc_main' and 'mads_acc_main_prev' from int to bool for improved type accuracy and consistency.

* update controls_allowed_lat_pkt on health pkt to actually follow is_lat_active() which has the final word on whether we can allow lat or not.

* Can't perform this test on toyota as we never really process a button disengagement for toyota

* wow, we forgot about pcm hyundai can-fd

* nuke nuke nuke

* Revert "nuke nuke nuke"

This reverts commit 9bf0de640a3439ac43c27bcbc6568853966d370b.

* update name

* event driven update states

* add get_pcm_main_cruise_available

* split PCM and non-PCM main cruise tets

* fix some

* pcm main cruise availability mutation

* toyota pass fake lkas btn pressed

* more

* make pcm acc main rising edge on init

* only falling edge when actually 0 (need test for mutation)

* misra

* remove state flags, main button related

* skip lkas related tests with toyota and subaru fake button

* need for honda

* static

* mutation

* misra

* skip nidec pcm alt

* engage mads if controls allowed rising

* static

* remove non pcm properties

* fixup! engage mads if controls allowed rising

* move back

* fix static

* move around

* Hyundai openpilot longitudinal main cruise button state handling

* main button unit test

* acc_main_on mismatch unit tests

* clean up old main cruise button unit tests

* add more reasons

* cleanup

* rename

* rearrange

* Revert "rearrange"

This reverts commit f07caaa5b98b74c23667b387430ac48ba95bf21c.

* more rearrange

* rename

* more

* too slow

* Revert "too slow"

This reverts commit 31a249aebfa9c985e37be050e525b6924ca9e83d.

* too slow v2

* cleanup

* rename

* more cleanup

* Parse more flags from alt exp, more tests, hyundai main cruise allowed

* missed

* mutation for controls allowed rising edge

* ford mutation

* Update tests/safety/test.sh

Co-authored-by: DevTekVE <devtekve@gmail.com>

* license

* unused

* remove

* comment

* Apply suggestions from code review

Co-authored-by: DevTekVE <devtekve@gmail.com>

* comment

* refactor alternative experience handling with helper function

* use always allowed mads button alt exp

* rename

* parenthesis

* use alternative experience for unit tests inits

* cleanup

* rename

* mutation tests for alternative experience flags

* bump timer

* test for disengage and no disengage lateral on brake

* test allow MADS engage with brake pressed

* rename

* move around

* button combo test

* use acc_main_on directly from global

* fix caught failures from last commit's fix

* Revert "use acc_main_on directly from global"

This reverts commit 346964f55d020a287a1a679e22691ad8873e2a64.

* Properly fix lmao

* Add support for LKAS button handling across Chrysler platforms

Introduced LKAS button message parsing for multiple Chrysler platforms, including specific handling for center stack button messages. Updated tests and safety configurations to reflect these changes, ensuring compatibility with different vehicle variants. This enhances modularity and improves safety feature integration.

* Dockerfile: point to sunnypilot/opendbc

* Happy days :)

* clean

* testx

* Revert "Happy days :)"

This reverts commit 7ea27b53c8f3b1e37677c1ce9498229fceac9de6.

* symlink prior building

* comment

* only parse mads lateral, not stock op's lateral

* do not allow controls allowed if acc_main_on is off

* expose system_enabled, do not allow controls allowed to steer if system_mads is off

* fix hyundai tests with acc_main_on requirement

* fix test with new controls allowed with system_mads off

* fix replay drive

* Change 'DISABLE_DISENGAGE_LATERAL_ON_BRAKE' to 'DISENGAGE_LATERAL_ON_BRAKE'

The commit modifies the usage of the 'DISABLE_DISENGAGE_LATERAL_ON_BRAKE' variable globally and replaces it with 'DISENGAGE_LATERAL_ON_BRAKE'. This change promotes correct and clear semantics, since the variable now indicates a state rather than the negation of a state.

* Adding some more debug printouts on replay drive

* remove unified engagement mode in panda

* treat MADS button as user entry

* controls allow should be allowed at all times

* squash! treat MADS button as user entry

* heartbeat for mads

* heartbeat mismatch exit control

* remove always allow mads button from alt

* move to safety_mads

* check heartbeat directly in main

* remove main cruise allowed from alt

* uint

* squash! check heartbeat directly in main

* update tests

* not needed

* fix mads_exit_controls sometimes not assigning disengage reason

* more disengage lateral on brake tests

* extern

* missesd

* honda mutation test

* again

* rename

* more dlob test

* update name

* fix tests

* fix panda tests

* Refactor MADS state management to simplify pointer usage.

This change replaces many pointer-based state variables with direct ones, improving code readability and reducing complexity. It also standardizes the use of `const` for parameters and updates function implementations accordingly. These improvements enhance maintainability and reduce potential for pointer-related errors.

* Simplify braking logic in m_mads_check_braking function

Removed redundant conditions to streamline braking logic. This change maintains functionality while improving code readability and maintainability. Only necessary checks are now performed to determine disengagement.

* Prevent lateral control engagement during braking

Added a condition to disable lateral control engagement when braking with disengage-on-brake enabled. This change is marked as a demonstration and is not final for merging. Moved the disengage_reason to be set only when an actual disengagement occurred.

* Refactor MADS state handling and fix type consistency

Remove redundant `get_mads_state` inline definition and migrate it to a static function. Fix return type syntax in `get_mads_pending_disengage_reason`. Minor formatting adjustments improve readability and code clarity.

Refactor disengagement logic with enhanced reason tracking

Added distinction between active and pending disengagement reasons to improve system state tracking. Updated related enums, structs, and logic to ensure proper handling during control transitions. Added new safety tests to verify behavior under braking and ACC conditions.

Refactoring lateral control permissions and brake checks in MADS

This revision refactors the MADS safety code. The aim is to simplify and improve readability. Operations and checks for brake states and lateral control permissions have been consolidated into fewer methods. In addition, unused 'previous_disengage' state tracking has been removed from MADSState structure to avoid unnecessary state tracking. Moreover, the 'can_allow_controls_lat' function has been removed entirely and its functionality has been incorporated into other functions, reducing the function count and complexity of the code. The braking status is now tracked with BinaryStateTracking for consistency. These changes maintain the system's functionality while optimizing the code and improving maintainability.

* Why MISRA, why!? WHY!???? I DIDNT EVEN TOUCH THIS FILE OR NOWHERE NEAR!

* Some format

* no more messing with misra

* const

* more generic names

* revert to validate

* are you srs

* make gpio.h stock again and add to supression lists the check on gpio.h since we are not even touching it and we don't plan on ever doing so

* hard code to skip heartbeat check

* update comment

* cleanup

* Update tests/safety/test_honda.py

---------

Co-authored-by: DevTekVE <devtekve@gmail.com>
2024-12-15 18:05:31 -05:00
DevTekVE
bedee405d6 test: Allow running test_misra.sh easy on macos (#2096)
Allow running test_misra.sh easy on macos
2024-12-09 17:34:04 -08:00
Maxime Desroches
afafb0ba46 test misra 8.7 and 8.4 (#2035)
check
2024-09-20 19:38:45 -07:00
Maxime Desroches
ed831773ea misra21.15 (#2030)
* cast

* remove suppression

* make it more explicit
2024-09-19 10:35:11 -07:00
Maxime Desroches
ceb088ac4e misra12.2 (#2028)
* 12.2

* remove supression

* new stm
2024-09-18 11:33:12 -07:00
dzid26
6f0d1efbd9 stricter misra config check - prevent quiet bail out 2024-09-05 21:49:30 -07:00
Adeeb Shihadeh
160ea08e8f misra: bump to cppcheck 2.15.0 (#2008)
* misra: bump to latest cppcheck

* update checkers
2024-08-31 13:09:58 -07:00
Andrei Radulescu
0a0912234e update bash scripts to #!/usr/bin/env bash (#1987)
* update bash shebang for better compatibility including macOS

* can't have anything after #bash
2024-08-26 17:25:15 -07:00
Adeeb Shihadeh
c4e75ee89c remove cereal dependence (#2000)
* remove cereal

* rm more shit

* add back make

* python3

* python3

* fix that

* put that back

* rename

* fix that

* can't move it
2024-08-18 11:40:54 -07:00
dzid26
4df996cfd7 Cppcheck checklist bugfix (#1969)
* Fix cppcheck checklist diff

* cppcheck already has exitcode=2
2024-06-04 10:24:51 -07:00
dzid26
b6b8144523 misra mutations test - git diff error fix (#1964)
fix misra mutations - don't run git diff in temp folder
2024-06-03 22:31:53 -07:00
dzid26
d401ba169c Enable misra-c2012-1.2 (#1962)
* misra-c2012-1.2 - allow __typeof__ compiler extension

* explicit c11
2024-05-30 22:13:47 -07:00
dzid26
9fdbb178c4 Generate cppcheck checkers list (#1960)
* cppcheck checkers list / coverage

* Update tests/misra/test_misra.sh

* Update tests/misra/test_misra.sh

---------

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2024-05-29 19:42:40 -07:00
dzid26
6ff6733ba3 Cppcheck 2.14 (#1951)
* enable cppcheck 2.14

* cppcheck: Uninitialized variable

* cppcheck: variableScope

* cppcheck: misra-c2012-21.16
both arguments to memcmp() should be of compatible (matching) essential types

* cppcheck: misra-c2012-11.6
Avoid casting between pointer to void and an arithmetic type.
Refactor bootloader address casting for easier understanding.

* cppecheck 2.14.1
- force cppecheck tag fetch
2024-05-27 21:21:13 -07:00
Justin Newberry
698d17e021 fix inconsistent misra mutation tests (#1935)
* revert

* fix
2024-04-22 10:28:53 -07:00
Justin Newberry
4d60ae9c62 CI: fix misra mutation tests (#1934)
* fix that

* skip build, install first

* Revert "skip build, install first"

This reverts commit 01efdb77ce3d834b55bbed1172ca83bb0103bfc8.

* prune
2024-04-18 17:59:33 -07:00
Adeeb Shihadeh
01c54d1199 enable misra-c2012-11.8 (#1916)
* fix up harness_config definition

* enable misra-c2012-11.8
2024-03-24 12:38:25 -07:00
Adeeb Shihadeh
418fca3583 enable misra-config checks (#1879)
* mostly done

* fix rest of misra-config

* do other two in next pr
2024-03-24 12:10:37 -07:00
Adeeb Shihadeh
b08bc43a21 update cppcheck to 2.13.4 (#1915) 2024-03-23 18:23:44 -07:00
Adeeb Shihadeh
895a7001c9 Rename stm32fx/ -> stm32f4/ (#1898)
* Rename stm32fx/ -> stm32f4/

* jungle too
2024-03-11 16:18:56 -07:00
Aryan
4303ae1387 enable misra-c2012-10.6 (#1811)
* misra-c2012-10.6

* fixed uninitialized data error

* revert false positive

* enable 10.6

* update install.sh

* cleanup

* bug fix

* better fix ?
2024-02-27 10:32:28 -08:00
Aryan
b4442a7c93 enable misra-c2012-10.3 (#1852)
* enable misra-c2012-10.3

* fix that

* cleanup

* little more

* one more

---------

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2024-02-18 11:56:44 -08:00