Compare commits

...

2602 Commits

Author SHA1 Message Date
Test User
3771202b69 HKG: Car Port for G80 2022 (3.5T, HDA2) 2026-04-02 17:30:28 -04:00
Armand du Parc Locmaria
55c3885742 bump tg (#37700)
* bump tg

* bump tg

* assign

* bump

* cpu llvm

* frame buffer updated in place, no need to return

* don't bake in stale pointers

* fix update image output indices

* lint

* bump
2026-04-02 09:16:11 -07:00
Harald Schäfer
cb32793300 OP model (#37740)
* Off policy model

* 2f70b996-c604-4a46-9ac9-13ce7534605b/100

* misc fixes

* 1cc1791b-4555-41ce-a5cb-ce046967075a/100

* fix model

* 6ab6fae5-fbbd-4ad0-928a-b33794f60dba/100

* recomp

* update models

* qxfinally correct

* b8b96ac6-7918-401a-a862-eaf1fdbba88d/100

* wrong plan

* wrong plan

* Vf9b3fb5f-4d0d-4dcb-bc3a-5e94d1fdcdaa/200

* bump dbc

* ready to merge

* rename to on-policy

* Just cleanup big models for now

---------

Co-authored-by: Kacper Rączy <gfw.kra@gmail.com>
2026-04-01 16:24:50 -07:00
ZwX1616
d8569b07eb DM: Lancia Delta HF Integrale model (#37696)
* 00c00ac7-7b6e-4546-b86f-7ddd5f0596b4

* mici cleanup

* update msg

* rename
2026-04-01 16:14:15 -07:00
Daniel Koepping
efd5301f65 bump opendbc (#37750)
* bump opendbc
2026-04-01 16:11:07 -07:00
ZwX1616
5dcaf3bef8 DM: fewer alerts during maneuvers (#37751)
* 2in1

* clip

* drop aodm lowspeed

* cleanup

* add lower bd

* that was random
2026-04-01 00:40:13 -07:00
Shane Smiskol
bf43c7e8c7 fix scaled exclamation point 2026-03-31 18:22:56 -07:00
Adeeb Shihadeh
1dec68014f rivian gen2! 2026-03-30 15:12:34 -07:00
Jason Young
8badc7d813 controls: HKG angle control saturation from car port safety (#37746) 2026-03-29 00:20:35 -04:00
Jason Young
9be7a48ccd bump opendbc (#37738)
* bump opendbc

* regen CARS.md

* bump opendbc

* regen CARS.md
2026-03-27 16:45:34 -04:00
Daniel Koepping
6b94c47c6a Lateral maneuver report (#37562)
* lateral report

* mutually exclude buttons

* gating

* set maneuver

* add timer

* timer text

* fix plot

* use curvature

* more curves

* fix gating

* rm delay

* highway speed only

* msg

* add sine

* add step-down

* use relative

* text

* stabilize

* tuning

* windup

* text

* winddown

* no windup

* tuning

* more tuning

* more

* formatting

* test faster

* extend sine

* report crossings

* add readme

* clean report

* fix lint

* gating

* fix

* straighter

* compensate roll

* rm abs roll

* len

* Revert "rm abs roll"

This reverts commit a22d6bb136f90d2bf997e6b9aeee2f784398ef42.

* Revert "compensate roll"

This reverts commit dfda52119cc4a2e29ac2854b9154c08459086fea.

* print actuators

* show curve and roll

* tune roll

* text

* slower

* timer

* too much banked streets in US

* readme

* filter incomplete

* plot jerk

* plot angle jerk

* lil edits

* fix lint

* apply suggestions

* better table

* apply comments

* clean

* shane comments

* deflicker

---------

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2026-03-27 13:31:00 -07:00
Adeeb Shihadeh
b706673e1c jotpluggler: part one (#37730) 2026-03-25 19:49:38 -07:00
Jason Young
e4813645fa remove any stale scons lock on device startup (#37734)
remove any stale scons lock at device startup
2026-03-25 21:02:51 -04:00
Harald Schäfer
12f1be19cc POP model (#37727)
* f9f6da19-c248-460f-8e16-d47e9824bfb7/100

* 05a58a51-e0e3-4e9b-8e27-e644685f2c50/100
2026-03-24 14:40:45 -07:00
Shane Smiskol
e5ebd45576 fw query: remove aux panda support (#37725)
* rm num_pandas

* bump to master
2026-03-23 22:04:11 -07:00
Shane Smiskol
0870e26fb6 fix debug fw query script 2026-03-23 19:57:43 -07:00
Kacper Rączy
d75b8f4540 process_replay: fix logMonoTime simulation (#37708)
* Fix logMonoTime

* Fix last drain

* Remove import

* Bring it back
2026-03-23 20:25:31 +00:00
Daniel Koepping
f4b8384332 Process replay: add diff report (#37048)
* rm upload

* use ci-artifacts

* sanitize

* rm ref_commit

* add ci

* handle exept

* bootstrap

* always

* fix

* replay

* keep ref_commit fork compatibility

* remove upload-only

* apply comments

* safe diffs in master

* Revert "safe diffs in master"

This reverts commit 369fccac786a67799193e9152488813c6df20414.

* continue on master diff

* imports

* copy formatting from car_diff

* main

* setup refs and cur

* copy diff

* copy formatting

* comment

* rm token

* rm hash

* continue on master diff

* use ci-artifacts refs

* add run card diff

* checkout

* shebang

* card_diff.yml

* rm ci-artifacts

* apply ci-artifacts

* call differ

* rename

* uv lock

* tests

* readme

* checkout

* add all configs

* import base_url

* rename yaml

* integrate in test_processes

* fix diff report

* var names

* extract to module

* print report

* add msg count to diff

* traceback

* diff format

* typing

* name step

* allow NaN

* replace join
2026-03-23 09:41:52 -07:00
Adeeb Shihadeh
5766202763 translations: auto-generate with codex (#37462) 2026-03-23 08:59:37 -07:00
commaci-public
6871203c45 [bot] Update Python packages (#37529)
* Update Python packages

* revert tg

---------

Co-authored-by: Vehicle Researcher <user@comma.ai>
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2026-03-23 08:36:14 -07:00
royjr
1d48cbdffa ui: fix BIG ui with scale (#37690)
* Update application.py

* Apply suggestions from code review

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2026-03-23 01:00:28 -07:00
Ethan Reish
54db569c2c Do not map tici to tizi release (#37719)
* Do not map tici to tizi release

* tici

---------

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2026-03-22 19:03:40 -07:00
Adeeb Shihadeh
31e4fe55ac tools: setup ffmpeg hwaccel (#37718) 2026-03-22 17:36:35 -07:00
Adeeb Shihadeh
a8b5c74507 prep for imgui tools (#37712)
* prep for imgui tools

* build cleanups
2026-03-21 16:49:57 -07:00
Adeeb Shihadeh
470c3f4a92 pandad: remove best case startup time test case 2026-03-21 12:08:10 -07:00
Adeeb Shihadeh
af09b7a45b add imgui package (#37711) 2026-03-21 09:47:15 -07:00
Kacper Rączy
7fae59167e paramsd/torqued: use the correct livePose timestamp (#37704)
* Use the correct filter time in torqued/paramsd

* Fix

* Check if lp valid

* Update tests fake data with new required fields
2026-03-21 02:10:59 +00:00
Kacper Rączy
08d8bb9975 livePose timestamp migration (#37705)
* Add livePose migraiton

* Fix
2026-03-21 01:19:47 +00:00
royjr
240e0036d2 macOS: fix build (#37686)
* Update SConscript

* do we need this?

* fix that

---------

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2026-03-20 15:52:01 -07:00
Kacper Rączy
d5e75dd0af locationd: publish filter time (#37697)
* Include filter time in the message

* Move the line up

* Use nantonum
2026-03-20 22:29:58 +00:00
Thomas Burgess
e53cc41b47 docs: rename comma 3X references to comma four (#37701)
* docs: rename comma 3X references to comma four

* docs: update comma four links and labels
2026-03-20 15:23:02 -07:00
Adeeb Shihadeh
d0382e2d48 just remove this, actions is so broken 2026-03-20 15:02:47 -07:00
Adeeb Shihadeh
78b15773c9 pj: update stale layouts 2026-03-20 14:07:33 -07:00
Kacper Rączy
f95959afdb Bump rednose (#37698) 2026-03-20 02:44:14 +00:00
Kacper Rączy
1c14375796 locationd: cam odo delay compensation (#37543)
* Delay compensation for camera odomtry

* Frame skip definition

* CAM_ODO_POSE_DELAY const

* Remove import

* Use timestampEof

* CAM_ODO_STD_MULT

* locationd processing_time=0.01

* Update angular velocity Q

* Try 075

* Acc obs std 0.75

* Adjust Cam odo std mults

* More tweaking

* Smoothing in lld tests

* Comment

* Remove import

* Revert gyro bias P update

* Tweak to 0.75
2026-03-20 02:35:10 +00:00
Adeeb Shihadeh
a68ea44af3 cabana: use vendored libusb from commaai/dependencies (#37681) 2026-03-14 16:47:17 -07:00
Adeeb Shihadeh
5e7f5dd840 replay/cabana: remove unused openssl dependency (#37680) 2026-03-14 16:43:19 -07:00
Adeeb Shihadeh
cc4f786846 deps: switch vendored packages to per-package release branches (#37678) 2026-03-14 15:01:45 -07:00
Harald Schäfer
f4657aa2d5 Sconstruct: use name (#37675) 2026-03-14 13:42:57 -07:00
Shane Smiskol
46bbe6890a mici ui: consistent dialogs (#37671)
* new dialog

* clean up

* got wish

* use in mici reset

* punctuation

* clean up
2026-03-13 21:56:07 -07:00
Adeeb Shihadeh
380d91c8f7 don't need to whitelist on larch64 2026-03-13 20:26:32 -07:00
Shane Smiskol
24121f8abf ui: asynchronous ssh key fetcher (#37668)
* async

* clean on failure

* fix

* meh job

* one less

* no clear

* disable

* no clue

* better

* always passed
2026-03-13 20:16:34 -07:00
Adeeb Shihadeh
9d19cca006 scons: whitelist non-vendored includes and libraries (#37670) 2026-03-13 20:12:13 -07:00
Adeeb Shihadeh
ee9da82aab cleanup build paths (#37667)
* cleanup build paths

* not used

* lil more

* rm those too

* rm

* lil more
2026-03-13 19:20:33 -07:00
Adeeb Shihadeh
06630e8a39 setup: remove brew (#37669) 2026-03-13 19:20:02 -07:00
David
2cc70ef2e4 record: smaller clip sizes by adjusting preset (#37666)
use veryfast instead of ultrafast
2026-03-13 16:34:22 -07:00
David
5908b7cda0 ui replay: add mici UI exploration (#37641)
* replay: add dragging gesture support

* update dragging to support distance and duration; update mici script to go through settings

* refactor

* fix and add network

* add more

* interact device

* fix

* match statements

* more

* improve

* simplify script

* add keyboard test

* format

* simplify

* improve

* comment

* improve

* clarify

* clean

* simplify

* simplify

* move

* improve

* more delay

* simplify keyboard test

* simplify

* comment

* add onroad alert tests to mici

* scroll less

* test offroad alerts

* remove space

* scroll faster

* more toggle tests

* back to home

* test settings onroad

* fix pairing qr code

* add replay progress bar

* add replay progress bar

* simplify

* correct comment

* remove _

* we don't need this

* change click

* add return types

* fast typing

* use frames instead

* use frames instead

* update

* disable in CI

* +1

* fix script

* refactor how mici replay script cases are built

* refactor

* refactor: rename helper function for exploring settings in build_mici_script

* remove onroad settings check

* refactor

* simplify

* refactor: use explore_setting in more places to reduce duplication

* add type

* refactor: simplify explore_cases function by removing swipe_wait parameter

* add case to open wifi selection

* refactor: enhance run_actions to support after_each callback for interaction tests; rename explore_cases to scroll_through_cases

* add review training guide

* update comment

* comments

* comment

* fix swipe back
2026-03-12 20:09:10 -07:00
Shane Smiskol
d0375942b8 Revert "onboarding: block back" (#37663)
Revert "onboarding: block back (#37655)"

This reverts commit d8ae8c201a.
2026-03-12 20:03:22 -07:00
Shane Smiskol
bbed1a2551 scroll: use iOS-style weighted velocity averaging for fling (#37659)
* scroll: use iOS-style weighted velocity averaging for fling

Weight older velocity samples more heavily on finger release to produce
more consistent fling velocities. The last touch samples before lift are
noisy (finger decelerating, rotating, jittering), so we trust the earlier
steadier samples more: 60% oldest, 35% middle, 5% newest.

Reverse-engineered from iOS UIScrollView by the Flutter team.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Update system/ui/lib/application.py

* Apply suggestions from code review

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 02:55:56 -07:00
Shane Smiskol
2b0aab3a38 ui: round QR code draw position in onboarding (#37656)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 01:47:20 -07:00
Shane Smiskol
d8ae8c201a onboarding: block back (#37655)
no back from onboarding
2026-03-12 00:15:14 -07:00
Shane Smiskol
9bcd965f0b ui: don't load unused light font 2026-03-11 23:38:51 -07:00
Shane Smiskol
6e7587a75c modeld: quiet do_chunk output during scons build (#37654)
* modeld: quiet do_chunk output during scons build

SCons default-prints Python function actions with all their args.
The do_chunk function has 1259 tinygrad source files as deps, causing
a wall of text during builds. Wrap in SAction with a short strfunction.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* split compile and chunk into separate Commands

cleaner fix: do_chunk only depends on the pkl, not tinygrad files

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 23:35:56 -07:00
Shane Smiskol
c631a22eb6 ui: fix 1px flash at bottom of DM camera during onboarding swipe (#37653)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 23:19:02 -07:00
Shane Smiskol
7dfb7967b6 ui: proper mici scaling (#37652)
* scale

* remove low res image finder

* check self scale

* simplify
2026-03-11 19:51:34 -07:00
Shane Smiskol
58d6211bc2 ui: no int textures (#37649)
* no int textures

* round qr code

* unround firehose

* ignore here
2026-03-11 18:58:51 -07:00
Adeeb Shihadeh
4e239dbc22 bump opendbc: in-memory DBC generation, drop scons build (#37646) 2026-03-11 11:35:32 -07:00
Shane Smiskol
3469d9aadb AGNOS 17.2 (#37644)
* 17.2

* 17.2

* new updater

* shimmer offset
2026-03-11 00:05:04 -07:00
Shane Smiskol
18da21e65b Add shimmer offset for custom software 2026-03-10 23:26:39 -07:00
Shane Smiskol
50f0cf25a6 ui: slider shimmer sans shader (#37640)
* actually epic

* use child

* inside label

* revert other stuff

* no reset_shimmer: bool

* try 2 char

* not worth dynamic chunking

* bring back

* rm

* no emoji support on shimmer
2026-03-10 20:53:17 -07:00
Shane Smiskol
bea040095c Make sliders children 2026-03-10 20:44:56 -07:00
Daniel Koepping
3584523a93 fix process replay race on push (#37643) 2026-03-10 20:27:40 -07:00
Adeeb Shihadeh
d3bcc80d28 jenkins: push mici and tizi builds together 2026-03-10 17:01:23 -07:00
David
0ce679f687 ui replay: Add progress bar (#37471)
* add replay progress bar

* simplify

* use frames instead

* update

* disable in CI

* +1
2026-03-10 16:42:56 -07:00
David
d55ccba5fe clip: only fast rendering when headless (#37635)
only set offscreen when headless
2026-03-10 16:42:38 -07:00
David
f85b3473a2 ui replay: Improve big (tizi) replay coverage (#37468)
* fix pairing qr code

* test pair device

* merge and pick from explore-more

* key

* fast click

* again

* add branch selection test

* click uninstall

* test prime states

* view regulatory

* test expand calibration desc

* override interactive timeout

* reorder

* remove todo

* update

* clarify

* test reset calibration

* update

* add calibration params test

* comments

* reorganize

* clarify

* add click through training guide
2026-03-10 16:02:55 -07:00
David
b750229e70 fix(sim): remove alpha channel for improved performance (#37602)
fix: update RGB image processing in CopyRamRGBCamera
2026-03-10 16:02:02 -07:00
David
40b61a8212 clip: load metadata params within OpenpilotPrefix (#37634)
fix: move metadata loading inside OpenpilotPrefix context
2026-03-10 16:01:31 -07:00
Adeeb Shihadeh
5927316788 ci: revert first-interaction to v1 (#37639)
* ci: revert first-interaction to v1

* ci: retrigger PR review on synchronize
2026-03-10 15:57:26 -07:00
Trey Moen
dd89bc30fa set preference for python 3.12.13 (#37637) 2026-03-10 15:08:56 -07:00
Adeeb Shihadeh
bf4bf0e5b7 qcomgpsd, timed: reject invalid GPS timestamps (#37633) 2026-03-10 11:44:25 -07:00
Trey Moen
9164148d48 feat: uv manages python (#37535) 2026-03-10 10:58:21 -07:00
Armand du Parc Locmaria
ac3dcbe62f Revert "op switch: sync submodules" (#37632)
Revert "op switch: sync submodules (#37618)"

This reverts commit 1dbae159a8.
2026-03-10 10:55:17 -07:00
Adeeb Shihadeh
ba19527181 0.11.1: a nice DM focused release 2026-03-10 10:20:23 -07:00
Shane Smiskol
4acf0438c8 AGNOS 17.1 (#37631)
* agnos 17.1

* bump version
2026-03-10 03:17:18 -07:00
Shane Smiskol
bd5fbbabda setup: simplify cache branch (#37630)
* this wasn't atomic!

* start mici

* always require internet to download installer

* this made it never use cached fetch!

* this skipped installer when it wrote it raced trying to run

* entirely remove

* clean up mici

* fix tici setup

* inline

* works
2026-03-09 22:25:49 -07:00
Adeeb Shihadeh
1777d548bf stagger driver camera SOF (#37628) 2026-03-09 20:11:26 -07:00
Shane Smiskol
095d96fbe0 reset: erase in thread (#37627)
erase in thread
2026-03-09 18:43:42 -07:00
Shane Smiskol
2ca6f893df New updater_magic 2026-03-09 17:34:16 -07:00
Shane Smiskol
a17a8daad5 pack.py: exclude large unused folderrs 2026-03-09 17:32:33 -07:00
Shane Smiskol
acace97ef8 add warning to pack.py (#37624)
* start

* works!

* can't check ls-files because we need built files too >:(

* add print
2026-03-09 17:18:40 -07:00
Shane Smiskol
0208d26845 reset: don't swipe down confirm slider (#37620)
* test and broke

* fix

* clean up
2026-03-09 15:39:06 -07:00
Shane Smiskol
dd8aa4a21e setup: don't swipe down custom fork screen 2026-03-09 14:20:16 -07:00
Shane Smiskol
d6c85abcd3 setup: copy changes
from https://github.com/commaai/openpilot/pull/37611
2026-03-09 14:11:01 -07:00
Shane Smiskol
56d1961625 Revert "setup & reset tuneups" (#37619)
Revert "setup & reset tuneups (#37611)"

This reverts commit 9510e05dc0.
2026-03-09 14:09:13 -07:00
Armand du Parc Locmaria
1dbae159a8 op switch: sync submodules (#37618) 2026-03-09 14:02:03 -07:00
github-actions[bot]
76458d175f [bot] Update translations (#37530)
Update translations

Co-authored-by: Vehicle Researcher <user@comma.ai>
2026-03-09 09:33:00 -07:00
Adeeb Shihadeh
ad181ba501 agnos 17 (#37552) 2026-03-08 20:54:31 -07:00
Adeeb Shihadeh
71290f3805 cabana: gitignore assets.cc 2026-03-08 19:16:38 -07:00
Adeeb Shihadeh
e42ee228c2 gitignore cleanups (#37615)
* gitignore cleanups

* lil more

* one more
2026-03-08 18:31:11 -07:00
Adeeb Shihadeh
9510e05dc0 setup & reset tuneups (#37611)
* period

* no exit there

* fasle

* edit those

* swipe down to go back

* fix weird animation
2026-03-08 18:07:05 -07:00
Adeeb Shihadeh
6e87e66bc5 0.11 time 2026-03-08 11:54:15 -07:00
Shane Smiskol
1197ea9ab9 sliders: fix clicking anywhere activates press (#37605)
* fix

* finish

* fix
2026-03-08 00:13:08 -08:00
Shane Smiskol
9d7edbf57a ui: remove MiciLabel (#37599)
* unified

* newl

* do home too

* pairing

* match style

* delete micilabel!

* default color
2026-03-07 23:11:38 -08:00
David
acec60d19e docs: update WSL2 hardware acceleration note (#37603)
* docs: update WSL2 hardware acceleration note for improved UI performance

* space

* clarify
2026-03-07 18:23:20 -08:00
Shane Smiskol
6a3dcc74e8 ui: mark more child widgets (#37596)
* do onboarding

* do tici

* clean

* hide event reset state :(
2026-03-07 05:28:51 -08:00
Shane Smiskol
6e851ff886 ui: missing super show event (#37597)
missing
2026-03-07 05:21:06 -08:00
Shane Smiskol
7a5d8a813b Turn off Widget debug mode 2026-03-07 05:08:58 -08:00
Shane Smiskol
4742bf0230 HBoxLayout: use children 2026-03-07 05:08:44 -08:00
Shane Smiskol
4bf2bfb122 ui: child widget support (#37594)
* child widgets!

* cmt

* missing

* group

* add debug flag

* use in scroller

* not clean yet

* restore
2026-03-07 05:07:03 -08:00
Shane Smiskol
797b769478 ui: sliders bounce (#37595)
* sliders bounce

* start page should bounce too

* clean up

* bouncy sliders

* bouncy everything

* tiny bounce

* clean up

* no scroll bounce
2026-03-07 04:32:47 -08:00
Shane Smiskol
024e2af269 slider: use self.confirmed 2026-03-07 03:10:29 -08:00
Shane Smiskol
e35513afc4 ui: fix 1px overshoot on NavWidget show (#37593)
fix
2026-03-07 02:55:10 -08:00
Shane Smiskol
6607283cec mici ui: engaged confirmation buttons (#37589)
* do deviec

* clean up

* clean up

* todo

* action text

* back
2026-03-07 02:17:36 -08:00
Shane Smiskol
08162be765 mici reset: new flow (#37584)
* copy

* add back

* stash

* fix

* more

* dot animation

* fix anim

* 0.6

* fix
2026-03-07 01:53:41 -08:00
Shane Smiskol
7061c18cee ui: antialias text (#37592)
aa
2026-03-07 01:45:46 -08:00
Shane Smiskol
c36c30e74b reset: rm --format (#37591)
* reset: rm --format

* same for tici
2026-03-07 00:14:01 -08:00
Shane Smiskol
1f9ec135a4 BigButton: take icon texture and fix image sizes (#37590)
* more explicit pass texture like everything else, esp since sizes are not all same

* fix some confirmation dialog images

* fix image sizes

* do bigbutton

* fix

* static
2026-03-06 23:40:42 -08:00
Shane Smiskol
0557283e3d ui: add confirmation circle button (#37586)
* try this

* clean up and use it

* clean up

* simpler

* do this later

* do onboarding & reset

* do setup

* temp

* Revert "temp"

This reverts commit 22fbbf5c813b4915e784b9ee235ed3bde2229048.

* simpler again

* missing size

* fix

* Revert "fix"

This reverts commit 53c4e29e614181029dc8e9a2baea7694957dc8fb.

* nl
2026-03-06 22:38:00 -08:00
Utkarsh Gill
793f8fee32 fix(sim): use getRamImageAs for correct channel order (#37528)
getRamImage() returns panda3d's internal BGRA format. on macOS this
produces swapped red/blue channels in the sim camera feed.

getRamImageAs("RGBA") requests explicit RGBA reordering from panda3d,
correct on all platforms. no-op where internal format is already RGBA.

ref: https://docs.panda3d.org/1.10/python/reference/panda3d.core.Texture#panda3d.core.Texture.getRamImageAs

fixes #37526
2026-03-06 22:14:31 -08:00
Lukas Heintz
5e1a576f3d cabana: exclude SocketCAN on macOS (#37553)
fix cabana on macos

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2026-03-06 22:13:16 -08:00
Shane Smiskol
fd98db72ab ui: make confirm callback required for confirmation dialog (#37585)
* always required!

* reoreder

* reorder again

* make required so better order

* not clear better
2026-03-06 21:36:43 -08:00
Shane Smiskol
2f1a58f991 mici setup: connect to continue (#37583)
* connect to continue

* fix
2026-03-06 20:45:39 -08:00
Kacper Rączy
4cc68f57cf lagd: change lag candidate threshold range (#37581)
* Use extended_roi_ncc instead of roi_ncc

* It doesnt make sense to use non-positive lags in thresholding
2026-03-07 04:17:26 +00:00
Kacper Rączy
5e2a5b5355 lagd: smooth lat accel + min lat accel range (#37424)
* Smooth

* Min lat accel range

* Make the moving average masked

* Bring back the range

* Update test

* Smooth desired signal too

* Diff

* Gaussian

* Fix fmt

* Remove newline
2026-03-07 03:00:15 +00:00
Shane Smiskol
44ec08c112 sliders: clean up (#37580)
* remove small buttons!

* remove those assets

* clean up sliders

* fix

* abc

* base
2026-03-06 18:36:12 -08:00
Shane Smiskol
60ec7dc7b6 Remove unused icons 2026-03-06 18:33:26 -08:00
Shane Smiskol
af1fb2644e mici ui: remove unused widgets (#37579)
* remove small buttons!

* remove those assets
2026-03-06 18:17:26 -08:00
Shane Smiskol
4651bc6a1f ui: rename BigConfirmationDialogV2 (#37578)
* ui: rename BigConfirmationDialogV2

* clean up
2026-03-06 17:33:50 -08:00
Adeeb Shihadeh
ac1dd692af ui: fix BigButton shake on startup (#37577)
_shake_start defaults to None, but `None or 0.0` treated it as
time zero, so any button rendered within 0.5s of window creation
would play the shake animation.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 17:18:41 -08:00
YassineYousfi
363735f7ce Update RELEASES.md 2026-03-05 09:38:51 -08:00
Shane Smiskol
5303afb0dc mici installer: bring back finishing setup (#37574)
need this :(
2026-03-05 07:20:50 -08:00
Shane Smiskol
118d903e2d mici ui: slim review terms (#37573)
* replace

* fix
2026-03-05 06:04:01 -08:00
Shane Smiskol
93eb8418b7 Zip app updater (#37572)
replace
2026-03-05 05:54:44 -08:00
Shane Smiskol
6922d58762 mici setup: swipe down on wifi connect, then wait for internet (#37569)
* try this

* try this

* fix

* delay hide on wifi/internet

* 0.5

* fix flash on forgetting

* also reset

* fix

* todo

* dupl

* wifi after

* bring back cmts

* fix spotty internet check while downloading!

* cmt

* cmt

* todo

* resort

* more delay

* redundtant

* nl

* scroll over for wifi (waiting) OR internet (continue)

* fix scroll

* fix scroll

* show_event fully manages its scroll over, not some weiird delay mixed with other triggers via fake rising edge

* instant if not popping

* cmt
2026-03-05 04:58:18 -08:00
Shane Smiskol
b4b747e5cb mici scroller: fix scroll bar direction with less content than viewport (#37571)
fix
2026-03-05 04:48:30 -08:00
Shane Smiskol
2d53f4cf01 WifiUi: re-sort buttons on show (#37570)
sort
2026-03-05 03:36:37 -08:00
Shane Smiskol
4a1101c032 mici setup: don't run network tick while not in network setup page 2026-03-05 02:54:24 -08:00
Shane Smiskol
41bba2b55a mici setup: fix race on disconnect guard 2026-03-05 02:11:23 -08:00
Shane Smiskol
d801cebb2e mici setup: guard continue button when forgetting/connecting (#37568)
* test

* fix

* test

* too much

* simple to ship

* revert

* bug free

* simpler

* fix

* even safer guard
2026-03-05 01:23:29 -08:00
Shane Smiskol
3a19f85512 WifiManager: guard AP paths failure 2026-03-05 01:04:16 -08:00
Shane Smiskol
dcc166343f mici setup: get time immediately after internet (#37565)
* should be instant

* guard on disconnect

* just time fix
2026-03-05 00:25:09 -08:00
Shane Smiskol
4f5df6589d mici setup: set WifiManager active on network setup page show (#37566)
* set active

* cmt
2026-03-04 23:47:34 -08:00
Shane Smiskol
3cc9d89d45 mici ui: wifi scanning card (#37564)
* start

* yes

* no more show

* clean up
2026-03-04 23:07:37 -08:00
Shane Smiskol
e59f675715 new reset (#37563)
* start new reset w navwidgets

* full port

* clean up

* clean up

* clean up

* fixes

* rm
2026-03-04 22:36:25 -08:00
Shane Smiskol
5beae930e4 setup: new scroller failed screen (#37561)
* better update flow

* clean up

* clean up

* cmt

* clean up

* todo

* failed scroller

* fix for setup

* show wrong url

* setup failed is red not orange

* clean up and fix all flashing in setup
2026-03-04 20:44:29 -08:00
Adeeb Shihadeh
0274b73760 jenkins: always run pandad tests 2026-03-04 20:20:07 -08:00
Shane Smiskol
055b29b226 updater: better flow (#37560)
* better update flow

* clean up

* clean up

* cmt

* clean up

* todo
2026-03-04 19:37:24 -08:00
Jacob Pfeifer
6330a9c53a add explicit include for cstdint instead of relying on leaky include (#37559) 2026-03-04 18:59:57 -08:00
Shane Smiskol
2c4e114b51 updater: new scroller style (#37556)
* good start

* reset on push

* clean up

* why tf it remove comments

* no more base unnav

* repack
2026-03-04 17:35:24 -08:00
Adeeb Shihadeh
e264b4269f reset: don't timeout if partition is corrupt 2026-03-04 14:39:11 -08:00
Adeeb Shihadeh
fef89d1039 op adb: find free port 2026-03-04 14:18:35 -08:00
Adeeb Shihadeh
fc372e2ae1 ui needs pillow 2026-03-04 12:36:40 -08:00
Adeeb Shihadeh
cd22ee3327 rm openssl3 package (#37551)
* rm openssl3 package

* upgrade

* lil more
2026-03-04 09:50:23 -08:00
Shane Smiskol
e97a1d1a44 updater: zipapp and additional fixes (#37550)
* new updater zipapp

* fix deadlock from agnos.py throwing timeout errors, never hitting failed screen! + try catch the whole process for errors while starting process

* add todo

* set core affinity like setup in updater

* fix import

* rezip
2026-03-04 04:34:48 -08:00
Shane Smiskol
6795b09d0a file_downloader: stream downloads in a single HTTP request (#37549)
The Python file downloader was making a separate HTTP Range request per
1MB chunk via URLFile.read(), causing massive latency overhead. Use a
single streaming GET request instead, matching the old C++ behavior.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 03:16:29 -08:00
Shane Smiskol
20d484c7cb reset: recover needs to reboot (#37546)
fix not rebooting
2026-03-04 01:23:56 -08:00
Shane Smiskol
7e1a8d41a1 steering arc: enable for angle cars (#37078)
* enable for angle cars

* use carparams

* less roll at low speed, it's too pronounced

* clean up
2026-03-03 21:45:49 -08:00
royjr
0c452dbafe cabana: fix right pane width limitation (#37527)
Update chartswidget.cc
2026-03-03 20:12:53 -08:00
Shane Smiskol
56ed377197 Zipapp fixes (#37538)
* zip app fixes

* add nl

* rename

* emoji was brok

* bytes
2026-03-03 17:23:48 -08:00
Shane Smiskol
92f9684fdb Revert "use vendored raylib from dependencies repo" (#37537)
Revert "use vendored raylib from dependencies repo (#37489)"

This reverts commit 0374979397.
2026-03-03 01:13:11 -08:00
Shane Smiskol
91b7752268 Setup: improvements (#37264)
* pressed state for larger sliders

* wifibutton

* fix

* clean up

* some work

* don't nee this now

* stash

* more

* new pressed bigcircle

* black

* interp

* just check position

* clean up and fix slider reset

* fix custom

* no speed

* stash

* even chatter couldn't figure this one out

* makes sense to combine together, less split mentality

* clean that up

* fix lag

* match ui.py prio to eliminate lag on wifiui show event. separately, why is this slow?

* night mode

* delay scroll over

* fix auto scrolling

* stash

* waiting looks disabled

* clean up and don't reset sliders until user goes back

* rm

* fix

* add termsheader back

* fix callbacks

* ctrl alt l

* fix text spacing

* clean up

* stash

* fix style

* i want to go back

* guard on exit

* kinda useless stuff

* Revert "kinda useless stuff"

This reverts commit a4acbac31523408f358c5f68262cb630aa13ad8e.

* Revert "guard on exit"

This reverts commit 63ccfbf64edfbe1a144a441681f5ec78d8021ff7.

* wide

* setup pressed!

* grow animation

* 10s after initial

* slow fast

* start onboarding (terms)

* rm duplicate page

* add qr code

* final grey

* fix visual lag on first start

* clean up dead code

* dont exit from cancel

* revert grey

* clean up, REVIEW ME

* Revert "clean up, REVIEW ME"

This reverts commit c66fa60947c5f922520e7cf58c630b4bbe2d0177.

* reboot slider

* kb fix

* Revert "kb fix"

This reverts commit 883039448e6c37ae1d25d4f75ada6e96b6736358.

* ./ goes to letters

* Revert "./ goes to letters"

This reverts commit 0d97442427edb1a000638863a3f2181204ddc160.

* clean up

* some more clean up

* more

* clean up

* rename block

* reset pending scroll so it can't use stale data in rare sequence

* remove unused assets

* clean up imports

* fix updater

* clean up

* fix double reboot

* demo time - reset to setup on reboot

* let manager restart

* Revert "demo time - reset to setup on reboot"

This reverts commit 9468657e8438a1ce8fcb5266403b7bb3539f131f.

* url... and no grow animation on start button

* one next button

* grow instead of shake wifi button

* 36 pt font size in setup

* touch up onboarding a lil

* Revert "rm cpp bz2 (#37332)"

This reverts commit f4a36f7f74.

* more onboarding and clean up

* clean up

* wow what an amazing future clean up

* back to software select

* fix

* copy

* fix dm confirmation dialog not disabling widget underneath, all fixed with real nav stack in here

* uploading

* lint

* add review terms to device w/ close button

* todo

* remove old Terms vertical scrolling classes

* use new Scroller!

* installer

* tweak to match figma exactly

* revert

* fixup updater

* demo day

* demo day v2

* ... for percent while finishing setup

* demo day v3

* demo day v4

* remove ...

* demo day v6 -- "why does it do that!!"

* demo day v7 -- no flash

* hmm

* demo day v7

* prebuilt

* revert demo day

* scroll after pop animation

* back -> retry

* stash fixes

* damn, need back_callback

* scroll over immediately if already in network setup

* tweaks

* going down is confusing

* more

* Revert "more"

This reverts commit 29ce75b1f81eb40e7527a71d27842d9a66802206.

* Revert "going down is confusing"

This reverts commit 0cd2ae30d4135db1ccba6478429b45e886714e9c.

* dupl

* nl

* sort functions

* more clean up from merge

* move

* more

* dismiss to download (hack)

* Revert "dismiss to download (hack)"

This reverts commit 53c45ed1f63db1f0cebbce0dfab1777c8658f505.

* onboarding work

* set brightness and timeout in root onboarding only

* clean up

* type

* keep 5m for settings preview

* switch back to letters on . or /

* reset first step scroller

* custom software warning goes down network comes up and back cb fix

* clean up

* smaller qr

* ReviewTermsPage just for device as NavWidget

* clean up

* installer: stay on 100%

* reset has internet while in wifiui

* try this

* try this

* see what error we get exactly

see what error we get exactly

* not final solution but see how good

* rm

* copy changes

* reset on disconnect

* for separate pr

* Revert "reset on disconnect"

This reverts commit 552372fa4d497ba7d9de7f2edb730ee63798ffa4.

* revert this, too buggy

* fix for updater

* sort

* fix test

* minor cleanup

* more leaks than this rn

* onboarding clean up

* clean up application

* click delay to small button

* clean up

* reset more state

* fix training guide not cleaning up driverview

* Revert "fix training guide not cleaning up driverview"

This reverts commit cac7c5f436056cc9e747f80905d390790fb83c22.

* simpler fix :(

* nice catch, if you go back to terms it will reset 300s timeout and brightness

* duplicate show

* unused
2026-03-03 01:06:51 -08:00
Shane Smiskol
2ebf09eb07 Clear frame on offroad transition 2026-03-02 23:25:23 -08:00
Shane Smiskol
90af6be9b8 Render offroad text centered 2026-03-02 23:24:43 -08:00
Shane Smiskol
3504ccb639 ui: keyboard goes back on . or / (#37534)
switch back to letters on . or /
2026-03-02 19:49:50 -08:00
Shane Smiskol
443cd795a3 Onboarding: set real width 2026-03-02 15:37:18 -08:00
royjr
06b2c68e03 macOS: fix cabana builds (#37518) 2026-03-01 18:14:41 -08:00
Adeeb Shihadeh
3478ac1338 cabana: remove QtSerialBus (#37523) 2026-03-01 16:12:04 -08:00
Adeeb Shihadeh
ce04d25f7d cabana: remove QtConcurrent (#37522) 2026-03-01 16:00:29 -08:00
Adeeb Shihadeh
0c7abf3855 cabana: remove QtXml (#37521) 2026-03-01 15:55:57 -08:00
Adeeb Shihadeh
0b9ab8bb91 cabana: replace Qt types with stdlib (#37519)
* cabana: replace Qt types with stdlib

* lil more

* cleanup sconscript
2026-03-01 15:51:16 -08:00
Adeeb Shihadeh
6b52ee7ef2 tools cleanup (#37520) 2026-03-01 15:40:10 -08:00
Adeeb Shihadeh
c3d5c5f016 fix nigthly build (#37516) 2026-03-01 14:12:27 -08:00
Adeeb Shihadeh
0374979397 use vendored raylib from dependencies repo (#37489) 2026-03-01 13:52:39 -08:00
Adeeb Shihadeh
f9b5d1e9e5 use vendored libyuv from dependencies (#37512)
* vendor libyuv from dependencies

* relock libyuv to latest vendor branch

* install cmake in macOS setup when missing

* lock

* unused?

* rm that

* no yuv for the larch
2026-03-01 10:46:26 -08:00
Adeeb Shihadeh
041606de4c fix font output targets (#37511) 2026-03-01 10:01:41 -08:00
Shane Smiskol
c244a5d485 Update BigInputDialog to remove default URL
Remove default URL from custom software input dialog.
2026-03-01 03:41:20 -08:00
Shane Smiskol
308475fcc9 Fix continue being enabled under WifiUi 2026-03-01 03:27:41 -08:00
Shane Smiskol
a7de971334 mici setup: use nav stack (#37507)
* pressable

* slow

* fast and looks great

* 0.075

* clean up

* fix missing

* clean up

* mici setup use nav stack!

* remove flat state!

* todo

* clean up

* clean up ordering

* clean up

* reset progress on show, dont mutate nav stack from thread

* reset text on show too

* rename

* clean up
2026-03-01 02:41:51 -08:00
Shane Smiskol
61658fbfe3 mici setup: new start button (#37501)
* pressable

* slow

* fast and looks great

* 0.075

* clean up

* fix missing

* clean up
2026-03-01 00:56:52 -08:00
Shane Smiskol
5ef0040ac6 ui: delay click callback (#37502)
* delay click callback

* actually may be better

* clean up

* clean up
2026-02-28 23:51:56 -08:00
Shane Smiskol
24d3f07a2f Add review terms & conditions to device settings w only accept 2026-02-28 22:02:42 -08:00
Shane Smiskol
b10c2ada79 ui: match updater/setup/installer figma text styles (#37500)
* from figma

* match setup figma now

* lint
2026-02-28 21:52:37 -08:00
Shane Smiskol
d44fde7117 multilang: return original string if missing (#37487)
should return og if not there
2026-02-28 21:50:59 -08:00
Robbe Derks
d634894300 Fix thermal sensor readouts on four (#37310) 2026-02-28 21:16:48 -08:00
Adeeb Shihadeh
8856585129 new demo route (#37457) 2026-02-28 21:14:51 -08:00
Adeeb Shihadeh
e7cc70f3fa consolidate file downloading from C++ to Python (#37497) 2026-02-28 21:09:02 -08:00
Adeeb Shihadeh
a6b562e0c1 jenkins: move panda tests before camera tests (#37498)
* jenkins: move panda tests before camera tests

* force this time

* Revert "force this time"

This reverts commit 53508225d39d63b97ff7ecc3a0181a27b5948d1b.
2026-02-28 20:51:31 -08:00
Adeeb Shihadeh
ca5234a32f tools/setup: remove vestigial mac .env file 2026-02-28 16:44:00 -08:00
Adeeb Shihadeh
a27efe5796 setup: add retry for transient network fails on uv install (#37490) 2026-02-28 10:39:13 -08:00
Shane Smiskol
870430e19f Revert "Actions cleanup" (#37463)
Revert "Actions cleanup (#37307)"

This reverts commit f41d77b24f.
2026-02-28 08:11:25 -08:00
Shane Smiskol
6cbef7bc13 ui: widgets animate out v2 (#37483)
* i like this better

* clean up

* debug

* fix able to click navwidgets that are closing (tested at rc 10)

* add dismiss guards

* fix keyboard so it unselects

* pairing: use dismiss

* main todo

* rm pop_widgets_to!

* reset dismiss state on show event

* debug pop animation bugs

* Revert "debug pop animation bugs"

This reverts commit 9239f2e12cf79b1f75d15d39262fdd15ff5a5200.

* revert

* cmt

* type

* clean up

* now do the todo

* treat using widgets, not idxs, as a separate clean up for later

* actually if not navwidget this is buggy

* fix

* short

* simpler
2026-02-28 08:00:07 -08:00
Shane Smiskol
9cc0d7a1c9 NavWidget: support programmatic dismiss (#37486)
* add dismiss support

* add to widget

* use in dialogs

* good catch

* fix!!

* fix!!

* it works eitehr way

* frick

* good catch
2026-02-28 07:16:06 -08:00
Shane Smiskol
e244aabe88 mici ui: fix navwidget guard 2026-02-28 06:38:47 -08:00
Shane Smiskol
b15390d351 mici ui: add interaction timeout fixme + fix navwidget guard 2026-02-28 06:33:51 -08:00
Shane Smiskol
2af7b3441e Nav stack: clean up (#37484)
guards
2026-02-28 06:19:43 -08:00
Shane Smiskol
87c495b761 Update test_widget_leaks.py 2026-02-28 06:16:03 -08:00
Shane Smiskol
d016071df3 NavWidget: clean up scroller access (#37480)
* clean up

* more

* great clean ups

* better name

* remove useless _can_swipe_away

* reorder

* rename

* state machine is nice but might be too much

* Revert "state machine is nice but might be too much"

This reverts commit f8952969243a2eac3ed5f84793ba7b0c0cdf24bf.

* got a better name out of it though

* clean up

* clean up

* rm!

* rm

* and this

* and

* clean up
2026-02-28 03:26:18 -08:00
Shane Smiskol
940c5b3b3f NavWidget: remove back enabled (#37482)
* free navwidget!

* clean up

* clean up
2026-02-28 03:17:57 -08:00
Shane Smiskol
256ee6cf6f rm hacky trigger 2026-02-28 03:03:49 -08:00
Shane Smiskol
b5855bcade NavWidget: clean up names (#37481)
* better names

* better names

* fix

* order

* rm!
2026-02-28 02:53:27 -08:00
Shane Smiskol
8f328f17fc NavWidget: rm useless state variable 2026-02-28 02:44:27 -08:00
Shane Smiskol
b6f3692b56 NavWidget: standardize back callback (#37479)
clean this up
2026-02-28 00:29:15 -08:00
Shane Smiskol
6266feeed2 Revert "ui: widgets animate out" (#37478)
Revert "ui: widgets animate out (#37321)"

This reverts commit 47ca2c9381.
2026-02-28 00:13:34 -08:00
Shane Smiskol
876ac69047 mici ui: power button visible on ignition (#37475)
visilbe when not ignition
2026-02-27 23:48:56 -08:00
Shane Smiskol
47ca2c9381 ui: widgets animate out (#37321)
* stash

* widgets animate out

* Revert "stash"

This reverts commit eac3493509cff6f2c64111d803c7fef21a1aa2dd.

* abstract

* works also

* works also

* support pop_widget

* only animate top

* callback in request pop

* tune it

* fix

* fix

* try this

* Revert "try this"

This reverts commit 191373a1b35917ee3a361afe73b16eeb60d0a20e.

* debug

* debug

* clean up

* simple test

* clean up

* clean up

* clean up

* clean up

* clean up

* clean up

* clkean up

* re sort

* fine

* yes
2026-02-27 21:21:33 -08:00
Shane Smiskol
10f3f56801 mici ui: get version from build metadata (#37470)
* get version from build

* fix test
2026-02-27 20:20:50 -08:00
Shane Smiskol
2e42bf9fa4 mici ui: fix onroad transitions if in settings (#37467)
* fix

* type
2026-02-27 18:32:28 -08:00
Shane Smiskol
3a958b882a Revert "onroad: fill bookmark icon when activated" (#37465)
Revert "onroad: fill bookmark icon when activated (#37034)"

This reverts commit 0b958f7c9a.
2026-02-27 15:47:56 -08:00
Shane Smiskol
1b17bf40cd Revert "UI: only show onroad_fade.png when engaged" (#37466)
Revert "UI: only show `onroad_fade.png` when engaged (#37051)"

This reverts commit 39dcc88330.
2026-02-27 15:47:54 -08:00
Robbe Derks
6e8f325024 Fix mic clipping on comma four (#37461)
* 6dB reduction on four

* wrong submodule
2026-02-27 15:05:01 -08:00
Adeeb Shihadeh
cc21fd3ac3 ci: remove weekly eval jobs 2026-02-27 15:04:37 -08:00
Shane Smiskol
010a32bb9b WifiUi: single source for forget btn visible (#37450)
single
2026-02-27 14:56:01 -08:00
Adeeb Shihadeh
276713ddf9 add back bz2 support with vendored bzip2 (#37459)
* add back bz2 support with vendored bzip2

Reverts f4a36f7f7 ("rm cpp bz2") to restore bzip2 decompression
support in replay/cabana tools, and replaces the system libbz2-dev
with a vendored bzip2 package from commaai/dependencies.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* relock bzip2 from releases branch

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 12:10:38 -08:00
Andi Radulescu
e1a4189c1f op.sh: add 'op script' subcommand with som-debug (#37325)
* op: add som-debug command for SOM serial debug via panda

* op: namespace som-debug under 'op script' subcommand
2026-02-27 11:51:01 -08:00
Adeeb Shihadeh
a1f4ba55bf nicer scons output (#37455) 2026-02-27 08:05:06 -08:00
Adeeb Shihadeh
d899834b63 Revert "new demo route (#37456)"
This reverts commit c5372e9041.
2026-02-27 08:04:45 -08:00
Adeeb Shihadeh
c5372e9041 new demo route (#37456) 2026-02-27 08:04:24 -08:00
Shane Smiskol
1bf0fb3851 mici ui: Scroller widget helpers (#37451)
* it's so dumb

* niceeee

* oh this is interesting

* this is actually epic

* clean up

* more clean up

* cmt

* super

* forgot

* top
2026-02-27 02:37:02 -08:00
Shane Smiskol
fe39ffa55a mici ui: clear ssh key (#37449)
* clear ssh

* rev
2026-02-27 00:56:41 -08:00
Shane Smiskol
0437998bce Scroller: add_widgets helper 2026-02-26 23:25:48 -08:00
Shane Smiskol
de8f7c4584 Scroller: rename scroll_to(block) 2026-02-26 23:24:21 -08:00
Andi Radulescu
286c4f8403 op.sh: fallback to script's own location for openpilot root (#37326)
op: fallback to script's own location for openpilot root
2026-02-26 21:24:51 -08:00
Adeeb Shihadeh
0977a91d65 CI for the people: no cache (#37437)
* sympathize with our first time cloners

* venv

* rm compile openpilot

* retry for all

* rm setup action
2026-02-26 21:17:00 -08:00
Adeeb Shihadeh
245d5bba9c make ruff happy 2026-02-26 20:49:18 -08:00
Adeeb Shihadeh
2ef29967e8 tici: rm cavli modem config 2026-02-26 20:42:18 -08:00
Kacper Rączy
6d559c4219 lagd: min_lag (#37402)
* Add min_lag

* Split line

* Clip lag

* Test should run with 3 lag frames too

* Update selfdrive/locationd/lagd.py
2026-02-27 03:47:07 +00:00
Shane Smiskol
3cc4683eb7 mici reset: fix cancel closes application (#37434)
* fix

* match tici

* rm
2026-02-26 17:34:26 -08:00
Shane Smiskol
ac08c79139 BigButton: sublabel takes all available space (#37431)
change
2026-02-26 16:19:12 -08:00
ZwX1616
04dcdf46bc DM: Le Mans GT3 Model (#37425)
* 81248b12-6592-4a5c-9b59-a44c64123b2b

* install tg instead of onnx

* fix python path

---------

Co-authored-by: Bruce Wayne <harald.the.engineer@gmail.com>
2026-02-26 16:10:57 -08:00
Shane Smiskol
7f1def00b2 BigButton: handle background function (#37430)
* move

* fix
2026-02-26 16:04:53 -08:00
Shane Smiskol
94ee6b0f43 BigButton: move parameters into class (#37429)
* BigButton: move parameters into class

* fix
2026-02-26 16:01:30 -08:00
ZwX1616
91696ba6c8 fix module for model_review (#37428)
* install tg instead of onnx

* fix python path

---------

Co-authored-by: Bruce Wayne <harald.the.engineer@gmail.com>
2026-02-26 15:58:52 -08:00
Shane Smiskol
608a1c2baa Add comment about epoch guard 2026-02-26 03:48:00 -08:00
Shane Smiskol
93a96695ea WifiManager: frozen WifiState (#37420)
froze
2026-02-26 03:46:40 -08:00
Shane Smiskol
146c64b0f1 mici ui: improve tethering a bit (#37418)
* try this

* deactivate

* faiilures!

* starting

* try

* ...

* starting

* fix strength

* revert

* debug

* more

* override for display network

* try

* nvm it fixes a few things

* cmt

* clean up
2026-02-26 02:24:59 -08:00
Shane Smiskol
4cd5c1b3c2 clean up 2026-02-26 02:24:12 -08:00
Shane Smiskol
811363cab9 clean up 2026-02-26 01:21:32 -08:00
Shane Smiskol
b2e94548b9 ui: move connected wifi buttons to front independent of scan results (#37417)
* move items

* clean up

* wtf

* debg
2026-02-26 01:20:06 -08:00
Shane Smiskol
cf5ae3cbca WifiManager: fix connect flash while forgetting (#37416)
* real traces for some tests

combine and new test for low strength/turn off hotspot while connecting

revert wifiui

* stupid llm

* clean up
2026-02-26 01:10:35 -08:00
Daniel Koepping
561c490b2a Replay: keep ref history (#37357)
keep history
2026-02-25 20:32:44 -08:00
Shane Smiskol
496ae85f67 WifiManager: guard init_wifi_state (#37413)
* failing test

* fix

* rename

* better
2026-02-25 19:30:02 -08:00
Robbe Derks
5c630b20a9 panda sound output level (#37408)
parse sound output level
2026-02-25 19:29:55 -08:00
Shane Smiskol
c2a7437972 WifiManager: fix some threading race conditions (#37406)
* interesting epoch approach

* repro

* determ fix

* cmts

* new issue

* test

* clean up

* cmt

* add back

* reorg cmt

* cmt

* clean up

* cmt
2026-02-25 19:09:11 -08:00
Shane Smiskol
1550520b63 WifiManager: connect/activate failure resets ssid (#37410)
fix connect/activate failure resetting connected/connecting ssid
2026-02-25 18:41:28 -08:00
Shane Smiskol
bcb4a6a3e3 WifiManager: fix deterministic state mismatches (#37407)
* hmm

* revert to master

* context too big

* fresh context

* early return

* early return

* tests

* restore cmts

* lester nester

* note

* add

* final review

* cmt
2026-02-25 17:25:31 -08:00
Shane Smiskol
7835b9aa17 WifiManager: no need to update networks in as many places v2 (#37405)
* debug

* todo

* clean up

* clean up

* fix test
2026-02-25 15:24:33 -08:00
Alexandre Nobuharu Sato
f2c4749420 update docs (#37293)
* update docs

* Update paths for brand-specific safety files
2026-02-25 15:40:13 -05:00
James Vecellio-Grant
238fca2334 tools: fix darwin compile errors (#37399) 2026-02-25 08:03:08 -08:00
Shane Smiskol
72ecc330e2 WifiManager: don't emit need auth for partially connected networks (#37397)
* fix a few

* document

* now remove unused prev_ssid

* more
2026-02-25 02:54:15 -08:00
Shane Smiskol
d9b5a1e30b WifiManager: add test for state machine (#37396)
* test wifi state machine

* clean up and another few tests

* no unittest :((

* clean up

* clean up

* try to repro on device

* try to repro on device

* nice, the flicker is covered by test_user_initiated_skips_dbus_lookup!

* add todo soon to be all fixed

* documentaiton

* test the thread races too

* _fire -> fire

* duplication

* new state

* fix some tests

* format

* combine similar tests

* use process_callbacks

* clean up

* collapse two tests

* rm nl

* previous messy test

* delete old

* asked another to ask questions
2026-02-25 01:59:19 -08:00
Shane Smiskol
1792a60053 WifiManager: split out state machine (#37395)
split out state machine
2026-02-24 23:24:08 -08:00
Shane Smiskol
571937da84 WifiUi: sort networks on show event (#37390)
* should fail

* this works but i think i know a better way

* something like this

* hmm

* this works

* rm useless test

* good stash

* Revert "good stash"

This reverts commit c2dddf0810286cb56e2418dd6f7085c2239e5109.
2026-02-24 22:42:09 -08:00
Shane Smiskol
6442752486 Scroller: reset state on show (#37391)
* one time test

* fix!

* cleanm up

* cleanm up
2026-02-24 22:29:25 -08:00
Shane Smiskol
ed34c4cfd6 NavWidget: reset some state on show 2026-02-24 20:42:50 -08:00
Adeeb Shihadeh
8810948eca CI: ensure no brew (#37387) 2026-02-24 18:49:59 -08:00
Harald Schäfer
0b6da2077f parse planplus (#37386) 2026-02-24 15:41:00 -08:00
Harald Schäfer
159d3a30e3 RM onnx (#37377)
* Give tf flags to onnx parse

* rm onnx again

* update lock
2026-02-24 15:35:52 -08:00
Shane Smiskol
6db6d79211 WifiUi: decouple button update from move/scroll (#37383)
* meh

* hmm

* can also do this

* keep behavior

* rm
2026-02-24 15:34:48 -08:00
Adeeb Shihadeh
a064de7ceb use vendored libjpeg-turbo (#37381) 2026-02-24 12:00:39 -08:00
Harald Schäfer
c787507449 Revert "rm onnx (#37285)" (#37379)
This reverts commit 23e1c4f49e.
2026-02-24 09:43:47 -08:00
Shane Smiskol
3352e48c51 Scroller: add blocking scroll to (#37378)
* rename

* make tuple

* blocking
2026-02-24 00:50:47 -08:00
Shane Smiskol
081bb51e58 mici: add missing Scroller hide events 2026-02-24 00:50:32 -08:00
Shane Smiskol
faa23595af mici buttons and sliders: use semi bold 2026-02-24 00:35:51 -08:00
Shane Smiskol
cf083711bb mici setup: match tici network timeout 2026-02-24 00:34:03 -08:00
Shane Smiskol
9f7002fdf1 mici setup: set core affinity 2026-02-24 00:30:40 -08:00
Shane Smiskol
761c349490 Make WifiNetworkButton self-contained 2026-02-24 00:29:20 -08:00
Adeeb Shihadeh
542e14306e vendor zstd and ncurses (#37376) 2026-02-23 23:02:53 -08:00
Adeeb Shihadeh
79bc6c3a52 replace python3-dev apt install with vendored package (#37374)
* replace python3-dev apt install with vendored package

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* keep for agnos

* cleaner

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 21:59:39 -08:00
Adeeb Shihadeh
8952c947d1 only build installer on device 2026-02-23 21:52:48 -08:00
Adeeb Shihadeh
a1e9cf9df9 translations: replace gettext apt dependency with pure Python tools (#37372) 2026-02-23 21:42:24 -08:00
Adeeb Shihadeh
2ddf95d47f rm libgles2-mesa-dev (#37373)
* rm libjpeg

* rm-libgles2-mesa-dev
2026-02-23 21:18:29 -08:00
Adeeb Shihadeh
8bd8066589 rm libjpeg (#37371) 2026-02-23 21:11:41 -08:00
Harald Schäfer
44cf6b358e ffmpeg: pipe (#37359)
spec pipe
2026-02-23 20:57:21 -08:00
Shane Smiskol
ded5e5c8d0 BigButton: normal draw order if not scrolling (#37368)
no scroll normal drawing
2026-02-23 20:46:17 -08:00
Shane Smiskol
21b8189a45 ui: support asset flip (#37367)
* support asset flip

* clean up
2026-02-23 20:45:41 -08:00
Shane Smiskol
76a552715f ui: move shake into BigButton (#37364)
* move

* fix
2026-02-23 20:45:22 -08:00
Shane Smiskol
bd3b7a1d87 Scroller: preserve original touch valid callback (#37363)
preserve
2026-02-23 20:20:44 -08:00
Shane Smiskol
8543afc78a Slider: add pressed state (#37365)
* sliders have pressed state

* more

* new and pressed setup sliders
2026-02-23 20:19:41 -08:00
Shane Smiskol
12f923445b Slider: call confirm callback after set state
in case confirm callback resets the state immediately
2026-02-23 20:14:06 -08:00
Shane Smiskol
0e127cf88b WifiManager: guard init wifi state (#37366)
guard init wifi state
2026-02-23 20:13:17 -08:00
Adeeb Shihadeh
c5b65d072d no more xset 2026-02-23 19:53:07 -08:00
Shane Smiskol
ed8d1a65c3 BigCircleButton: new pressed image 2026-02-23 19:39:30 -08:00
Shane Smiskol
91930c2d0d UnifiedLabel: add set_line_height 2026-02-23 19:37:59 -08:00
Trey Moen
19459d2b2e feat(lpa): at client + list profiles (#37337)
* Reapply "feat(lpa): `at` client + list profiles (#37271)" (#37322)

This reverts commit ddf8abc14a.

* lpa: fall back to ModemManager D-Bus when serial port unavailable

On older devices, ModemManager still claims /dev/ttyUSB2, so the
direct serial open fails. Try serial first; if it can't be acquired,
transparently route AT commands through MM's D-Bus Command() interface.

Co-authored-by: Cursor <cursoragent@cursor.com>

* lpa: add serial/dbus transport labels to debug logs

Co-authored-by: Cursor <cursoragent@cursor.com>

* no

* lint

* here

* const

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-23 18:25:52 -08:00
Adeeb Shihadeh
5af3f32157 simplify setup (#37358)
* simplify setup

* lil more

* simplify dockedr

* just run setup there:

* don't need that junk

* lil more
2026-02-23 16:56:58 -08:00
Harald Schäfer
16dda06a0c Reapply chunker (#37292)
* Reapply chunker

* good size

* rm glob

* cleaner

* back to 45mb

* warp need not be fixed

* add manifest path

* lil cleaner
2026-02-23 16:49:48 -08:00
Adeeb Shihadeh
76d084d877 switch to system compilers (GCC on Linux, Apple Clang on macOS) (#37355) 2026-02-23 16:34:42 -08:00
Shane Smiskol
90a9ef277c ui: remove multiple option dialog (#37356)
* rm

* from here too
2026-02-23 15:17:21 -08:00
Shane Smiskol
b32227e69f BigCircleButton: remove press_state_enabled 2026-02-23 15:03:48 -08:00
commaci-public
7cc237aa4c [bot] Update Python packages (#37351)
* Update Python packages

* fix

---------

Co-authored-by: Vehicle Researcher <user@comma.ai>
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2026-02-23 11:58:58 -08:00
Adeeb Shihadeh
0a14e19808 CI: use setup action on macOS (#37352) 2026-02-23 09:45:29 -08:00
Shane Smiskol
c16879f2b8 mici ui: fix missing home show event (#37347)
fix missing
2026-02-23 01:40:56 -08:00
Shane Smiskol
8d0cb9c8cf Unified label fix scroll fade (#37346)
* disable forget for tethering

* nets

* put in wifiman

* batch

* revert

* clean up
2026-02-23 01:31:06 -08:00
Shane Smiskol
2ecdd2810c mici ui: disable forget on tethering and show full strength (#37344)
* disable forget for tethering

* nets

* put in wifiman

* batch

* Revert "batch"

This reverts commit 9af20c1c7513c22bf9283b2f02514373fa981f50.

* clean up

* more

* more
2026-02-23 01:22:59 -08:00
Shane Smiskol
35e38f5fe4 mici ui: show lock in network panel (#37345)
* disable forget for tethering

* nets

* put in wifiman

* batch

* revert

* draw
2026-02-23 01:21:40 -08:00
Adeeb Shihadeh
2a0ac63fa5 remove libbz2 from ubuntu setup (#37342) 2026-02-22 22:17:15 -08:00
Adeeb Shihadeh
ca058bcc81 bye bye brew (#37340)
* bye bye brew

* drop the nproc it's simpler
2026-02-22 21:52:11 -08:00
Adeeb Shihadeh
f96406b13f use vendored eigen from dependencies repo (#37339)
* use vendored eigen from dependencies repo

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* lock

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 21:48:00 -08:00
Adeeb Shihadeh
0738c05d9f vendored git-lfs (#37338)
* use vendored zeromq from dependencies repo

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* lock

* rm more crap

* use vendored git-lfs from dependencies repo

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* from releases

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 21:29:23 -08:00
Adeeb Shihadeh
08b76d3de6 Use built-in clang on macOS (#37335)
* rm extra LLVM install on macOS

* update that

* rm brew cache

* no cache

* Revert "no cache"

This reverts commit a3f8eff234935d4bb27d4bd785ad8a710496a159.
2026-02-22 20:14:12 -08:00
Adeeb Shihadeh
cef81da1e9 use vendored zeromq from dependencies repo (#37333)
* use vendored zeromq from dependencies repo

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* lock

* rm more crap

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 19:59:05 -08:00
Adeeb Shihadeh
f4a36f7f74 rm cpp bz2 (#37332) 2026-02-22 19:37:14 -08:00
Adeeb Shihadeh
f911493177 rm pyaudio (#37331)
* rm pyaudio

* those too
2026-02-22 19:30:24 -08:00
Adeeb Shihadeh
fa2050ab1a rm unused dependencies (#37329)
ok just libusb
2026-02-22 19:21:56 -08:00
Adeeb Shihadeh
4bffe422e4 vendor capnproto and ffmpeg via dependencies repo (#37327) 2026-02-22 19:15:11 -08:00
Adeeb Shihadeh
f881a9ba68 rm vendor building workflow 2026-02-22 19:00:29 -08:00
Adeeb Shihadeh
afa9ec1138 bump panda: vendored toolchain (#37324)
* bump panda: vendored toolchain

* add

* bump panda
2026-02-22 16:27:59 -08:00
Trey Moen
ddf8abc14a Revert "feat(lpa): at client + list profiles (#37271)" (#37322)
This reverts commit 8bca2ca758.
2026-02-22 09:34:37 -08:00
Shane Smiskol
5f722d2c93 four: new wifi ui design (#37152)
* start

* start

* lil more

* add forget

* fix forget button scrolling

* push right a bit

* fix forget press

* add divider

* fix scroll panel

* better forget and overriding

* revert this

* check icon

* cursor merge conflict fix

* fix rounding and forget btn placement

* scroll indicator

* 65%

* calibrate

* try loading animation

* push to device

* top right

* bottom right

* no red

* top left

* bottom left

* down 2px

* WHY DOES NETWORK MANAGER KEEP CRASHING AHHH

* reduce round trip calls in update_networks

* clean up and combine getallaccesspoint and activeaccesspoint

* cmt

* animate big button over smoothly. super hacky, need to clean up

* animate

* remove old widgets and images

* remove status label, tune loading animation opac back

* connecting is a little buggy still

* add back missing network and don't pop

* some fixes

* "clean up"

* fix lag in animation

* fix adding saved connection to start

* remove saved network to start, divider

* animate up, over, and down

* revert for now

* remove fancy complex animation for now, sorry nick

* remove divider + clean up

* more clean up

* more clean up

* fix forget button press

* cmt

* tweak loading animation behavior

* new lock fix wifi

* rm old lock

* great catch by opus

* clean up

* debug

* fix touch events that are down -> up in one frame (why it only bugged on mici)

* clean up

* eager forgetting

* this SHOULD be full eager forget, more than i thought

* fix wifi slash positioning

* move forgotten networks after saved networks

* temp keep

* test on device

* fix

* see 65

* 5 best

* fix double render double brightness

* can click bottom right now

* disable touch while animating

* fix animation

* can scroll while animating, not tap

* not great yet

* clean up

* didn't work

* always update networks after activation

* stash

* move to update_state

* debug

* debug

* temp

* fix ip and metered flickering when updating at high freq (or rare race condition)

* fix

* if you give it less than 8 chars it never clears connecting

* lock no int

* better wrong password handling

* shake when wrong password

* nm set connecting when it connects on its own

* loading bottom right

* sort connecting first

* sort by unquantized to put strongest first

* clean up

* clean up nm

* clean up nm

* shorter

* fix crash

* 0.5s

* debug

* revert and try something else

* stash

* no

* rev

* use signals

* more

* not wrong password if ever connected after wrong

* similar to gnome shell, don't save connection that never successfully activated.

we do this by creating temporary memory connection with persist: volatile that deletes itself if failed, and then only write to disk when activated

* clean up

* cover all states

* clear if connecting too

* remove pritn

* might need this for CoxWifi

* whoops

* save last pass

* Revert "whoops"

This reverts commit 83a133955246ce32dcf119ededd8b01b3162a866.

* Revert "might need this for CoxWifi"

This reverts commit cddb8b35be152ed154462b188283f9d5a844583d.

* this may be less noisy for low strength networks, but less accurate as previous was reflecting nm state better

* Revert "this may be less noisy for low strength networks, but less accurate as previous was reflecting nm state better"

This reverts commit 740286c846556f32125a96bfe6ecf128300af0d8.

* race condition with volotile not removing conn fast enough/update networks not firing fast enough

* Revert "save last pass"

This reverts commit 7249a58a18b11487fd0370cee36e40a17f7ac521.

* revert some wifiman stuff to master

* not needed

* rm active ap

* remove old dead code

* do after

* always send forgotten callback so we can't be stuck in forgetting state forever

* reproduce race condition where connection removed signal takes a while to remove, then update networks keep is_saved true

* fix from merge

* nice, we can remove some eager code now for treating is_saved as not saved after forgot since it's live

* more

* rm

* simplify passed in callbacks

* clean up

* need this one check back for wrong password to hide forget for a split second

* opus says this is simpler 🤔

* Revert "opus says this is simpler 🤔"

This reverts commit 71472e5b383d7f2083d95ba1188070f41ae14775.

* another attempt

* Revert "another attempt"

This reverts commit 31f30babe656f9cad24399bc2196bb6e7ab79bbd.

* fix from merge

* some lcean up

* fix

* fixes to make work with new animation

* clean up

* this works too

* simplify loading animation behavior for now, revert wifi scan time

* clean up

* temporary fix

* stash

* Revert "stash"

This reverts commit 7471dbdc452807b33b4868a98dd8565681b2e44d.

* stash

* Revert "stash"

This reverts commit e0e5e6e861734320ce5dea5626086784577cb334.

* this check was because is_connected could have been stale from Network as the source

* nm can show connected/connecting to network with 0 aps for a while if strength is low, move out of range under those states

* stash

* Revert "stash"

This reverts commit 5ec3b454d54392523947f6477f551657d3863a6d.

* todo

* todo

* order

* don't need temporary fix anymore

* cmt

* order

* unused i
2026-02-22 07:08:48 -08:00
Shane Smiskol
31ac5a216d WifiManager: fix NEED_AUTH for wrong network (#37320)
* stash

* test seemed to work

* simplify

* clean up

* move under

* Revert "move under"

This reverts commit ce940cffb32378cbe5a69edaf6fc9d9cec202e54.

* back

* fix
2026-02-22 05:49:27 -08:00
Shane Smiskol
1b262a5a52 Scroller: fix overlay 2026-02-22 03:55:13 -08:00
Shane Smiskol
517289f3a5 mici scroller: add move animation (#37319)
* already 90% of the way there and not 144 lines

* nice

* lift properly

* lift, wait, move, wait, drop!

* some clean up

* epic, he ran a simulation to turn opacity filter into pixels

* scroll independant move animation without layout!

* move into function

* clean up

* rm

* overlay behind moving item

* Revert "overlay behind moving item"

This reverts commit 598e22363eb66af6496fe5f1eea8e643d4c2adbb.

* simpler overlay under lifted item

* support multiple animations at once

* Revert "support multiple animations at once"

This reverts commit 3ce6c8281053ee4831ceb88cacf66c343fc7d7ff.

* clean up

* cmt

* clean up

* kinda works

* Revert "kinda works"

This reverts commit ff050c6afc058788b3189a0acc202ada17353504.

* clean up

clean up

* clear overlay

* diff report

* don't break more
2026-02-22 03:36:31 -08:00
Shane Smiskol
6fcd2187e1 scroller: items property 2026-02-21 23:33:47 -08:00
Shane Smiskol
8fa3f60de7 mici ui: remove DeviceStatus (#37317)
rm
2026-02-21 22:54:18 -08:00
Shane Smiskol
a3f40dbac3 ui: add Layout class (#37311)
* split nav widget out

* clean up

* clean up

* fix

* work

* small enough to not be function

* nah we want intflag

* clean up

* always runs

* more clean up

* prep for scroller

* opacity for settings

* clean up layout

* set enabled

* rm
2026-02-21 22:50:59 -08:00
Shane Smiskol
f99dc2eab2 mici scroller: default no snapping (#37316)
* change default

* fix
2026-02-21 22:35:41 -08:00
Shane Smiskol
cdcc2f6766 mici scroller: remove double pad args (#37315)
* remove double pad args

* fix
2026-02-21 22:31:05 -08:00
Shane Smiskol
1304f95978 mici ui: remove line separators (#37314)
remove
2026-02-21 22:26:07 -08:00
Shane Smiskol
c4393277fb ui: draw debug rects (#37313)
* debug

* new
2026-02-21 20:56:51 -08:00
Shane Smiskol
7cd9ab27e6 ui: split out NavWidget (#37312)
* spliit

* fix

* fix imports
2026-02-21 20:37:45 -08:00
Andrey Litvitski
ece999c548 fix typos in contributing doc (#37309) 2026-02-21 20:10:16 -08:00
Adeeb Shihadeh
f41d77b24f Actions cleanup (#37307)
* rm those

* more opt
2026-02-21 11:45:44 -08:00
Adeeb Shihadeh
f45f239774 CI: remove redundant build job (#37306) 2026-02-21 11:34:32 -08:00
Adeeb Shihadeh
02e550e2cb remove setup_vsound (#37305) 2026-02-21 11:32:51 -08:00
Adeeb Shihadeh
06298b28f1 ty: fix unused warnings 2026-02-21 10:28:14 -08:00
Adeeb Shihadeh
a694d051b3 trim unused ubuntu deps (#37297)
* trim unused ubuntu deps

* mac cleanup
2026-02-20 22:39:03 -08:00
Trey Moen
468a50b6f6 fix: adb ssh on mac (#37298)
* fix: adb ssh on mac

* revert
2026-02-20 22:38:51 -08:00
Adeeb Shihadeh
4e8a4f87f4 pj: handle no qt 2026-02-20 22:36:32 -08:00
Shane Smiskol
30350f4207 ui: navigation stack (#37094)
* initial

* start to support nav stack in settings panels + fix some navwidget bugs

* add deprecation warning and move more to new nav stack

* fix overriding NavWidget enabled and do developer panel

* fix interactive timeout and do main

* more device, not done yet

* minor network fixes

* dcam dialog

* start onboarding

* fix onboarding

* do mici setup

* remove now useless CUSTOM_SOFTWARE

* support big ui with old modal overlay

* reset can be old modal overlay, but updater needs new since it uses wifiui

* flip name truthiness to inspire excitement

* all *should* work, but will do pass later

* clean up main

* clean up settiings

* clean up dialog and developer

* cleanup mici setup some

* rm one more

* fix keyboard

* revert

* might as well but clarify

* fix networkinfopage buttons

* lint

* nice clean up from cursor

* animate background fade with position

* fix device overlays

* cursor fix pt1

cursor fix pt2

* rm print

* capital

* temp fix from cursor for onboarding not freeing space after reviewing training guide

* fix home screen scroller snap not resetting

* stash

* nice gradient on top

* 40

* 20

* no gradient

* return unused returns and always show regulatory btn

* nice!

* clean up

* new_modal is always true!

* more clean up

* clean up

* big only renders top 1

* fixup setup and updater

* stash

* Revert "stash"

This reverts commit 3cfb226ccb51869ed1f7d630b5fdd6725ad094d5.

* fix mici keys coming in from top

* clean up

* fix mici dialogs like tici, pop first incase call back pushes

* clever way but not not

* Revert "clever way but not not"

This reverts commit f69d106df61262f049df20cc1a9064ca1e6feeb7.

* more setup

* mici keyboard: fix not disabling below

* cmt

* fix wifi callbacks not running in rare case

* clean up network

* clean up network

* clean up dialog

* pairing

* rm

* todo

* fix replay

* they push themselkves!

* clean up ui_state

* clean up application

* clean up

* stash

* Revert "stash"

This reverts commit 07d3f5f26c99ef891086b6fe03095d53a62b8631.

* typing

* lint
2026-02-20 19:00:27 -08:00
Adeeb Shihadeh
c98ba4ff4c Qt is optional (#37295)
* Qt is optional

* cleanup
2026-02-20 18:54:00 -08:00
Adeeb Shihadeh
c46cf9f536 lil pyproject.toml cleanup 2026-02-20 18:35:24 -08:00
Adeeb Shihadeh
23e1c4f49e rm onnx (#37285) 2026-02-20 16:47:47 -08:00
Bruce Wayne
d6af0e6eb5 Revert "Simpler file chunker (#37276)"
This reverts commit b27fa58444.
2026-02-20 16:43:43 -08:00
Bruce Wayne
09926bf5b5 Revert "safer model pkl chunking (#37283)"
This reverts commit 5d54743d8b.
2026-02-20 16:43:33 -08:00
Adeeb Shihadeh
f9f33c4dc4 show venv size in package update job (#37286)
* show venv size in package update job

* lil more
2026-02-20 16:39:11 -08:00
Adeeb Shihadeh
5fc6fe68f6 rm mapbox-earcut (#37284) 2026-02-20 16:14:46 -08:00
Adeeb Shihadeh
806655b052 CI: replace docker with op setup (#37282) 2026-02-20 15:48:09 -08:00
Harald Schäfer
5d54743d8b safer model pkl chunking (#37283)
* safer chunking

* rm unchunked
2026-02-20 15:19:39 -08:00
Adeeb Shihadeh
b28ff40d4d insource parameterized (#37280)
* insource parameterized

* lil more

* fix
2026-02-20 14:59:36 -08:00
Adeeb Shihadeh
07163f793b pytest timeout doesn't even work (#37281) 2026-02-20 14:48:27 -08:00
Adeeb Shihadeh
66687746f9 replace dictdiffer with native capnp differ (#37279)
* replace dictdiffer with native capnp differ

* capnp diff
2026-02-20 14:20:02 -08:00
Harald Schäfer
b27fa58444 Simpler file chunker (#37276)
* Chunk tinygrad pkl below GitHub max size

* pull that out

* rm glob

* make work

* Single name def

* unused comment

* more cleanups

* revert that

* 10MB overhead

---------

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2026-02-20 10:37:14 -08:00
Trey Moen
8bca2ca758 feat(lpa): at client + list profiles (#37271)
* feat(lpa): implement list_profiles in TiciLPA

Add AT command serial interface, TLV parsing, and ES10x transport
to support listing eSIM profiles (SGP.22 v2.3). TiciLPA is a
singleton that maintains a persistent connection to the modem.

* feat(lpa): close TiciLPA serial connection on exit

Register atexit cleanup so the logical channel and serial port are
released when the process exits, even on crashes or early exits.

* feat(lpa): close stale logical channels on init to prevent timeouts

* trying to brick it

* Revert "trying to brick it"

This reverts commit 46a0467314479c92d2cf331280521a1263f6cc43.

* feat(lpa): remove ensure_capabilities check on init

Target devices are known to support the required AT commands,
so skip the capability probes and stale channel cleanup to
speed up initialization.

* feat(lpa): enable debug logging via DEBUG=1 env variable

* muuuch better

* revert

* cleanup

* constant
2026-02-20 10:26:50 -08:00
Shane Smiskol
cefddf4b9b ui: add navigation stack for tici (#37275)
* initial

* start to support nav stack in settings panels + fix some navwidget bugs

* add deprecation warning and move more to new nav stack

* fix overriding NavWidget enabled and do developer panel

* fix interactive timeout and do main

* more device, not done yet

* minor network fixes

* dcam dialog

* start onboarding

* fix onboarding

* do mici setup

* remove now useless CUSTOM_SOFTWARE

* support big ui with old modal overlay

* reset can be old modal overlay, but updater needs new since it uses wifiui

* flip name truthiness to inspire excitement

* all *should* work, but will do pass later

* clean up main

* clean up settiings

* clean up dialog and developer

* cleanup mici setup some

* rm one more

* fix keyboard

* revert

* might as well but clarify

* fix networkinfopage buttons

* lint

* nice clean up from cursor

* animate background fade with position

* fix device overlays

* cursor fix pt1

cursor fix pt2

* rm print

* capital

* temp fix from cursor for onboarding not freeing space after reviewing training guide

* fix home screen scroller snap not resetting

* stash

* nice gradient on top

* 40

* 20

* no gradient

* return unused returns and always show regulatory btn

* nice!

* revert selfdrive/ui

* let's do tici first

* bring back ui

* not sure why __del__, SetupWidget was never deleted?

* device "done"

* network "done!!"

* toggles "done"

* software "done"

* developer "done"

* fix onboarding

* use new modal for debug windows

* and aug

* setup "done"

* clean up

* updater "done"

* reset "done"

* pop first before callbacks in case callbacks push

* fix cmt

* not needed

* remove two commented functions for mici

* clean up application

* typing

* static

* not sure what this means

* fix big

* more static

* actually great catch

* fix cmt
2026-02-20 02:43:11 -08:00
Shane Smiskol
f829c90de6 skip widget leak test 2026-02-20 02:40:41 -08:00
Shane Smiskol
6bd3cab8a8 edge shadows should use widget y 2026-02-19 22:52:21 -08:00
Shane Smiskol
e54c0091bc tici ui: always show regulatory button (#37273)
* i knew it

* clean up
2026-02-19 22:49:23 -08:00
Shane Smiskol
48568cba0b mici training guide: fix memory leak each time you open dialog (#37270)
* fix

* meh

* unclaud test is best

* yess

* try

* works!

* remove dict handling

* clean up

* more clean up

* remove trash

* fixup

* fix up onboarding again

* fix drivercameradialog

* don't show test window

* more widgets

* fix all

* Revert "fix all"

This reverts commit 42d3537c9314af382961a16443a63faed202b157.

* move and whitelist

* clean up

* more test + ignore

* to fix

* temp

* Revert "temp"

This reverts commit 215ecbb8a8fc0e6826d45b2c0d57999c7a19a400.
2026-02-19 22:32:26 -08:00
Shane Smiskol
6ecb1060be ui: normalize ssids for 3X (#37269)
* fix for tici

* clean up
2026-02-19 16:36:35 -08:00
Shane Smiskol
93977e2ee2 ui: fix side gradients (#37268)
fix
2026-02-19 16:35:51 -08:00
Daniel Koepping
8650ca837f add power reduction to release notes (#37266) 2026-02-19 14:50:48 -08:00
Daniel Koepping
6853f1db29 bump panda (#37265) 2026-02-19 14:42:28 -08:00
Adeeb Shihadeh
140aa95523 add kia k7 to release notes 2026-02-19 09:33:03 -08:00
Trey Moen
69544c57fd refactor(esim): cleanup lpa (#37260)
cleanup lpa
2026-02-19 09:28:04 -08:00
Shane Smiskol
a3f2452fa7 WifiManager: single source for known connections (#37262)
* temp

* rev

* reproduce race condition where connection removed signal takes a while to remove, then update networks keep is_saved true

* fix

* Revert "reproduce race condition where connection removed signal takes a while to remove, then update networks keep is_saved true"

This reverts commit cf7044ee955777db16434ab81c520bbe798c9164.

* not anymore

* more clear

* safe guards

nl
2026-02-19 00:49:35 -08:00
Shane Smiskol
c736d43cce Remove old TODO in WifiManager
hell no
2026-02-19 00:40:20 -08:00
Shane Smiskol
a28cc71b8b WifiManager: always emit forgot callback (#37261)
* fixme

* fixme

* fixme
2026-02-19 00:12:49 -08:00
Shane Smiskol
612c518dd6 WifiManager: signal-driven connection status (#37258)
* signal driven wifi state

* copy exactly

* copy signal handler

* remove is_connected

* Revert "remove is_connected"

This reverts commit f2246a70f4a29e9f3405947ca43d9404578c9d2d.

* do 3 network

* missing reason

* do wifiui

* clean up mici updater

* rest

* or not connecting

* clean up is_connected

* clean up wifiui

* match wifiui state more exactly in network panel for wifi button

* update active connection info after activation (used to do in _update_networks)

* clean up prints

* more

* rm

* not needed

* clean up state machine a bit

* more

* more

* indent

* final clean up

* debug

* debug

* wait for ip?

* more

* revert

* just to see

* ensure we emit activated even if we fail to get conn path from dbus

* hmm

* fine

* back

* back

* Revert "back"

This reverts commit 6464abe243c2a3bbf62b8f9a109b72ec3ddb3817.

* debug flickering on forget then connect to another. commit before this is good

* fix rare flicker when forgetting network and immediately connecting to
another

* clean up

* clean up router stuff now

* ugh wtf

* stash -- wtf

* Revert "stash -- wtf"

This reverts commit 756a92a9c0530a16917303424e26447f258f17e4.

* Revert "fix rare flicker when forgetting network and immediately connecting to"

This reverts commit 90c5fc14551726765ab2524e7866ee8b3c5dee7c.

* remove debug

* fix

* add issues

* add flow

* match previous behavior

* it doesn't fix the flikcer

* more atomic

* Revert "more atomic"

This reverts commit ead87c5a7a4030719b64138c12b9154ec82e73d9.

* last test!

last test!

* really the race is here?

* atomic wifi_state replace

* not slow

* clean up
2026-02-18 22:42:05 -08:00
ZwX1616
3c4ddba992 DM: Ford GT Le Mans Model (#37257)
* b483cec4-7816-4570-a774-be3a2c100098/50

* shipfest

* da4b8724-8998-45da-aa36-d8fb390492b9

* revert

* typo

* deprecates

* 53a2718f-206b-4400-a70b-16915de18472/200

* bump

* update
2026-02-18 20:09:46 -08:00
Shane Smiskol
488d84c664 mici updater: clean up unused signal strength (#37259)
clean up
2026-02-18 16:40:09 -08:00
David
b6a0c89dc5 ui replay: record lossless to fix big replay diff (#37237)
* add RECORD_LOSSLESS and enable for replays

* use RECORD_QUALITY instead

* comment

* clarify comment

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* clarify comment

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-18 15:21:17 -08:00
David
a6f4cdb319 ui replay: remove fps limiting during headless replay (#37241)
use OFFSCREEN during headless replay for no fps limiting
2026-02-18 15:20:55 -08:00
David
b80d3e113b ui diff: better diff report on mobile (#37255)
* Add HTML template for UI diff report

* update .gitignore

* empty line

* use proper html tags

* remove paragraph tags

* simplify paths

* use h3

* use simpler replace instead; dynamically generate videos

* update diff html styling

* remove unnecessary

* fix

* use h4 instead

* padding on h4

* adjust heading margin

* revert

* use h4 again

* remove viewport

* Revert "remove viewport"

This reverts commit 7636920e556fc06bbd65cff7ecb4c3d31b11024d.
2026-02-18 15:20:25 -08:00
Jason Wen
d80cde6e41 tools: block manage_athenad in sim startup script (#37256)
tools: block `manage_athenad` in Metadrive startup script
2026-02-18 15:17:06 -08:00
Shane Smiskol
c6db0cd4b6 WifiManager: fix all networks showing as connected when no active connection (#37252)
* WifiManager: fix all networks showing as connected when no active connection

When there's no active WiFi connection, _get_active_wifi_connection()
returns None. This caused `self._connections.get(ssid) == None` to be
True for all unsaved networks, marking them all as connected.

Co-authored-by: Cursor <cursoragent@cursor.com>

* ltl

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-18 05:52:59 -08:00
Nick
489afc3842 four ui: edge shadows (#37239)
* ui: add edge shadow effect to horizontal scrollers in settings

Adds a black gradient falloff shadow (20x240, 100%→0% opacity) on the
left and right edges of horizontal Scroller panels. Enabled via an
opt-in `edge_shadows` parameter on Scroller for easy per-screen control.

Enabled on: settings menu, toggles, network, device, developer.
Not enabled on: home screen carousel, vertical scrollers, setup screens.

Co-authored-by: Cursor <cursoragent@cursor.com>

* ui: reduce edge shadow opacity to 80%

Co-authored-by: Cursor <cursoragent@cursor.com>

* what on earth is this

* some lines are ok

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Shane Smiskol <shane@smiskol.com>
2026-02-18 01:34:57 -08:00
Shane Smiskol
b5f86446d4 WifiManager: check AddConnection was successful (#37250)
check addconnect
2026-02-18 01:19:31 -08:00
Shane Smiskol
62b5fd54e6 WifiUi: sort by real strength (#37249)
sort by real strength
2026-02-18 01:18:06 -08:00
Shane Smiskol
7aeb7085a3 WifiUi: add hide Scroller event (#37248)
* add show/hide scroller events

* another good catch
2026-02-18 01:17:42 -08:00
Shane Smiskol
edafe139a4 WifiManager: set connecting status if NM auto connects (#37247)
* set connecting if nm auto connects

* good catch
2026-02-18 01:14:40 -08:00
Shane Smiskol
80f4becabf no need to guard connect with password 2026-02-18 01:03:39 -08:00
Shane Smiskol
c8e10139c2 WifiUi: if connected, don't show not connected (#37245)
* obt

* obt

* debug

* clean up
2026-02-17 22:53:49 -08:00
Shane Smiskol
966bb6cc54 WifiUi: update wifi button in loop (#37246)
* move to update_state

* move back
2026-02-17 22:41:51 -08:00
Shane Smiskol
887ea25b6d WifiManager: fix is_connected flicker while roaming on low strength networks (#37243)
* temp

* clean up

* debug

* clean up

* fix

* cmt

* clean up
2026-02-17 21:49:50 -08:00
Shane Smiskol
735c2fb48e WifiManager: active WiFi connection helper (#37244)
* short circuit

* rename

* move some usages over

* clean up

* cmt
2026-02-17 21:24:38 -08:00
Shane Smiskol
028f5ca1f4 WifiUi: fix flickering IP and network metered (#37242)
fix flickering ip and network metered
2026-02-17 19:52:37 -08:00
Shane Smiskol
d6238c285a ui: disable tethering password while updating (#37240)
* setting completed

* add back

* try

* try

* only pass

* just tehteringk
2026-02-17 19:41:31 -08:00
Jason Wen
4f407dabcd ci: fix update translations by enable submodule checkout in repo maintenance (#37236) 2026-02-17 16:36:01 -08:00
Shane Smiskol
fd34659dc3 NetworkManager: add more device states (#37235)
* safe

* missing states

* add enum for nmdevicestatereason

* rm for now

* fix links
2026-02-17 16:25:44 -08:00
Shane Smiskol
1f85860f7e WifiManager: always update networks after activation 2026-02-17 16:16:05 -08:00
Shane Smiskol
14f3f6dd1a WifiManager: fix forgotten callback signature 2026-02-17 15:02:31 -08:00
Adeeb Shihadeh
e527b463a5 Revert "Drop support for Intel macOS (#37215)" (#37234)
This reverts commit eea07462fa.
2026-02-17 15:02:06 -08:00
Shane Smiskol
7dc56dc064 draw black bg behind BigButton 2026-02-17 15:01:07 -08:00
Shane Smiskol
0a98ee9e4f WifiUii: rm separate connecting status (#37233)
rm connecting
2026-02-17 14:56:08 -08:00
felsager
43d162e8fb mpc_longitudinal_tuning_report: use enum for axis (#37231) 2026-02-17 11:49:26 -08:00
Ahmed Harmouche
037e6e749a cabana: fix crash when zmq address is used (#37222)
* Fix zmq support in cabana

* Refactor to launch bridge, remove socketadapter

* bridge_path should be camel_case
2026-02-17 09:19:41 -08:00
David
d984fb1bae ui diff replay: better display replays of different lengths (#37116)
* refactor: improve video synchronization logic in HTML report generation

* feat: include description of which video is longer in report; refactor stuff and add types

* refactor: simplify HTML report generation and remove extra formatting

* reduce diff

* fix video name

* reduce diff

* reduce diff

* fix

* parentheses

* fix I guess
2026-02-16 14:32:37 -08:00
David
3661a01489 ui diff: compare frame hashes instead of temp files (#37154)
* refactor: streamline frame comparison by using frame hashes instead of extracting frames

* add vsync

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-16 14:05:43 -08:00
Adeeb Shihadeh
7fd131e01c mem_usage.py: switch to our tabulate 2026-02-16 11:00:12 -08:00
commaci-public
5d8e54ae3e [bot] Update Python packages (#37228)
* Update Python packages

* revert for now

---------

Co-authored-by: Vehicle Researcher <user@comma.ai>
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2026-02-16 10:17:46 -08:00
David
422885dce6 ui replay: cleanup and fix workflow todos (#37230)
* fix: update pull request trigger and clean up workflow paths

* fix other event names
2026-02-16 09:55:46 -08:00
David
136574fbcb ui replay: run with no window (#37229)
run headless
2026-02-16 09:47:20 -08:00
Adeeb Shihadeh
a5f9c2fc23 unified ui preview for mici and tizi (#37226)
* unified ui preview for mici and tizi

* lil more

* variants

* run it

* trigger
2026-02-15 21:02:41 -08:00
Adeeb Shihadeh
6704f63a3d update ui job name 2026-02-15 20:43:56 -08:00
Adeeb Shihadeh
8e13d8abd0 CI: build big UI report 2026-02-15 20:33:11 -08:00
Adeeb Shihadeh
8831b11a24 remove old raylib screenshot tool (#37225) 2026-02-15 20:11:17 -08:00
David
03a4f7ef9a ui: add big (tizi) replay (#37198)
* init: tizi_replay.py from pr 37123

* separate coverage folder

* ui replay: adjust HOLD constant, fix coverage, use separate folder for coverage

* openpilot prefix

* fix directory

* fix ui_state

* fix settings click pos

* remove

* attempt merge replay files

* remove

* todo

* fix recording

* spacing

* simplify

* comment

* refactor hold

* refactor: remove layout definitions from VARIANTS and import conditionally in run_replay

* refactor:  remove VARIANTS config

* add argparser with --big flag and improve coverage sources

* refactor

* lowercase

* refactor: combine scripts

* add types

* refactor: move imports for gui_app and ui_state to improve coverage and organization

* update

* update script

* comment

* fix headless

* todo

* fix: get_time and get_frame_time determinism

* todo

* remove file accidently commited

* fix: improve inject_click and handle_event for deterministic event timestamps

* comment

* simplify add

* refactor script building

* fix mici clicks

* pass in pm

* fix wifi state

* refactor clicks

* more refactor

* click cancel instead of remove overlay

* setup_send_fn

* add setup fn

* dummy update

* change

* remove todo

* rename fn to frame_fn

* refactor

* fix workflow

* rename raylib ui preview to old

* rename mici workflow

* fix diff videos

* ignore sub html and mp4 files

* rename for diff

* rename for diff again (mici)

* use ScriptEvent instead of DummyEvent, and move mouse events directly to it; rename hold to wait

* fix: only import MouseEvent for type hint to fix coverage

* adjust settings button click

* clarify

* move ScriptEvent to replay_script

* add handle_event function

* remove passing in setup function, and refactor click events

* clean

* formatting

* refactor

* no import

* comment

* refactor

* refactor setup functions to replay_setup

* refactor

* add ReplayContext

* refactor

* move more setup functions

* refactor and simplify

* refactor

* refactor: add Script class

* refactor: enhance Script event handling and add wait functionality

* refactor

* remove setup_and_click

* use script.setup instead

* comments

* rename wait_frames to wait_after

* add comments

* revert workflows

* revert rename

* move arg parsing to main

* remove quotes

* add type

* return types

* type

* VariantType

* rename to LayoutVariant

* clarify

* switch

* todo

* Revert "fix diff videos"

This reverts commit 7a6e45a409cb7e6d7a330317639fcee74ef8bd31.

* add todos

* add more coverage

* wait 2 frames by default

* add comment

* comment

* switch

* fix space

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* remove extra

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Remove unnecessary blank line in ReplayContext class

* simplify

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2026-02-15 20:03:30 -08:00
Adeeb Shihadeh
c393973916 disable sim test, still not ready for it 2026-02-15 17:46:32 -08:00
Adeeb Shihadeh
27f89e6634 jenkins: merge & speedup camera tests (#37223) 2026-02-15 16:39:38 -08:00
Andi Radulescu
4166c9fccb ci: fix first-interaction action missing required input (#37221)
actions/first-interaction@v3 requires both issue_message and pr_message
inputs, but only pr_message was provided, causing the action to fail.
2026-02-15 09:44:06 -08:00
Adeeb Shihadeh
ced5f417b8 MetaDrive: slim down & enable CI test (#37216)
* MetaDrive slimming

* enable

* lock

* modeld fix

* minimal
2026-02-14 21:16:26 -08:00
commaci-public
f67f84109e [bot] Update Python packages (#37166)
* Update Python packages

* clear cache

* try this

* Revert "try this"

This reverts commit 79f21ea0956509c58e5e5ba65a08ae0b2cbd204b.

* Revert "clear cache"

This reverts commit aa49ac5bd3b6cecb25cf9cbfe1e07ec4ad608d63.

* revert for now

---------

Co-authored-by: Vehicle Researcher <user@comma.ai>
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2026-02-14 21:02:11 -08:00
Adeeb Shihadeh
eea07462fa Drop support for Intel macOS (#37215)
* Drop support for Intel macOS

* arch.sh

* scons

* platform.sh

* lil more

* mv tici
2026-02-14 21:00:29 -08:00
Adeeb Shihadeh
96d1b876bb pandad: remove multi-panda + USB support (#37217)
* pandad: remove multi-panda support

* lil more

* mac

* skip mac
2026-02-14 20:54:09 -08:00
Adeeb Shihadeh
56d3014298 Remove pycurl handling from mac_setup.sh (#37214) 2026-02-14 13:42:21 -08:00
Adeeb Shihadeh
ae6aa0f008 Remove gcc@13 installation from mac_setup.sh (#37213)
* Remove gcc@13 installation from mac_setup.sh

Removed installation of gcc@13 from mac_setup.sh.

* no cache

* Revert "no cache"

This reverts commit fc27f7dc9e6dab4b61703433130531f12dbe334b.
2026-02-14 13:39:14 -08:00
David
ecde604198 ui replay: use openpilot prefix (#37185)
* fix: use openpilot prefix

* fix ui_state import

* comment
2026-02-14 13:21:09 -08:00
David
4af41ffce6 ui diff: ensure video name matches output (#37211)
* auto name diff.mp4

* ensure output file has .html extension
2026-02-14 13:20:44 -08:00
Nick
2dac616bef keyboard: fix hint text truncation and add trailing ellipsis (#37207)
Widen the hint label rect so it doesn't reserve right-side space for the
hidden backspace button, preventing unnecessary text eliding. Also show
the blinking cursor over the hint and add trailing ellipsis to hint
strings for consistency.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-13 17:43:53 -08:00
Shane Smiskol
5a9fdde156 WifiUi: use WifiManager forget (#37208)
* start

* clean up forget
2026-02-13 17:30:59 -08:00
Shane Smiskol
9bb6e997aa Make more icons 90% white (#37206)
* 90% icons

* fix!
2026-02-13 17:20:54 -08:00
Shane Smiskol
cd03aa19a1 WifiManager: fix forgetting wrong network (#37187)
* not sure  how works but does?

* clean up

* clean up
2026-02-13 17:14:51 -08:00
Shane Smiskol
10065c8c28 WifiManager: handle failed state change (#37205)
* handle connecting to network that drops out w/ wrong password (no longer says connected and now deletes connection)

* clean up

* combine
2026-02-13 17:02:42 -08:00
Shane Smiskol
1b426a3160 wifi button shows connecting (#37202)
* connecting wifi button

* use real wifi strength

* simplify

* meh cursor brought up edge case
2026-02-13 16:15:59 -08:00
Shane Smiskol
c91225b52e WifiUi: reset networks on panel hide (#37199)
* stash

* fix setup

* clean up

* clean up

* clean up

* set active as safeguard
2026-02-13 15:37:07 -08:00
Adeeb Shihadeh
49a611df59 CI: don't block on badges job for release builds 2026-02-13 14:08:26 -08:00
YassineYousfi
2ba6df2506 chunk tinygrad pkl below GitHub max size - NoCache and AlwaysBuild (#37194)
* nocache

* +

* fixes

* lint

* not split

* use pathlib

* cleanup

* better

* even better
2026-02-13 10:14:24 -08:00
David
9b7bf4a101 mici ui replay: fix indeterminism with swiping and animations (#37110)
* fix: get_time and get_frame_time determinism

* remove some hackiness

* don't need that
2026-02-13 09:26:14 -08:00
felsager
a61badb564 test_following_distance: bump error margin when initial speed is 0 (#37196) 2026-02-12 20:59:14 -08:00
Shane Smiskol
2e21deeae8 WifiUi: fix up wrong password dialog (#37195)
* debug why so slow

* forget after

* i'm not sure why this is a thing

* better forget connecting reset

* ????

* has lag

* fix

* clean up

* should be fine
2026-02-12 20:48:34 -08:00
Harald Schäfer
132f10365a relax dm timing tgwarp (#37191) 2026-02-12 19:52:22 -08:00
David
98bc70344f fix: use correct display ID for WSL2 when setting up Xvfb (#36697)
use correct display ID for wsl
2026-02-12 19:19:25 -08:00
Shane Smiskol
0fa8e01d1f Wifi ui: render scroller gradient under (#37193)
* gradient under

* blend mode works

* Revert "blend mode works"

This reverts commit 092924fbd6dc40cbb937cac8578257ba5a28a7ef.

* everywehre

* everywehre
2026-02-12 18:39:08 -08:00
Shane Smiskol
f142f1cd70 scroller: move scissor to render 2026-02-12 16:24:48 -08:00
Shane Smiskol
eb5cd542d9 WifiUi: add new networks to end, delete buttons on exit (#37189)
* add networks to end, remove bad scroller restore logic that sometimes starts in the middle

* works

* almost

* wifi slash

* clean up

* clean up

* opactiy

* more clean up

* more clean up

* set enabled and network missing on regain network

* cmt
2026-02-12 16:23:58 -08:00
Shane Smiskol
1257d31a56 WifiManager: dbus debug flag (#37188)
* add dbus debug wrapper

* no
2026-02-12 15:00:50 -08:00
Shane Smiskol
2e9b980fc2 remove lang_button 2026-02-12 13:48:55 -08:00
Shane Smiskol
2b7f91d151 WifiManager: update networks on active (#37186)
* immediately

* only if active
2026-02-12 13:40:00 -08:00
David
7665045fc6 ui replay: fix coverage reporting to include imports (#37180)
Fix coverage reporting by adjusting MiciMainLayout import
2026-02-12 10:46:34 -08:00
Harald Schäfer
af1583cdfc Reapply tgwarp w NV12 fix (#37168)
* Revert "Revert tgwarp again (#37161)"

This reverts commit 45099e7fcd.

* Weird uv sizes

* Fix interleaving

* Fix on CPU

* make CPU safe

* Prevent corruption without clone

* Claude knows speeed

* fix interleaving

* less kernels

* blob caching

* This is still slightly faster

* Comment for blob cache
2026-02-12 08:59:19 -08:00
Shane Smiskol
a46007d84d WifiManager: safeguard an error response (#37182)
safeguard
2026-02-11 23:14:38 -08:00
Shane Smiskol
13b71b4e81 WifiManager: update networks on scan (#37177)
* like c++ wifiman

* rename to scan

* can do this

can do this

* Revert "can do this"

This reverts commit 295f7f49d448c6aacdde2ef810904df86357840b.

* kinda useless now

* clean up
2026-02-11 23:14:13 -08:00
Shane Smiskol
b084294dc0 incorrect -> wrong 2026-02-11 23:05:04 -08:00
Shane Smiskol
6cf95918c5 WifiManager: clean up connections (#37179)
* fix recent connect regression from connection not being known yet

* always update connections in background, keep track via signals only. no getallconnections each time one is added/deleted. matches c++

* works

* clean up

* clean up

* clean up
2026-02-11 23:02:07 -08:00
Shane Smiskol
0072449b01 WifiManager: cache connections until new/removed connection (#37175)
* new/removed conns signal

* clean up

* only get connections when adding/removing not every refresh

* add debug

* block

* Revert "block"

This reverts commit 30bbffca8d2db21c53d7a3601ae46bf05e2a7cd5.

* rm debug

* block on any new message, faster conn rem/add reaction

* better names
2026-02-11 17:07:41 -08:00
Shane Smiskol
f03efab907 Reduce wifi dbus calls pt. 4 (#37174)
* combine active AP and all APs into getall

* combine these two functions reducing more calls

* little clean up

* down here
2026-02-11 16:30:40 -08:00
Shane Smiskol
cddc3b9e8f Reduce wifi dbus calls pt. 3 (#37172)
* fewer calls to set metered

* print

* hell yeah

* Revert "hell yeah"

This reverts commit 0e0786bc204821329febc62a1b8dfd870e9aeb6e.

* Revert "print"

This reverts commit e9c7550496e9835888cb71c7dd622cbfb4624fbf.
2026-02-11 15:25:53 -08:00
Shane Smiskol
d977a5bd62 ui: reduce wifi dbus calls during scanning pt. 2 (#37171)
one GetAll instead of 2 calls per wifi activeconnection

can't trust anyone these days
2026-02-11 15:13:30 -08:00
Shane Smiskol
99c2fcc797 ui: reduce wifi dbus calls (#37170)
* 2 -> 1

* cmt
2026-02-11 15:05:10 -08:00
felsager
5b98ea04ad mpc tuning report: minor improvements (#37167) 2026-02-11 10:21:12 -08:00
Shane Smiskol
b9344af9bb WifiManager: sort by known networks (#37164)
sort by known
2026-02-11 01:23:14 -08:00
Shane Smiskol
1e0f1a8abc Scroll panel: adapt to content size shrinking (#37163)
fix
2026-02-11 01:23:00 -08:00
Shane Smiskol
8ba36b76a0 Simple scroll indicator (#37162)
* scroll indicator

* 65%

* calibrate

* margin

* cleaner?

* manual clean up

* clean up

* full scroll bar

* look

* looks

* unlook

* no fade, looks good but "too much"

* clean up

* cmt
2026-02-11 01:15:02 -08:00
Shane Smiskol
3f382d6e69 Remove vertical scroll bar 2026-02-11 00:18:02 -08:00
Shane Smiskol
10edb90ac6 newline in updater error 2026-02-10 23:27:38 -08:00
Harald Schäfer
45099e7fcd Revert tgwarp again (#37161)
* Reapply "revert tg calib and opencl cleanup (#37113)" (#37115)

This reverts commit 667f3bb32f.

* revert msgq too

* msgq on master
2026-02-10 23:12:41 -08:00
Shane Smiskol
77f069cbe5 BigButton: don't round drawn content (#37158)
* unround icons

* unround rest
2026-02-10 21:57:34 -08:00
Shane Smiskol
1070dda3ee ui.py: fix stride (#37159)
fix uii.py
2026-02-10 21:56:45 -08:00
Shane Smiskol
fcd5897650 BigButton: push up all content when pressed (#37157)
clean implementation
2026-02-10 21:29:14 -08:00
Adeeb Shihadeh
f1785c245a remove pytest-repeat (#37156) 2026-02-10 20:53:02 -08:00
commaci-public
6892b62761 [bot] Update Python packages (#37147)
* Update Python packages

* fix

* bump panda

* revert tinygrad

---------

Co-authored-by: Vehicle Researcher <user@comma.ai>
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2026-02-10 20:48:34 -08:00
Daniel Koepping
a18ddf12eb remove azure deps (#37084)
* remove azure deps

* fix lint

* restore scripts
2026-02-10 17:51:09 -08:00
Shane Smiskol
46ae67b607 BigButton: fix alignment and style (#37153)
* correct from bottom alignment

* temp

* fix scale animation w/ btn_y

* home settings are always 64

* cleanup

* some clean up

* make 23 const

* rev

* more
2026-02-10 17:15:59 -08:00
Shane Smiskol
4d3aeaba6d ui: remove dead side button (#37151)
* rm side button

* fix

* fix
2026-02-10 15:04:36 -08:00
Shane Smiskol
ba67e468ab remove dead multilang for mici (#37150) 2026-02-10 14:53:25 -08:00
ZwX1616
e946e9de0b Revert "DM: Ford GT model" (#37148)
Revert "DM: Ford GT model (#37013)"

This reverts commit 1459d3519d.
2026-02-10 13:56:07 -08:00
Adeeb Shihadeh
7d2563880a show dependency tree in weekly uv lock job (#37146) 2026-02-10 09:31:50 -08:00
Andi Radulescu
43edc51cb6 bump numpy to 2.4.2 (#37145) 2026-02-10 09:20:52 -08:00
Andi Radulescu
9476a8a7f6 bump create-pull-request action to v8.1.0 (#37143)
The pinned SHA was v6.0.4, which is incompatible with actions/checkout@v6
and causes a "Duplicate header: Authorization" 400 error during git
remote operations. See peter-evans/create-pull-request#4272.
2026-02-10 09:19:56 -08:00
Andi Radulescu
053441fbb3 fix first-interaction action inputs for v3 (#37144)
v3 renamed inputs from kebab-case to snake_case (repo-token -> repo_token,
pr-message -> pr_message). The old names were silently ignored, causing
"Input required and not supplied: issue_message" errors.
2026-02-10 09:19:37 -08:00
Daniel Koepping
e35a1eca99 Process replay: move refs to ci-artifacts (#37049)
* rm upload

* use ci-artifacts

* sanitize

* rm ref_commit

* add ci

* handle exept

* bootstrap

* always

* fix

* replay

* keep ref_commit fork compatibility

* remove upload-only

* apply comments

* safe diffs in master

* Revert "safe diffs in master"

This reverts commit 369fccac786a67799193e9152488813c6df20414.

* continue on master diff

* Update .github/workflows/tests.yaml

Co-authored-by: Shane Smiskol <shane@smiskol.com>

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2026-02-09 21:37:20 -08:00
Harald Schäfer
3d11e8ef36 Revert "Chunk big model files (#37134)" (#37139)
This reverts commit a941e8f78f.
2026-02-09 20:58:22 -08:00
James Vecellio-Grant
73f720220b modeld: simplify model run processing (#37138)
Hi! The point of this pr is to make the model run easier to read. On the latest tinygrad numpy().flatten() empirically does the same thing as the internal contiguous().realize().uop.base.buffer.numpy(). numpy() is also documented (docstrings), which can assist new contributors in learning what each potential execution does. Torq_boi or yassine, I know you want proof in the code base, so here it is. As of tinygrad commit 2f55005:

 in tinygrad_repo/tinygrad/tensor.py
Lines 316-318 (def _buffer): ensure the tenso is contiguous() and realized() before accessing the raw buffer.
Line 378 (def numpy): Wraps the buffer access and adds a reshape to match the tensor shape.
self._buffer() is what executes contiguous().realize() and returns the buffer object.
Calling numpy() on that buffer object returns a 1D array (defined in tinygrad/device.py:193 via np.frombuffer).
The reshape(self.shape) at the end of Tensor.numpy() then adds dimensions to that 1D array. The added .flatten() removes those dimensions, flattening it back to a 1D array. Effectively the same as what is currently done, but less complex.
2026-02-09 20:24:25 -08:00
Shane Smiskol
a1202eaf2a ui: delay nav bar animation (#37137)
* from da bounce

* try this

* you can get it to clean up wow
2026-02-09 17:16:36 -08:00
Harald Schäfer
a941e8f78f Chunk big model files (#37134)
* file chunking

* try this

* more cleanup

* cleaner
2026-02-09 15:29:50 -08:00
Andi Radulescu
9aca13cf2d remove get_mcu_type from pandad.py (#37132) 2026-02-09 09:36:04 -08:00
Adeeb Shihadeh
ac087d085e Build vendored artifacts in CI (#37127)
* Build vendored artifacts in CI

* parallel

* deterministic

* fix up

* fix gitignores

* lil more

* lil more consistency
2026-02-08 09:59:33 -08:00
Adeeb Shihadeh
46d65095af CI: garbage collect tmp jenkins branches (#37125) 2026-02-07 23:04:01 -08:00
Adeeb Shihadeh
667f3bb32f Revert "revert tg calib and opencl cleanup (#37113)" (#37115)
* Revert "revert tg calib and opencl cleanup (#37113)"

This reverts commit 51312afd3d.

* power draw is a lil higher

* just don't miss a cycle

* fix warp targets

* fix tinygrad dep
2026-02-07 21:36:44 -08:00
Adeeb Shihadeh
c65cf18c75 Better memory usage debugging (#37120) 2026-02-07 21:00:56 -08:00
Adeeb Shihadeh
55a31d7657 replace tabulate with simple helper (#37122) 2026-02-07 18:27:16 -08:00
Adeeb Shihadeh
ac17c35cfe bridge: move ZMQ handling over (#37118) 2026-02-07 15:18:00 -08:00
David
bcb13a7229 ui diff replay: remove unused frame_data list for individual frame display (#37117)
Remove unused base64 encoding and simplify frame data handling in diff video report
2026-02-07 14:19:08 -08:00
Adeeb Shihadeh
0ce28803ec gitignore .context/ 2026-02-07 12:20:34 -08:00
Trey Moen
db8cd9f411 fix: route fetch metadata when first log isnt uploaded (#37114)
* fix: route fetch metadata when first log isnt uploaded

* default

* simple

---------

Co-authored-by: Trey Moen <treymoen@amazon.com>
2026-02-07 11:52:28 -08:00
Harald Schäfer
51312afd3d revert tg calib and opencl cleanup (#37113)
* Revert "Remove all the OpenCL (#37105)"

This reverts commit d5cbb89d84.

* Revert "rm common/mat.h"

This reverts commit 4ce701150a.

* Revert "Calibrate in tg (#36621)"

This reverts commit 593c3a0c8e.
2026-02-07 09:10:29 -08:00
Shane Smiskol
efc23644c7 Delete less dialogs (#37111)
* try

* revert

* this is fine
2026-02-06 22:59:05 -08:00
Shane Smiskol
e531f844f6 bump opendbc (#37108)
bump
2026-02-06 20:15:12 -08:00
Shane Smiskol
46f74753cd clip: use wrap_text helper (#37102)
* they are same

* no duplication!

* rm rstrip
2026-02-06 17:11:17 -08:00
Adeeb Shihadeh
d5cbb89d84 Remove all the OpenCL (#37105)
* Remove all the OpenCL

* lil more

* bump msgq
2026-02-06 16:36:47 -08:00
Adeeb Shihadeh
4ce701150a rm common/mat.h 2026-02-06 16:06:16 -08:00
Shane Smiskol
96fded0399 clip: clean up imports (#37104)
* wtf is this

* don't break import timing

* they are the same

* clean up

* good catch
2026-02-06 15:13:08 -08:00
felsager
12597856da long mpc: state name before subscript (#37101) 2026-02-06 14:26:20 -08:00
Harald Schäfer
593c3a0c8e Calibrate in tg (#36621)
* squash

* bump tg

* fix linmt

* Ready to merge

* cleaner

* match modeld

* more dead stuff
2026-02-06 14:13:46 -08:00
felsager
187d3a079c long_mpc: use log.capnp source enum (#37096) 2026-02-06 13:36:51 -08:00
felsager
9755520b87 longitudinal mpc tuning report: add sinusoidal oscillation scenario (#37100) 2026-02-06 11:30:49 -08:00
felsager
7099bd18e3 longitudinal mpc tuning: behind if main (#37099) 2026-02-06 10:35:54 -08:00
David
cb670c2c3d clips: improve overlays for mici (#37088)
* adjust overlay sizes and wrap metadata text for mici

* comment

* adjust overlay rendering to dynamically calculate line height for wrapped metadata text

* render time first so we can use width in margin calculation

* update comment (to retry failed CI actually)

* increase metadata size on mici
2026-02-06 09:58:30 -08:00
Shane Smiskol
f5b84e74f4 fix mici setup int enum 2026-02-05 23:42:16 -08:00
Shane Smiskol
2b8e887e44 mici setup: remove unused functions 2026-02-05 23:39:22 -08:00
Harald Schäfer
64f74dad27 Revert "long_mpc: use log.capnp source enum instead of list" (#37095)
Revert "long_mpc: use log.capnp source enum instead of list (#37093)"

This reverts commit 7e959c5a3e.
2026-02-05 16:23:28 -08:00
felsager
7e959c5a3e long_mpc: use log.capnp source enum instead of list (#37093) 2026-02-05 15:55:03 -08:00
Jason Young
28795d3065 bump opendbc (#37091) 2026-02-05 16:30:03 -05:00
royjr
8aed5a1a89 translations: remove arabic (#37087)
* remove arabic

* more
2026-02-05 09:28:01 -08:00
Shane Smiskol
a5c973be89 NavBar: fix no show animation (#37090)
* 1.5 not enough time on small screen

* ohhhh

* clean up
2026-02-04 23:52:59 -08:00
ugtthis
39dcc88330 UI: only show onroad_fade.png when engaged (#37051)
* only show when engaged

* retrigger CI

* fade animation 0.1

* nl

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2026-02-04 23:03:01 -08:00
Shane Smiskol
fc6afd5ab8 Network menu improvements (#37077)
* try this

* that's handy

* todo, not sure what happens here

* set_text

* normalize

* scroll wifi

* clean up

* more

* better check
2026-02-04 22:58:16 -08:00
Shane Smiskol
177a1a3c8b BigButton: use UnifiedLabel (#37086)
* BigButton: remove unused scrolling

* start

* debug

* stash

* actually removing the hardcoded size for multioption fixes it

* back

* cursor does sub label

* clean  up

* more

* more

* try this for now

* nick suggest

* clean up

* more

* more
2026-02-04 22:25:28 -08:00
Shane Smiskol
1979a6d8e8 BigButton: remove unused scrolling (#37085)
* BigButton: remove unused scrolling

* clean up
2026-02-04 19:30:20 -08:00
Shane Smiskol
944c23f369 Stock LKAS: remove permanent alert (#37083)
rm perm
2026-02-04 17:06:11 -08:00
Shane Smiskol
2230933d4b Back to tethering BigButton (#37082)
Back to tethering big button
2026-02-04 16:38:24 -08:00
Jason Wen
3ea474dd58 tools: fix Python version comparison using normalized semantic version format (#37075) 2026-02-04 16:31:44 -08:00
Shane Smiskol
8879d481e5 comma four: new keyboard enter button (#37072)
* works

* enter dis

* clean up

* clean up

* no debug

* useless

* poadding
2026-02-04 16:04:49 -08:00
David
5e35feb3ab clips: allow mici UI (now default) (#37070)
fix: make big false by default and remove assertion
2026-02-04 11:25:09 -08:00
YassineYousfi
5b6436a90c CD210 model (#37050)
a27b3122-733e-4a65-938b-acfebebbe5e8/100
2026-02-03 19:14:02 -08:00
Harald Schäfer
ee7601ae9d long planner: Min(stopping) is also important (#37074)
Min(stopping) is also important
2026-02-03 15:55:13 -08:00
Shane Smiskol
54cf8d6a5e four keyboard: fix keys lagging behind parent widget (#37073)
* fix keys lagging behind

* use parent rect

* use parent rect

* cmt
2026-02-03 15:55:05 -08:00
Harald Schäfer
aac90dd11b Bump tg (#37069)
bump tg
2026-02-03 13:59:45 -08:00
Shane Smiskol
85b9f8962e Clean up four keyboard text rects (#37068)
* start clean up

* rm

* not really needed

* more

* clean up
2026-02-02 22:32:52 -08:00
Shane Smiskol
a668bc9eda comma four setup improvements (#37066)
* always check, no flickering from has inter -> waiting -> has inter from the reset

* 1s interval. i see read timeouts at 0.5s sometimes

* clean up

* cursor

* Revert "cursor"

This reverts commit 13ec6312aa7f71b58771f8789456e97c4481856a.

* clean up
2026-02-02 16:58:45 -08:00
Trey Moen
fd50941cff chore: bump minimum Python version to 3.12.3 (#37052) 2026-02-02 08:13:49 -08:00
Adeeb Shihadeh
831f2396d9 bump opendbc 2026-02-02 08:08:09 -08:00
Adeeb Shihadeh
5fc4c2b25c ubloxd: remove kaitai (#37055)
* rm kaitai

* lil less

* bs

* lil less

* lil less
2026-02-01 20:00:55 -08:00
Adeeb Shihadeh
b03e7821d4 replace smbus2 package with minimal implementation (#37061)
* replace smbus2 package with minimal implementation

* cleanup

* fix up
2026-02-01 17:26:58 -08:00
Adeeb Shihadeh
35241a5fb8 cleanup pyproject (#37060)
* cleanup pyproject

* lil more

* fix warning
2026-02-01 16:03:18 -08:00
Adeeb Shihadeh
5da6bf9e03 rm pytools package (#37059) 2026-02-01 15:46:40 -08:00
Adeeb Shihadeh
948d42b3e5 rm pyopencl package (#37058)
rm pyopencl
2026-02-01 15:42:42 -08:00
Adeeb Shihadeh
422de59898 acados: strip future-fstrings declaration (#37057)
* Revert "rm future-fstrings package (#37056)"

This reverts commit 7a990b99f7.

* Reapply "rm future-fstrings package (#37056)"

This reverts commit 8b93f6646eed6863ad67b9bab558d305ecb8b7b4.

* strip it

* cleanup
2026-02-01 15:24:42 -08:00
Adeeb Shihadeh
7a990b99f7 rm future-fstrings package (#37056) 2026-02-01 15:07:22 -08:00
Adeeb Shihadeh
0a84b00406 fix up status for in progress builds 2026-02-01 13:36:55 -08:00
Trey Moen
e76e1e500c clips: use AugmentedRoadView instead of MainLayout (#37053)
Render only the road view in clips rather than the full main layout,
matching the updated UI module structure.
2026-02-01 13:21:00 -08:00
Adeeb Shihadeh
cd70e23dc3 clips: direct rendering with raylib (#36935)
* good clips

* replace

* fix

* fix font

* lil more
2026-01-31 20:15:23 -08:00
Pádraic Slattery
1dfef69a3c chore: Update outdated GitHub Actions versions (#37020)
* chore: Update outdated GitHub Actions versions

* just the github ones

---------

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2026-01-31 18:37:00 -08:00
Adeeb Shihadeh
c35df583a5 tools: enable log caching by default (#36962) 2026-01-31 15:52:50 -08:00
King Art
db3df61c34 fix non-determinism in modeld build (#37042)
* fix non-determinism in selfservice model build

also trim down model compile dependencies to the minimum required

* Apply suggestions from code review

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2026-01-30 17:16:56 -08:00
Shane Smiskol
32f0a2cbbc bump opendbc (#37046)
bump
2026-01-30 00:30:11 -08:00
Shane Smiskol
569099eb70 update docs 2026-01-30 00:09:44 -08:00
Shane Smiskol
df7f426405 bump opendbc (#37043)
* bump opendbc

* update refs
2026-01-30 00:09:19 -08:00
T3d
bddd20c425 Complete french translations in app_fr.po (#37023) 2026-01-29 10:36:51 -08:00
Shane Smiskol
e89e4407c5 Tweak stockLkas alert (#37040)
* stockLkas alert is orange, small, mid prio, ldw vis alert

* copy exactly from existing ldw alert with prompt sound, black alert
2026-01-28 19:50:53 -08:00
Shane Smiskol
d849d6f1d7 mici keyboard: bold SmallKey (#37035)
bold SmallKey
2026-01-27 21:28:50 -08:00
Shane Smiskol
0b958f7c9a onroad: fill bookmark icon when activated (#37034)
* bookmark fill

* and here's what i would have done

* add
2026-01-27 19:59:25 -08:00
felsager
2fc10e8299 Maneuver: log drel and use it in tuning report (#37033) 2026-01-27 17:15:39 -08:00
Shane Smiskol
bf8cae5e7c mici ui: new icons (#37021)
* new icons

* add missing

* fixed tethering big icon, size of pairing comma, buttons now use 90percent white

* why o why

* newline

* fancy

* already default

* fixes

* add firehose

* ltl

* fix caps lock icon

---------

Co-authored-by: nickorie <nickorie@gmail.com>
2026-01-27 16:20:32 -08:00
Shane Smiskol
93015c1c17 ui: fix button label color (#37031)
label color
2026-01-27 15:40:09 -08:00
felsager
97329e46ae longitudinal maneuvers: add report for longitudinal mpc tuning (#37030) 2026-01-26 16:07:13 -08:00
felsager
d76f756f42 long_mpc: simplify longitudinal planner by removing "modes" (#37014) 2026-01-26 15:02:57 -08:00
commaci-public
71a418d166 [bot] Update Python packages (#37028)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2026-01-26 09:14:57 -08:00
Adeeb Shihadeh
de024fd4a7 pandad: pure Python capnp helpers (#37025)
* pandad: pure Python capnp helpers

* cleanup
2026-01-24 12:02:33 -08:00
Adeeb Shihadeh
7c90c0669a script for CI results (#37024) 2026-01-24 10:51:41 -08:00
Kacper Rączy
560ed80123 tools: seekable URLFile (#37022)
* Make URLFile seekable

* Return value in seek
2026-01-24 04:04:54 +00:00
Matt Purnell
12220ec82d cereal: update msgq imports (#36833)
Update outdated reference

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2026-01-23 17:11:23 -08:00
Shane Smiskol
3715fe85aa bump opendbc (#37019) 2026-01-23 00:55:12 -08:00
Shane Smiskol
ba6e5f125d Fix bridge w/ ZMQ (#37018)
* fix

* can also do this

* 1 less +lines but more diff - Revert "can also do this"

This reverts commit 8e18218099af6d3bc852d8ef0069b80d9322d6ca.
2026-01-23 00:24:15 -08:00
ZwX1616
1459d3519d DM: Ford GT model (#37013)
* b483cec4-7816-4570-a774-be3a2c100098/50

* shipfest

* da4b8724-8998-45da-aa36-d8fb390492b9

* revert

* typo

* deprecates
2026-01-22 18:41:08 -08:00
felsager
c9cfe2c727 LatcontrolTorque: move jerk calculation and filtering outside if else (#37011) 2026-01-21 12:32:56 -08:00
felsager
bc979ea6aa Latcontrol torque test: ensure desired lateral accel buffer is consistent (#37004) 2026-01-20 16:16:38 -08:00
Adeeb Shihadeh
79472cdf83 Revert "docs: comma 3X to comma four (#37009)"
This reverts commit a7dfd36c00.
2026-01-20 16:04:05 -08:00
Harald Schäfer
adf6f28ebf LatcontrolTorque: always fill buffer (#36991) 2026-01-20 15:34:57 -08:00
Lukas
a7dfd36c00 docs: comma 3X to comma four (#37009)
* comma 3X -> comma four

* add comma four ports image
2026-01-20 15:15:12 -08:00
Adeeb Shihadeh
6c7f3751e7 camerad: calculate buffer sizes with VENUS helpers (#37006)
* Revert "NV12 buffer shape helpers (#36683)"

This reverts commit 13efc421c4.

* camerad: calculate buffer sizes with VENUS helpers

* copy header:

* assert aligned

* python nv12 info

* debug

* handle padding

* use the helper
2026-01-19 17:18:22 -08:00
Mauricio Alvarez Leon
c179a3ccb7 CI: enable macos tests (#37005)
enable macos tests
2026-01-19 16:45:45 -08:00
Harald Schäfer
13efc421c4 NV12 buffer shape helpers (#36683)
* Give this a try

* can codex debug?

* simpler

* Revert "simpler"

This reverts commit 572335008c1c719aa985d14bd740253ff94b94a9.

* better

* cleanup

* try again

* tie

* try this

* try this

* do tests fail without this?

* doesn't seem needed

* unused

* don't need duplicate

* passes CI?

* try this

* try this

* try this

* I don't understand this, so back to before

* keep that alignment

* set uv_height

---------

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2026-01-19 16:27:41 -08:00
Adeeb Shihadeh
10db1edc7f merge common.util and common.utils (#36951)
* common: merge common.util and common.utils

* cleanup

* cleanup
2026-01-19 15:50:00 -08:00
Adeeb Shihadeh
039b85f355 bump opendbc (#37003)
* bump opendbc

* bump

* bump

* bump

* bump bump bump
2026-01-19 15:33:23 -08:00
Harald Schäfer
0b41b42f7b WMI model 🍉 (#36798)
* 1791ea0f-8667-4e0b-be73-084d912f6c4c/100

* eab53871-1f8c-45be-9a98-f6b3dd6a0adc/100

* dd075c9d-0c49-402e-b4f2-9adbe5301c84/100

* e8b5b1b0-2d37-4b62-bd39-21ff0d08ee68/100

* 1aff00c7-06c5-46a6-8a79-7e56f77d81bf/100

* 3547a2cc-1699-4e7d-a2ab-4eb87d0b8684/100

* 849aa9fb-dae6-4604-923e-050883def218/100

* 0e0f6dd2-96dc-4f34-a7cd-63bccc2f5616/100

* 887f923b-7e79-43c6-8f1f-053e1490f859/100

* 1fa82260-1171-4db5-9968-d34ce2e14694/100

* Revert "1fa82260-1171-4db5-9968-d34ce2e14694/100"

This reverts commit 855f5e4ddefd69a20cc4e9da004eb53f3e00d950.

* a27b3122-733e-4a65-938b-acfebebbe5e8/100

---------

Co-authored-by: Yassine Yousfi <yyousfi1@binghamton.edu>
2026-01-19 11:48:06 -08:00
commaci-public
a46ff01cab [bot] Update Python packages (#36966)
* Update Python packages

* ty fixes

---------

Co-authored-by: Vehicle Researcher <user@comma.ai>
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2026-01-19 11:39:21 -08:00
Matt Purnell
1f9efd9311 transformations: move Cython to pure Python (#36830)
* Remove cython for transformations

* Add new test

* Switch back to program to fix mac builds

* Convert to Python instead

* Fix failing builds

* lint

* Implement conversion in pure python/numpy

* Add more tests

* Fix bugs in tests
2026-01-16 22:31:26 -08:00
Shane Smiskol
7f8dbf24e7 Cabana: fix for internal source (#36998)
* fix for internal sources from cursor

* clean up

* more

* not needed

* clean up

* sure
2026-01-15 17:18:40 -08:00
Shane Smiskol
5e4b88201e Toyota: whitelist hybrids for standstill resume behaviour (#36996)
tioyota
2026-01-15 14:38:43 -08:00
Adeeb Shihadeh
1252188b4b sensord: tighten temperature threshold (#36994)
* sensord: tighten temperature threshold

* lil more
2026-01-13 14:33:13 -08:00
Adeeb Shihadeh
15d3a166f7 enable pyopencl on arm64 (#36990) 2026-01-09 20:49:14 -08:00
Harald Schäfer
f51c2aeced Modeld: less lat smoothing (#36987)
* lat is plenty smooth!

* fix
2026-01-09 15:04:33 -08:00
Harald Schäfer
3edb3243f6 SC driving (#36986)
f1d30a23-4122-400a-80a6-557502284c36/200
2026-01-09 09:16:57 -08:00
YassineYousfi
c693bc1247 MacroStiff Model 🟥🟩🟦🟨 (#36972)
* 8c06e95e-d7c0-4fd9-ba02-9f0b6848785e/400

* test

* test

* test now
2026-01-05 16:14:05 -08:00
Adeeb Shihadeh
5d3ab260e1 welcome lexus ls 2026-01-05 10:15:20 -08:00
Jason Young
ea64c4c0ae VW: Enable torqued (#36983) 2026-01-04 21:35:13 -05:00
Adeeb Shihadeh
84bce8ae02 rm pygame (#36982)
* rm pygame

* lil more

* cleanup

* lil more
2026-01-04 17:52:10 -08:00
Jason Young
3c5974930a cleanup SecOC release gating (#36980) 2026-01-04 17:09:26 -05:00
Adeeb Shihadeh
be854df32d remove unused dbus-next package (#36979) 2026-01-04 13:46:30 -08:00
YassineYousfi
adbf68f771 FrameReader: add hwaccel arg and clear frames_cache (#36974) 2026-01-02 11:29:45 -08:00
YassineYousfi
f62177a827 FrameReader: use hwaccel auto (#36973)
* FrameReader: use hwaccel auto

* rm main block
2026-01-01 19:06:31 -08:00
Alexandre Nobuharu Sato
bb40d161e8 Add back badges for keep multilanguage support (#36967) 2026-01-01 15:13:18 -08:00
Shane Smiskol
84b1f363e4 Alert for stock LKAS (#36969)
* alert stock lkas

* high

* i didn't do this
2025-12-31 12:43:36 -08:00
Adeeb Shihadeh
a5348b8679 crcmod -> crcmod-plus (#36968) 2025-12-29 16:41:52 -08:00
Adeeb Shihadeh
63c9a85c6a FrameReader: use HW accel if available (#36964)
* FrameReader: add macOS hw accel

* sys

* more platforms

* logging
2025-12-28 21:38:54 -08:00
Adeeb Shihadeh
adf9ec5360 tools: speed up Route() (#36963)
* tools: speed up Route()

* cleanup
2025-12-28 15:39:20 -08:00
commaci-public
883d1232d3 [bot] Update Python packages (#36606)
update

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2025-12-28 13:00:35 -08:00
Adeeb Shihadeh
b58fddb83e replay: add --benchmark mode (#36957) 2025-12-28 12:20:45 -08:00
Adeeb Shihadeh
ce1491df9c tools: add LRU eviction for log cache (#36959)
* tools: add LRU for log cache

* lil more

* cleanup:

* less syscall

* manifest

* cleanup

* cleanup

* lil more

* cleanup

* lil more

* simpler

* lil more
2025-12-28 11:45:19 -08:00
Adeeb Shihadeh
ea01a53711 switch from mypy to ty (#36961) 2025-12-28 10:42:49 -08:00
Adeeb Shihadeh
85cdb2ed9a fix(url_file): ensure seek position is always an integer (#36960) 2025-12-27 23:15:18 -08:00
Adeeb Shihadeh
368947c88c msgq on macOS (#36958)
* msgq on macOS

* clean that up
2025-12-27 16:49:30 -08:00
Trey Moen
3f1f7ad89c feat(esim): remove bootstrap (#36954)
feat: remove bootstrap
2025-12-24 09:04:34 -08:00
Adeeb Shihadeh
a8cfa2e2fe bump msgq (#36950) 2025-12-21 17:22:57 -08:00
Adeeb Shihadeh
c8eed43538 misc system/hardware/ cleanup (#36949)
* misc system/hardware/ cleanup

* lil more

* pc is kinda base

* lil more

* lil more

* lil more

* int

* lil more?
2025-12-21 17:02:39 -08:00
Adeeb Shihadeh
29a2f576f5 unpin raylib-python-cffi (#36948) 2025-12-21 16:49:15 -08:00
Adeeb Shihadeh
31ec0096e4 ui: fix raylib init spam (#36947)
* lil more

* not none

* don't need that either

* too spammy now?
2025-12-21 16:21:35 -08:00
Adeeb Shihadeh
8728c7dde3 killing car_specific.py, part 3 (#36946)
* mv that

* lil more

* todo

* cleanup
2025-12-21 15:42:53 -08:00
Dean Lee
e9a37d99c3 Fix incorrect msgq path in prefix.h (#36943) 2025-12-20 16:33:52 -08:00
Adeeb Shihadeh
67742699cc card: move drivable gears to opendbc (#36942)
* card: move drivable gears to opendbc

* it's not none

* bump opendbc

* mypy
2025-12-20 15:22:30 -08:00
Adeeb Shihadeh
de975d5af9 card: remove MockCarstate (#36941) 2025-12-20 15:04:13 -08:00
eFini
c3143f3833 Multilang: update zh translation (#36933) 2025-12-19 09:38:23 -08:00
Maxime Desroches
1c2f9e6190 bump version to 0.10.4 2025-12-18 23:26:59 -08:00
Maxime Desroches
654338f9c7 update release instructions 2025-12-18 22:52:14 -08:00
Maxime Desroches
dfd7a8c8d7 AGNOS 16 (#36915)
* stage

* prod

* bump reset
2025-12-18 22:02:46 -08:00
Shane Smiskol
bb8a5bd476 Fix slow DM onboarding (#36932)
* slow

* interesting

* check

* clean up
2025-12-18 20:50:34 -08:00
Shane Smiskol
e4359e9acb api_get: use session (#36930)
* use session

* prob better for now

* todo

* same for firehose

* no more stutters!

* cmt
2025-12-18 17:15:47 -08:00
Maxime Desroches
13b8a67ae2 reset: fix button overlap (#36929)
fix
2025-12-18 16:03:45 -08:00
Shane Smiskol
89d9fdca82 WifiUi: tune wifi strengths (#36923)
* tune wifi strengths

* android nor ios show none or slash. it's always 1, 2, or 3 bars

* match here

* clean up
2025-12-17 23:15:22 -08:00
Shane Smiskol
a478b64ff3 WifiUi: fix clicking (#36919)
* fix

* rm

* rename

* need this in case user swipes back to starting pos

* better

* better

* clean up

* cmt
2025-12-17 21:55:31 -08:00
Shane Smiskol
b3c2daf9e5 Revert "Widget: track mouse events (#36922)"
https://github.com/commaai/openpilot/pull/36920#issuecomment-3668453692

This reverts commit 792a9b715c.
2025-12-17 21:32:06 -08:00
Shane Smiskol
792a9b715c Widget: track mouse events (#36922)
* track

* fix

* rm
2025-12-17 21:30:40 -08:00
Shane Smiskol
631d6d9ef4 Widget: mouse handlers don't use bool (#36921)
* not used

* lint
2025-12-17 21:26:52 -08:00
Shane Smiskol
6249211745 Update canError alert texts (#36918)
* hmm

* hmm it's small

* can

* ?

* variant?

* unknown
2025-12-17 19:57:57 -08:00
Shane Smiskol
2213f8f8a4 MultiOptionDialog: tap activates current option (#36911)
* works

* clean up
2025-12-17 17:10:12 -08:00
Shane Smiskol
4e85568370 MultiOptionDialog: support no default (#36912)
fix
2025-12-17 17:02:19 -08:00
Shane Smiskol
88a4f2baf1 Onboarding: no buttons if no frame (#36909)
no buttons if no frame
2025-12-17 16:27:43 -08:00
Adeeb Shihadeh
4bfc28dec0 lil more release notes 2025-12-17 10:19:05 -08:00
Adeeb Shihadeh
be2818a131 CI: tmp disable macOS due to brew bug (#36906)
* need update?

* try this

* x

* just disable it
2025-12-17 09:37:30 -08:00
Shane Smiskol
1646fd94b8 setup: go back to main page once connected (#36902)
* call

* break

* print

* fix

* rm

* debug

* fix

* yeah ideally wifiui has no clue about this

* clean up

* clean up

* clean up

* only need this

* cu

* rm

* fix
2025-12-17 01:55:17 -08:00
Shane Smiskol
3fbd928b98 Revert "ui: generic hold gesture (#36893)"
This reverts commit 9768109ec1.
2025-12-17 01:53:17 -08:00
Shane Smiskol
d2125aafd4 Fix tici DM dialog memory leak (#36790)
* not finished

* no

* debug

* clean up

* clean up
2025-12-17 01:23:49 -08:00
Shane Smiskol
b9c3b1219a ui: fix not showing networks if viewing right after startup 2025-12-16 23:45:34 -08:00
Shane Smiskol
99983d39c3 comma four: simpler DM onboarding (#36896)
* rm confirm mode

* kinda works

* how

* disabled

* do this

* do this

* wait

* here

* something

* fade in

* 4s

* clean up

* copy

* help

* 30deg center

* stuff

* reset_interactive_timeout

* rm

* simple

* simple

* copy

* 1.5x

* smooth opacity

* power off slider

* fix

* new icons and gradient and rounded

* final check

* fix

* how the hell did this work

* clean up

* clean up

* flip

* cmt

* uh yeah

* remove this

* revert this

* lint

* 45

* clean up

* fix

* no show time

* question

* rm

* no use

* ()

* lint

* call
2025-12-16 23:16:45 -08:00
Shane Smiskol
31e46f929d onboarding: fixup DM RHD detection (#36900)
* helper

* fix

* use it

* prop

* bigger box

* huh
2025-12-16 22:42:13 -08:00
Shane Smiskol
cecce82015 ui: default text color 90% white (#36899)
default 90%
2025-12-16 20:34:51 -08:00
Shane Smiskol
a112e6e882 ui: override default interactive timeout (#36898)
* impl

* fix one place

* don't need in setup

* fix onboarding

* need here too
2025-12-16 19:31:49 -08:00
YassineYousfi
c69c076acb Update RELEASES.md 2025-12-16 19:28:21 -08:00
Adeeb Shihadeh
6069c87b07 Update RELEASES.md for version 0.10.3 2025-12-16 19:21:00 -08:00
Adeeb Shihadeh
90ed6d739c test_onroad: relax memory threshold (#36895) 2025-12-16 18:14:47 -08:00
Shane Smiskol
95350ad854 four: simpler steer saturated alert (#36894)
* looks good

* fix

* cleanup
2025-12-16 16:56:19 -08:00
Shane Smiskol
9768109ec1 ui: generic hold gesture (#36893)
* generic

* fix

* use in home

* clean up

* rm

* clean up
2025-12-16 16:19:53 -08:00
Adeeb Shihadeh
4fa4237e3f bump msgq (#36891)
* bump msgq

* update prefix
2025-12-16 15:51:35 -08:00
Shane Smiskol
4624d8f936 four: hide untoggleable toggles (#36890)
* hide toggles

* enabled is redundant
2025-12-16 15:42:59 -08:00
Adeeb Shihadeh
bcdeec3133 Reduce pub-sub memory usage by 10x (#36884)
less mem
2025-12-16 13:27:14 -08:00
Adeeb Shihadeh
545f7c6f2a test_onroad: absolute memory usage test (#36885)
* test_onroad: absolute memory usage test

* show msgq size

* reduce a little

* bump msgq

* Revert "bump msgq"

This reverts commit 683d0ae9fc754f7b72e2bc4b256e9a3b0a60a127.
2025-12-15 22:00:39 -08:00
Shane Smiskol
507f420927 Toyota: prevent roll in ICE after pressing resume while wanting to stay stopped (#36877)
* bump

* only show alert when user can leave standstill

* cmt

* stash

* bump

* bump to master
2025-12-15 19:19:41 -08:00
Adeeb Shihadeh
752ef8696a sensord: remove last of dual IMU support (#36881) 2025-12-15 19:04:11 -08:00
Shane Smiskol
9e4c2bcacf bump opendbc (#36878)
* bump

* update docs

* bump

* gotta go fast
2025-12-15 16:41:16 -08:00
Shane Smiskol
9d9e5aa02d joystickd: add cruise control resume (#36876)
* Add cruise control resume logic based on conditions

* simple
2025-12-15 15:36:28 -08:00
Adeeb Shihadeh
e2fd6f34e9 rm dead unlog_ci_segment.py 2025-12-13 12:56:32 -08:00
Shane Smiskol
a3c638697f WifiUi: tweak unselected button size (#36871)
looks too spaces
2025-12-13 06:26:27 -08:00
Shane Smiskol
f287d487e5 GuiScrollPanel2: fix possible crash (#36870)
fix crash
2025-12-13 06:16:31 -08:00
Shane Smiskol
7cabab69a1 comma four: follow current network (#36862)
* stay

* whoops

* whoops

* fix

* fix div by z

* we can implement layout to fix flashing

* Revert "we can implement layout to fix flashing"

This reverts commit 7278a1e2a6117aec775ef4fabee2fd68b3d064f3.

* random

* clean up

* wtf

* rev

* smooth

* we can implement layout to fix flashing

* snap looks so much better

* fix

* rev

* better name

* cmt

* less random

* even less random

* simpler

* cmt

* clean up

* clean up

* clean up
2025-12-13 06:15:31 -08:00
Shane Smiskol
716ad288bb Widget: implement layout function (#36869)
* we can implement layout to fix flashing

* reorder

* fix faster than normal snap and reduce duplicate calculations

* yes
2025-12-13 05:45:42 -08:00
Shane Smiskol
1c135f7ff2 WifiUi: pause updates while user is interacting (#36868)
int not scroll
2025-12-13 05:28:53 -08:00
Shane Smiskol
1504e10380 WifiUi: pause updates while user is scrolling (#36866)
* pause updates while user is scrolling

* clean up
2025-12-13 05:14:21 -08:00
Shane Smiskol
65008d281f comma four: fix WiFi scroll to (#36864)
* fix selection

* stash

* Revert "stash"

This reverts commit d04ed66b090641072c86b8ed7ed86dbdbf67fbd9.

* clean up

* clean up

* move

* fix
2025-12-13 04:33:27 -08:00
Shane Smiskol
2e8586fab5 WifiUi: remove delayed network panel open (#36865)
not used
2025-12-13 04:11:36 -08:00
Shane Smiskol
6c5be6ddab WifiUi: fix infinite wraps (#36863)
* fix infinite wrap

* fix selection

* Revert "fix selection"

This reverts commit 555c57922409312bf5d9efedf571994f157b9e44.

* revert

* revert

* revert

* revert

* cleaner

* cleaner

* mypy!!
2025-12-13 04:08:01 -08:00
Shane Smiskol
7a324fc377 comma four: reset WiFi SSID scroll on show (#36861)
reset scroll
2025-12-13 01:50:55 -08:00
Shane Smiskol
f4dea7977b ui: improve network sort (#36855)
* better sort

* clean up
2025-12-13 01:44:05 -08:00
Shane Smiskol
e9255d1e9c NavWidget: disable nav bar for vertical scrollers (#36857)
* disable nav bar vert scroller

* cmt
2025-12-13 01:41:01 -08:00
Shane Smiskol
350dc6a50f comma four: fix WiFi panel not starting at the top (#36859)
* fix

* fix
2025-12-13 01:39:45 -08:00
Shane Smiskol
3206784dd8 comma four: rm duplicate wifi show_event 2025-12-13 01:35:10 -08:00
Shane Smiskol
0dd59d0404 comma four: fix missing WiFi show_event (#36858)
* can't do this

* can do this
2025-12-13 01:32:06 -08:00
Shane Smiskol
cc119b2a37 comma four: adjust Wifi scroller sizes (#36854)
* adjust sizes

* back
2025-12-12 21:37:26 -08:00
Harald Schäfer
9421e1cbfe Dark Souls 2 (#36849)
4b78e2e6-660f-4155-9105-81d4d8c658cd/400
2025-12-12 18:04:16 -08:00
Shane Smiskol
9947206ccd comma four: fix wrapping steer right (#36848)
rm extra space
2025-12-11 21:52:24 -08:00
Bruce Wayne
0871a35c10 Revert "Dark Souls Model (#36764)"
This reverts commit 83dad85cdd.
2025-12-11 19:43:53 -08:00
Suyog Shinde
2d91aa5abc locationd: fix velocity calibration using wrong pose field (#36844) 2025-12-11 19:24:32 -08:00
Matt Purnell
13693e3a0a loggerd: Fix test that fails on non-TICI devices (#36846)
Only check for TICI files on TICI
2025-12-11 18:19:59 -08:00
Shane Smiskol
edede31c32 athenad: get ES256 key (#36845)
* fix

* why not format

* fix typing

* cast
2025-12-11 18:00:43 -08:00
Adeeb Shihadeh
c61ed10015 USB GPU benchmarking (#36840)
* test boot time

* lil nicer

* cleanup

* revert that

---------

Co-authored-by: Comma Device <device@comma.ai>
2025-12-11 13:04:59 -08:00
Adeeb Shihadeh
1391434f54 setup: fix uv install fail (#36839)
* pipefail

* curl retry
2025-12-11 11:22:08 -08:00
YassineYousfi
d8125f50d2 dm: speedup stat filters convergence (#36756)
* dm: speedup stat filters convergence

* lint
2025-12-11 09:38:53 -08:00
Dean Lee
a49273d9d4 remove unused #include "common/params.h" from hardware.h (#36827)
remove include
2025-12-11 09:22:30 -08:00
rj-lynch
ff5b75d164 Refactor CarSpecificEvents Class extracting BRAND_EXTRA_GEARS (#36805)
* Brand Extra Gears Dict added. Gear data removed from CarSpecificEvents Update method, data now held in global variable.

* Added elif for Ford and Nissan events creation. BRAND_EXTRA_GEARS now extracted from CarSpecificEvents

* Amended Chrysler and Toyota create_common_events calls.

* format

* can do this!

* consis

* whoops

* type

---------

Co-authored-by: RJ <ryan@DESKTOP-4S0L5O5.localdomain>
Co-authored-by: Shane Smiskol <shane@smiskol.com>
2025-12-10 16:35:35 -08:00
Shane Smiskol
53b7adedc2 Fix UI timing test (#36823)
* why did no one tell me about this?!

* not necessary
2025-12-10 00:29:03 -08:00
Shane Smiskol
f78bacf96b mici ui replay: temp remove swipes (#36818)
hmm it IS nondeterm
2025-12-09 15:38:43 -08:00
Shane Smiskol
dfd56a46d2 mici cameraview: log timings (#36816)
missing from mici
2025-12-09 15:37:13 -08:00
clintonsteiner
6bbc3f4d1c pyproject: remove pytools pinning (#36812)
* pyproject: remove pytools pinning

* issue requiring pin is fixed
* https://github.com/inducer/pyopencl/issues/827

* uv lock

---------

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2025-12-09 11:04:03 -08:00
Harald Schäfer
34fed9f908 URLFILE: Need to catch max retry (#36815)
Need to catch max retry
2025-12-09 10:19:10 -08:00
Adeeb Shihadeh
c85db43705 camerad: misc labeling/cleanup (#36809)
* what's 2c

* include

* no idea what this means

* register comments
2025-12-08 20:14:19 -08:00
Shane Smiskol
8d9e203130 raylib ui diff: swipe around (#36807)
* swipe support

* swipe around

* same
2025-12-08 19:25:09 -08:00
Adeeb Shihadeh
d5f6946502 camerad: probe os first 2025-12-08 18:48:58 -08:00
「 crwusiz 」
48a42a9c53 UI: Color Constants Uppercase (#36796) 2025-12-08 18:43:31 -08:00
Adeeb Shihadeh
fb807cc007 ui: video diff tool (#36737)
* video diff

* format

* duplicate

* try

* WINDOWED

* ?

* correct res

* Revert "correct res"

This reverts commit f90991192fce93a31d1b581a4f0ff93a7a972337.

* save to report/

* add duplicate

* work?

* fix

* more

* more

* and this

* ffmpeg

* branch

* uncmt

* test preview

* Revert "uncmt"

This reverts commit b02404dbbe515fd861717f831c7bb0243442ddbc.

* create openpilot_master_ui_mici_raylib

* ahh

* push to master

* copy and always run

* test

* does cmt break it?

* who did this

* fix?

* fix that

* hmm

* hmm

* ah this was moving it, and then the job below didn't run on master

* google ai overview lied to me

* use markdown to start

* need to add to one branch

* ????

* oof

* no

* this work?

* test

* try this

* clean up master branch name

* more cleanup

more cleanup

* don't fail for no diff!

don't fail for no diff!

* back

* add to cmt

* test it

* should work

* fix that

* back

* clean up

* clean up

* save to report

* pull_request_target

* sort

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2025-12-08 18:39:47 -08:00
Matt Purnell
7119412d35 updated: fix skipped test case (#36786)
Fix three failing tests
2025-12-08 16:41:45 -08:00
Chechulin Serhii
fadf7ff1e5 ui: feature Ukrainian translation (#36646)
* Add Ukrainian lang

* update_translations.py

* Add Ukrainian strings

* Small patch to display translated update states

* Revert "Small patch to display translated update states"

This reverts commit b0545f4e109f451a21e4e5884259dbb881d7a58e.

* Revert "update_translations.py"

This reverts commit 79eea20c33f1b1d542b62a782ab1b67bc9277026.

* fix so these meaningless edits
2025-12-08 16:40:29 -08:00
Matt Purnell
cce2e4d357 tools: Handle smaller terminal sizes in replay (#36766)
* Only show help if there's room for it

* show less

* wording
2025-12-08 16:38:35 -08:00
Dean Lee
4e74e0f755 cabana: fix UI hang when switching streams (#36735)
fix UI hang when switching streams
2025-12-08 16:36:55 -08:00
Dean Lee
a6645a1be1 cabana: add automatic session save/restore (#36736)
adds auto session save/store
2025-12-08 16:36:35 -08:00
「 crwusiz 」
239d690a43 Multilang: update kor translation (#36795) 2025-12-08 16:32:56 -08:00
Shane Smiskol
d4d6134d3b UnifiedLabel: fix clipping descenders (#36793)
* fix

* can also do this

* but then y is off. this is from font_scale I think

* fix

* cmt
2025-12-05 18:18:58 -08:00
Robbe Derks
0965650f61 Bump panda (#36783)
* panda bump

* try this one

* this breaks it?

* still broken, right?

* fixed?

* second try
2025-12-05 23:12:39 +01:00
Shane Smiskol
224e2c271b Revert "ui: fix dialog memory leak" (#36787)
Revert "ui: fix dialog memory leak (#36767)"

This reverts commit 45b7d60263.
2025-12-04 16:51:18 -08:00
Harald Schäfer
e72e5d4ebe beeps in key (#36765)
beeps in keyt
2025-12-04 13:11:27 -08:00
Shane Smiskol
f962a36fd8 Fix ui crashing replay/selfdrived (#36760)
* fix

* clean up

* type hint
2025-12-04 02:39:41 -08:00
Dean Lee
2947af42fc ui: fix TraningGuide leak (#36763)
* fix TraningGuide leak

* other thing

* this is truly the simplest way

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2025-12-04 02:23:37 -08:00
Shane Smiskol
cd9b08492e ui: small TrainingGuide clean up 2025-12-04 02:00:45 -08:00
Shane Smiskol
45b7d60263 ui: fix dialog memory leak (#36767)
* weakref alternative

* and here

* clean up

* fix

* rm
2025-12-04 01:56:38 -08:00
Dean Lee
93f2076c7e ui: fix crash caused by double shader unload in CameraView (#36778)
fix double free isuue
2025-12-04 01:54:11 -08:00
Shane Smiskol
4edbc7d0cf DriverCameraDialog: proper clean up (#36775)
* fixes leak

* wait can't do this, we need close after all

* wait can't do this, we need close after all

* clean up memory
2025-12-03 22:19:30 -08:00
Shane Smiskol
cc7dd066d2 ui: call modal hide_event (#36772)
* start, not fully working since hide is called before last render

* clean up
2025-12-03 21:55:05 -08:00
Shane Smiskol
9e55577cc7 Clean up DM dialog CameraView bound method (#36770)
* clean up

* why not?

* clean up
2025-12-03 20:41:58 -08:00
Shane Smiskol
7ea6cfcbdf remove unecessary function 2025-12-03 20:00:19 -08:00
Harald Schäfer
83dad85cdd Dark Souls Model (#36764)
a4cf2707-3d69-49ea-af8b-f91cd3285249/400
2025-12-03 12:55:33 -08:00
Maxime Desroches
5fd0906164 allow restarting processes after crash (#36755)
more
2025-12-02 17:10:24 -08:00
Maxime Desroches
e7d349bf36 Revert "ui: restart if crash (#36746)" (#36754)
This reverts commit fa18bb9261.
2025-12-02 16:45:09 -08:00
Bruce Wayne
5393308d03 Logreader: print errors 2025-12-02 15:54:21 -08:00
YassineYousfi
dc02a2d385 dm: adjust cold start pose offsets (#36739)
* dm: adjust cold start offsets and thresholds

* change just offsets for now
2025-12-02 15:17:59 -08:00
Chechulin Serhii
63563c3561 ui: fix - translate display text of updater_state (#36649)
* Add updater_state translation

* Move STATE_TO_DISPLAY_TEXT on top
2025-12-02 13:13:13 -08:00
Dean Lee
ae6250e685 ui/CameraView: use consistent 2-space indentation (#36748)
use consistent 2-space indentation
2025-12-02 13:09:24 -08:00
Shane Smiskol
ae402d3ac7 Revert "ui: speed up mici/AugmentedRoadView by optimizing _calc_frame_matrix caching" (#36749)
Revert "ui: speed up `mici/AugmentedRoadView` by optimizing _calc_frame_matri…"

This reverts commit 1052435391.
2025-12-02 13:02:01 -08:00
Harald Schäfer
cfb0a1c18c URLFile multirange (#36740)
* url file multirange

* cleanup urlfile

* time

* fixup

* raise

* Diskfile
2025-12-01 23:11:03 -08:00
Maxime Desroches
fa18bb9261 ui: restart if crash (#36746)
* simpler

* mypy your are going to be replaced very soon
2025-12-01 22:55:14 -08:00
Trey Moen
cabfa7b735 Revert "esim: remove bootstrap and delete (#36732)" (#36747)
This reverts commit 6d04251517.
2025-12-01 22:45:11 -08:00
Maxime Desroches
65e551c671 Handle invalid frame fd when creating EGL image (#36743)
catch
2025-12-01 21:32:07 -08:00
Maxime Desroches
62b7abcd91 Fix raylib ui spamming API calls (#36745)
fix
2025-12-01 21:13:43 -08:00
Maxime Desroches
dc654b439a Revert "Fix raylib ui spamming API calls (#36700)" (#36744)
This reverts commit 26261387f8.
2025-12-01 20:48:04 -08:00
Dean Lee
693c83f74c replay: fix dangling pointers in logging calls (#36738)
fix dangling pointers in logging calls
2025-12-01 13:32:21 -08:00
Trey Moen
8ffe3f287e fix: openpilot build on ubuntu aarch64 (#36675)
breaks on linux
2025-11-30 16:09:50 -08:00
Dean Lee
749e236bc0 ui: fix EGL_BAD_MATCH error when running profile_onroad.py on device (#36608)
fix failed to create EGL image:12297 error on device
2025-11-30 16:06:33 -08:00
Adeeb Shihadeh
151d256dd6 add param for agnos power monitor 2025-11-30 15:29:40 -08:00
Adeeb Shihadeh
436e3dec3e manager: write power monitor flag atomically (#36734) 2025-11-30 15:14:31 -08:00
Adeeb Shihadeh
7521fd11e2 common: rename atomic_write_in_dir -> atomic_write (#36733)
rename
2025-11-30 15:08:32 -08:00
MVL
ff755ed4bf Honda - Rename AcuraWatch Plus to AcuraWatch (#36726)
* Rename AcuraWatch Plus to AcuraWatch

* Rename AcuraWatch Plus to AcuraWatch
2025-11-30 15:04:17 -08:00
Trey Moen
6d04251517 esim: remove bootstrap and delete (#36732)
init
2025-11-30 14:43:29 -08:00
Adeeb Shihadeh
970afa9683 bump to 0.10.3 2025-11-30 14:19:37 -08:00
David
cd7e362333 ui: Add RECORD=1 for direct frame recording (#36729)
* ui: add real-time video recording functionality with ffmpeg support

* fix: record at consistent frame rate

* add spaces

* fix type

* refactor: RECORD_FRAMES variable and related logic

* fix: remove unnecessary texture check

* support missing output extension

* add wait for close with timeout

* fix: ensure RECORD_OUTPUT has the correct file extension

* flush on close and terminate if times out closing

* ffmpeg hide banner

* reduce ffmpeg spam

* refactor: streamline ffmpeg arguments for video encoding

* refactor: move size arg to variable and add yub420p conversion for native support

* use render_width and render_height for size

* fix: ensure even dimensions for video encoding when recording

* rm itertools

* simple

* cleanup

* docs

---------

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2025-11-30 13:34:37 -08:00
Shane Smiskol
85a162dd43 more scons nodes 2025-11-30 02:48:05 -08:00
Dean Lee
8de8946374 ui: skip _draw_set_speed when alpha is 0 (#36709)
* Skip _draw_set_speed when alpha is 0 to reduce unnecessary draw calls

* Update selfdrive/ui/mici/onroad/hud_renderer.py

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2025-11-29 03:15:41 -08:00
Dean Lee
f1c2b1df7f ui: fix CameraView crash in mici due to stale frame (#36710)
fix CameraView crash caused by stale frame
2025-11-29 03:14:23 -08:00
Shane Smiskol
1b20567c98 Mici keyboard: alpha filter for key bg (#36720)
* filter

* tune

* fix
2025-11-29 02:30:32 -08:00
Dean Lee
6c39f6bb53 ui: Fix scroll logic for non-scrollable content (bounds_size > content_size) to prevent jitter (#36693)
* Fix scroll logic for non-scrollable content to prevent jitter

* one thing

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2025-11-29 02:21:15 -08:00
Shane Smiskol
22003fd10a rl.BLANK 2025-11-29 02:15:38 -08:00
Shane Smiskol
088fc1cab1 Unified label: add scrolling (#36717)
* almost

* works!

* clean up

* fix

* trash

* Revert "trash"

This reverts commit 951d63382810d444fe08103f406a8c490cfcbe25.

* fix some bugs and use

* clean up

* clean up

* fix clipping

* clean up

* fix
2025-11-29 02:15:10 -08:00
Shane Smiskol
cb718618d1 fix multi option dialog text centering 2025-11-29 02:12:09 -08:00
Shane Smiskol
d6de3572ca UnifiedLabel: split render (#36719)
* split

* rect
2025-11-29 01:26:17 -08:00
Shane Smiskol
d8c316faef Fix wifi settings NavWidget 2025-11-29 00:56:43 -08:00
Shane Smiskol
65f18c363b Mici advanced network settings (#36716)
* add back

* forgot

* clean up
2025-11-28 23:41:55 -08:00
Shane Smiskol
c32e2898ac mici: split wifi and network settings (#36715)
* split

* clean up

* better
2025-11-28 23:29:13 -08:00
Harald Schäfer
d3532d7d6f URLFile: catch more (#36712)
* catch

* linter has a point
2025-11-28 17:25:54 -08:00
Jason Young
f07a40deb4 regen CARS.md (#36711) 2025-11-28 13:08:07 -05:00
Dean Lee
1052435391 ui: speed up mici/AugmentedRoadView by optimizing _calc_frame_matrix caching (#36669)
speed up AugmentedRoadView by optimizing _calc_frame_matrix caching
2025-11-27 05:58:53 -08:00
Shane Smiskol
ce596424cf Fix steering arc artifacts (#36707)
* fix arc artifacts

* works but how

* also this

* Revert "also this"

This reverts commit e8d5ed9af15568dcb178dd6da7a14d2c6191010e.

* clean up

* nl

* clean up

* more

* print

* print
2025-11-27 04:16:38 -08:00
Shane Smiskol
3959200a5b Scroll panel 2: use float for offset (#36705)
* use float internally

* use it everywhere -- this fixes all the problemS?!

* round it everywhere

* this looks so much better than before

* rm
2025-11-27 03:25:30 -08:00
Dean Lee
f8d0f22344 ui: ensure auto-scroll stops correctly near target (#36686)
ensure auto-scroll stops correctly near target
2025-11-27 03:22:15 -08:00
Calvin Park
0a0fadb16a Skip onboarding on PC (#36688)
* Skip onboarding on PC

* do this instead

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2025-11-27 02:44:13 -08:00
Dean Lee
d0489062b5 ui: remove unused members and variables (#36677)
remove unused members and variables
2025-11-27 02:28:51 -08:00
Dean Lee
630e14fd7f ui: avoid unnecessary text cache invalidation in UnifiedLabel (#36676)
avoid unnecessary text cache invalidation in UnifiedLabel
2025-11-27 02:28:13 -08:00
Najib Muhammad
394f580f16 fix the CI Weekly Report workflow so it does not fail on forks (#36664) 2025-11-27 02:26:29 -08:00
Dean Lee
4ef82c4119 ui: optimize matrix operations in scroller rendering (#36668)
optimize matrix operations
2025-11-27 02:20:49 -08:00
Dean Lee
4bd6fb0995 ui: fix unconditional rl.end_scissor_mode() call in MiciLabel (#36660)
fix incorrect end_scissor_mode usage
2025-11-27 02:17:16 -08:00
Logesh R
ae534ddeab docs: Fix "Turn the speed blue" tutorial for Raylib UI (#36591)
* docs: Fix "Turn the speed blue" tutorial for Raylib UI

* just

* obv

* not replay

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2025-11-27 02:07:56 -08:00
David
ae6ada4162 lint: Add PLE rule to ruff (#36595)
* update linting rules to include new PLE (pylint error) rule

* fix lint error
2025-11-27 01:52:25 -08:00
Dean Lee
b8d55987c2 ui: extract and optimize mouse event processing (#36564)
* extract and optimize mouse event processing

* rm slot

* merge mici mastere

* add mouse

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2025-11-27 01:50:36 -08:00
Shane Smiskol
26261387f8 Fix raylib ui spamming API calls (#36700)
* intern

* start

* move

* common caching

* use constant for slep

* works

* add gating back

* clean up

* more

* match cache logic

* hate this circular

* not needed since sync

* no need for lock?

* even qt had something like _load_initial_state for tests, keep

* clean up

* clean up

* clean up

* loading json as string works, else it will fail to parse json, catch that and log, and next api call will overwrite

* move over firehose

* clean up

* fix test

* no

* flip

* more

* match qt

* consistent

* clean up

* cmt

* fix test!
2025-11-27 01:37:16 -08:00
Shane Smiskol
946fd3f387 NavWidget: draw black above top of widget when dismissing (#36702)
draw rec
2025-11-27 01:00:33 -08:00
Shane Smiskol
50a797b0be De-duplicate firehose layout (#36703)
* Reapply "De-duplicate firehose layout (#36701)"

This reverts commit 302e448b93.

* fix

* was here
2025-11-27 01:00:03 -08:00
Shane Smiskol
302e448b93 Revert "De-duplicate firehose layout (#36701)"
This reverts commit dd51bf2021.
2025-11-27 00:52:50 -08:00
Shane Smiskol
dd51bf2021 De-duplicate firehose layout (#36701)
* consistent name

* dedup

* FMT

* not sure why two
2025-11-27 00:46:33 -08:00
YassineYousfi
49178539f3 dm: DriverProb (#36687)
* wip

* ci

* fix
2025-11-25 18:52:35 -08:00
felsager
f01391a7d9 latcontrol_torque: delay independent jerk and lower kp and lower friction threshold (#36619) 2025-11-25 10:23:02 -08:00
Bruce Wayne
c67afb45ae dead test 2025-11-24 14:20:20 -08:00
Adeeb Shihadeh
d0c3972cc7 update release branches (#36671)
* update release branches

* Update README.md
2025-11-21 18:55:01 -08:00
Adeeb Shihadeh
be8c5491b1 even shorter 2025-11-21 14:25:21 -08:00
Adeeb Shihadeh
ebc11fdbc8 make "update available" alert clickable (#36670)
* click to update

* that's it

* lil more
2025-11-21 13:44:22 -08:00
Adeeb Shihadeh
a981f78e2f use release branch from system.version 2025-11-21 11:23:54 -08:00
Maxime Desroches
a49c68806a ui: fix confidence ball clipping (#36667)
fix
2025-11-20 19:28:21 -08:00
Adeeb Shihadeh
8bc6becce1 simplify mici onboarding (#36666)
* simplify mici onboarding

* shorter

* dead

* cleanup
2025-11-20 18:54:54 -08:00
Maxime Desroches
5151bb8bf2 installer: use release-mici for comma four 2025-11-20 17:06:24 -08:00
YassineYousfi
f19ff793f5 dm more typo 2025-11-20 16:27:58 -08:00
Adeeb Shihadeh
4378c4b8bb ramp up IR faster for driver view (#36663)
* ramp up IR faster for driver view

* set it
2025-11-20 14:55:16 -08:00
Dean Lee
61fffb9578 ui: avoid rendering off-viewport items in Scroller (#36659)
avoid rendering off-viewport items in Scroller
2025-11-20 14:41:08 -08:00
Maxime Desroches
a46af06baa document MAGIC_DEBUG=1 2025-11-20 14:28:48 -08:00
Adeeb Shihadeh
b6bfa13b70 onboarding touchups, thanks nabeel! 2025-11-20 14:22:54 -08:00
Adeeb Shihadeh
6f89473f33 Revert "fix: openpilot unavailable with replay (#36658)"
This reverts commit 5c10e7f6cf.
2025-11-20 13:50:35 -08:00
ZwX1616
be700bc825 fix rhd behavior during preview/onboarding (#36657)
* rhd learning not required for demo

* fix switching and saving

---------

Co-authored-by: Comma Device <device@comma.ai>
2025-11-20 13:42:20 -08:00
YassineYousfi
38697ac628 Fix typo in phoneProbValidCount field name (#36662)
* Fix typo in phoneProbValidCount field name

* Fix typo in phoneProbValidCount key
2025-11-20 12:30:28 -08:00
YassineYousfi
fa56d539a7 dm: phone offseter class + log stats (#36656)
* dm: phone offseter class + log stats

* lint:/
2025-11-20 10:28:19 -08:00
Trey Moen
5c10e7f6cf fix: openpilot unavailable with replay (#36658)
fix: openpilot unavailable
2025-11-19 22:20:47 -08:00
Adeeb Shihadeh
a29fdbd024 enhance dcam a bit for onboarding (#36655) 2025-11-19 15:43:49 -08:00
Adeeb Shihadeh
f0d8ebd851 mici training guide tuneups (#36652)
* bump up size

* lil more

* rm param

* 5m timeout and 100% brightness

* set parasm:
2025-11-19 15:03:28 -08:00
Adeeb Shihadeh
3a001dd71c bump msgq 2025-11-19 14:42:03 -08:00
Adeeb Shihadeh
c8effae4eb ui/wifi: fix no attribute error (#36653) 2025-11-19 14:18:48 -08:00
YassineYousfi
9d0ab68f3b dm: settings w device type (#36650)
* dm: settings w device type

* lint

* fix
2025-11-19 11:14:04 -08:00
David
eeddfc058a ui(mici): remove duplicate draw_texture_pro call in mici_keyboard (#36647)
Remove duplicate draw_texture_pro call in IconKey class
2025-11-19 11:08:39 -08:00
Adeeb Shihadeh
0d9b4cdaed tmp bump this up 2025-11-19 10:39:01 -08:00
YassineYousfi
1398bdb10e dmonitoringmodeld: follow same pattern as modeld (#36636)
* dmonitoringmodeld: follow same pattern as modeld

* lint

* oops

* rename
2025-11-19 09:23:13 -08:00
Maxime Desroches
b89c717643 AGNOS 15.1 (#36638)
* stage

* staging

* prod
2025-11-19 00:23:42 -08:00
Shane Smiskol
85301e3a67 Remove unused mici images (#36644)
remove uused images
2025-11-18 23:52:00 -08:00
Shane Smiskol
b0b6bf8702 driving model -> openpilot 2025-11-18 23:37:54 -08:00
Adeeb Shihadeh
85b05998ed small release 2025-11-18 22:47:59 -08:00
Trey Moen
e899f46727 fix: block update if not connected (#36641) 2025-11-18 22:35:32 -08:00
Shane Smiskol
3aaf249236 comma four (#36639)
* squash squash squash

* scroller tici
2025-11-18 22:27:45 -08:00
Maxime Desroches
b73be441b3 bump updater 2025-11-18 21:56:17 -08:00
Shane Smiskol
e449ffcc36 Tuneup offroad alerts 2025-11-18 21:09:20 -08:00
Shane Smiskol
bca727a3cb Fix strength check 2025-11-18 19:48:04 -08:00
Adeeb Shihadeh
e1e41be1a9 common: add BounceFilter 2025-11-18 10:42:06 -08:00
Adeeb Shihadeh
ad7f3d2b24 selfdrived: prep for mici (#36633)
* selfdrived: prep for mici

* tizi reverts

* more revert

* lil more:

* invert it

* cleanup
2025-11-18 10:39:32 -08:00
Adeeb Shihadeh
4ef0d3ee99 setup sound for DM test mode 2025-11-18 10:11:06 -08:00
Adeeb Shihadeh
67cbeebc7b sensord: magnetometer is only for tizi 2025-11-18 10:10:32 -08:00
Adeeb Shihadeh
16abf93be8 reduce ruff noise with raylib 2025-11-17 22:40:33 -08:00
Adeeb Shihadeh
d3cc32ddca mici fcc 2025-11-17 21:40:08 -08:00
Adeeb Shihadeh
689f884810 DM test mode (#36631) 2025-11-17 21:37:40 -08:00
Adeeb Shihadeh
f653c1c0c5 ui: don't sleep on PC 2025-11-17 21:31:24 -08:00
Adeeb Shihadeh
b8a845fe93 ui: add GRID debug helper (#36630) 2025-11-17 20:46:34 -08:00
Alexandre Nobuharu Sato
a6d2297545 Multilang: update pt-BR translations (#36626) 2025-11-16 13:15:04 -08:00
Adeeb Shihadeh
d0c6f845da ui: add burn in debug mode (#36625)
* ui: add burn in debug mode

* scary

* lil less

* lil cleanup

* revert that

* cleanup
2025-11-14 17:33:14 -08:00
Adeeb Shihadeh
81be78cd4d too aggressive for now 2025-11-14 15:48:55 -08:00
ZwX1616
b778da1d7c dmonitoringmodeld: clean up data structures (#36624)
* update onnx

* get meta

* start

* cast

* deprecate notready

* more

* line too long

* 2
2025-11-14 14:29:04 -08:00
Harald Schäfer
a1795f80dd Latest tinygrad (#36615)
* Latest tinygrad

* jit batch size

* bump again

* limit upcast

* latest tgf

* upstream tg
2025-11-13 17:08:14 -08:00
Maxime Desroches
9c19ec8409 bump raylib 2025-11-13 15:09:33 -08:00
Shane Smiskol
fc253fe1ee Don't resize images that are the same size 2025-11-13 14:59:34 -08:00
Shane Smiskol
d72a01d739 raylib: fix texture wrapping filtering artifacts (#36618)
fix wrapping artifacts
2025-11-13 14:58:16 -08:00
Trey Moen
f93b3f51c9 fix: install missing x deps for building raylib from src (#36614)
* fix: install missing x deps for building raylib from src

* move here

* cleaner
2025-11-12 20:04:20 -08:00
Dean Lee
3d08a5048b replay: Only send bookmarkButton message when --all flag is set (#36612)
Only send BookmarkButton message when --all flag is set
2025-11-12 14:22:14 -08:00
Maxime Desroches
9ee66008db AGNOS 15 (#36611)
* stage

* production
2025-11-11 22:59:54 -08:00
Dean Lee
6a257fe2de ui: increase profile output from 25 to 100 functions (#36607)
increase profile output from 20 to 100 functions
2025-11-11 16:10:37 -08:00
Maxime Desroches
dad7bb53a2 ui: let ui_state set brightness 2025-11-10 22:24:35 -08:00
Maxime Desroches
47ba86af33 enable ADB in release 2025-11-10 19:57:59 -08:00
Trey Moen
9689de426b chore: adb rules (#36544)
* chore: adb rules

* i think 51 is common, lets use our own
2025-11-10 18:38:49 -08:00
Dean Lee
124eb42758 ui: fix CameraView crash caused by stale frame (#36563)
fix CameraView crash from stale frame
2025-11-10 18:10:50 -08:00
Trey Moen
85404c184b fix: badges (#36566)
* re-add

* need to validate

* ok looks good

* oops

* lint
2025-11-10 18:08:55 -08:00
Dean Lee
ed42cfe699 ui: refactor GuiApplication.render into smaller helper methods (#36569)
refactor render into smaller helper method
2025-11-10 18:08:02 -08:00
Dean Lee
3099f4f12d ui: cache the version text to avoid redundant Params.get calls every frame (#36601)
cache the version text to avoid redundant Params.get calls every frame
2025-11-10 18:05:55 -08:00
Dean Lee
8fceb9d957 cabana: replace deprecated Qt and OpenSSL functions (#36605)
replace deprecated functions
2025-11-10 13:58:23 -08:00
Jason Young
d4185a5d57 docs: car porting (#36590)
* checkpoint

* door states, notes

* updates

* not worth it yet

* wordsmith

* more

* more reverse engineering script content

* Revise stationary ignition-only test steps

Updated the steps for stationary ignition-only tests to include closing the driver's door and fastening the seatbelt before pressing the accelerator and brake pedals.

* fix numbering
2025-11-07 20:37:40 -05:00
ZwX1616
1262fca36b add check driver camera alert (#36577)
* add event

* missing arg

* creation_delay is wrong

* add logging

* set offroad alert

* Update selfdrive/selfdrived/alerts_offroad.json

Co-authored-by: Shane Smiskol <shane@smiskol.com>

* rm onard

* add details

* rename to DM

* log rename

* no poss

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2025-11-07 15:18:45 -08:00
Maxime Desroches
890b1cf512 AGNOS 14.7 (#36597)
* stage

* prod
2025-11-07 02:54:52 -08:00
Maxime Desroches
1633641055 bump raylib (#36596)
this
2025-11-06 21:00:26 -08:00
David
2dcb67091f remove unused MAX_POINTS constant from model_renderer.py (#36593) 2025-11-06 20:51:17 -08:00
Maxime Desroches
fb34601d5a Revert "bump panda" (#36594)
This reverts commit 36e53c7394.
2025-11-06 20:46:04 -08:00
Adeeb Shihadeh
b6bcc8cca3 ui: fix running on macOS 2025-11-06 09:42:23 -08:00
Maxime Desroches
e5a7deb6ad AGNOS 14.6 (#36586)
* stage

* ver

* prod
2025-11-06 01:22:37 -08:00
Maxime Desroches
10100e34e1 bump raylib 2025-11-06 01:04:17 -08:00
Adeeb Shihadeh
2d31b422c8 ui: prep for 60fps (#36585) 2025-11-05 23:01:10 -08:00
Adeeb Shihadeh
89919c8832 this is not a good api 2025-11-05 18:55:50 -08:00
Adeeb Shihadeh
dc5f5eaf65 make github LFS work if you want it 2025-11-05 16:34:19 -08:00
Adeeb Shihadeh
ee8970dc42 ui: add route-based profiler (#36576)
* ui: add route-based profiler

* cleanup

* this is stupid
2025-11-05 16:23:33 -08:00
David
0a44b48e21 gitignore: add raylib test UI screenshots report path (#36570)
ui: update .gitignore to include raylib_report
2025-11-05 10:35:56 -08:00
Maxime Desroches
36e53c7394 bump panda 2025-11-04 19:18:16 -08:00
ZwX1616
38eb400e41 monitoring: account for OS cam distribution shift (#36567)
* this should match

* roughly matching FPR at 2 to 1 cost
2025-11-04 16:00:15 -08:00
Maxime Desroches
5198b1b079 support ECDSA (#36555)
* keys

* remove

* remove

* too small
2025-11-03 22:45:00 -08:00
Adeeb Shihadeh
e8a11591a8 ui: add render loop profiling (#36558) 2025-11-03 21:45:46 -08:00
Adeeb Shihadeh
cbc8f98682 ui: fix RuntimeError on exit on PC 2025-11-03 16:20:36 -08:00
Adeeb Shihadeh
ecdcb5d0c6 tici: affine DRM IRQ to same core as ui (#36554) 2025-11-03 14:36:19 -08:00
Adeeb Shihadeh
c7494aed0f ui: move to GPU core (#36553)
* ui: move to GPU core

* we're on the big boy core now
2025-11-03 14:31:45 -08:00
Dean Lee
215ef16803 ui: fix LineSeparator horizontal centering issue (#36533)
fix LineSeparator horizontal centering issue
2025-11-03 11:22:42 -08:00
Dean Lee
350b846d3a ui: fix vertical centering for multi-line labels (#36538)
fix vertical centering for multi-line labels
2025-11-03 11:21:41 -08:00
Dean Lee
9ce9920ff7 ui: fix label text eliding to account for icon width (#36539)
fix label text eliding to account for icon width
2025-11-03 11:21:20 -08:00
Dean Lee
1c0b087105 ui: fix keyboard.reset() to properly clear all interaction state (#36541)
fix keyboard.reset() to properly clear all interaction state
2025-11-03 11:20:24 -08:00
Dean Lee
137d4b89b4 ui: fix icon vertical positioning using width instead of height (#36542)
fix icon vertical positioning using width instead of height
2025-11-03 11:20:08 -08:00
Shane Smiskol
2cc4885a2e raylib: fix window freezing (#36517)
fix window freezing
2025-11-03 11:17:38 -08:00
felsager
736e1fa7b7 Revert "latcontrol_torque: make feed-forward jerk independent of individual platform lag (#36334)"
This reverts commit fc4e5007fd.
2025-11-03 10:31:27 -08:00
felsager
177c7f1cf3 Revert "latcontrol_torque: retune torque controller (#36392)"
This reverts commit 76c5cb6d87.
2025-11-03 10:31:22 -08:00
Dean Lee
9bf904e8a6 ui: scale mouse positions in touch history (#36530)
scale mouse position in touch history
2025-11-03 08:55:05 -08:00
Adeeb Shihadeh
5ea5f6f267 ui: timeout touch points (#36550) 2025-11-02 21:48:33 -08:00
Shane Smiskol
525b6e48e9 raylib: fix word wrap (#36545)
* fix word wrap underestimating width

* and that
2025-11-02 04:32:29 -08:00
Shane Smiskol
c7b115b68e raylib: fix text measure with emojis (#36546)
fix
2025-11-02 04:30:08 -08:00
Dean Lee
62aef9cd34 tools: update README (#36531)
update readme
2025-10-31 08:16:55 -07:00
Adeeb Shihadeh
f57617c944 expose more state from gui_app 2025-10-30 16:03:28 -07:00
Adeeb Shihadeh
c4a0e57046 ui: add debug toggle (#36529)
* ui: add debug toggle

* initial state
2025-10-30 15:52:56 -07:00
felsager
76c5cb6d87 latcontrol_torque: retune torque controller (#36392) 2025-10-30 13:34:44 -07:00
felsager
fc4e5007fd latcontrol_torque: make feed-forward jerk independent of individual platform lag (#36334) 2025-10-30 13:29:38 -07:00
Dean Lee
af24fd6842 remove qrcode library from third_party (#36528) 2025-10-30 09:24:22 -07:00
Maxime Desroches
002a22a097 AGNOS 14.5 (#36523)
* stage

* updater

* prod
2025-10-28 23:05:44 -07:00
Maxime Desroches
9f20eb8ce6 setup: handle incompatible versions (#36520)
check
2025-10-28 19:15:43 -07:00
Adeeb Shihadeh
2e636458a6 op adb: forward all openpilot service ports (#36518)
* op adb: forward all openpilot service ports

* cleanup
2025-10-28 16:47:22 -07:00
David
47d0a95fd6 font: remove unifont anti-aliasing and reduce font size to 16 (#36508)
remove unifont anti-aliasing and reduce font size to 16

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2025-10-28 14:49:33 -07:00
Dean Lee
5d142326f5 ui: remove unused get_width() method (#36512)
remove unused get_width() method
2025-10-28 14:47:17 -07:00
Dean Lee
ef9683ee79 ui: skip rendering when screen is off (#36510)
* skip rendering when screen is off

* continue and rename

* revert that

* flip

---------

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2025-10-28 13:09:49 -07:00
Maxime Desroches
8a77534d02 fix zipapp with multilang (#36511)
* fix

* fix

* fix

* more
2025-10-27 22:47:41 -07:00
David
73ed45f9d7 ui screenshots: add screenshot for unifont rendering (#36506)
* ui: add homescreen setup for unifont language setting

* fix params
2025-10-27 20:00:01 -07:00
Shane Smiskol
2d6df2e125 raylib: minor tweaks (#36507)
* try

* generic

* check

* why was this here?!
2025-10-27 19:59:35 -07:00
Shane Smiskol
e754b738ad raylib: fix prime state thread (#36504)
fix
2025-10-27 15:15:48 -07:00
David
1dadb3fcc9 multilang: fix missing translation for longitudinal personality toggle description (#36446)
fix: add translation wrapper for longitudinal personality toggle description
2025-10-27 13:34:35 -07:00
Shane Smiskol
4e88245745 raylib: rename set_callbacks (#36462)
rn
2025-10-27 13:34:16 -07:00
David
debc9bf7cf screenshots: reuse alert setup function (#36473)
ui: refactor onroad alert setup functions for improved reusability
2025-10-27 13:32:15 -07:00
Dean Lee
e03673485b ui: unify cache key in AugmentedRoadView (#36477)
unified cache key
2025-10-27 13:31:55 -07:00
David
6efe4e1998 ci: fix selfdrive_tests weekly run and badge (#36500) 2025-10-27 13:28:27 -07:00
David
ff6ed7055d ci: include assets path for UI label and preview (#36499)
* workflow: include 'selfdrive/assets/**' path for triggering UI preview

* ui: include 'selfdrive/assets/**' path in labeler configuration
2025-10-27 13:28:09 -07:00
Maxime Desroches
6c85e2c697 ModemManager restart (#36433)
* res

* limit

* not needed

* comments + explicit
2025-10-26 18:30:57 -07:00
Adeeb Shihadeh
2d0340cefd ui: stop loading unused fonts (#36493)
Co-authored-by: Comma Device <device@comma.ai>
2025-10-26 14:18:48 -07:00
Adeeb Shihadeh
a974deeb59 ui: replace close button text with icon (#36492) 2025-10-26 14:13:53 -07:00
Adeeb Shihadeh
cf5bb4e16e reduce unifont impact on init time (#36490) 2025-10-26 13:47:47 -07:00
Adeeb Shihadeh
0d4b0ee116 pre-process fonts for raylib (#36489)
* pre-process fonts for raylib

* it's fast!

* raylib processing

* build with scons

* padding

* happy ruff

* all exported

* cleanup

* more pad
2025-10-26 13:20:11 -07:00
Adeeb Shihadeh
03cb3e9dc0 make ruff happy :) 2025-10-26 12:15:34 -07:00
Shane Smiskol
f0dd0b5c8c raylib ui: assert system time valid (#36486)
* assert system time valid

* nl
2025-10-26 00:47:07 -07:00
Adeeb Shihadeh
94ca077e69 ui: add startup profiling (#36482)
* ui: add startup profiling

* lil more
2025-10-25 12:27:01 -07:00
eFini
e92e59ca78 multilang: add gettext package (#36476)
needed for gettext
2025-10-25 09:17:59 -07:00
Shane Smiskol
e0cabc1174 raylib: only load glyphs for unifont (#36475)
* again llm is terrible

* Revert "again llm is terrible"

This reverts commit 423dd289ae5701e2f5bb034efd9329175fc275cc.

* try this
2025-10-24 23:56:59 -07:00
Adeeb Shihadeh
5e2f142704 increase CPU budget 2025-10-24 22:02:25 -07:00
Dean Lee
2beb0ffad1 ui: move INF_POINT to constant (#36470)
move INF_POINT to constant
2025-10-24 22:00:45 -07:00
Dean Lee
fa373af9b5 ui: cleanup .gitignore (#36471)
cleanup .gitignore
2025-10-24 22:00:38 -07:00
Adeeb Shihadeh
7909716c1f ui: realtime scheduling (#36467)
* ui: realtime scheduling

* try this

* update cpu

---------

Co-authored-by: Comma Device <device@comma.ai>
2025-10-24 21:57:45 -07:00
Adeeb Shihadeh
c1cb971bca hardwared: disable power save when screen is on (#36466) 2025-10-24 21:34:37 -07:00
Adeeb Shihadeh
538ec25ad9 gc unused stuff in HW abstraction layer (#36465)
* gc unused stuff in HW abstraction layer

* lil more
2025-10-24 21:07:04 -07:00
Adeeb Shihadeh
17152484c2 selfdrive_tests -> tests 2025-10-24 20:54:13 -07:00
Adeeb Shihadeh
954b567b9b merge a bunch of misc stuff into common.utils (#36463)
just utils
2025-10-24 20:45:56 -07:00
Shane Smiskol
6061476d8e fix spinner (#36458) 2025-10-24 19:43:46 -07:00
Dean Lee
ad903aeaa1 ui: simplify draw_border (#36440)
simplify draw_border
2025-10-24 19:28:58 -07:00
Dean Lee
c8c1b0f781 ui: clear available camera streams after going offroad (#36441)
clear available camera streams after going offroad
2025-10-24 19:27:33 -07:00
Dean Lee
534f096bb8 ui: reset cached height when description changes (#36454)
reset cached height when description changes
2025-10-24 19:27:03 -07:00
David
7da36b2470 multilang: fix missing translations in developer panel (#36445)
fix: translate description strings in DeveloperLayout settings
2025-10-24 19:15:14 -07:00
Dean Lee
f2db7f7665 ui: cache emoji font to avoid repeated loading (#36451)
cache font to avoid repleated loads
2025-10-24 19:13:34 -07:00
David
40a1af97b9 ui: only auto scale on PC if SCALE env not set (#36455)
only use auto scale if SCALE env not set
2025-10-24 19:12:45 -07:00
Dean Lee
53ff5413cd ui: auto-size on PC if screen is smaller than tici (#36452)
auto-scale on PC to fit screen
2025-10-24 08:50:32 -07:00
Maxime Desroches
dc889587ce bump version to 0.10.2 2025-10-23 22:25:54 -07:00
David
6486ab6cab raylib: fix crash when toggling advanced network toggles (#36443)
use get_state()
2025-10-23 15:09:14 -07:00
Shane Smiskol
ab234c72a3 wait slightly longer to take screenshot 2025-10-23 00:55:31 -07:00
Shane Smiskol
485c7b2725 multilib: relative paths (#36439)
* relative

* clean up
2025-10-23 00:54:31 -07:00
Shane Smiskol
4861d15056 reduce ui scons imports 2025-10-23 00:45:51 -07:00
Shane Smiskol
1e73025f86 Remove Qt (#36427)
* rm qt from ui scons

* rm qt translation litter

* rm ccs

* more

* fix cabana

* more

* more

* more
2025-10-22 22:18:07 -07:00
Dean Lee
378212e5ab cabana: remove dependency on selfdrive/ui (#36434)
remove dependency on selfdrive/ui
2025-10-22 21:24:07 -07:00
David
4f52f3f3c5 raylib: match QT colors for danger button style (#36431)
match colors for DANGER style
2025-10-22 19:48:44 -07:00
Shane Smiskol
a0d48b6c63 raylib: unifont for CJK languages (#36430)
* add rest of langs

* unifont

* all langs are supported

* add japanese translations

* fix strip!

* add language name chars

* use unifont in lang selection

* add korean

* test all langs

* doesn't work

* unifont font fallback for multilang

* add ar translations

* fix labels not updating until scrolling

* t chinese

* more chn

* we already default

* wrap

* update

* fix thai

* fix missing chinese langs and all are supported!

* clean up

* update

* ??? mypy r u ok ???

* fix default option font weight
2025-10-22 19:18:54 -07:00
YassineYousfi
b14270bd71 update RELEASES.md 2025-10-22 18:56:18 -07:00
Shane Smiskol
8f720a54f6 raylib: add branch switcher (#36359)
* it's adversarial

* try 2

* just do this

* kinda works but doesn' tmatch

* fine

* qt is banned word

* test

* fix test

* add elide support to Label

* fixup

* Revert "add elide support to Label"

This reverts commit 28c3e0e7457345083d93f7b6a909a4103bd50d55.

* Reapply "add elide support to Label"

This reverts commit 92c2d6694146f164f30060d7621e19006e2fe2df.

* todo

* elide button value properly + debug/stash

* clean up

* clean up

* yep looks good

* clean up

* eval visible once

* no s

* don't need

* can do this

* but this also works

* clip to parent rect

* fixes and multilang

* clean up

* set target branch

* whops
2025-10-22 18:54:09 -07:00
Shane Smiskol
2c41dbc472 raylib: hit rect for scroller items (#36432)
* hit rect

* clean up

* comment

* oh this is actually epic

* rm line

* type
2025-10-22 18:10:32 -07:00
Shane Smiskol
a8660b5b4f Revert "raylib: add branch switcher (#36411)"
This reverts commit 856f8d3d47.
2025-10-22 17:55:28 -07:00
Shane Smiskol
4ccafff123 raylib: multilang (#36195)
* fix multilang dialog height

* split to file

* stash

* Revert "stash"

This reverts commit deb4239fe69f0260420fad03f2350e622e31542f.

* add updater

* add files

* stuff

* try

rev

* stash

* works!

* works!

* this should be the flow?

* cursor wrapping -- it missed entire sections, changed formatting, and didn't use trn properly!!!!!!!!!!!!!!!!!

* update translations

* learned my lesson

* this should be the one thing it's good at

* update trans

* onroad wrap

* spanish

* rename

* clean up

* load all

* Revert "load all"

This reverts commit 6f2a45861c914ffb9d40a5edd15751afd798d614.

* jp translations

* try jp

* Revert "try jp"

This reverts commit d0524b10110104baafcdc1ec385c3d57bc5ef901.

* remove languages we can't add rn

* tr

* pt and fr

* ai cannot be trusted

* ai cannot be trusted

* missing trans

* add fonts

* Revert "remove languages we can't add rn"

This reverts commit 73dc75fae2b9e347d867b6636dab6e2b5fe59da7.

* painfully slow to startup

* only load what we need

* Reapply "remove languages we can't add rn"

This reverts commit 52cb48f3b838520a421f9b90e5ea4409c27d4bd0.

* add system

* that's sick that this just works (dynamic)

* fix description falling back to first str + support callable titles in list items

* device is now live!

* make firehose live

* developer

* network live

* software live

* and that

* toggles live

* regen

* start to clean up gpt

* revert op sans

* bruh

* update translations

* rm old script

* add noops for descriptions to fix translating away from non-english after startup

* missing de

* do filtering in multilang.py

* clean up

clean up

* codespell: ignore po

* fix update

* should not depend

* more live

* sidebar and offroad alert panel live

* fix issues with offroad alerts

* fix firehose live

* fix weird tr("") behavior

* sh key live bugfix

* setup.py live

* update

* update

* no fuzzy matching -- breaks dynamic translations

* rm this

* fix calib desc live trans

* change onroad

* rm dfonts

* clean up device

* missing live

* update

* op lint

* not true

* add to gitignore

* speed up startup by reducing chars by ~half

* fix scons

* fix crash going from qt

* preserve original lang

* cancel kb live translate

* no preserve

* fix lint
2025-10-22 16:28:28 -07:00
Dean Lee
856f8d3d47 raylib: add branch switcher (#36411)
* add branch switcher

* improve
2025-10-22 16:22:51 -07:00
David
00e20f1524 raylib: fix "Reboot" button pressed style (#36412)
use normal style for dual button action left button
2025-10-22 16:19:37 -07:00
Dean Lee
215acefbb4 raylib: precompile regex patterns for faster HTML parsing (#36417)
precompiled regex
2025-10-22 16:18:11 -07:00
Dean Lee
c33c9ff22a raylib: optimize html renderer with height caching (#36418)
optimize html renderer with height caching
2025-10-22 16:17:57 -07:00
Adeeb Shihadeh
99fdd59042 agnos 14.3 (#36426) 2025-10-22 16:11:37 -07:00
Adeeb Shihadeh
5af1099fbf rm watchdog (#36425) 2025-10-22 15:36:09 -07:00
ZwX1616
f983df0c70 camerad: faster exposure convergence at startup (#36424)
* might converge faster

* accept darker at start

* accept darker at start

* it was unreasonably lax
2025-10-22 15:35:58 -07:00
felsager
936740201c latcontrol_torque: refactor low speed factor into pid controller (#36364) 2025-10-22 11:50:37 -07:00
David
4489517eeb keyboard: replace duplicate period key (#36361)
switch between underscore and hypen instead of period
2025-10-22 11:35:58 -07:00
David
b1b7c505a1 raylib: add danger button pressed style (#36413)
add danger hover style
2025-10-22 11:28:37 -07:00
felsager
a2e7f3788f LateralTorqueState: log controller version and desired lateral jerk (#36421) 2025-10-22 10:56:34 -07:00
felsager
d2bb8fe537 latcontrol_torque: more descriptive variable names (#36422) 2025-10-22 10:44:14 -07:00
Maxime Desroches
5289b08bcf bump retry count for micd and soundd (#36415)
retry
2025-10-21 21:54:40 -07:00
ZwX1616
cc8f6eadfe DM: Medium Fanta model 🥤 (#36409)
M fanta: e456b6c5-2dd0-400e-bf0f-6bb5a908971a
2025-10-21 13:58:48 -07:00
Shane Smiskol
9b2f7341d8 raylib: wrap text for multilang (#36410)
* fix multilang dialog height

* split to file

* stash

* Revert "stash"

This reverts commit deb4239fe69f0260420fad03f2350e622e31542f.

* add updater

* add files

* stuff

* try

rev

* stash

* works!

* works!

* this should be the flow?

* cursor wrapping -- it missed entire sections, changed formatting, and didn't use trn properly!!!!!!!!!!!!!!!!!

* update translations

* learned my lesson

* this should be the one thing it's good at

* update trans

* onroad wrap

* spanish

* rename

* clean up

* load all

* Revert "load all"

This reverts commit 6f2a45861c914ffb9d40a5edd15751afd798d614.

* jp translations

* try jp

* Revert "try jp"

This reverts commit d0524b10110104baafcdc1ec385c3d57bc5ef901.

* remove languages we can't add rn

* tr

* pt and fr

* ai cannot be trusted

* ai cannot be trusted

* missing trans

* add fonts

* Revert "remove languages we can't add rn"

This reverts commit 73dc75fae2b9e347d867b6636dab6e2b5fe59da7.

* painfully slow to startup

* only load what we need

* Reapply "remove languages we can't add rn"

This reverts commit 52cb48f3b838520a421f9b90e5ea4409c27d4bd0.

* stash!

* rm

* Revert "stash!"

This reverts commit 31d7c361079a8e57039a0117c81d59bf84f191c7.

* revert this

* revert that

* make this dynamic!

* device

* revert

* firehose

* stuff

* revert application

* back

* full revert

* clean up

* network

* more system

* fix dat

* fixy
2025-10-20 21:39:04 -07:00
Dean Lee
650946cd2a raylib:use context manager for BytesIO (#36407)
use context manager for BytesIO
2025-10-20 19:17:10 -07:00
Shane Smiskol
9801e486d9 fix incorrect Button argument 2025-10-20 18:36:13 -07:00
Shane Smiskol
3381192297 Multilang: remove main prefix (#36406)
* rename

* fix
2025-10-20 18:35:34 -07:00
Harald Schäfer
b2e3dd17ea torque gains not car specific (#36404)
* torque gains not car specific

* remove opendbc interfaces longitudinal control kf field assignment that makes hitl test fail

* typo

* another typo

* bump

* bump openbc

* update ref

---------

Co-authored-by: felsager <d.felsager@gmail.com>
2025-10-20 17:16:03 -07:00
Bruce Wayne
01715f6f9a test car model: use factor for torque 2025-10-20 16:26:22 -07:00
Adeeb Shihadeh
8720e5d712 tools: pass args to op adb 2025-10-20 16:14:02 -07:00
Shane Smiskol
8752093801 raylib: fix option dialog (#36405)
* fix dialog

* rm
2025-10-20 15:45:44 -07:00
YassineYousfi
3c957c6e9d The Cool People's model 😎 (#36249)
* cb8f0d7e-6627-4d7f-ad97-10d0078f2d2c/400

* ci?

* fd9a6816-8758-466b-bbde-3c1413b98f0a/400
2025-10-20 14:09:42 -07:00
Shane Smiskol
3ef5037c16 uploader: fix env var parsing 2025-10-20 11:40:03 -07:00
Harald Schäfer
7534b2a160 PID: no more ff gain (#36398)
* No more ff gain

* typo
2025-10-18 11:12:47 -07:00
Shane Smiskol
b28425b8c3 raylib: fix broken pairing dialog first 5m after startup (#36397)
* always try on dialog show

* except logging

* huge oof
2025-10-17 19:11:12 -07:00
Shane Smiskol
1f5e0b6f68 raylib: show dialog when attempting to pair without internet (#36396)
* match qt

* clean up

* bb

* ofc

* use alert_dialog
2025-10-17 19:00:06 -07:00
David
646f6a1006 raylib screenshots: alpha long toggle confirmation dialog (#36386)
add alpha long toggle confirmation test
2025-10-17 17:27:13 -07:00
Maxime Desroches
cc683f2040 AGNOS 14.2 (#36390)
* version

* env
2025-10-17 02:50:17 -07:00
Maxime Desroches
18e8f648c2 Revert "AGNOS 14.1 (#36389)"
This reverts commit 821e4da2c7.
2025-10-17 01:48:08 -07:00
Maxime Desroches
821e4da2c7 AGNOS 14.1 (#36389)
* stag

* prod
2025-10-17 01:12:55 -07:00
Maxime Desroches
13d98fd2d5 test_onroad: skip more frames for ui timings 2025-10-17 00:36:15 -07:00
Maxime Desroches
92cd656c68 ui: remove watchdog (#36388)
out
2025-10-17 00:26:29 -07:00
Maxime Desroches
727a750b34 ci: stop power_monitor once 2025-10-16 23:37:44 -07:00
Maxime Desroches
5dabb678ce ci: just stop power_monitor on devices 2025-10-16 23:35:31 -07:00
Maxime Desroches
ef988aca28 raylib: bump version 2025-10-16 23:23:39 -07:00
Maxime Desroches
64f3759fd0 cleanup release branches 2025-10-16 15:07:45 -07:00
Shane Smiskol
d71d2bd2d0 test_onroad: ignore first few ui timing frames (#36385)
clean up
2025-10-16 03:45:50 -07:00
Shane Smiskol
702bebf176 raylib: fix temporarily untoggleable onroad experimental mode button (#36383)
* gpt got it after 2 tries, but still not immed mergeable

* bad bot
2025-10-16 02:22:49 -07:00
Shane Smiskol
25da8e9d44 raylib: fix crash from too many colors (#36382)
* fix

* bump
2025-10-16 02:22:02 -07:00
Maxime Desroches
845f6ec8cf build new staging branch 2025-10-16 02:06:09 -07:00
Maxime Desroches
e1ad4daf8d installer: branch migration (#36315)
* mig

* fix

* fix

* more

* staging
2025-10-16 01:59:23 -07:00
Maxime Desroches
783b717af8 AGNOS 14 (#36313)
* version

* updater

* this order

* manifest

* update

* prod

* logic

* magic

* new

* bump

* bump

* new

* b

* bump

* prod
2025-10-16 00:49:05 -07:00
Shane Smiskol
65e1fd299e raylib: fix full size alert text (#36379)
* stash so far

* try this

* better

* fast

* rename

* revert

* clean up

* yes

* hack to make it work for now

* actually fix

* fix
2025-10-15 22:53:37 -07:00
Shane Smiskol
b29b1964ba raylib screenshots: test onroad (#36369)
* test onroad

* person

* onroad alert

* mid and full

* all

* can do this

* tf

* tf

* clean up
2025-10-15 22:10:55 -07:00
Shane Smiskol
80a8df0643 raylib: fix emoji centering with Label (#36376)
* kinda works

* but spacing was off, so back to big emoji

* rm debug

* fixed!

* fixed!

* fix newline in emoji pattern

* fix

* fix dat
2025-10-15 21:53:52 -07:00
Shane Smiskol
d9fc6c0086 raylib: small Label clean up (#36377)
* do

* clean up

* text raw is the default!
2025-10-15 21:11:00 -07:00
Shane Smiskol
cb612a4b90 raylib: no Label padding (#36374)
* none

* try this

* fix

* stash

* remove text padding from label, but keep for button

* simpler is to default to 0

* fix
2025-10-15 20:13:42 -07:00
Shane Smiskol
36d77debd0 raylib: remove redundant text center enum (#36372)
* rm

* type

* fix

* fix
2025-10-15 19:32:13 -07:00
Maxime Desroches
530ad2925d ui: clean raylib even on SIGINT (#36368)
* fix

* keep

* fix
2025-10-15 17:03:49 -07:00
Shane Smiskol
ec33519dc7 raylib: revert 0 button padding (#36360)
* back to 20

* here only
2025-10-15 01:38:00 -07:00
Shane Smiskol
2fd4b53aaf raylib: smooth path distance (#36278)
* smooth max distance

* junk

* clean up

* final

* you can read

* Update selfdrive/ui/onroad/model_renderer.py

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* true

* fix

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-15 00:48:05 -07:00
Shane Smiskol
a2c4fe1c90 raylib: fix setup styles (#36322)
* hardcoding is bad for you

* do updater

* reset

* lint

* duh!

* fixup setup

* fixup updater

* unround
2025-10-15 00:11:16 -07:00
Shane Smiskol
3e56612990 raylib: fix emoji vertical centering (#36358)
* space

* font scale

* fix centering
2025-10-15 00:06:04 -07:00
Shane Smiskol
75858673c4 less rounded border 2025-10-15 00:01:52 -07:00
Shane Smiskol
57223958b5 raylib screenshots: add more homescreen states (#36356)
* hmm can do yeidl approach

* clean up

* clean up

* flip

* and add paired + prime

* sort and add update params

* try

* all should have branch name

* test

* clean up

* add offroad alert to update screen
2025-10-14 23:56:15 -07:00
Shane Smiskol
3553a754a4 Fix vendored emoji font (#36357)
* add font

* use it

* rm old one
2025-10-14 22:45:33 -07:00
David
f290fb1e05 keyboard: fix double space (#36345)
* support multiple characters added add cursor position

* fix

* remove double space

* Revert "fix"

This reverts commit c938a52995b6f5343b461f408af5838b78f453d2.

* Revert "support multiple characters added add cursor position"

This reverts commit d8225a768686a88f2bdaabae6d2a57c541ac7f77.
2025-10-14 22:15:31 -07:00
David
0c64818f52 Add screenshot for advanced network settings (#36351)
add screenshot for advanced network settings
2025-10-14 21:36:04 -07:00
ZwX1616
c44548ba0f camerad: make wide brightness more consistent with road (#36355)
align
2025-10-14 21:27:52 -07:00
Shane Smiskol
59bddfba8d raylib: rounded onroad corners (#36348)
* rounded corners

* use scissor

* 0.1

* middle

* don't trust chatter

* round

* clean p

* cleanup

* rev
2025-10-14 21:24:36 -07:00
Shane Smiskol
8a1fcd8991 raylib: fix possible DM crash (#36354)
* fix

* bruh

* clean up

* here

* rm
2025-10-14 21:17:36 -07:00
felsager
3546b625e7 latcontrol_torque: change in kp should not affect effective low speed factor gain (#36335) 2025-10-14 13:22:17 -07:00
Shane Smiskol
87443cd34d raylib: background onboarding texture loading (#36343)
* this seems best so far

* better

* clean up

* debug

* debug

* clean up

* final
2025-10-14 00:45:03 -07:00
Shane Smiskol
5f0e9fce61 raylib: update experimental mode homescreen button (#36344)
* update homescreen exp mode button

* and here

* Apply suggestions from code review
2025-10-14 00:40:41 -07:00
Shane Smiskol
a2cce7f897 raylib: fix border radius (#36346)
* colors

* revert color

* rev
2025-10-14 00:39:22 -07:00
Shane Smiskol
f4041dc1f0 raylib: black sidebar (#36347)
black sidebar
2025-10-14 00:33:38 -07:00
Shane Smiskol
8e3757ac87 raylib: image dimensions are optional (#36332)
* meas

* now no resizing

* clean up
2025-10-13 16:49:39 -07:00
David
41fa0cdf82 fix cycle offroad alerts (#36302)
* fix: use parse_release_notes in cycle_offroad_alerts

* fix: set update available param true

* Update selfdrive/ui/tests/cycle_offroad_alerts.py

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2025-10-13 14:07:11 -07:00
David
692f5fdd72 Add screenshot for experimental mode description (raylib UI test) (#36327)
* feat: add test case to expand experimental mode description

* Update selfdrive/ui/tests/test_ui/raylib_screenshots.py

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2025-10-13 13:56:47 -07:00
Shane Smiskol
de0a1e66d8 software download screenshot (#36326)
* software

* clean up

* Qt ButtonControl has 0 padding

* clean up

* clean up
2025-10-13 13:54:50 -07:00
Maxime Desroches
129445cd1d setup: don't wait for so long (#36323)
nice
2025-10-12 00:37:36 -07:00
Shane Smiskol
13d0aefd7c raylib: don't get old onroad alert on startup 2025-10-11 23:40:42 -07:00
Shane Smiskol
5f7b05e808 raylib: don't create vipc client twice first time 2025-10-11 23:36:05 -07:00
Shane Smiskol
32f65bae55 alpha long: allow toggle while onroad + restart op
it's alpha, and some cars don't fault (we allow other toggles which would fault, so why not enable)
2025-10-11 23:29:08 -07:00
Maxime Desroches
49d9b8bb00 ui: fix cloudlog spam (#36321)
* dark office

* check

* back

* fix

* remove

* remove
2025-10-11 23:06:06 -07:00
Shane Smiskol
b3eba70b7a raylib: flip! (#36319)
* flip!

* add ui

* ?

* qt is extra

* low node

* add uiDebug

* fix

* fix dat

* bump double increase for tol

* it's ~11ms but double for tol

* fix report

* Update selfdrive/test/test_onroad.py
2025-10-11 07:41:29 -07:00
Shane Smiskol
cec7a5dc98 raylib: fix styling for fullscreen alerts (#36318)
* fix that

* fix styling

* and this

* revert

* fix full

* revert
2025-10-11 06:55:35 -07:00
Shane Smiskol
14993f58e3 raylib: set speed fixes (#36317)
* remove msaa artifacting by heavily reducing segments and match radius

* always draw set speed with '-' like qt

* clean up

* match qt behavior for rivian
2025-10-11 06:28:49 -07:00
Shane Smiskol
e8a17b4963 raylib: fix stale frames going onroad (#36314)
* fix

* try

* flip

* now flip

* fix network nav button heights

* revert
2025-10-11 06:04:27 -07:00
Shane Smiskol
fb77212221 raylib: add more spacing to network nav buttons 2025-10-11 06:02:10 -07:00
Shane Smiskol
aa7f6973c0 raylib: match Qt onroad button disabling (#36316)
* fixxx

* clean up

* disable onroad: adb, joystick, alpha long
2025-10-11 06:01:17 -07:00
Maxime Desroches
c2af5a82ff add earcut python package 2025-10-11 04:29:05 -07:00
Shane Smiskol
348114e5bd raylib: remove cut stuff (#36310)
remove cut stuff
2025-10-11 04:27:19 -07:00
Shane Smiskol
a6e28ac2ee raylib: disable mouse thread lag print (#36312)
every other process disables this
2025-10-11 04:27:01 -07:00
Maxime Desroches
0e6f78a656 raylib is now a core dependancy 2025-10-11 04:23:16 -07:00
Shane Smiskol
2305fb59a2 raylib: fix mic indicator (#36309)
* fix mic

* move out
2025-10-11 03:40:40 -07:00
Shane Smiskol
cc816043c1 raylib: add non-inline b tag (#36305)
* debug

* here too

* clean up
2025-10-11 03:36:47 -07:00
Shane Smiskol
b6dbb0fd8d raylib: font sizes from QT should match (#36306)
* pt 2

* fix line height

* fixup html renderer

* fix sidebar

* fix label line height

* firehose fixups

* fix ssh value font styling

* fixup inputbot

* do experimental mode

* pairing dialog numbers

* fix radius for prime user

* add emoji to firehose mode

* full screen registration

* fix registration btn size

* fix update and alerts

* debugging

* Revert "debugging"

This reverts commit 0095372e9479d8c727bcc8a78061f582d852133d.

* firehose styling

* fix offroad alerts missing bottom spacing expansion

* huge oof

* huge oof
2025-10-11 03:29:24 -07:00
Shane Smiskol
fdcf8b592e raylib: reset scrollers and description expansions on show event (#36304)
* scroll up on hide

* switch to show

* dismiss descriptions too!

* all is show

* all is show

* clean up

* visible items helper

* Revert "visible items helper"

This reverts commit e64f05b69155483aa0f3d74bd511f5d7c1ecfb79.

* reset
2025-10-10 21:07:36 -07:00
Shane Smiskol
4ff77a4752 raylib: fix DMoji (#36301)
* wow first time cursor made a tiny change to fix a problem!

* rm
2025-10-10 04:10:24 -07:00
Shane Smiskol
f04ee80452 raylib: implement calibration description (#36300)
* this is all cursor

* also cursor

* inline reset calib

* calib desc

* way better

* huh

* clean up

* rcvr

* stash changes to change params

* Revert "stash changes to change params"

This reverts commit ee998f04c4235ed20493b83e35c9f28e182d89b0.
2025-10-10 03:57:12 -07:00
Shane Smiskol
ddbbcc6f5d raylib: add experimental mode + alpha long confirmation dialog + related fixes (#36295)
* here's everything

* just the dev part

* same for exp mode!

* use rich

* fix br not working in p

* html height needs to be different than content/text rect

* fix confirmation

* fix

* fix 2.5s lag

* clean up

* use correct param

* add offroad and engaged callback too

* nl

* lint
2025-10-10 03:03:35 -07:00
Shane Smiskol
0f40afa357 raylib: fix black updater bg for network (#36299)
fix black bg
2025-10-10 01:41:11 -07:00
Shane Smiskol
cac8d3f405 raylib: fix missing showing dialog in setup/updater (#36298)
* fix showing dialog

* here for safety
2025-10-10 01:40:29 -07:00
Shane Smiskol
b521a913ab raylib: confirm dialog uses HTML renderer 2 (#36297)
* start

* keep it simple

* rm
2025-10-10 01:18:07 -07:00
Shane Smiskol
d6651ccd82 raylib: implement developer panel (#36292)
* first pass by cursor

* fix

* tell it what's good

* stash

* desc

* clean up junk

* alpha long can't use onroad cycle again due to faults

* lint

* fix kb
2025-10-09 23:09:55 -07:00
Shane Smiskol
2976798852 raylib: implement toggles (#36284)
* start on exp mode

* more

* fmt

* rm

* 2nd try

* almost there

* clean up

* and this

* fmt

* more

* exp is colored when active

* move out, and rm redudnant self.state

* revert html changes for now

* fix untagged text inheriting previous tag

* why would this be unknown

* here too

* update live with car

* clean up + refresh toggles on showEvent + catch from cursor about setting desc if no carparams

* not sure why

* fix disengaged re-enabling locked toggles
2025-10-09 19:50:27 -07:00
Shane Smiskol
1b90b42647 Html renderer: reset tag so untagged text doesn't inherit last tag 2025-10-09 19:10:10 -07:00
felsager
de805e4af7 Lateral torque controller: use measurement rate as error rate (#36291) 2025-10-09 14:57:12 -07:00
YassineYousfi
4d085424f8 North Nevada Model 🏜️ (#36276)
* e2d9c622-25a8-4ccd-8c8e-c62537b7aa0c/400

* 0e620593-e85f-40c2-9adf-1e945651ed13/400
2025-10-09 12:58:27 -07:00
felsager
d07981ea3c bump opendbc (#36289) 2025-10-09 11:48:13 -07:00
felsager
22d5cbd0fa PID: coefficients should be in front, i_rate should be i_dt (#36288) 2025-10-09 11:10:44 -07:00
felsager
4c9ca91b98 Latcontrol: use more accurate naming for saturation time (#36286) 2025-10-09 10:34:26 -07:00
felsager
0736f325fc Latcontrol torque: cleaner low_speed_factor calculation (#36287) 2025-10-09 10:29:35 -07:00
kostas.pats
dcc5afa8fa improve webrtc stack for use in camera focusing (#36268)
* made LiveStreamVideoStreamTrack use system time to calculate pts

* fixes as requested

* Align panda submodule with master (panda@615009c)

* made loggerd accept a run time env variable to pick stream bitrate

* added /notify endpoint to send json to all session's data channel

* fixed static analysis error

* adapted webrtc stream test to new pts calculation method

* fixed static erro

* fixed wrong indent

* fixed import order

* delete accidental newline

* remove excess spaces

Co-authored-by: Maxime Desroches <desroches.maxime@gmail.com>

* remove excess spaces

Co-authored-by: Maxime Desroches <desroches.maxime@gmail.com>

* changed exeption handling based on review

* fixed typo on exception handling

---------

Co-authored-by: Maxime Desroches <desroches.maxime@gmail.com>
2025-10-08 22:30:32 -07:00
felsager
226465e882 Latcontrol: refactor pid error to factor out lateral jerk component (#36280) 2025-10-08 18:29:54 -07:00
Shane Smiskol
0b62dbe16b raylib: more closely match Qt alert sizes (#36283)
* hmm this doesn't work

* clean up

* more

* bad fmtr

* match sidebar net texts

* better
2025-10-08 17:29:45 -07:00
felsager
2deb4e6f65 Lateral controllers: pass dt (delta time) explictly (#36281) 2025-10-08 14:39:05 -07:00
felsager
9f32f217e6 Latcontrol: type annotate update inputs and clip_curvature output (#36282) 2025-10-08 14:26:53 -07:00
Shane Smiskol
e62781cccb Revert "raylib: font sizes from QT should match (#36237)"
This reverts commit 7933c10c97.
2025-10-08 04:05:49 -07:00
Shane Smiskol
e1912fa5be raylib: speed up polygon shader (#36275)
* actually works

* fix shader grad

* switch

* our own triangulate

* this is amazing

* ok 100 is too much for 3x. 10?

* fix colors

* review intern chad

* fmt

* rm for the line count

* bye

* rm

* see the diff

* start to revert nulleffect

* fix

* fix

* always feather

* aliasing doesn't seem necessary

* aliasing doesn't seem necessary

* fix lane lines disappearing halfway up due to buggy deduping -- very simple triangulation function takes ~same CPU time + same GPU utilization on PC (nvidia-smi)

* remove old

* even simpler triangulate

* this is useless

* more revert

* split color out again

* clean up ai bs

* back to original names

* more clean up

* stop it

* this limiting logic split out feels more even // less super dense

* typing

* clean up a little

* move to get grad color

* RM

* flip

* document

* clean up

* clean up

* clean

* clean up

* not a "state"

* clean up

* that did nothing

* cmt
2025-10-08 03:51:37 -07:00
Maxime Desroches
a7fe9db773 fix installer build 2025-10-06 16:37:50 -07:00
Shane Smiskol
35296a8692 flip setting order (#36266)
flip
2025-10-06 00:56:13 -07:00
Maxime Desroches
31801a7312 no more wayland for installer 2025-10-04 02:47:25 -07:00
Maxime Desroches
cc7ecd53c7 raylib: bump commit 2025-10-04 02:45:40 -07:00
Shane Smiskol
586e49cab3 Revert "Switch to raylib for UI (#36238)"
This reverts commit c88ab5cd12.
2025-10-04 01:04:20 -07:00
Shane Smiskol
ebe47a580c raylib: fix registration box height 2025-10-04 01:04:05 -07:00
Shane Smiskol
7933c10c97 raylib: font sizes from QT should match (#36237)
* debug

* hacks everywhere but kind of works

* by font

* fix sidebar

* stash

* test update

* just use a const

* just use a const

* better

* clean up

* fix label

* simplify

* gpt5 is yet again garbage

* rm that

* clean up

* rm

* blank

* clean up

* I really don't like this but shrug

* fix

* fix experimental text
2025-10-04 00:32:49 -07:00
Shane Smiskol
2bc97ee23f raylib: fix DM popup (#36265)
* come on

* try

* better

* better

* multiple places!

* debug

* works

* temp

* whoops

* wonder if this wortks

* ah need this!

* wtf is this when deleted?

* another day no modal show event

* clean

* fix

* ugh

* need this
2025-10-04 00:05:20 -07:00
Shane Smiskol
c88ab5cd12 Switch to raylib for UI (#36238)
* flip

* change this
2025-10-03 23:38:10 -07:00
Shane Smiskol
943aaef76a raylib: match Qt onroad alert colors (#36264)
fix alert colors
2025-10-03 23:32:17 -07:00
Shane Smiskol
3fd9e94a34 raylib: all system apps work without anything built (#36261)
* all system apps work without scons

* better

* fix

* revert

* fix

* dont add

* huh
2025-10-03 23:18:20 -07:00
Shane Smiskol
e423f8f605 raylib: elide version on homescreen (#36263)
* elide ver on hom

* rm line

* blank
2025-10-03 23:17:51 -07:00
Shane Smiskol
0eb90ecb3e raylib: elide list item actions (#36262)
fix
2025-10-03 23:04:55 -07:00
Maxime Desroches
703f3d0573 disable sim test for now 2025-10-03 22:09:00 -07:00
Shane Smiskol
2337704602 raylib: release notes are drawn with HTML renderer (#36245)
* stash

* ok chatter is useful for once

* draw text outside tags

* hmm

* undo that shit

* i don't like this chatgpt

* Revert "i don't like this chatgpt"

This reverts commit 5b511911d81242457bfb5fc808a9b9f35fe9f7a2.

* more robust parsing (works with missing tags, markdown.py actually had bug) + add indent level

* the html looks weird but is correct - the old parser didn't handle it

* clean up

* some

* move out

* clean up

* oh this was wrong

* draft

* rm that

* fix

* fix indentation for new driving model

* clean up

* some clean up

* more clean up

* more clean up

* and this

* cmt

* ok this is egregious mypy
2025-10-03 21:47:53 -07:00
Shane Smiskol
bd9888a439 raylib screenshots: add software release notes (#36259)
add software
2025-10-03 21:29:20 -07:00
Shane Smiskol
12b3d0e08d raylib: cache wrap text (#36258)
* cache html height

* clean up

* todo
2025-10-03 20:52:50 -07:00
Shane Smiskol
89d350a791 raylib html renderer: fixups (#36257)
* this wasn't used

* override text size and color

* render untagged text as paragraph

* and indent

* cache expensive height calc

* fmt

* fix that

* unclear if this is even needed

* and that

* huh

* debug

* Revert "debug"

This reverts commit 7d446d2a37a96e6bd1001c566d4f8e8f417f8fb7.
2025-10-03 20:42:42 -07:00
Shane Smiskol
99a83e5522 Revert "raylib screenshots: find diff faster (#36255)"
This reverts commit a8328cb5ff.
2025-10-03 20:35:32 -07:00
Armand du Parc Locmaria
4d53a26a06 relock after inplace metadrive update (#36256)
* relock after inplace metadrive update

* Revert "relock after inplace metadrive update"

This reverts commit 18193ffe34b66085e18605e6c9289ddcd658844d.

* just the hash
2025-10-03 19:43:03 -07:00
Shane Smiskol
a8328cb5ff raylib screenshots: find diff faster (#36255)
* ?

* run it

* wrong

* here too

* revert
2025-10-03 17:59:42 -07:00
Shane Smiskol
844c328625 raylib screenshots: prevent saving black frame
raylib screenshots: prevent saving black frame
2025-10-03 17:59:19 -07:00
Shane Smiskol
39b97d4e18 raylib screenshots: use long branch name (#36254)
* stress test

* everything
2025-10-03 17:50:02 -07:00
Shane Smiskol
45f497e8f6 raylib screenshots: add mouse click helper (#36253)
* add helper

* rm

* name

* fix
2025-10-03 17:46:39 -07:00
Shane Smiskol
edc5a0412c rename to setup_settings 2025-10-03 17:35:10 -07:00
Shane Smiskol
9670e3a5eb raylib: add confirmation dialog (#36252)
* conf

* update case

* fix

* fix

* rm

* back

* alread setup

* avail
2025-10-03 17:34:53 -07:00
Shane Smiskol
7b2b10bc9e raylib screenshots: raise ui delay 2025-10-03 17:34:22 -07:00
YassineYousfi
bd357adb8b update release notes for 0.10.1 2025-10-03 17:01:20 -07:00
Shane Smiskol
670b6011da raylib: match QT confirmation dialog size (#36248)
* closer to qt

* this too

* eval
2025-10-03 16:13:40 -07:00
Armand du Parc Locmaria
150ff72646 Dockerfile.openpilot: don't set UV_PROJECT_ENVIRONMENT (#36246)
* Dockerfile.openpilot: don't uv sync with root

* Revert "Dockerfile.openpilot: don't uv sync with root"

This reverts commit 2c271d0b5b55d6ae2ece6b28dc90a96e6e891ded.

* don't set UV_PROJECT_ENVIRONMENT
2025-10-03 14:36:12 -07:00
Shane Smiskol
d567442136 raylib: split out HTML renderer (#36244)
* stash

* ok chatter is useful for once

* why doesn't it understand?!

* rm that

* clean up
2025-10-03 00:37:47 -07:00
Shane Smiskol
540fff5226 raylib: draw update button and fix incorrect font (#36243)
* always update layout rects

* don't ever use raylib font

* use it

* such as
2025-10-03 00:20:30 -07:00
Shane Smiskol
21273c921e raylib: excessive actuation offroad alert (#36242)
* excessive actuation check

* from gpt

* back

* use buttons

* use widgets for ultimate clean up - no ai slop

* feature parity

* revert

* clean up
2025-10-02 23:54:31 -07:00
Shane Smiskol
75e52427d1 raylib: fix when we show offroad alerts and styles (#36240)
* fix how we show alerts

* test this too

* match border radius

* simplifty

* keep

* back

* fix alert spacing

* fix alert text padding

* cmt

* cmt
2025-10-02 22:53:02 -07:00
Shane Smiskol
21fd3d0320 raylib: use extra text in offroad alerts (#36241)
* replace properly

* test
2025-10-02 21:21:50 -07:00
Shane Smiskol
1ee798439a raylib: WiFi fixes (#36239)
* proces in AN and WM

* clean

* ban api

* fix

* fiix

* fix pairing dialog

* cleanup

* fix multi action button hard to click

* fix

* fix right margin of multi action

* clean up
2025-10-02 21:09:17 -07:00
Armand du Parc Locmaria
cc52f980b3 Dockerfile.openpilot uv run scons (#36236)
* Dockerfile.openpilot_base use UV_PROJECT_ENVIRONMENT

* Revert "Dockerfile.openpilot_base use UV_PROJECT_ENVIRONMENT"

This reverts commit 3725e54ce0727077ca4347d24ca38e25d5864d47.

* Reapply "Dockerfile.openpilot_base use UV_PROJECT_ENVIRONMENT"

This reverts commit 11b04f57acb9c81fcc5a22a6a6d78d666c59ca6c.

* use uv run to pick up correct ppath
2025-10-02 15:31:39 -07:00
Shane Smiskol
ec7e3192bb revert that 2025-10-02 04:00:09 -07:00
Shane Smiskol
3fd352a7ef raylib: updater UI (#36235)
* auto attempt

* gpt5

* Revert "gpt5"

This reverts commit 556d6d9ee4d53aca0f4612023db6cfb2bed7ce29.

* clean up

* fixes

* use raylib

* fixes

* debug

* test update

* more

* rm

* add value to button like qt

* bump

* bump

* fixes

* bump

* fix

* bump

* clean up

* time ago like qt

rm

* bump

* clean up

* updated can fail to respond on boot leading to stuck state

* fix color

fix

* bump

* bump

* add back

* test update

* no unknown just ''

* ffix
2025-10-02 03:57:10 -07:00
Shane Smiskol
49570c11c6 Remove animation from networking 2025-10-02 02:04:09 -07:00
Shane Smiskol
b8ae62a0b1 raylib scroll panel: check bounds (#36233)
check in bounds rect for scroll panel!!
2025-10-01 01:02:35 -07:00
Shane Smiskol
29a6f0504a raylib: fix WiFi in setup and updater (#36232)
move back to more base class
2025-10-01 00:46:51 -07:00
Shane Smiskol
eadab06f59 raylib: remove gui_button (#36229)
* vibing can be good

* and listview

* rm that

* html render

* text.py

* ssh keys

* updater w/ Auto

* wow gpt5 actually is better

* well this is better

* huh wifi still doesn't work

* lfg

* lint

* manager waits for exit

* wait a minute this changes nothing

* this will work

* whoops

* clean up html

* actually useless

* clean up option

* typing

* bump
2025-10-01 00:32:09 -07:00
Shane Smiskol
9493f2a0eb raylib: remove functional confirmation dialog (#36231)
* rm

* yess

* clean up
2025-09-30 23:48:04 -07:00
Shane Smiskol
b593b7cc43 raylib: SSH key text entry works more than once (#36230)
* impossible

* jarn

* actually space

* forgot
2025-09-30 23:43:23 -07:00
Shane Smiskol
5c0c2a17b0 raylib: add mic indicator (#36207)
* update lang

* mic indicator

* clean up

* clean up

* switch

* fix

* revert
2025-09-30 22:30:45 -07:00
Shane Smiskol
5f33b2fb2d raylib: frame independent scroller (#36227)
* rm that

* almost

* yess

* some work

* more

* todo

* okay viber is good once in a while

* temp

* chadder can't do this

* revert

* this was broken anyway

* fixes

* mouse wheel scroll

* some clean up

* kinda works

* way better

* can tap to stop

* more clean up

* more clean up

* revert last mouse

* fix

* debug only

* no print

* ahh setup.py fps doesn't affect DEFAULT_FPS ofc

* rest

* fix text

* fix touch valid for network
2025-09-30 22:25:43 -07:00
Shane Smiskol
63e0e038fa raylib: don't use DEFAULT_FPS (#36228)
* dont use DEFAULT_FPS

* replace
2025-09-30 22:11:21 -07:00
ZwX1616
d24a14cb39 DM: Large Donut model 🍩 (#36198)
* 59cfd731-6f80-4857-9271-10d952165079/225

* deprecate at the end
2025-09-30 20:32:19 -07:00
Shane Smiskol
3efa52f53b fix missing import 2025-09-30 20:05:40 -07:00
Shane Smiskol
16a4206720 Revert "Reapply "raylib: 20 FPS onroad (#36208)""
This reverts commit ed185e90f6.
2025-09-30 16:34:45 -07:00
Maxime Desroches
e4784d44f6 bump panda (#36226)
bump
2025-09-30 14:33:10 -07:00
Shane Smiskol
aaf2aac050 raylib: training guide (#36224)
* fix regulatory

* debug slow loading

* easy gather step coords

* gotcha

* and fix

* dm option

* fix final

* fixes

* progress bar!

* "vibe coding is great"

* wtf gpt5

* jfc

* hand crafted >> vibe

* it's slow so only load images if we're doing any kind of training

* tf

* format

* clean up

* clean up

* no float

* cmt

* more clean up

* clean up

* eww

* rm

* no debug

* match y

* clean that up

* here too

* windows
2025-09-30 03:11:42 -07:00
Shane Smiskol
b5ec0e9744 raylib: fix regulatory 2025-09-30 02:39:19 -07:00
Shane Smiskol
070a13096b raylib: add todo for niceness (#36210)
* not nice

* hmm

* debug

* todo

* revert

* yep
2025-09-29 13:03:03 -07:00
commaci-public
7ccab2bdb9 [bot] Update Python packages (#36220)
* Update Python packages

* revert tg, model diff looks a bit fishy

---------

Co-authored-by: Vehicle Researcher <user@comma.ai>
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2025-09-28 13:50:13 -07:00
Shane Smiskol
e9434befaa Refactor offroad alerts loading to use OFFROAD_ALERTS (#36214)
* Refactor offroad alerts loading to use OFFROAD_ALERTS

* clean up
2025-09-27 03:37:23 -07:00
Shane Smiskol
56c77fd5fa re-run 2025-09-27 03:32:19 -07:00
Shane Smiskol
e6bd88371e fix! 2025-09-27 02:55:40 -07:00
Shane Smiskol
bc30b01eb7 Fix raylib ui report (#36215)
hmm
2025-09-27 02:53:21 -07:00
Shane Smiskol
ef93981bfa raylib: ui diff test (#36213)
* add raylib ui test

* match qt

* exe

* vibing is epic

* this is epic

* format

* add more settings

* fix to actually use raylib

* add kb

* global

* pair

* rm cmts

* show event

* this is so stupid

clean up

* clean up

* rename dir

* clean up

* no more vibe

* rm

* ugh it's always slightly different for no reason

* nvm region is actually broken

* 1l
2025-09-27 02:37:35 -07:00
Shane Smiskol
35e2fc7dd9 raylib: use touch thread in all places (#36212)
* fix not opening alerts

* whops

* rm mouse pressed from offroad alerts

* ah its a base class

* one last place

* fix

* rm lines
2025-09-26 23:49:17 -07:00
Shane Smiskol
2feddf32b2 raylib: fix lost onroad tap events (#36211)
* debug

* see it's good to have abstraction

* clean up

* fine

* wtf do you mean mypy? how can you not coerce this?
2025-09-26 22:40:38 -07:00
Shane Smiskol
ed185e90f6 Reapply "raylib: 20 FPS onroad (#36208)"
This reverts commit 5cbfc7705b.
2025-09-26 21:43:15 -07:00
Shane Smiskol
19fc66f88a Fix tearing offroad 2025-09-26 21:41:51 -07:00
Shane Smiskol
5cbfc7705b Revert "raylib: 20 FPS onroad (#36208)"
This reverts commit 8de8c3eb00.
2025-09-26 21:41:12 -07:00
Shane Smiskol
8de8c3eb00 raylib: 20 FPS onroad (#36208)
* 20

* dynamic fps

* flip

* init to be safe

* fix possible fps weirdness

* gate on change

* not now

* rev
2025-09-26 21:38:59 -07:00
Shane Smiskol
04365f12ff raylib: remove unused globals 2025-09-26 21:10:09 -07:00
Shane Smiskol
9297cd2f3e raylib: use filter for allow throttle (#36209)
* use time here

* use epic filter

* rm

* intermediary

* tune
2025-09-26 21:08:39 -07:00
Shane Smiskol
0711160b1c raylib: dismiss dialog on pair (#36205)
* show for unknown

* use Button to make clicking work

* close on pair

* close on pair

* make widget!

* dynamic pairing btn

* whyyy

* clean up

* can do this

* this button is also hard to tap
2025-09-26 18:59:15 -07:00
Shane Smiskol
33f01084d1 raylib: implement cell settings (#36204)
* get vibing

* simplify

* vibing is bad

* simplify

* fix that

* now update

* clean up

* last two

* cell is UpdateUnsaved so we don't need to disable

* we only need actions

* we only need actions

* sort

* stuff

* dont deactivate

* clean up

* clean up

* more

* ipv4 fwd

* warns

* fixz

* rm

* clean up

* one return point

* format

* top
2025-09-25 23:44:12 -07:00
Adeeb Shihadeh
1fbec6f601 remove .clang-tidy 2025-09-25 21:02:26 -07:00
Adeeb Shihadeh
cf5b743de6 build system cleanups (#36202)
* it's all common

* never getting fixed

* it's just tici

* reorders

* qcom2 -> tici

* Revert "qcom2 -> tici"

This reverts commit f4d849b2952cb0e662975805db6a1d32511ed392.

* Reapply "qcom2 -> tici"

This reverts commit 58b193cb8de872830f8a7821a339edca14e4a337.

* is tici

* lil more

* Revert "is tici"

This reverts commit a169be18d3fdcb3ef8317a63a89d8becadabfad8.

* Revert "Reapply "qcom2 -> tici""

This reverts commit 26f9c0e7d068fc8a1a5f07383b3616e619cd4e8c.

* qcom2 -> __tici__

* lil more

* mv lenv

* clean that up

* lil more]

* fix

* lil more
2025-09-25 20:55:14 -07:00
Shane Smiskol
2c377e534f raylib: wifi manager initialize function (#36203)
* init func

* rm print

* rm

* use get_conn settings in another place
2025-09-25 20:48:12 -07:00
Shane Smiskol
1ca9fe35c2 raylib: networking parity with QT (#36197)
* match style

* all this was not naught

* cool can do this

* fix toggle callback - also not for naught

* always process callbacks

* toggle stuff

* cleaner

* tethering password

* clean up

* todos for later

* this is fineee

* add metered options

* wifi metered button

* add hidden network buutton and fix instant modal to modal

* damped filter

* Revert "damped filter"

This reverts commit f9f98d5d708fb15cf1ebef4bdace577f0e347658.

* fix metered toggle when disconnected

* fix tethering enabled

* ohh

* fix keyboard title

* disable edit button temp

* move here

* proper disable

* clean up

* more

* move for loop into enqueue function

* flippy

* got more :(

* todo

* clean up

* mypy

* rename

* todo

* rename

* again

* again

* format
2025-09-25 20:16:14 -07:00
Adeeb Shihadeh
56c49b3b42 cleanup dead build flags 2025-09-25 19:28:16 -07:00
Shane Smiskol
5429748767 raylib: fix button clicking on device (#36201)
* fix button clicking on device

* clean up
2025-09-25 19:27:13 -07:00
Greg Hogan
6aecf59536 add ssh hostname comma- prefix for convenience (#36199) 2025-09-25 17:42:11 -07:00
Shane Smiskol
afc7ff1b7a raylib: fix multilang dialog height (#36196)
* fix multilang dialog height

* clean up
2025-09-24 17:14:06 -07:00
Jason Young
222e880561 Honda: Add 2021 Acura TLX to release (#36193)
* bump opendbc

* regen CARS.md

* add to RELEASES.md
2025-09-24 15:24:15 -04:00
Maxime Desroches
6901e3417b add 3X release branch to RELEASE_BRANCHES (#36190)
add
2025-09-22 15:18:43 -07:00
commaci-public
cd33562379 [bot] Update Python packages (#36188)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-09-22 13:43:26 -07:00
Maxime Desroches
073503a6f2 fix is_dirty when fetching branch with updated (#36187)
fix is_dirty
2025-09-21 23:53:07 -07:00
Maxime Desroches
61d5a50534 Revert "fix is_dirty when switching branch with updated (#36162)"
This reverts commit 30c388aea8.
2025-09-21 22:44:14 -07:00
commaci-public
b6e0d4807a [bot] Update Python packages (#36184)
* Update Python packages

* not available anymore

* also this

* also this

* maybe?

* version

* try

* Revert "version"

This reverts commit 9ac4401b9ca59677b82736faff8baf66861df5f2.

* revert

* cffi

* issue

* comment

---------

Co-authored-by: Vehicle Researcher <user@comma.ai>
Co-authored-by: Maxime Desroches <desroches.maxime@gmail.com>
2025-09-20 20:10:51 -07:00
Shane Smiskol
c7a37c06d8 Revert "Capnp memoryview (#36163)"
This reverts commit 6ed8f07cb6.

bump
2025-09-19 17:18:08 -07:00
Shane Smiskol
efbd0b9ea0 cabana typo 2025-09-19 16:47:07 -07:00
Shane Smiskol
6ed8f07cb6 Capnp memoryview (#36163)
* lock

* bump opendbc

* fix one

* and

* Add a memoryview fallback in webrtcd

* fix

* revert

* rerevert

* bump to master

---------

Co-authored-by: Kacper Rączy <gfw.kra@gmail.com>
2025-09-19 16:46:23 -07:00
mvl-boston
5164555c4f Steering Assist warning clarification (#36135)
* clarifying warning message

* more clarity with steering assist warnings
2025-09-19 16:46:05 -07:00
Jason Young
c5999702ae Honda: Add 2026 Honda Passport to release (#36179)
* bump opendbc

* regen CARS.md

* update RELEASES.md
2025-09-19 19:40:20 -04:00
Shane Smiskol
2a5de8e0f8 raylib: fix shader antialiasing (#36176)
* fix

* np
2025-09-18 17:11:53 -07:00
Shane Smiskol
d05cb31e2e raylib: fix pairing url 2025-09-18 17:03:16 -07:00
Adeeb Shihadeh
c7a9ea2bf4 add back libbz2-dev (#36172)
* add back libbz2-dev

* try this

* revert
2025-09-18 10:59:03 -07:00
Adeeb Shihadeh
b637ad49d9 vendor all fonts (#36170)
add noto color
2025-09-18 09:25:41 -07:00
Adeeb Shihadeh
c6a2c99123 prep for vendoring (#36169)
* prep for vendoring

* less stuff

* comment
2025-09-18 09:17:26 -07:00
Adeeb Shihadeh
852598fa0a fix mac build (#36168) 2025-09-18 08:34:28 -07:00
Adeeb Shihadeh
3751d9cf51 Remove libsystemd-dev from Ubuntu dependencies (#36167)
Removed 'libsystemd-dev' from the list of dependencies.
2025-09-18 08:22:15 -07:00
Maxime Desroches
30c388aea8 fix is_dirty when switching branch with updated (#36162)
* clean

* fix
2025-09-18 00:07:06 -07:00
Shane Smiskol
b622e3e0a7 raylib: generic click callback (#36166)
* not to be used outside

* same

* rm

* fix that

* another fix

* ehh probably better to still have

* optional
2025-09-17 16:33:48 -07:00
Mitchell Goff
086e33dd6e Revert "minimal ffmpeg build (#36138)"
This reverts commit 347b23055d.
2025-09-16 14:25:18 -07:00
Kacper Rączy
889ce4c4fb torqued: add DEBUG flag (#36161)
Add a debug flag to torqued
2025-09-15 21:04:33 +00:00
Jason Young
96c00271e3 pin pycapnp (#36160) 2025-09-15 14:37:52 -04:00
Adeeb Shihadeh
a6adedf6e0 prep for python pandad (#36155) 2025-09-13 11:58:49 -07:00
commaci-public
eb821ceb5c [bot] Update Python packages (#36118)
* Update Python packages

* revert tinygrad

* can cnt

* bump panda

* bump panda

* update panda test

* revert that

---------

Co-authored-by: Vehicle Researcher <user@comma.ai>
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2025-09-13 11:48:35 -07:00
Jimmy
98d61982f9 jotpluggler: add README (#36153)
* add README

* fix typo
2025-09-13 00:35:35 -07:00
Jimmy
04a26ada69 jotpluggler: fix bug with char width after scaling text (#36154)
fix bug with char width after scaling text
2025-09-13 00:35:12 -07:00
Jimmy
3e0dd06374 jotpluggler: accept --layout argument to pluggle (#36152)
accept layouts as arg to pluggle
2025-09-13 00:20:53 -07:00
Jimmy
f18828228a jotpluggler: fix layout folder path loading and total segment (#36151)
* forgot to commit this earlier with total segments

* look in correct directory
2025-09-13 00:13:27 -07:00
Jimmy
c812c3192d jotpluggler: fix hidpi/mac font scaling (#36150)
fix hidpi/mac font scaling
2025-09-12 23:53:41 -07:00
Jimmy
8d3b919ef6 jotpluggler: better defaults for zooming/fitting (#36149)
better defaults for zooming/fitting
2025-09-12 23:28:23 -07:00
Jimmy
63df46bf22 jotpluggler: store and load layouts (#36148)
* store and load layouts

* torque controller layout

* ignore missing yaml stubs for mypy
2025-09-12 23:20:12 -07:00
Jimmy
826c5e96a1 jotpluggler: migrate logs (#36147)
migrate logs
2025-09-12 22:15:56 -07:00
Jimmy
1870d4905b jotpluggler: add tabs to layout (#36146)
* queue syncs in main thread to avoid Glfw Error/segfault

* tabs
2025-09-12 21:52:01 -07:00
Adeeb Shihadeh
347b23055d minimal ffmpeg build (#36138)
* min ffmpeg

* remove avfilter

* x264

* merge x264

* simpler

* pin x264

* mac

* rm that

* lil more

* move includes to lfs

* try this

* cleanup

* larch

---------

Co-authored-by: Comma Device <device@comma.ai>
2025-09-12 18:59:15 -07:00
Maxime Desroches
cbea5f198f op.sh: more robust switch for submodules 2025-09-12 16:05:49 -07:00
Jimmy
be379e188b jotpluggler: fix off by one error (#36144)
fix off by one error sometimes causing missed items in datatree
2025-09-12 14:37:00 -07:00
Jimmy
42d9bd0516 jotpluggler: sync x axes and autofit y axis (#36143)
* sync x axes of all timeseries plots

* always autofit y-axis

* fix typing
2025-09-12 14:36:50 -07:00
Armand du Parc Locmaria
3ca9f351a0 nevada model 🌵 (#36114)
cd29ffcf-01dd-4f1c-8808-dc197c174f1d
2025-09-12 12:45:52 -07:00
YassineYousfi
a1d6a062a9 add PR ref to new driving model in RELEASES.md 2025-09-12 12:44:11 -07:00
Jimmy
c9dbf97649 jotpluggler: add icons, use monospace font, and fix ui quirks (#36141)
* use play/pause icons

* use monospace font

* x button for delete

* add icons for splitting

* many scaling + scrollbar fixes and niceties

* simplify texture loading code
2025-09-11 23:31:32 -07:00
Adeeb Shihadeh
2c04a27a2a ubloxd: cleanup unused files 2025-09-11 14:03:37 -07:00
Adeeb Shihadeh
70c0592e84 CI: re-enable macOS build (#36120)
* CI: re-enable macOS build

* Update selfdrive_tests.yaml with new env variable
2025-09-11 11:03:59 -07:00
Jimmy
572c03dbac jotpluggler: fix flashing while searching (#36128)
* modify in place instead of recreating nodes

* don't delete DataTreeNodes and simplify code

* faster: more efficient state tracking, better handler deletion
2025-09-11 10:48:45 -07:00
Adeeb Shihadeh
fa498221da still thinking about this one 2025-09-11 10:48:32 -07:00
vanillagorillaa
67238d5045 Update release notes (#36137)
Update RELEASES.md
2025-09-11 10:47:23 -07:00
Jimmy
994170ddb5 fix qcom decoder compilation on mac with platform check (#36131) 2025-09-11 10:45:36 -07:00
Jason Young
3c28188d7a Honda: Add Honda N-Box 2018 to release (#36134)
* bump opendbc

* regen CARS.md

* add to RELEASES.md
2025-09-11 07:04:15 -04:00
Jason Young
4ccd17903b correction to Honda release notes (#36133)
correction to release notes
2025-09-11 05:59:15 -04:00
Jason Young
0e1b573f89 Honda: Add Honda Odyssey 2021-25 to release (#36132)
* bump opendbc

* regen CARS.md

* add to RELEASES.md

* forgot this was originally VG's PR

* correctly typo the typo

* follow recent DBC cleanup
2025-09-11 05:32:44 -04:00
Maxime Desroches
10580aca92 ci: adjust power draw bounds (#36130)
* consider min

* bounds
2025-09-10 15:06:25 -07:00
Jimmy
6b13175338 jotpluggler: better handle sparse message data and bools (#36124)
* better handle sparse message data

* fix plotting of of bools

* add type for msg._valid

* fix typing

* add assert in case something changes in future
2025-09-10 00:09:08 -07:00
YassineYousfi
d0171084b5 Update RELEASES.md 0.10.1 2025-09-09 15:40:39 -07:00
Jason Young
2bfdd0d61d PlotJuggler: Updated layout for torque controller (#36123)
* PlotJuggler: Updated layout for torque controller

* yeah, no
2025-09-09 18:02:31 -04:00
Jimmy
ea53111afc basic jotpluggler (#36045)
* jotpluggler!

* demo, executable, fontfile

* calc max and min, numpy, cloudlog

* mypy things

* simplified data.py

* multiprocessed data ingest

* allow verrryyy long search results

* stream in multiprocessed segments

* bug fixes

* simplify and speed up timeseries

* small fixes

* rewrite layout

* resizable layouts

* cleanup

* downsampling

* deque for consistency

* use item_visible_handler

* only build visible UI

* don't delete item handlers, add locks, don't expand large lists

* delete item handlers after a frame

* small data tree improvements

* seperate datatree into its own file

* reset when loading new segments

* fix plot window resizing and recursive split resizing logic
2025-09-09 10:56:07 -07:00
github-actions[bot]
0739d4ac2d [bot] Update translations (#36089)
Update translations

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-09-08 09:01:53 -07:00
Adeeb Shihadeh
8dca43881a Rewrite ubloxd in Python (#36112)
* Rewrite ubloxd in Python

* lil more

* rm from third_party/

* cleanup

* ubx replay

* try this

* back to kaitai

* Revert "ubx replay"

This reverts commit 570bd3d25fbabc590379ce0a9f98d30de55cf1b3.
2025-09-07 15:40:48 -07:00
Adeeb Shihadeh
a885111c0c agnos 13.1 (#36113) 2025-09-07 14:21:14 -07:00
Adeeb Shihadeh
bd73664f4c add kaitai python package 2025-09-07 12:21:13 -07:00
Adeeb Shihadeh
608c16007e Rewrite logcatd in Python (#36111)
* Add Python logcatd implementation

* lil more
2025-09-07 11:32:44 -07:00
Adeeb Shihadeh
275abc1eb5 Rewrite proclogd in Python (#36110)
* Rewrite proclogd in Python

* lil more

* lil more

* Update system/proclogd.py

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update system/proclogd.py

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update system/proclogd.py

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-07 11:13:39 -07:00
Jason Young
ff34b8af76 selfdrived: disable HUD VisualAlert for belowSteerSpeed events (#36109) 2025-09-07 11:59:48 -04:00
DevTekVE
03e9777c3f Improve debugging for safety (#36055)
* feat: add debugging configurations for replay drive and LLDB attachment

* Add readme with video demo

* clean

* docs: update debugging safety documentation with demo link

* no need for mp4 then added on PR

* Update SConstruct

* bump opendbc

* updating readme

* updating readme

* updating readme

* is this better / worth it?

* final cleanups

* hacky. but does it work?

* Yep that worked!

---------

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2025-09-06 12:05:15 -07:00
Shane Smiskol
1033d3d80e Desire helper: set lane change direction on entering preLaneChange state (#36074)
* set immediately to avoid flash on right lane changes

* one function

* name

* comment
2025-09-05 22:34:04 -07:00
pencilpusher
1f1efec4c9 replay: C3/C3X hardware decoder (#35821)
* bump msgq

* add third_party/linux/include/media/msm_vidc.h

* add sde_rotator hw interface

* add msm_vidc hw decoder interface

* update SConscript to build qcom decoder and rotator

* use qcom decoder in replay framereader

* decode directly to NV12 with the correct stride without using the hw rotator

* bump msgq back to master

* don't compile rotator

* cleanup

* works now but much to simplify

* rm signals

* rm header

---------

Co-authored-by: Test User <test@example.com>
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2025-09-05 16:05:06 -07:00
Harald Schäfer
f0f04d4b5b Firehose model (#36087)
816ce390-c41a-42fa-a5df-f393cbe2dcc4/400
2025-09-04 18:51:29 -07:00
Shane Smiskol
2b7707ecf6 Deduplicate car interface test (#36101)
deduplicate test car interfaces
2025-09-04 18:20:43 -07:00
Shane Smiskol
ef870d5533 bump opendbc (#36103)
* bump

* update refs
2025-09-04 18:11:44 -07:00
Shane Smiskol
a5044302a2 auto source: auto source 2025-09-03 16:06:41 -07:00
Trey Moen
6a4f685d04 feat(esim): bootstrap (#36094)
* bootstrap

* more

* fix

* simple

* moar

* clarify

---------

Co-authored-by: Comma Device <device@comma.ai>
2025-09-03 11:34:03 -07:00
Trey Moen
355499a8de feat(esim): hotswap (#36096)
feat(esim): device hw reboot modem
2025-09-03 11:31:48 -07:00
commaci-public
67fd6c80dd [bot] Update Python packages (#36090)
* Update Python packages

* no more stall

---------

Co-authored-by: Vehicle Researcher <user@comma.ai>
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2025-09-01 09:37:18 -07:00
YassineYousfi
c990515eaf update RELEASES.md for 0.10.1 2025-08-29 14:16:52 -07:00
Kacper Rączy
76e91da3ad process_replay: use LiveParametersV2 in custom params (#36080)
Fill LiveParametersV2 in get_custom_params_from_lr
2025-08-28 20:11:20 +00:00
Adeeb Shihadeh
9fcac06297 op.sh: fix switch on fresh install 2025-08-28 11:49:31 -07:00
Adeeb Shihadeh
3e2549f2b8 remove tici-specific code (#36078)
* remove tici-specific code

* lil more

* update those
2025-08-28 08:19:39 -07:00
Maxime Desroches
63961dec45 jenkins: run pandad test once 2025-08-27 19:04:16 -07:00
Maxime Desroches
7a19a11001 jenkins: tizi loopback device 2025-08-27 18:46:50 -07:00
Maxime Desroches
93f7925c4d jenkins: tizi ox 2025-08-27 18:36:10 -07:00
ZwX1616
a2c5fca787 modeld input queues class (#36072)
* move from xx

* no get_single

* stupid name

* thats fine

* desire_pulse

* 1less

* desire->desire_pulse

* simplify

* reduce copies

* more less
2025-08-27 17:54:53 -07:00
Adeeb Shihadeh
bb06468ead safety standards for forks (#36077)
standards for forks
2025-08-27 16:41:57 -07:00
Adeeb Shihadeh
1d8dc8a69a camerad: remove AR0231 (#36070) 2025-08-27 15:11:58 -07:00
Maxime Desroches
a254a05df0 jenkins: replace tici-common (#36073)
* common

* remove

* test

* Revert "test"

This reverts commit 2c76a8f818e42e0af1d4540dede3595fe0d59ed9.

* Reapply "test"

This reverts commit d9974dd8564d0699dcfa3aac0ffb2dca33f3b47d.

* Revert "Reapply "test""

This reverts commit 2377c6ab20df5dd06886f3dd9a0be07abfce9df6.

* tizi bounds
2025-08-27 14:39:02 -07:00
Maxime Desroches
2aa7648bb8 jenkins: remove ar device 2025-08-27 14:29:39 -07:00
Maxime Desroches
b309bf4173 jenkins: sensord device 2025-08-27 14:26:56 -07:00
Maxime Desroches
a3fcde2ae8 jenkins: tizi-replay 2025-08-27 14:19:23 -07:00
ZwX1616
f8ff156869 modeld: desire->desire_pulse (#36076)
consistent naming
2025-08-27 13:48:23 -07:00
Maxime Desroches
375dfe16a8 jenkins: remove bmx device 2025-08-27 13:39:21 -07:00
felsager
b976135d2f torqued: apply offset (with more robust unit test) (#36075)
* torqued: apply latAccelOffset to torque control feed forward

* test learned latAccelOffset captures roll compensation bias on straight road driving, when the device is not flush in roll relative to the car

* test correct torqued latAccelOffset parameter convergence
2025-08-27 13:06:01 -07:00
Maxime Desroches
f40f7f9ece Revert "torqued: apply offset (#36005)"
This reverts commit 1d74a97ba6.
2025-08-26 21:45:49 -07:00
Maxime Desroches
ea6677c464 AGNOS 13 (#36069)
* staging

* prod
2025-08-26 17:16:57 -07:00
Maxime Desroches
8258257658 ci: modernize test onroad (#36059)
* start

* fix

* better

* more

* test

* Revert "test"

This reverts commit 17066ac123668cb7280cf85e3f21a3043b4785b0.

* remove
2025-08-26 15:34:34 -07:00
Jaume Balust
f5d67b5eee cereal: fix frequency precision by changing from int to float (#36060) 2025-08-26 15:23:24 -07:00
Maxime Desroches
8ee3c7b485 add back dbus-next 2025-08-26 11:52:58 -07:00
Adeeb Shihadeh
8450f9f333 update: more migration 2025-08-26 09:57:23 -07:00
Shane Smiskol
4cd76f4966 raylib networking: prevent concurrently updating networks (#36066)
* dont run by multiple threads at the same time!

* this doesn't work since we rely on is_connected

* Revert "this doesn't work since we rely on is_connected"

This reverts commit 7455b2fe831bf5c9524e8ee71a9966de32a9755a.
2025-08-26 03:55:05 -07:00
Shane Smiskol
ec254074d1 raylib: prevent Firehose from blocking UI (#36067)
* stop blocking ui thread for 1s!!

* rm

* whoopsiedaisy

whoopsiedaisy

* meh
2025-08-26 03:51:45 -07:00
Shane Smiskol
8059106cae raylib networking: reduce DBus calls (#36065)
* this reduces getsettings calls from n*n to n

* these are combined now

* same check
2025-08-26 03:33:08 -07:00
Shane Smiskol
23b4aaf2a5 raylib networking: remove locking on UI thread (#36063)
* use callback queue to make this thread safe and remove locks (which lag ui thread?)

* woah this works

* no more lock!

* always run signal handler and store callbacks, like qt

* debug

* more

* okay not for now

* combine _get_connections and _connection_by_ssid, closer to qt and not an explosion of GetSettings dbus calls

* debug

* try this

* skip

* len

* skip hidden networks

* actually slower

* stash

* back to 8929f37d495a524d4a996d66b82d4a947fbf4f1c

* clean up
2025-08-26 03:25:01 -07:00
Shane Smiskol
5359f6d354 raylib: clean up networking (#36039)
* stasj

* remove one of many classes

* clean up and fix

* clean up

* stash/draft: oh this is sick

* so epic

* some clean up

* what the fuck, it doesn't even use these

* more epic initializers + make it kind of work

* so simple, wonder if we should further 2x reduce line count

* i've never ever seen this pattern b4, rm

* remove bs add niceness

* minor organization

* set security type and support listing and rming conns

* forget and connect

* jeepney is actually pretty good, it's 2x faster to get wifi device (0.005s to 0.002s)

* temp

* do blocking add in worker thread

* add jeepney

* lets finish with python-dbus first then evaluate - revert jeepney

This reverts commit 7de04b11c2285c298bb1ec907782026c795ab207.

and

* safe wrap

* missing

* saved connections

* set rest of callbacks

* skip hidden APs, simplify _running

* add state management

* either wrong password or disconnected for now

* i can't believe we didn't check this...

* disable button if unsupported!!!

* hide/show event no lag hopefully yayay

* fix hide event

* remove old wifi manager

* cache wifi device path + some clean up

* more clean up

* more clean up

* temp disable blocking prime thread

* hackily get device path once

* ok

* debug

* fix open networks

* debug

* clean up

* all threads wait for device path, and user functions dont ever attempt to get, just skip

* same place

* helper

* Revert "helper"

This reverts commit e237d9a720915fb6bd67c539123d3e2d9d582ce1.

* organize?

* Revert "organize?"

This reverts commit 3aca3e5d629c947711ade88799febeb3f61eda87.

* c word is a bad word

* rk monitor debug for now

* nothing crazy

* improve checkmark responsiveness

* when forgetting: this is correct, but feels unresponsive

* this feels good

* need these two to keep forgetting and activating responsive

* sort by connected, strength, then name

* handle non-critical race condition

* log more

* unused

* oh jubilee is sick you can block on signals!!

* proof of concept to see if works on device

whoiops

* so sucking fick

* ah this is not generic, it's a filter on the return vals

* flip around to not drop

* oh thank god

* fix

* stash

* atomic replace

* clean up

* add old to keep track of what's moved over

* these are already moved

* so much junk

* so much junk

* more

* tethering wasn't used so we can ignore that for now

* no params now

* rm duplicate imports

* not used anymore

* move get wifi device over to jeepney! ~no additional lines

* request scan w/ keepney

* get_conns

* _connection_by_ssid_jeepney is 2x faster (0.01 vs 0.02s)

* do forget and activate

* _update_networks matches!

* rm old update_networks

* replace connect_to_network, about same time (yes i removed thread call)

* no more python-dbus!k

* doesn't hurt

* AP.from_dbus: actually handle incorrect paths w/ jeep + more efficient single call

* properly handle errors

* it's jeepney now

* less state

* using the thread safe router passes a race condition test that conn failed!

* bad to copy from old wifimanager

* fix conn usage

* clean up

* curious if locks are lagging

* not for now

* Revert "curious if locks are lagging"

This reverts commit 085dd185b083f5905a4e71ba3e8c0565175e04aa.

* clean up _monitor_state

* remove tests

* clean up dataclasses

* sort

* lint: okay fine it can be non by virtue of exiting right at the perfect time

* some network clean up

* some wifi manager clean up

* this is handled

* stop can be called manually, from deleting wifimanager, or exiting python. some protection

* its not mutable anymore

* scan on enter

* clean up

* back

* lint

* catch dbus fail to connect

catch dbus fail to connect
2025-08-26 01:23:59 -07:00
Shane Smiskol
a70e4c3074 raylib: rm debug print 2025-08-25 22:30:27 -07:00
Shane Smiskol
7a2f2ddf32 raylib: speed up network panel first load (#36062)
* debug

* debug

* clean up
2025-08-25 22:30:09 -07:00
Shane Smiskol
2dc0f97c93 raylib: fix slow Toggles panel first load (#36061)
fix slow load on toggles page
2025-08-25 22:29:14 -07:00
Shane Smiskol
15fcbf24f1 raylib home ui: show/hide events (#36058)
* it's a widget

* proper events

* bottom
2025-08-25 15:52:13 -07:00
Shane Smiskol
e89c6b3b88 raylib: remove redundant networking class (#36057)
remove a class
2025-08-25 15:23:14 -07:00
Shane Smiskol
c4a7f25b62 raylib: refactor NetworkManager constants (#36056)
* new file

* import

* and this
2025-08-25 15:17:37 -07:00
Harald Schäfer
1d74a97ba6 torqued: apply offset (#36005)
* torqued: apply latAccelOffset to torque control feed forward 

* test learned latAccelOffset captures roll compensation bias on straight road driving, when the device is not flush in roll relative to the car

* test correct torqued latAccelOffset parameter convergence

---------

Co-authored-by: felsager <d.felsager@gmail.com>
2025-08-25 13:50:10 -07:00
commaci-public
aea467ff02 [bot] Update Python packages (#36053)
* Update Python packages

* bump

---------

Co-authored-by: Vehicle Researcher <user@comma.ai>
Co-authored-by: Shane Smiskol <shane@smiskol.com>
2025-08-25 11:43:49 -07:00
Comma Device
b501ad4d51 nice encoder debugging script 2025-08-24 00:48:54 +00:00
Shane Smiskol
dd7de180ea raylib: cache API token (#36050)
* cache with time

* safety

* rm

* clean up
2025-08-23 04:56:00 -07:00
Shane Smiskol
2b46e1450a raylib: simplify network state (#36049)
* wtf

* we never disabled unsupported networks

* dont be a hero

* i hate mypy

* fix
2025-08-23 00:49:19 -07:00
Adeeb Shihadeh
7ed8abb66c camerad: garbage collect CL files (#36046) 2025-08-22 20:11:50 -07:00
Adeeb Shihadeh
ef2bb7f2fc release: build orphaned branch (#36047) 2025-08-22 20:06:12 -07:00
Adeeb Shihadeh
ae3b74245f sgo is just o now! 2025-08-22 09:08:40 -07:00
Shane Smiskol
c0a74f7a20 raylib: change default tethering password 2025-08-22 01:55:01 -07:00
Shane Smiskol
cea3572b74 raylib: fix mouse scale for Widgets (#36040)
fix mouse scale for mousestate
2025-08-21 16:54:15 -07:00
kostas.pats
cd9ec6b240 Compressed vipc name pick (#36036)
* add custom vipc server name argument

* Update compressed_vipc.py

* add custom vipc server name argument + fixes

* Update compressed_vipc.py
2025-08-20 15:45:05 -07:00
Adeeb Shihadeh
b4cc4ea8e2 Update README.md 2025-08-20 15:44:23 -07:00
Adeeb Shihadeh
154f655335 update release checklist 2025-08-20 15:44:13 -07:00
Shane Smiskol
2ff707d82f Fix gradient point ignore 2025-08-19 22:37:55 -07:00
Shane Smiskol
8320934d91 raylib: cleanup experimental mode gradient color calculations (#36035)
* dfebug

* simplify

* come on man
2025-08-19 22:33:07 -07:00
Maxime Desroches
63441c048c test_onroad: relax first fid assertion (#36032)
* fid

* test

* Revert "test"

This reverts commit 38e6635dd0b0b9fb9c08bcc3a74b9283207b0c2f.

* r

* Revert "r"

This reverts commit 4037a321f89af137a645345a0fffb73da6071c72.
2025-08-19 22:30:48 -07:00
Shane Smiskol
d0069c136b raylib: fix experimental mode path gradient (#36033)
* fix!

* this is enough to fix the broken colors

* clean up

* fix

* use last colors -- need this so we don't have to always pass perfect gradient

* clean up

* clean up

* clean up
2025-08-19 22:19:56 -07:00
Shane Smiskol
870d19f33d Reapply "File sourcing: Not all files are logs (#36025)"
This reverts commit 3570022b9a.

Fix test
2025-08-19 19:59:50 -07:00
Shane Smiskol
60c34a0837 LogReader: run source test (#36031)
run "slow" test
2025-08-19 19:58:47 -07:00
Shane Smiskol
22e79479d2 unit tests: add comment (#36030)
* remove collection

* test

* back

* wtf it actually saves 10s?!

* ah that makes sense

* rm

* ?

* ugh

* qq

* bc
2025-08-19 19:39:27 -07:00
Maxime Desroches
3570022b9a Revert "File sourcing: Not all files are logs (#36025)"
This reverts commit 18b7ddef8f.
2025-08-19 17:11:53 -07:00
Maxime Desroches
dd5f5fdb98 ci: show all unit test failures (#36029)
* testci

* fix

* Revert "testci"

This reverts commit b62a0aacb604fc0fd39c6e50a726b686979b9880.
2025-08-19 17:11:29 -07:00
Harald Schäfer
18b7ddef8f File sourcing: Not all files are logs (#36025)
* Not all files are logs

* more refactor

* linting ok

* fix tests

* import exception

* whoops forgot to git add

* fix

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2025-08-19 16:25:13 -07:00
Shane Smiskol
5ec9aee216 File sourcing: simplify return type (#36028)
* rm str | none pattern

* clean up

* more clean up

* stash

* Revert "stash"

This reverts commit 3e2472160cc97e9d11922137757d9ef942a0312d.

* fix da prints

* fix cmt
2025-08-19 15:39:44 -07:00
Maxime Desroches
927548621b update to latest userdata partition (#36027)
bump
2025-08-19 15:37:39 -07:00
Shane Smiskol
6005b12f94 format logreader 2025-08-19 15:04:17 -07:00
Jason Young
09aa21390d Honda: Adding support for Honda City (#36026)
* bump opendbc

* release notes

* regen CARS.md

* bump opendbc correctly this time
2025-08-19 15:38:55 -04:00
YassineYousfi
d097a0c201 model parser: fix lead mhp out shape (#36024)
* model parser: fix lead mhp out shape

* fix for real
2025-08-19 11:35:22 -07:00
Adeeb Shihadeh
560c503871 new release flow (#36021)
* new release flow

* Update README.md
2025-08-19 11:19:58 -07:00
YassineYousfi
3d24225cc1 model parser: use check missing for mhp checks (#36023)
* model parser: use check missing for mhp checks

* lint + support re

* lint...

* no walrus

* just remove

* forgot this
2025-08-19 10:19:00 -07:00
YassineYousfi
51314fa9fe Revert "model parser: use check missing for mhp checks" (#36022)
Revert "model parser: use check missing for mhp checks (#36020)"

This reverts commit 803b54ebdb.
2025-08-19 10:09:59 -07:00
YassineYousfi
803b54ebdb model parser: use check missing for mhp checks (#36020)
* model parser: use check missing for mhp checks

* lint + support re

* lint...

* no walrus

* just remove
2025-08-19 10:09:09 -07:00
Jimmy
c085b8af19 feedbackd: remove lkas toggle for this release (#36018)
remove lkas toggle for this release
2025-08-19 09:18:32 -07:00
Adeeb Shihadeh
2cec2587be bump panda 2025-08-19 09:18:14 -07:00
Adeeb Shihadeh
2148e2dff2 build_devel: clean submodules 2025-08-18 19:48:08 -07:00
Shane Smiskol
f55f3bb7cd setup is a noun! 2025-08-18 19:33:34 -07:00
Adeeb Shihadeh
4d55671b17 feedbackd: temp disable LKAS button as feedback (#36017)
* feedbackd: temp disable LKAS button as feedback

* disable that

* mark
2025-08-18 18:57:16 -07:00
commaci-public
dfc66d7807 [bot] Update Python packages (#36014)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-08-18 18:52:05 -07:00
Maxime Desroches
31101ecaab AGNOS 12.8 (#36008)
* staging

* prod
2025-08-18 15:37:44 -07:00
commaci-public
3d879dd1ae [bot] Update Python packages (#36012)
* Update Python packages

* add psa

---------

Co-authored-by: Vehicle Researcher <user@comma.ai>
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2025-08-17 17:53:50 -07:00
Muhammed Jaseem Pallikkal
ef9e430992 Fixed development environment link in CONTRIBUTING.md (#36011)
* Fixed development environment link in CONTRIBUTING.md

This is my first PR to openpilot 🎉 excited to contribute!

* Using absolute path for tools
2025-08-17 13:51:12 -07:00
Adeeb Shihadeh
63fa250f29 Add note around excessive actuation check (#36010)
* Add note around excessive actuation check

* Update selfdrived.py
2025-08-17 11:53:20 -07:00
Harald Schäfer
ceb557058c Steam Powered model (#36000)
* f3e67f3e-6079-48cf-92a4-dee5eebd1d73/360

* f3e67f3e-6079-48cf-92a4-dee5eebd1d73/400

* No more action head: a8f96b93-bde2-4e28-a732-4df21ebba968/400
2025-08-17 10:18:30 -07:00
Maxime Desroches
6a67f9e56f setup: custom software warning (#36003)
* warn

* msg

* label

* space

* Revert "space"

This reverts commit ae9b8ad1149612c5741ae3b091740170238473ed.
2025-08-15 23:10:47 -07:00
Maxime Desroches
372682d4a9 updated: branch migration (#35993)
* release

* Update system/updated/updated.py

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>

---------

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2025-08-15 14:46:20 -07:00
Shane Smiskol
ab44c9a4ff Torque controller: refactor calculations to be in accel space (#35790)
* clean up

* little confusing but works

* clean up

* fix

* pid outputs torque again, fix windup above max torque

* clean up

* fix

* fix

* typo

* fix conflicts

* fix PID

* cleanups

* seems correct

* updte

* inverse

* whitespace

* move

* small cleanup

* more cleanup

* update ref

---------

Co-authored-by: Bruce Wayne <harald.the.engineer@gmail.com>
2025-08-15 11:39:56 -07:00
Adeeb Shihadeh
1805a47139 USB takes forever to come up... 2025-08-15 11:13:45 -07:00
Adeeb Shihadeh
5417efaa1d bump opendbc (#36001) 2025-08-15 11:12:18 -07:00
eFini
4536719353 longitudinal_planner: Convert self.mode to a local variable in update() (#35999)
Make 'mode' variable local
2025-08-15 09:02:38 -07:00
Adeeb Shihadeh
b54d5997de Update RELEASES.md 2025-08-14 21:59:25 -07:00
Maxime Desroches
385ad9e839 updated: connectivity check with new setup (#35998)
* default

* fix
2025-08-14 21:38:27 -07:00
Maxime Desroches
7c6bc70312 params: fix default boolean params (#35997)
* fix

* update test
2025-08-14 20:14:12 -07:00
Shane Smiskol
8ec61991ee LogReader sourcing: remove redundant file existence checks (#35991)
* speed up sourcing but avoiding checking for existence of collected files already from previous sources

* clean up

* been meaning to make them return dicts

* no longer true

* no longer true

* clean up

* more

* more

* revert
2025-08-14 19:28:37 -07:00
Shane Smiskol
1eef956cad LogReader sourcing: return dict (#35994)
* new return type

* fix test

* why not
2025-08-14 19:19:37 -07:00
Maxime Desroches
daef43f620 ci: show all tests durations (#35995)
show
2025-08-14 18:54:56 -07:00
Shane Smiskol
aa91a02db8 LogReader sourcing: check comma API source before CI source (#35992)
sort
2025-08-14 18:26:19 -07:00
eFini
a6d0a88b1e Multilang: update chs/cht translations (#35981) 2025-08-14 10:27:44 -07:00
Jason Young
f2c806f8a0 bump opendbc for fingerprint updates (#35990)
bump opendbc
2025-08-14 11:39:02 -04:00
Jason Young
349c0ec662 Honda: Add several new cars to release (#35989)
* bump opendbc

* regen CARS.md

* update RELEASES.md
2025-08-14 10:30:42 -04:00
Maxime Desroches
741ea44aba AGNOS 12.7 (#35988)
* agnos12.7

* prod
2025-08-13 23:25:09 -07:00
github-actions[bot]
56a89eb4fb [bot] Update translations (#35975)
Update translations

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-08-13 18:32:10 -07:00
Maxime Desroches
3f830827b2 setup: new flow (#35960)
* start

* remove

* path

* fix

* prepare

* url

* format

* better

* better

* consist

* check

* not real

* ref

* simpler

* fix

* fix

* more

* more

* path

* clean

* line

* progress

* fast

* no

* ori

* flag

* remove

* install

* line

* wait time

* wait install

* Revert "wait time"

This reverts commit 14f750971c3d19b93e4609e9344cb3a8ce9175f4.

* move

* fix

* install

* universal service resources

* fix

* safer

* this is stupid

* time

* cleaner

* comment
2025-08-13 16:07:12 -07:00
Alexandre Nobuharu Sato
a2a385336e Multilang: update pt-BR translation (#35971)
Multilang: update pt-BR translations
2025-08-13 15:20:58 -07:00
Harald Schäfer
be934b3881 fancontroller: remove weird minus (#35983)
* fancontroller: remove weird minus

* another minus
2025-08-13 11:43:50 -07:00
Jimmy
3d6dfc864d clip: terminate processes in clip() instead of in main() (#35984)
* terminate processes in clip() instead of in main()

* context manager for proc
2025-08-13 11:43:35 -07:00
YassineYousfi
8deb1bf285 Down To Ride model 🏎️ (#35982)
* e9237324-4b92-48f5-acaa-ebdf7fe46339/400

* ff4c292c-8e5a-44c0-9b75-e79c60152da2/400

* 1496451e-897b-4a1b-a284-37d244bfddb3/400

* Revert "Revert TR again (#35179)"

This reverts commit e9cea3ae5c.

* try stopping closer

* 5e4cb3d3-b9cc-45c7-a476-38083e75029c/400

* 2164d501-7d2c-467d-b132-be4f85db4164/60

* Revert "2164d501-7d2c-467d-b132-be4f85db4164/60"

This reverts commit 1f4b98ed7d63971507dff94e5ac20223ee15e067.

* 9a836aee-dec6-4f26-8d7e-6db4bb9c8176

* no replace ln

* Revert "no replace ln"

This reverts commit fb5173ced84bb8a07a4e06a5bec43d115404973b.

* opset_version 17

* rebase

* 5f255b73-2e54-46bc-8f80-82c5838165a3/400

* a423dec7-7dcc-4523-aaae-a4012d56b9b5/400

---------

Co-authored-by: Bruce Wayne <harald.the.engineer@gmail.com>
2025-08-12 19:01:56 -07:00
commaci-public
91aec49cee [bot] Update Python packages (#35976)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-08-11 18:43:52 -07:00
Harald Schäfer
cd087a561e Simple plan (#35980)
* squash

* double

* proper merge

* better organization
2025-08-11 17:42:03 -07:00
Shane Smiskol
10cc87b80b raylib: rm some common colors (#35979)
common colors
2025-08-11 17:06:11 -07:00
Jimmy
13d4c6a167 ui: replace "Hotspot" with link icon (#35978)
replace "Hotspot" with link icon
2025-08-11 16:26:07 -07:00
Harald Schäfer
455a6a586a Misc PID refactors (#35844)
* Misc PID refactors

* dead

* finish rename

* unused import

* whitespace

* typo

* fix fan controller

* pid_log

* whitespace

* integral clipping in pid

* update ref

* cleaner

* rm print

* update ref

* revert fan changes

* forgot this
2025-08-11 14:25:29 -07:00
YassineYousfi
c78b302b93 Space Lab 3 🛰️🛰️🛰️ (#35905)
* c147a591-1f86-4ea4-b2b7-391eff1178b5/400

* 6d6639ee-643e-4f72-bd1c-dda546383854/400
2025-08-11 14:07:01 -07:00
Maxime Desroches
a11a8591e4 bump version to 0.10.1 2025-08-11 13:14:48 -07:00
Maxime Desroches
0bbceb8539 wifi_manager: wait for wifi device (#35974)
wait
2025-08-10 19:41:13 -07:00
royjr
e97ae07589 macOS: fix font-noto-color-emoji (#35972)
Update mac_setup.sh
2025-08-10 09:49:52 -07:00
Jason Young
430079113c Revert "Honda: Temporary test exception for driver regen paddle" (#35969)
Revert "Honda: Temporary test exception for driver regen paddle (#35929)"

This reverts commit d15d3c73b8.
2025-08-09 20:57:04 -04:00
Adeeb Shihadeh
1c46640ea6 Remove more Qt, part 2 (#35968) 2025-08-09 15:04:26 -07:00
Adeeb Shihadeh
2d8030de0b ui: move watch3 to raylib (#35967)
* move to py

* cleaner

* clean that up
2025-08-09 15:00:36 -07:00
github-actions[bot]
72b71d57bc [bot] Update translations (#35965)
Update translations

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-08-09 12:21:05 -07:00
commaci-public
5339a89e81 [bot] Update Python packages (#35964)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-08-09 12:19:52 -07:00
Shane Smiskol
e0f51bdbb6 Reapply "LogReader: wrap events to cache which() (#35882)" (#35909)
* Reapply "LogReader: wrap events to cache which() (#35882)"

This reverts commit ba2dced54c.

* fix lr

* speed up

* clean up

* more

* should be fast

* clean up

* only supports Event

* rmrmr

* bye

* simple

* gix
2025-08-08 23:42:54 -07:00
Maxime Desroches
63d8c6c7f7 ui: adapt InputBox to new touch api (#35962)
new
2025-08-08 22:50:35 -07:00
Maxime Desroches
83f6843a48 ci: run all unit tests (#35959)
* more please

* back
2025-08-08 20:07:33 -07:00
Maxime Desroches
4bb5986c14 setup: fix url for urllib (#35958)
fix
2025-08-08 19:57:20 -07:00
Maxime Desroches
e596704644 ui: remove gui_label usages from setup (#35955)
clean
2025-08-08 16:00:00 -07:00
Shane Smiskol
fd32fcd20d raylib ui: only process mouse events when enabled (#35948) 2025-08-08 01:09:03 -07:00
Shane Smiskol
a79a5e5a16 revert
i thought i pushed!
2025-08-08 00:36:13 -07:00
Shane Smiskol
5117a8c3a6 ui: test raylib ui (#35949)
* add raylib ui

* test

* this is better for now

* rm

rm

* finalize it

* need this?

* ?

* shite

shite

* try

* ?

* huh

* simp

* ?

* wtf is going on

* ???????????????

* lock

* stash

* no 2 packages

* Revert "stash"

This reverts commit 9efb0d9bda6a6309e7a567634d1921bf1cd0fb59.

* debug

* noo

* debug

* ?

* and

* yeah yeah

* init one

* 2

* i wonder

* oooh

* make sure

* fix dat

* try this

* see if wifiman

* forgot

* ?

* ???

* fuck this we can rewrite it later
2025-08-08 00:34:53 -07:00
Maxime Desroches
1555c0b5fe ui: custom software warning (#35953)
cu
2025-08-07 23:19:48 -07:00
Maxime Desroches
0e9de8f1b1 ui: support text wrapping in Label (#35952)
* lb

* t

* Revert "t"

This reverts commit a9b8e2b9faa5e9d1b189c1dc2ed1aa876e4df476.

* tr

* Revert "tr"

This reverts commit 8de8719ded0fed2b0e5469230e83c13714f88319.

* better

* much better
2025-08-07 23:08:42 -07:00
Shane Smiskol
7bfac9d050 raylib ui: improve is_pressed (#35950)
* stash

* clean up exp

* come on

* fix

* ?

* maybe better

* fix

* same order

* clean up
2025-08-07 16:28:16 -07:00
Maxime Desroches
a800c129b0 run setup and reset at 20FPS for now 2025-08-07 14:33:40 -07:00
Maxime Desroches
f13ec6cb27 wifi manager: correctly handle emoji ssid 2025-08-07 14:22:34 -07:00
Maxime Desroches
f04bb6b9fa ui: reduce network selection lag (#35945)
lag
2025-08-07 13:43:27 -07:00
Brett Sanderson
ed0346980c Update plotjuggler README.md (#35946)
Update README.md

Real example using segment range.  Remove segment count as its not a parameter.
2025-08-07 11:47:50 -07:00
Shane Smiskol
6cf710d4cb Widget: add enabled property (#35944)
* add enabled

* sort

* rename

* rest

* rm that
2025-08-06 22:00:12 -07:00
ZwX1616
8b90c210f8 encoderd: more efficient compression for low res frames (#35924)
* shein says inline

* Update system/loggerd/loggerd.h

Co-authored-by: Shane Smiskol <shane@smiskol.com>

* Revert "Update system/loggerd/loggerd.h"

This reverts commit 3602523cefdeb2a46d77946f7f2cc7fc21bd5a4f.

* Revert "shein says inline"

This reverts commit d3c079e137c5d98068501df636975c5fbf8810ee.

* EncoderSettings

* getter

* update test_encoder

* def

---------

Co-authored-by: Comma Device <device@comma.ai>
Co-authored-by: Shane Smiskol <shane@smiskol.com>
2025-08-06 21:17:10 -07:00
Maxime Desroches
62bbf6db8d ui: use label in confirm dialog (#35943)
forget
2025-08-06 20:11:30 -07:00
Maxime Desroches
a51477d40d ui: use Label in keyboard (#35941)
better
2025-08-06 18:07:06 -07:00
ZwX1616
a84089c6e5 EncoderInfo: encoder setting factorys (#35940) 2025-08-06 16:53:16 -07:00
Jimmy
bb8a2ff65b Remove rerun (#35939)
remove rerun
2025-08-06 16:50:26 -07:00
Maxime Desroches
3a78eee2f9 ui: emoji (#35913)
* emoji

* label

* back

* default

* type

* more

* ico

* device

* clean

* brew
2025-08-06 16:04:19 -07:00
Shane Smiskol
52a4b52628 FileName clean up (#35938)
two spaces!
2025-08-06 14:07:02 -07:00
Jason Young
839a773345 enable lateral accel factor learning for Honda (#35936)
enable torqued for Honda
2025-08-06 16:11:07 -04:00
DevTekVE
c236f472a9 update ISO_LATERAL_ACCEL import + VM changes (#35865)
* refactor: move lateral methods from init to lateral.py (#2594)

* Extracting lateral methods to lateral.py

* cleaning

* more cleaning

* more cleaning

* Making sure it remains where it should

* Leave rate_limit where it belongs

* Moving things to `car/controls/`

* Moving rate limit to get a taste of the changes

* clean

* copy verbatim

* clean up

* more

* now we can format

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>

* Merge branch 'master' into move-common-vm-methods. dunno what happend with ci

* now we need to move this import

* bump opendbc

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2025-08-06 11:53:57 -07:00
Bruce Wayne
ac3d96d2fd Revert "selfdrive.ui.feedback: add init (#35935)"
This reverts commit eca2f40341.
2025-08-05 23:11:19 -07:00
Harald Schäfer
eca2f40341 selfdrive.ui.feedback: add init (#35935)
add init
2025-08-05 23:08:09 -07:00
Maxime Desroches
5e6f942234 gitignore .cache/ from clangd 2025-08-05 22:02:10 -07:00
Maxime Desroches
69ca699773 clip: fix params (#35934)
fix
2025-08-05 21:50:30 -07:00
Harald Schäfer
d1e0a60408 Filename refactor: no enum (#35930)
* conflict

* typing

* typing

* no value

* fix typing

* whitespace

* whitespace

* unused

* Reapply "Filename: minor refactor (#35927)"

This reverts commit 8c7d53004f.

* unused import

* done
2025-08-05 20:37:09 -07:00
Harald Schäfer
999db5b426 Update RELEASES.md 2025-08-05 20:14:01 -07:00
Harald Schäfer
e8135c5431 Update RELEASES.md 2025-08-05 20:11:56 -07:00
Adeeb Shihadeh
978d1c38f1 clip: add speed up support (#35933) 2025-08-05 19:17:58 -07:00
Adeeb Shihadeh
8c7d53004f Revert "Filename: minor refactor (#35927)"
This reverts commit 96313fa4c0.
2025-08-05 19:07:17 -07:00
Mitchell Goff
7413982f0d Lower ALLOW_THROTTLE_THRESHOLD (#35928)
* Lower ALLOW_THROTTLE_THRESHOLD

* Bumped process_replay refs
2025-08-05 17:35:54 -07:00
Maxime Desroches
c95cac3b06 update to latest userdata partition (#35931)
update
2025-08-05 17:11:19 -07:00
Maxime Desroches
fbbb2ef5d0 update release checklist 2025-08-05 16:57:39 -07:00
Jason Young
d15d3c73b8 Honda: Temporary test exception for driver regen paddle (#35929)
Honda: Test exception for driver regen
2025-08-05 19:35:06 -04:00
Harald Schäfer
96313fa4c0 Filename: minor refactor (#35927)
* Filename

* rest of refactor
2025-08-05 16:29:25 -07:00
Shane Smiskol
c35494c19f Check for excessive lateral acceleration (#35921)
* here?

* nah card shouldn't become bloated

* better

* import

* actually selfdrived is probably best since it already manages alerts

card is car interfacing, controlsd is for calculating control input, selfdrived is rest

* consistent name

* add to params

* ai

* maybe better?

* shorter

* build out lockout

* do

* check active

* descriptive

* this is a terrible experience just to get lat accel

* just pass sm

* not iso

* type

* rm

* math

* use calibrated roll

* fix

* fix borkenness

* cmt

* compare some methods

* rolling window

* 1 and 2 are the same

* rm it

* stuff

* plot

* plot kf

* generic implementation

* adjust limits

* fix from merge

* clean up

* revert filter to master

* and here

* and

* run_process_on_route imps

* clean up

* why not

* extrapolate

* this doesn't generically work for angle/curvature cars

Revert "extrapolate"

This reverts commit 556f0c3a92b82f07ceb6422f0e39322e79a10dcd.

* cmt

* move

* rm debug

rm debug

and

* others use helpers

* two counters might be too much to return

* turn into class

* clean up

* cmt

* kinda obvious

* impossible for this not to be true, but make it explicit

* clean up
2025-08-05 16:15:07 -07:00
Adeeb Shihadeh
c321fa72e2 one more 2025-08-05 16:08:14 -07:00
Adeeb Shihadeh
2c654500d2 update release README 2025-08-05 16:07:29 -07:00
YassineYousfi
bb4f9651ba Update RELEASES.md 2025-08-05 14:57:57 -07:00
Adeeb Shihadeh
c23537b4d5 lil copy updates 2025-08-05 14:55:30 -07:00
Adeeb Shihadeh
865e6fa9d8 update release notes 2025-08-05 13:42:51 -07:00
Jimmy
d7b0a5fa7e Record feedback with LKAS button (#35888)
* record feedback with LKAS button

* fix alert test

* slightly simplify feedbackd

* "Audio Feedback Saved" upon time expiration or early stop

* earlySend --> earlyStop

* userFlag --> userBookmark

* RecordAudioFeedback param/toggle

* add audioFeedback test

* simplify feedbackd

* send bookmark regardless of toggle, show feedback event with higher priority

* add userBookmark to selfdrived sm

* fix mispelled param name

* default off and move to main

* segmentNum --> blockNum, earlyStop --> lastBlock

* preserve audioFeedback

* get rid of lastBlock and just send bookmark saved at the end

* update raylib side

* update toggle description and add raylib toggle

---------

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2025-08-05 13:41:41 -07:00
Maxime Desroches
112d615ac9 ci: fix setup device variable 2025-08-04 21:28:43 -07:00
Maxime Desroches
fb34e7ccd3 ci: kick power watchdog on ci devices 2025-08-04 21:06:28 -07:00
Maxime Desroches
f08d95b95a AGNOS 12.6 (#35922)
* bump

* production
2025-08-04 20:40:20 -07:00
Shane Smiskol
1c9bbb290a run_process_on_route.py: qol improvements (#35923)
* take from upstrema/exc-lat-accel

* see ya

* sort

* rm

* duh

duh
2025-08-04 17:11:53 -07:00
Shane Smiskol
2c8415f81c ui.py: gas is deprecated 2025-08-04 16:21:20 -07:00
mvl-boston
bae7a610fa Honda: allow sport gear (#35911)
add honda sport gear
2025-08-04 16:19:26 -07:00
Adeeb Shihadeh
aecb6d13e7 cabana: add independent panda lib (#35920)
* cabana: add separate panda lib

* cleanup
2025-08-04 16:09:22 -07:00
Maxime Desroches
1ca8a4ca75 raylib: bump commit 2025-08-04 15:43:50 -07:00
Maxime Desroches
c316c400f8 reset: proper button scale (#35919)
* reset scale

* r
2025-08-04 15:41:29 -07:00
Adeeb Shihadeh
408cef2d46 Delete Jenkins trigger comments (#35916) 2025-08-04 13:29:22 -07:00
pencilpusher
be0626f7e3 improved safe_ioctl (#35908)
* improved safe_ioctl

* readability

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>

* use correct ioctl command

* ameliorated api

* use try/catch to prevent spi_fd leak

* Update common/util.h

* use correct ioctl command

* error log message is more readable

---------

Co-authored-by: Test User <test@example.com>
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2025-08-04 13:25:24 -07:00
commaci-public
f06c98018f [bot] Update Python packages (#35915)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-08-04 09:44:14 -07:00
Maxime Desroches
976dfa3982 ui: multi touch keyboard support (#35912)
* start

* better

* 2

* dumb
2025-08-03 18:14:48 -07:00
Willem Melching
623de0e22a cabana: PandaStream use noOutput safety mode instead silent (#35910) 2025-08-03 09:22:52 -07:00
Maxime Desroches
86146981c4 ui: fix connection check 2025-08-03 01:32:51 -07:00
Maxime Desroches
56dcf71774 ui: fix non-ascii access points 2025-08-03 01:21:40 -07:00
Maxime Desroches
a1f073921c test_messaging: less flaky wait time check 2025-08-03 00:31:01 -07:00
Maxime Desroches
cccd60a28b ui: make wifi selection usable (#35895)
* start

* wrong

* more

* more

* better

* better

* more better
2025-08-03 00:14:36 -07:00
Maxime Desroches
181ea39a83 ui: re-compute text size (#35907)
* one

* app

* fix
2025-08-02 20:38:37 -07:00
Maxime Desroches
8cce8cf3f3 ui: keyboard improvements (#35906)
* better

* miss this one
2025-08-02 19:01:59 -07:00
Simon Kuang
0b855a93d7 scons: support build on single processor (#35904)
Update SConstruct
2025-08-02 16:50:45 -07:00
Jason Young
8c78749846 sim: fix "msg not found" errors (#35903)
* garbage-collect CRUISE_PARAMS

* follow GEARBOX message refactor
2025-08-02 19:10:49 -04:00
Adeeb Shihadeh
aa2a3b3c8f hw: remove unused volume properties 2025-08-02 16:08:58 -07:00
Adeeb Shihadeh
ba2dced54c Revert "LogReader: wrap events to cache which() (#35882)"
This reverts commit 0ebee55050.
2025-08-02 15:53:20 -07:00
Shane Smiskol
2e15ac5f4f test manager in CI (#35900)
* test manager

* not now

* try

* fix
2025-08-02 13:18:30 -07:00
Shane Smiskol
c92add1280 process replay: don't wait for process to start (#35897)
* hmm

* test proc replay determinism

* clean up

* rm

* clean up
2025-08-02 12:34:13 -07:00
Adeeb Shihadeh
bab251b287 fix conversions import path (#35899) 2025-08-02 12:02:17 -07:00
DevTekVE
9dc98b36be refactor: cleanup gravity constant handling (#35866)
* refactor: move lateral methods from init to lateral.py (#2594)

* Extracting lateral methods to lateral.py

* cleaning

* more cleaning

* more cleaning

* Making sure it remains where it should

* Leave rate_limit where it belongs

* Moving things to `car/controls/`

* Moving rate limit to get a taste of the changes

* clean

* copy verbatim

* clean up

* more

* now we can format

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>

* No need to change order of import

* refactor: consolidate ACCELERATION_DUE_TO_GRAVITY import path

* bump opendbc

* update refs

* don't import from opendbc

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2025-08-02 11:20:18 -07:00
Shane Smiskol
313f36712c process replay: lock polled socket only (#35887)
* stash

* Revert "stash"

This reverts commit 333818b80f498e8e3dac3c1cd36e669e97521d52.

* works for paramsd

* INSANE

* format

* fater

* clean up

* more

* huh i thought order matterred?

* clean that up

* can remove this

* cmt

* check isisntance

* rename

* clean up

* clean up

* more

* more!

* sounds better
2025-08-02 00:45:29 -07:00
Maxime Desroches
3ff874d6c2 ui: fix keyboard lint 2025-08-02 00:24:52 -07:00
Maxime Desroches
eb751a3804 setup: convert to raylib touch api (#35862)
* first

* lint

* c

* simple first

* btn

* n

* more

* more

* bring back
2025-08-02 00:22:28 -07:00
Shane Smiskol
5a8e3470ff selfdrived: feed PoseCalibrator with updates (#35893)
this is also slow
2025-08-02 00:09:54 -07:00
Shane Smiskol
07909906d4 controlsd: speed up number checking (#35890)
Update controlsd.py
2025-08-02 00:08:18 -07:00
Shane Smiskol
7c87ada8d8 Simplify radarFault handling (#35891)
* Revert "Fix up `radarFault` handling (#35880)"

This reverts commit 4d01b7bec8.

* Reapply "Fix up `radarFault` handling (#35880)"

This reverts commit 597d7ec1ed78206035b924a6e8464cd9239b5db4.

* can do this

* yeah this is fine
2025-08-01 23:55:16 -07:00
Shane Smiskol
bdd6ff4f3e process replay: remove frequency based recv callback (#35886)
* wtf is going on?

* rm it

* default
2025-08-01 21:46:32 -07:00
Shane Smiskol
f2e100b0e1 process replay: clean up recv callbacks (#35889)
clean up callbacks
2025-08-01 21:36:15 -07:00
Shane Smiskol
8b0bfd7910 match on /test/ 2025-08-01 20:52:36 -07:00
Shane Smiskol
db55f1275d process replay: set selfdrived main_pub (#35885)
* save 1-2s for full route

* now more than halve the time on top of previous speedup!

* stash

* default should be most common!

* revert

* revert

* clean up

* clean up

* clean up

* clean up
2025-08-01 20:49:45 -07:00
Shane Smiskol
8f9ee43d34 process replay: flip main_pub_drained default 2025-08-01 20:44:33 -07:00
Shane Smiskol
37c4ee1532 process replay: only enter prefix when interacting with process (#35884)
* save 1-2s for full route

* cu

* stock

* Revert "stock"

This reverts commit 7cfb550817b124c3085cf005fda8c102ae53ae9d.

* clean up
2025-08-01 20:13:02 -07:00
Shane Smiskol
0ebee55050 LogReader: wrap events to cache which() (#35882)
* speed up lr

* lazy caching

* clean up

* it fast

* stash

* stash

* chatgpt code is bad as usual

* clean up

* clean up

* clean up

* clean up

* clean up

* clean up

* match behavior

* cmt
2025-08-01 19:07:16 -07:00
Maxime Desroches
cb5299be5a ui: adapt network to raylib touch api (#35881)
* start

* for now

* con

* more
2025-08-01 18:40:43 -07:00
Shane Smiskol
5c73681be8 process replay: rm dummy sockets (#35883)
* rm dummy sockets

* debug

* clean up

* cu
2025-08-01 18:38:42 -07:00
Shane Smiskol
dd09c4f341 process replay: speed up startup (#35879)
* format

* containers might not be set

* opts

* halves startup time for 12 procs (1.6 to 0.8s)

* stash

* clean up

* who knew going through entire list of msgs each time is so slow

* rewrite this to be more readable

* speed up lr

* clean up

* more

* more
2025-08-01 17:51:39 -07:00
Adeeb Shihadeh
4d01b7bec8 Fix up radarFault handling (#35880)
* fixup radarFault handling

* catch all

---------

Co-authored-by: Comma Device <device@comma.ai>
2025-08-01 16:27:26 -07:00
Maxime Desroches
42ebab1334 ui: add missing keyboard function 2025-08-01 16:02:25 -07:00
Shane Smiskol
9117a414bb process replay clean up (#35878)
* format

* containers might not be set

* opts

* halves startup time for 12 procs (1.6 to 0.8s)

* stash

* Revert "stash"

This reverts commit 3e119a9602e495bd5a57b94e73fa53d4f45051b1.

* Revert "halves startup time for 12 procs (1.6 to 0.8s)"

This reverts commit a39edf0a579f0c861ccb904a2718254fe32e03d0.

* Revert "opts"

This reverts commit 4dc1f75f0909a93650f8f7e8525af3e4eae08205.

* already set!
2025-08-01 15:20:50 -07:00
DevTekVE
1966845fc9 refactor: move lateral methods from init to lateral.py (#35856)
* refactor: move lateral methods from init to lateral.py (#2594)

* Extracting lateral methods to lateral.py

* cleaning

* more cleaning

* more cleaning

* Making sure it remains where it should

* Leave rate_limit where it belongs

* Moving things to `car/controls/`

* Moving rate limit to get a taste of the changes

* clean

* copy verbatim

* clean up

* more

* now we can format

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>

* No need to change order of import

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2025-08-01 15:17:37 -07:00
Maxime Desroches
889e386dbc ui: adapt keyboard to raylib touch api (#35875)
* key

* cancel

* more

* wow mypy very usefull as always

* _

* b

* std
2025-08-01 14:07:12 -07:00
Maxime Desroches
4e97a29e83 ui: add icon to Button (#35874)
ico
2025-08-01 12:03:22 -07:00
Adeeb Shihadeh
b695715753 sensord: reset LSM (#35872)
* sensord: reset LSM

* they'll be ready in time

* switch to SW_RESET, BOOT not working for some reason
2025-08-01 10:13:39 -07:00
Jason Wen
f5991caf6f params: update AthenadPid to use integer type (#35871)
* params: update `AthenadPid` to use integer type

* fix type
2025-08-01 09:29:25 -07:00
Shane Smiskol
2e4de9b7d8 process replay: speed up multi-process replay (#35867)
* holy shit

* benchmark without this main pub drain stuff

* revert

* ??

* actually this is what we want

* what is going on this is python 3.11 sir

* stash

* this is how you dew it

* minor clean up

* fix

* clean up

* clean up

* this is madness!

* typing

* clean up
2025-08-01 03:32:03 -07:00
Shane Smiskol
f2c17dd688 process replay: ordered dict is in Python 2025-08-01 03:26:45 -07:00
Shane Smiskol
c4298ce287 process replay: create openpilot prefix directories once (#35864)
this is so slow
2025-07-31 23:42:02 -07:00
Maxime Desroches
1de1640689 ui: improve Button widget (#35861)
* bnt

* more

* dup
2025-07-31 22:28:58 -07:00
Adeeb Shihadeh
fc58c866c6 AGNOS power monitoring watchdog (#35860)
* AGNOS power monitoring watchdog

* manager should do this
2025-07-31 19:43:21 -07:00
Maxime Desroches
c4b63cd439 reset: timeout after prolonged inactivity (#35859)
* reset

* pc

* const

* x
2025-07-31 14:53:00 -07:00
kostas.pats
e32a2ce164 rescale ir power (#35858)
* rescale ir value pandad sends to Hardware and changed max ir value in Hardware

* changed ir_percentage type

* refactored pandad.cc ir_pwr setting

* cleaned up ir update condition

---------

Co-authored-by: kostas pats <kostas@comma.ai>
2025-07-31 14:17:22 -07:00
Robbe Derks
3187631935 bump panda 2025-07-31 17:53:19 +02:00
Lee Jong Mun
825ee01f0b Multilang: update kor translation (#35849) 2025-07-30 19:41:14 -07:00
Adeeb Shihadeh
09eccd1aaf pandad: spiErrorCount is a better name (#35852)
* pandad: spiErrorCount is a better name

* bump panda
2025-07-30 18:27:03 -07:00
Maxime Desroches
44da3da1c4 updated: uptime connectivity check (#35836)
* start

* p

* comment

* 2

* p

* no time

* order

* space

* fix
2025-07-30 15:40:13 -07:00
programanichiro
31c4bf8a4a Multilang: Multilang: update ja translation (#35847)
日本語訳を追加。
Add Japanese translation.
2025-07-30 10:25:48 -07:00
commaci-public
3e2325a632 [bot] Update Python packages (#35845)
* Update Python packages

* bump

* update refs

---------

Co-authored-by: Vehicle Researcher <user@comma.ai>
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2025-07-29 19:45:17 -07:00
Maxime Desroches
04a20bd349 bump panda 2025-07-29 17:58:04 -07:00
Adeeb Shihadeh
a53746f8df ugh api is duplicated 2025-07-29 15:00:11 -07:00
Adeeb Shihadeh
b0f32717b7 op: add prime SSH helper (#35841)
* op: add prime SSH helper

* ssh key

* py
2025-07-29 12:02:43 -07:00
hungpham3112
69f4b4a6b7 op.sh: fix submodule cloning for older git version (#35840)
Update op.sh
2025-07-29 11:35:50 -07:00
Adeeb Shihadeh
1cadcf6192 CI: remove test_models (#35837) 2025-07-28 17:10:25 -07:00
Alexandre Nobuharu Sato
1003498761 Multilang: update pt-BR translation (#35835)
Mutilang: update pt_BR translation
2025-07-28 13:49:11 -07:00
Shane Smiskol
64d8be9176 DM: fix always on permanent lockout (#35834)
fix check and comments
2025-07-28 13:17:02 -07:00
commaci-public
18970781ba [bot] Update Python packages (#35824)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-07-28 13:06:07 -07:00
github-actions[bot]
66e6b95833 [bot] Update translations (#35823)
Update translations

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-07-28 10:27:16 -07:00
Maxime Desroches
50371637dc Reapply "Save onroad/offroad uptime to param (#35769)" (#35796)
This reverts commit 87270952c4.
2025-07-27 21:29:11 -07:00
Harald Schäfer
5c252ded72 Space Lab 2 (#35816)
* d2971977-a56f-44a2-b368-434af987b731/400

* f35eaf21-ef51-413d-9857-398bcdabb7da
2025-07-26 21:21:33 -07:00
Harald Schäfer
35ed6bc3a9 Tinygrad DEV=DEVICE (#35814)
* Reapply "Tinygrad DEV=DEVICE (#35809)"

This reverts commit 5e07636d54.

* bump tg
2025-07-26 21:21:25 -07:00
Shane Smiskol
1123773fbd uv lock for xdist (#35819)
* xdist: latest version

* lock
2025-07-25 20:49:32 -07:00
Shane Smiskol
e461d18d54 pytest: faster xdist startup (#35817)
* faster

* cmt
2025-07-25 20:29:06 -07:00
Maxime Desroches
e7b80b78cc params: auto type cast on put (#35810)
* start

* fix

* fix

* more

* more

* more

* fix

* fix

* []

* f

* f

* fix

* lint

* back

* fix

* yep

* better msg

* fix

* fix

* fix

* fix

* more

* more
2025-07-25 19:20:49 -07:00
Bao
26a9760afc util: fix read_file for files > 2GB (#35787)
* util: fix read_file for files > 2GB

* fix tellg on directory not returning -1

---------

Co-authored-by: Ngô Việt Hoài Bảo <baonvh@phenikaa-x.com>
2025-07-25 13:53:37 -07:00
Simon Kuang
b4ae64358e Update vehicle model reference to 2023 edition of Guiggiani's book (#35805)
Update car_kf.py
2025-07-25 12:57:13 -07:00
Bruce Wayne
5e07636d54 Revert "Tinygrad DEV=DEVICE (#35809)"
This reverts commit 47f23828d2.
2025-07-25 12:54:11 -07:00
Adeeb Shihadeh
b99c73e1fa bump opendbc (#35813)
* bump opendbc

* update tests
2025-07-25 12:50:15 -07:00
Harald Schäfer
47f23828d2 Tinygrad DEV=DEVICE (#35809)
* bump tg

* step one cleanup

* cleanup

* typo

* cleaner

* cleaner

* Revert "cleaner"

This reverts commit 9c1abd0dc06b4564e61dd32b0e93375badbc9ca5.

* usbgpu

* bit cleaner

* cleaner sconscript
2025-07-25 11:53:08 -07:00
YassineYousfi
938981dce9 Space Lab Model 🛰️ (#35804)
* 95c34be5-4fa1-4875-8b1d-fb7162140f10/400

* 660235c5-1647-40c4-8493-880de8f662d0/400
2025-07-25 11:38:07 -07:00
Shane Smiskol
09d8327a14 bump opendbc (#35811)
* bump

* bump

* bump

* update refs
2025-07-24 23:56:04 -07:00
Shane Smiskol
ff223260b2 Lock out for excessive actuation (#35792)
* excessive actuation

* text

* software

* check

* logic

* whoops

* dont want to lose alert unless user interacts with it

* implement

* try x2

* counter

* try to false trigger

* use livepose

* need to check for livePose noise

* cmt

* nl

* add back

* organization

* setVisible and isVisible consecutively don't work

* style

* cant do this sadly

* actually we can!

* clean up

* clean up

* clean up

* need to match torqued, paramsd, lagd, etc. (fix op sim)
2025-07-24 19:21:38 -07:00
Maxime Desroches
bddeca6998 Reapply "params: unique default value (#35798)" (#35806)
* Reapply "params: unique default value (#35798)"

This reverts commit 267acfb73b.

* more

* more

* test for this

* better name;
2025-07-24 17:58:16 -07:00
Maxime Desroches
267acfb73b Revert "params: unique default value (#35798)"
This reverts commit abd657edfa.
2025-07-24 14:58:46 -07:00
Adeeb Shihadeh
347cee4b09 big opendbc bump (#35799)
* bump

* bump

* bump

* bump

* bump

* update refs

* that doesn't work anymore

* bump

* update refs

* bump
2025-07-23 23:23:59 -07:00
Maxime Desroches
abd657edfa params: unique default value (#35798)
* default

* None vs ""

* athena

* more

* more

* this

* better

* better

* now

* name

* better
2025-07-23 21:17:21 -07:00
Maxime Desroches
c382245a41 ui: fix wrong param.get usage 2025-07-23 20:18:02 -07:00
Shane Smiskol
b5d5894a2d hardwared: add all checks to onroad_conditions init (#35793)
not sure why not here
2025-07-22 22:42:13 -07:00
Maxime Desroches
bc5336d805 params: auto decode based on type (#35794)
* type

* test

* more

* might as well use this

* one more

* live

* athena

* b

* also

* more

* now

* ah

* pigeon
2025-07-22 21:58:06 -07:00
Adeeb Shihadeh
dc1219d13f bump opendbc (#35795)
* bump opendbc

* update refs
2025-07-22 20:19:09 -07:00
Maxime Desroches
58d3038241 auto type cast for Params (#35786)
* first

* fix

* fix

* this

* real

* time

* time

* more

* more

* fix

* subclass

* fix

* fix

* test

* fix

* ruff

* revert

* default

* json

* more

* test

* test

* d

* better

* better

* test

* one

* test

* space
2025-07-22 19:30:47 -07:00
Harald Schäfer
4d39d50858 Route: add more helpers for now (#35783)
* add helpers

* another name

* whitespace

* f string

* add log id

* add logid

* another dumb function

* add more crap

* fix naming

* whitespace

* fstring
2025-07-22 18:50:56 -07:00
Jimmy
7e0d3c22f4 modeld: skip redundant cast, reshape, and flatten (#35735)
* skip redundant cast, reshape, and flatten

* accidentally deleted a newline lol
2025-07-22 16:35:19 -07:00
commaci-public
a931ed5c15 bump opendbc (#35789)
* Update Python packages

* bump

* update refs:

---------

Co-authored-by: Vehicle Researcher <user@comma.ai>
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2025-07-22 11:35:18 -07:00
commaci-public
6fee91ad64 [bot] Update Python packages (#35778)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-07-22 10:12:30 -07:00
Shane Smiskol
bc7d6f2677 torque controller: clean up friction (#35781)
* conditional friction inside here is confusing

* do it here

* one line

* run

* bump
2025-07-21 20:27:34 -07:00
Shane Smiskol
4b73f3b169 bump opendbc (#35782)
* bump

* bump

* bump

* bump

* update refs
2025-07-21 20:16:36 -07:00
github-actions[bot]
d02f78a59c [bot] Update translations (#35777)
Update translations

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-07-21 20:02:59 -07:00
Adeeb Shihadeh
e0656f9b44 bump panda (#35784) 2025-07-21 18:42:32 -07:00
Adeeb Shihadeh
87270952c4 Revert "Save onroad/offroad uptime to param (#35769)"
This reverts commit 8ca0b82181.
2025-07-21 14:41:53 -07:00
Maxime Desroches
8ca0b82181 Save onroad/offroad uptime to param (#35769)
* default

* 60

* safer

* consist

* f
2025-07-20 21:02:58 -07:00
Adeeb Shihadeh
ad337f8830 CI: temp disable macOS build 2025-07-20 14:32:42 -07:00
Harald Schäfer
103b4df18c Log filenames: make tuples (#35771)
* make tuples

* spelling: this linter is hardcore
2025-07-19 19:19:13 -07:00
Shane Smiskol
ffc8ea5a86 LogReader: use file name constants (#35765)
use common
2025-07-18 20:29:22 -07:00
Shane Smiskol
e1fa04b678 Remove qcamera.ts.gz filename (#35766)
rm
2025-07-18 20:20:34 -07:00
Maxime Desroches
1936c42ee7 Port reset to new raylib events handling (#35762)
* test

* more

* type

* type

* order

* _

* __
2025-07-18 20:09:35 -07:00
Shane Smiskol
48892e339d LogReader: remove testing closet source (#35763)
rm
2025-07-18 19:21:04 -07:00
Shane Smiskol
8ead5db670 raylib: add style guide (#35764)
* add style guide

* more
2025-07-18 19:19:26 -07:00
Shane Smiskol
fbbad834f3 LogReader: cache internal source available (#35761)
* cache

* fix

* match behavioir
2025-07-18 18:18:02 -07:00
Shane Smiskol
278781e5af LogReader: extend FileName (#35760)
extend filename
2025-07-18 17:00:39 -07:00
Shane Smiskol
43ad1754da LogReader: fix broken test (#35758)
fix lr test
2025-07-18 16:17:01 -07:00
Shane Smiskol
4a5385a5b0 LogReader: support connect URLs (#35757)
* support connect

* clean up
2025-07-18 16:03:30 -07:00
Bruce Wayne
dbe172f7fd Fragile xx code needs this 2025-07-18 15:39:00 -07:00
Dean Lee
22e54af238 cabana: fix bit mask calculation bug (#35755)
Fix bit mask calculation bug
2025-07-18 16:21:46 +00:00
Shane Smiskol
618a25a612 LogReader: simplify sourcing logic and improve AUTO performance (#35753)
* sourcing supports any file type!

* stuff

* no camera for now

* i guess these are fine without

* rename

* get rid of these too!

* fix

* fix

* this is better

* start to clean up!

* better

* holy

holy

* clean up sources

* more robust

* working but needs some clean up

* clean up

* remove some trash

* nl

* auto_source can only return if it finds acceptable logs from sources

* double negative is confusing

* default

* list isn't hashable

* fix typing

* clean up

* speed up -- test_models got zst before bz2 in openpilotci, so do that (some segments have both bz2 and zst!)

* don't be a hero

* same behavior for now
2025-07-18 05:15:55 -07:00
Shane Smiskol
b50b351b15 LogReader: remove commaCarSegments selector (#35750)
* a source should not be a readmode... and readmode should be logtype

* fix that

* fixup
2025-07-18 02:17:11 -07:00
Shane Smiskol
862a816215 LogReader: add data endpoint option (#35751)
* add data endpoint option

* clean up
2025-07-17 23:12:08 -07:00
Harald Schäfer
cbba571845 LeTR14h (#35746)
f497b976-1ad4-4ef9-a6b8-172c68df12ea/400
2025-07-17 22:00:12 -07:00
Shane Smiskol
239646b20b Revert "clean up"
This reverts commit 5339a13c34.

don't push to master, kids
2025-07-17 21:43:21 -07:00
Shane Smiskol
5339a13c34 clean up 2025-07-17 21:42:47 -07:00
Shane Smiskol
c553c1f872 LogReader: support passing list of sources (#35749)
* far too long

* this is a better experience

* no rename for now
2025-07-17 19:54:38 -07:00
Harald Schäfer
54da96dbdf Route: add name format (#35743)
* needed for now

* TODO

* Add TODO
2025-07-17 18:22:36 -07:00
Shane Smiskol
632f7594a4 Ban time v2 (#35744)
* ban it!

* some legitimate blunders

* even more!

* this is from commaai/one

* here too

* this too

* ignore rest

* one liner

* Revert "one liner"

This reverts commit d96a1624032aaad829a005b523e579d953cfe690.
2025-07-17 16:50:52 -07:00
Adeeb Shihadeh
7d400cb00c reduce venv bloat (#35742) 2025-07-17 10:46:41 -07:00
Adeeb Shihadeh
e9d78958c1 bye bye qt, part 1 (#35741) 2025-07-17 10:15:22 -07:00
Adeeb Shihadeh
a8fd55740b Remove NVMe logging (#35740) 2025-07-17 10:05:27 -07:00
Shane Smiskol
ddb0d7c1a5 pandad: close relay when openpilot goes offroad (#35739)
* fix not resetting safety mode when op goes offroad

* hmm can do this but not needed

* revert

* rm check

* fix loopback

* ugh

* might have to do this

* Revert "might have to do this"

This reverts commit abd8a7ed74ca11874de1360f9630dc67bc4d02ee.

* fix

* also works but ehhh

* actually this is better, we already get IsOnroad at 10Hz

* top looks better

* fix
2025-07-16 23:35:58 -07:00
Shane Smiskol
39673deb77 Add CLEAR_ON_IGNITION_ON (#35710)
* add CLEAR_ON_IGNITION_ON

* hardwared is the only place that currently checks all ignition sources. doing it in pandad wouldn't make sense. this okay?

* remember

* only two usages but meh

* manager should probably be the only daemon to manage params

* clean up

* oh this is craze

* Update selfdrive/monitoring/helpers.py

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* together

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-16 20:59:12 -07:00
YassineYousfi
aac09d1d92 LeTR14 🇫🇷 (#35730)
* 9e9f8657-4e39-43d4-b36d-2d90ab18f6e9

* fix parsing
2025-07-16 19:52:39 -07:00
David
6c7abc42f6 fix(raylib): Horizontally center each line of metrics label and value (#35731)
* fix: horizontally center each line of metrics label and value

* fix: adjust vertical positioning of metric labels based on measured text size
2025-07-16 15:53:41 -07:00
Dean Lee
006c06027b loggerd: fix audio truncation by processing remaining partial frames (#35718)
fix audio truncation by processing remaining partial frames
2025-07-15 09:28:15 -07:00
Dean Lee
203b2e75d3 loggerd: remove deprecated av_init_packet usage (#35733)
remove deprecated av_init_packet
2025-07-15 09:27:12 -07:00
Dean Lee
97f6dc6e8c replay: fix video decoding from files with audio streams (#35715)
* fix video decoding from files with audio streams

* use av_find_best_stream

* streamlined logic
2025-07-14 14:49:52 -07:00
commaci-public
3a2c4a855a [bot] Update Python packages (#35726)
* Update Python packages

* dep

* ref

* hint

---------

Co-authored-by: Vehicle Researcher <user@comma.ai>
Co-authored-by: Maxime Desroches <desroches.maxime@gmail.com>
2025-07-14 13:48:55 -07:00
Harald Schäfer
052ada6a07 Revert "TR15 (#35673)" (#35727)
This reverts commit 0aaefdee37.
2025-07-14 10:24:07 -07:00
Jason Young
b1972af6db tools: fix log suffix for commaCarSegments v2 (#35725) 2025-07-14 05:37:33 -04:00
eFini
0b65a04bc1 Multilang: update zh translations (#35721) 2025-07-13 19:09:24 -07:00
Adeeb Shihadeh
8142dba137 camerad: fixup EOF check in stress test (#35717)
Co-authored-by: Comma Device <device@comma.ai>
2025-07-13 17:33:17 -07:00
Harald Schäfer
0aaefdee37 TR15 (#35673)
* 35d665f7-f4fb-4bc0-ac72-e6e85cd7fff5/400

* 3baefdb6-55f1-417b-b73d-19ba041eb574/400
2025-07-13 17:27:33 -07:00
Joshua Mack
d9b5f259ab Multilang: update es translation (#35664)
* Update Spanish Translations

* Fix translation and invisible space

* Remove
2025-07-13 16:01:18 -07:00
Dean Lee
12f766f8c3 cabana: optimize sparkline rendering by reducing points in horizontal segments (#35689)
Optimize sparkline rendering by reducing redundant points in flat segments
2025-07-13 09:34:52 -07:00
Dean Lee
631a067257 cabana: implement custom CameraWidget (#35713)
implement custom CameraView
2025-07-13 09:34:18 -07:00
Alexandre Nobuharu Sato
45ea4a1f75 Multilang: update pt_BR translation (#35714) 2025-07-13 09:33:41 -07:00
Dean Lee
55579c8c08 ui: flip driver camera horizontally (#35712)
flip driver camera horizontally
2025-07-13 09:33:27 -07:00
Shane Smiskol
db37f4187e selfdrived: rename temporary variable
not obvious it's not to be used after
2025-07-13 01:30:19 -07:00
Adeeb Shihadeh
41619a0174 unpin numpy (#35704) 2025-07-12 13:16:14 -07:00
Shane Smiskol
6f1a1b3213 Revert "modeld: autodetect tinygrad backend" (#35701)
Revert "modeld: autodetect tinygrad backend (#35405)"

This reverts commit ce92fd1a0f.
2025-07-12 00:52:18 -07:00
commaci-public
9deac8c800 [bot] Update Python packages (#35669)
* Update Python packages

* update refs

---------

Co-authored-by: Vehicle Researcher <user@comma.ai>
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2025-07-11 19:59:03 -07:00
github-actions[bot]
5dc4254619 [bot] Update translations (#35699)
Update translations

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-07-11 19:54:34 -07:00
Dean Lee
9d7b18c7e3 cabana: Fix slider visual inconsistency by adjusting groove height (#35688)
Fix slider visual inconsistency by adjusting groove height to match handle
2025-07-11 19:49:30 -07:00
Andrei Radulescu
ce92fd1a0f modeld: autodetect tinygrad backend (#35405)
* modeld: autodetect tinygrad backend

* modeld: autodetect tinygrad CUDA backend

* Revert "modeld: autodetect tinygrad CUDA backend"

This reverts commit 0e9755fb3c5c2021de27f4d230bd0a162883bc37.

* comment why llvm@19

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>

* backend from jit

* fix static analysis

* simplify

* compile flags log

---------

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2025-07-11 19:48:35 -07:00
Adeeb Shihadeh
f4b017a75b registration required to go onroad 2025-07-11 19:06:45 -07:00
Shane Smiskol
d1922efa4c Toyota: allow sport gear (#35696)
* Toyota: allow sport gear

* revvy

* add todo
2025-07-11 16:17:07 -07:00
David
5751c61de0 refactor(raylib): Move widgets to the widgets folder (#35680)
* refactor: move button to widgets folder

* refactor: move inputbox to widgets folder

* refactor: move label to widgets folder

* refactor: move list_view to widgets

* refactor: move scroll_panel to widgets

* refactor: move scroller to widgets

* refactor: move toggle to widgets

* refactor: Move widget.py to widgets/__init__.py

* fix: remove extra list_view

* refactor: rearrange some of the imports

* fix: remove extra scroller.py

* fix: Add scroller back

* fix: delete right scroller.py this time

* move scroll_panel back to system/ui/lib

* add todos for label and button
2025-07-11 15:15:39 -07:00
David
d913e4d349 refactor(raylib): Use font file as FontWeight enum value (#35675)
* refactor(raylib): use dictionary to map font weight to file name

* refactor: add space

* refactor: format

* refactor: Switch FontWeight to a StrEnum with font file values
2025-07-11 15:11:38 -07:00
Shane Smiskol
67dc69d3db Fix stock ACC resume signal (#35691)
* use this

* missing

* clean up
2025-07-11 14:59:27 -07:00
Dean Lee
be4e995d9b cabana: fix dark theme detection to work with system theme (#35690)
fix dark theme detection to work with system theme
2025-07-11 09:16:38 -07:00
David
bd5586da55 fix(raylib): Correct icon for metric system toggle (#35681)
fix: update icon for metric system toggle
2025-07-11 01:26:57 -07:00
David
68bc36b1a5 fix(raylib): Show correct alert status (#35687)
* refactor: Import AlertStatus and AlertSize as vars

* fix: Get raw int value of alertSize and alertStatus enums
2025-07-11 01:22:15 -07:00
David
989278dfe7 raylib: Improve close settings x button (#35677)
* update settings close text to use multiplication x character

* add todo

* fix: Add settings close text char to loaded glyphs

* refactor: Use font medium for settings close button text and remove font bold property; change font_)medium property to font_weight

* move close icon down a bit

* fix: offset settings close text in button to correct centering

* fix: remove horizontal offset

* refactor: it's actually a font, so rename back
2025-07-11 01:21:06 -07:00
Maxime Desroches
eb41875675 ci: gate timeout on setup time (#35686)
* gate

* more

* more

* check

* more

* fix

* more

* check

* Revert "check"

This reverts commit c30941bae0cbdb8f908883658bf1b0a4839c2be1.

* back

* more

* like before

* again

* more
2025-07-10 21:07:36 -07:00
Armand du Parc Locmaria
9bd7e3e36d bump opendbc (#35685)
* bump opendbc

* bump less

* bump more

* update refs
2025-07-10 19:40:54 -07:00
Adeeb Shihadeh
fb4d9c542c pigeond: power cycle on reinit (#35684)
* pigeond: power cycle on reinit

* fix

* one more
2025-07-10 19:36:46 -07:00
Armand du Parc Locmaria
3c43a000cd acados: relative rpath (#35624)
* opendbc/SharedLibrary

* acados, mpc don't link to absolute paths

* update opendbc

* include gen path, dont include abs path

* escape escape

* move rpath to relative path in mpc SConscripts

* clean up

* missing libs

* don't update opendbc

* rpath literal and rel_path

* ld library path is for runtime?

* same for darwin

* build on macos

* Update selfdrive/controls/lib/lateral_mpc_lib/SConscript

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update selfdrive/controls/lib/longitudinal_mpc_lib/SConscript

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Revert "Update selfdrive/controls/lib/longitudinal_mpc_lib/SConscript"

This reverts commit a55077f39ea248428e5916b85f24542293edefc9.

* Reapply "Update selfdrive/controls/lib/longitudinal_mpc_lib/SConscript"

This reverts commit 07a6a26292ea7f436ff43fb7efe1ad826eef689b.

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-10 18:59:09 -07:00
Shane Smiskol
501fddac82 raylib ui: add brightness and display power (#35676)
* add constant

* fix initial interaction time

* from ui.cc
2025-07-09 22:04:22 -07:00
Shane Smiskol
a48a08bc80 scroll panel: remove useless return 2025-07-09 21:45:52 -07:00
Shane Smiskol
13c5c4dacc raylib: don't drop touch events on device (#35672)
* mouse thread

* instanciate mouse

* type that

* pc handling

* use mouse event list in widget

* use events in scroll panel

* no stop that

* hack for now

* typing

* run

* clean up
2025-07-09 21:33:19 -07:00
Shane Smiskol
65381279f4 raylib: disable vsync (#35674)
disable vsync
2025-07-09 20:24:05 -07:00
github-actions[bot]
ddfda8a6ec [bot] Update translations (#35668)
Update translations

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-07-09 20:22:40 -07:00
Maxime Desroches
ccc2e9297b pigeond: save almanac periodically (#35661)
* save

* save

* check

* comments

* remove
2025-07-09 19:42:39 -07:00
Shane Smiskol
c9731d6aa9 raylib: show touches flag for debugging (#35671)
* show touches

* type
2025-07-09 17:15:04 -07:00
Maxime Desroches
17d9b12693 ci: don't push process replay diff automatically to Azure (#35670)
remove
2025-07-09 16:56:49 -07:00
Adeeb Shihadeh
2b56a6c37e Revert "tools: update to commaCarSegments v2 (#35660)"
This reverts commit 12a5d8c2db.
2025-07-09 10:58:47 -07:00
Adeeb Shihadeh
f5bbedb5c5 lagd enable in release 2025-07-09 10:53:46 -07:00
Lee Jong Mun
a82ff7536d Multilang: update kor translation (#35666)
Multilang: kor translation update
2025-07-09 08:34:11 -07:00
Shane Smiskol
9f9940c5a3 ui.py: add bg to radar points
fix
2025-07-08 23:10:45 -07:00
eFini
f088b4320c Multilang: update zh translation (#35662) 2025-07-08 18:32:32 -07:00
Jason Young
12a5d8c2db tools: update to commaCarSegments v2 (#35660) 2025-07-08 18:31:44 -04:00
Jimmy
c284edcd33 test: fix test_rotation in test_loggerd.py (#35658)
fix test_rotation
2025-07-08 14:20:34 -07:00
Harald Schäfer
20fdb686ca latcontrol torque: remove option to feed back on localizer (#35659)
* Localizer is too laggy for control

* typo

* typo

* fix test

* fix imports

* Revert "fix imports"

This reverts commit 5074f8050170f974b451e00d9fdc752f09a47d57.

* fix improt

* import
2025-07-08 14:12:46 -07:00
Alexandre Nobuharu Sato
147ce02178 Multilang: update pt-BR translation (#35657) 2025-07-08 14:12:32 -07:00
Bruce Wayne
9aed28a216 bump opendbc 2025-07-08 14:07:16 -07:00
Jimmy
de16c6fbe1 test: RecordFront and RecordAudio (fixed) (#35654)
* record front and record audio tests

* set tests to same group so they are sequential

* add comment
2025-07-08 13:20:00 -07:00
programanichiro
2a5c628d86 Multilang: update ja translation. (#35655)
* 日本語訳、追加&調整。

* 調整。
2025-07-08 10:39:57 -07:00
Shane Smiskol
2b8a956f41 athena: lower upload DHCP priority (#35648)
* try this

* draft

* works

* caps

* should only need https

* fix test
2025-07-07 21:39:00 -07:00
Jimmy
684f770435 Revert "test: RecordFront and RecordAudio" (#35652)
Revert "test: RecordFront and RecordAudio (#35650)"

This reverts commit 1b92dbb46f.
2025-07-07 21:14:22 -07:00
Jimmy
1b92dbb46f test: RecordFront and RecordAudio (#35650)
record front and record audio tests
2025-07-07 21:10:37 -07:00
Adeeb Shihadeh
8e3b5f6210 bump to 0.10 2025-07-07 18:52:18 -07:00
Harald Schäfer
13019da855 Update RELEASES.md 2025-07-07 18:43:30 -07:00
Harald Schäfer
53da5fa6b1 Update RELEASES.md 2025-07-07 18:42:57 -07:00
Harald Schäfer
5b70c78902 bump opendbc (#35649)
* bump opendbc

* update ref
2025-07-07 18:40:06 -07:00
Shane Smiskol
74ebcd2249 Missing NM params for raylib wifi manager (#35646)
stuff missing
2025-07-07 16:30:04 -07:00
commaci-public
9ff322cff8 [bot] Update Python packages (#35644)
* Update Python packages

* revert for now

---------

Co-authored-by: Vehicle Researcher <user@comma.ai>
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2025-07-07 14:48:57 -07:00
github-actions[bot]
3238cd42cd [bot] Update translations (#35643)
Update translations

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-07-07 14:45:48 -07:00
Kacper Rączy
44c8cc4cb0 Revert "lagd: disable in release (#35426)" and "lagd calib: hide on release (#35523)" (#35633)
* Revert "lagd: disable in release (#35426)"

This reverts commit 6f6adc10a8.

* Revert "lagd calib: hide on release (#35523)"

This reverts commit e345f25ce4.

* Fix conflict
2025-07-07 10:18:31 +02:00
Adeeb Shihadeh
a8ec08e5bb modeld: remove redundant process config (#35639) 2025-07-05 13:52:57 -07:00
Jimmy
baaa502b55 move record mic toggle (#35622)
move toggle
2025-07-05 11:33:35 -07:00
Jimmy
a4e4a8afef include audio in qcamera.ts (#35608)
* encode/store audio as part of video file

* better match write_audio() with write()

* handle different FFmpeg versions, flush audio encoder, suppress encoder QAvg/info messages

* use audio_buffer.size() instead of keeping track of size separately

* no more for loops

* save to qcam and rlog

* assert audio support check

* microphone --> soundPressure, audioData --> rawAudioData

* deque much more efficient if buffer ever >> frame_size, ~ same performance for defaults

* cleanup and fix time scaling

* initialize audio separately and pass sample_rate in

* update comments

* ensure header is written before writing audio

* buffer audio frame but do not process before header written

* handle buffer overflow now that we are using as an actual buffer

* spelling
2025-07-05 11:03:13 -07:00
Maxime Desroches
c807ecd7e1 revert fixed pytest seed 2025-07-03 18:57:59 -07:00
Maxime Desroches
8ae0026d8d remove coverage package (#35634)
cov
2025-07-03 18:49:06 -07:00
Maxime Desroches
ebe9ab85af ci: remove codecov (#35631)
* debug

* coverage??

* remove all coverage

* remove old hack

* Revert "remove old hack"

This reverts commit 32ee5f589f98f548afac46a539a4b5ab095630e5.

* remove

* read
2025-07-03 18:28:57 -07:00
Maxime Desroches
1209c2a6c0 ci: format tests yaml (#35632)
format
2025-07-03 17:14:24 -07:00
Adeeb Shihadeh
7e4c9ee612 tici: reduce GPU pwrlevel (#35630) 2025-07-03 12:57:08 -07:00
DevTekVE
2183b4ca7b Add support for generating clang compilation database by default (#35629)
compilation db by default
2025-07-03 10:06:55 -07:00
Harald Schäfer
e503e657bc Model error deprecated with TR (#35628)
* Model error deprecated with TR

* no get speed error

* import
2025-07-02 23:36:41 -07:00
Harald Schäfer
64fd3f9860 Tomb Raider 14 (#35620)
* f7db6a09-43c5-4db9-b856-7fe1a1c231eb/400

* bd99d079-9afb-4af5-9f31-236d5c9ff15f/400

* aggressive tr: 7707a4ca-7d5e-47a2-8760-93b5004695cd/400

* bd99d079-9afb-4af5-9f31-236d5c9ff15f/400

* ae82d7a8-b74d-43b5-ab6d-d72e6040dab3/400

* revert stop distance

* comments
2025-07-02 21:50:55 -07:00
Harald Schäfer
a5630eb7b7 Bump opendbc
* bronco special

* ignore low speed

* fixes

* update ref

* bump

* update ref
2025-07-02 21:25:08 -07:00
Shane Smiskol
f726717c72 Update stale.yaml 2025-06-30 20:34:47 -07:00
commaci-public
5c56037742 [bot] Update Python packages (#35617)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-06-30 15:07:53 -07:00
Adeeb Shihadeh
f79f7b6584 sensord: fix temp scale (#35621) 2025-06-30 14:50:25 -07:00
Adeeb Shihadeh
08be179b8f update release notes 2025-06-30 13:46:06 -07:00
Jimmy
dcd56ae09a store mic audio with toggle (#35595)
* store/send mic audio with toggle

* script to extract audio from logs

* change description and add translation placeholders

* microphone icon

* apply toggle in loggerd

* add legnth and counter

* startFrameIdx counter

* Revert "change description and add translation placeholders"

This reverts commit 7baa1f6de99c6ebe9f9906193da7e83dad79511a.

* send mic data first and then calc

* restore changed description/icon after revert

* adjust fft samples to keep old time window

* remove extract_audio.py since audio is now stored in qcam isntead of rlog

* qt microphone recording icon

* Revert "remove extract_audio.py since audio is now stored in qcam isntead of rlog"

This reverts commit 7a3a75bd8db5376d1e442a3ba931c67550b5f132.

* move extract_audio script and output file by default

* remove length field

* recording indicator swaps sides based on lhd/rhd

* use record icon from comma body

* Update toggle description

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>

* update raylib toggle desc cause I did earlier

* microphone --> soundPressure, audioData --> rawAudioData

* cleanup unused var

* update README

* sidebar mic indicator instead of annotated camera

* improve logic readability

* remove startFrameIdx and sequenceNum

* use Q_PROPERTY/setProperty so that update() is actually called on value change

* specify old id for SoundPressure

* fix typo

---------

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2025-06-30 13:42:21 -07:00
Shane Smiskol
082f4c0aee micd: deprecate unused field (#35618)
deprecate
2025-06-30 11:50:34 -07:00
Adeeb Shihadeh
41f95dc581 separate stale thresholds for draft PRs 2025-06-30 09:09:24 -07:00
eFini
c3c5992f88 modeld: avoid using USB GPU on a AMD laptop (#35602)
modeld: avoid using usb GPU if 'USBGPU' is not in os.environ

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2025-06-29 14:37:51 -07:00
Andrei Radulescu
9e2fc078cb remove thneed from gitignore (#35615) 2025-06-29 08:13:28 -07:00
Andrei Radulescu
0f1a9d5c8c webcam: changes for comma zero (#35464)
* Revert "webcam: remove other cv2 usage (#33236)"

This reverts commit 0cade54015.

* Revert "remove cv2 usage (#33101)"

This reverts commit 144e9e271c.

* Revert "remove opencv-python-headless (#33082)"

This reverts commit 488e08507a.

* webcam: set width, height, fps; flip image; use av reformat

* 1280x720 @ 25fps
2025-06-28 11:30:13 -07:00
Harald Schäfer
713c02cc3f Torque control: more integrator (#35610)
* Torque control: more integrator

* bump opendbc

* update ref
2025-06-27 22:28:59 -07:00
Shane Smiskol
4e094bc740 raylib UI: fix scrolling click behavior (#35609)
see look how nice using base classes are
2025-06-27 02:52:11 -07:00
Kacper Rączy
0218ae82ed Fix openpilot-prebuilt image build (#35607)
Fix tinygrad shell exec
2025-06-27 02:51:20 +00:00
Shane Smiskol
7b35f64049 raylib UI: implement easier to use Scroller (#35606)
* new scroller and widget

start

heck yeah

fix that

clean up

* fuck yeah

* line sep

* fix that

* fix clicking on action

* no custom width

* move all over

* clean up

* more clean up

* rm custom visible too

* more clean up

* lint

* dont use enabled generically yet

* ??
2025-06-26 17:58:34 -07:00
Andrei Radulescu
0a254fbc4e ui: avoid some raylib ui no dongleid errors (#35562)
avoid some ui.py errors on pc
2025-06-26 15:16:20 -07:00
Dean Lee
903f426bb9 ui: fix shader polygon artifacts on device (#35568)
fix shader polygon artifacts on device
2025-06-26 15:13:52 -07:00
Dean Lee
53d757a84f ui: fix raylib log message formatting by handing va_list arguments (#35561)
* fix raylib log message formatting by handing va_list arguments

* dd

* improve&simplify

* chadder says this works

* consis

* clean up

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2025-06-26 15:12:16 -07:00
Jimmy
fa5fce465a ui: scroll to toggle on button press (#35604)
scroll so toggle in view when setCurrentPanel is called with param
2025-06-26 09:22:58 -07:00
Harald Schäfer
d1893ee3eb OS camera calibration (#35603)
* wider narrow

* typo

* whiteapace
2025-06-25 22:08:56 -07:00
Shane Smiskol
56fca1353f raylib: scroll panel cleanup (#35599)
* no d

* we don't even use it

* use a deque

* hmm

* Revert "hmm"

This reverts commit 0203bf7214fa0145d101875006bbae2e8157d6d6.
2025-06-25 15:17:54 -07:00
Shane Smiskol
a22eecd773 raylib: don't use time.time() (#35597)
Update inputbox.py
2025-06-25 14:58:06 -07:00
YassineYousfi
01b3f70c01 Vegetarian Filet o Fish model 🐟 (#35379)
* 7fcb3c70-391e-4bd6-b17d-a011b2845d06/700

* 0fc8b4da-7a24-4469-9428-ae7dcffc3c67/700

* fix

* c16e9412-c448-4589-9ff6-5362be0e9bc3/700

* b2714021-a7bc-41d6-8e1c-bfd20e59cc75/700
2025-06-25 11:18:28 -07:00
Andrei Radulescu
8b8f33f488 webcam: back to opencv (#35522)
* Revert "webcam: remove other cv2 usage (#33236)"

This reverts commit 0cade54015.

* Revert "remove cv2 usage (#33101)"

This reverts commit 144e9e271c.

* Revert "remove opencv-python-headless (#33082)"

This reverts commit 488e08507a.

* update uv.lock

* keep av bgr2nv12

* rename
2025-06-25 10:58:14 -07:00
Dean Lee
d5b5383f1a ui: enable VSYNC by default (#35564)
enable VSYNC by default to fix visual artifacts on device
2025-06-25 01:02:17 -07:00
Shane Smiskol
91792aa767 build raylib: take commit (#35594)
* Update build.sh

* test

* rev
2025-06-23 16:59:41 -07:00
YassineYousfi
c1e0b87059 liquid crystal model 💧❄️ (#35591)
986745e3-b382-41a7-b15a-2cdcb664d072/700
2025-06-23 13:06:15 -07:00
commaci-public
7f6f346c38 [bot] Update Python packages (#35593)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-06-23 10:17:23 -07:00
Shane Smiskol
5e3fc13751 Update TOTAL_SCONS_NODES 2025-06-20 13:46:10 -07:00
Adeeb Shihadeh
885f3f73e0 gps doesn't need to be an onroad alert anymore (#35585) 2025-06-20 11:13:34 -07:00
Maxime Desroches
2c78cfe200 update to latest userdata partition (#35582)
update userdata
2025-06-19 13:13:37 -07:00
Adeeb Shihadeh
4a4f3fce94 rm PYTHONPATH (#35579)
* rm PYTHONPATH

* still need that one for now
2025-06-19 12:36:38 -07:00
Maxime Desroches
5772683432 ci: faster process replay (#35578)
* waste

* update

* again

* we love tesla

* again again
2025-06-19 11:00:41 -07:00
Maxime Desroches
6a37d8a89e fix framereader indent 2025-06-19 10:38:26 -07:00
Harald Schäfer
87a6e369aa Framereader: minor cleanup (#35577)
* No wrapping

* unused test

* another list

* mypy

* cleaner

* Revert "cleaner"

This reverts commit ccc1446b9d649d64b20175e22a66e135c44b21e5.

* mypy
2025-06-19 09:49:51 -07:00
Harald Schäfer
5f3d876aaa model replay: framereader cache (#35576)
* Simpler cache version

* cachetools

* different LRU

* lint

* smaller

* just write LRU

* mypy

* same length
2025-06-18 16:29:22 -07:00
Adeeb Shihadeh
5f559cfcc7 make it easy to copy/paste 2025-06-18 15:50:31 -07:00
Adeeb Shihadeh
42fc89a0e5 update release checklist 2025-06-18 15:48:10 -07:00
YassineYousfi
ccd55d3663 kerrygold model 🧈 (#35499)
* b92dd772-6ae6-4329-880d-7e1cc60dd9da/700

* 6a8a3da8-c264-4f91-b0a6-d04722cccfce/700

* 967279c1-7d3c-4463-9d35-58e0311a5f57/700

* flake
2025-06-18 09:21:05 -07:00
Shane Smiskol
25f5ec46d9 raylib ui: global Device class (#35573)
* device

* works

* clean up

* and

* more

* clean

* fixy

* cu

* slightly smaller
2025-06-17 19:49:02 -07:00
github-actions[bot]
c460f5150f [bot] Update translations (#35565)
Update translations

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-06-16 13:30:00 -07:00
commaci-public
b18037c38a [bot] Update Python packages (#35566)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-06-16 10:47:04 -07:00
programanichiro
b5d5fa755f Multilang: update ja translation. (#35560)
* japanese translation

* スペース要らない。
2025-06-14 11:20:18 -07:00
Maxime Desroches
f9792fe717 AGNOS 12.4 (#35558)
agnos12.4
2025-06-13 22:55:40 -07:00
Adeeb Shihadeh
03f3d6ccf1 update setup instructions 2025-06-13 16:52:08 -07:00
Adeeb Shihadeh
4eb64561f2 remove old workflow doc 2025-06-13 16:46:46 -07:00
Maxime Desroches
762f11c620 setup: warning for custom software (#35556)
* custom warn

* Update SConscript

* bump
2025-06-13 14:43:16 -07:00
Dean Lee
2a9e35609b ui: increase settings nav btn height (#35553)
increase nav btn height
2025-06-13 14:12:20 -07:00
Dean Lee
6352589902 ui: open device panel on settings click and send userFlag on flag click (#35554)
* open device panel when settings button clicked

* send userFlag on flag clicked

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2025-06-13 14:11:33 -07:00
commaci-public
7293a19472 [bot] Update Python packages (#35552)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-06-13 13:57:35 -07:00
github-actions[bot]
f4df569064 [bot] Update translations (#35551)
Update translations

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-06-13 13:57:02 -07:00
Shane Smiskol
2706179f84 Revert "raylib ui: reduce DM drawing (#35547)" (#35557)
* Revert "raylib ui: reduce DM drawing (#35547)"

This reverts commit 7b8d6b6eb7.

* actually fix check
2025-06-13 13:56:13 -07:00
Shane Smiskol
25e123a23a raylib ui: common state update function (#35546)
* add _update_state

* nonlya

* visible already does this for us!

* do hud renderer and exp button

* temp

* this really needs some type of timer like QT

* this really needs some type of timer like QT

* todo

* use in model renderer

* Revert "use in model renderer"

This reverts commit d35f774155c9875209d06b8cd0b4849b1d8a60c4.

* no passing rect

* cl

* unused now
2025-06-12 21:22:13 -07:00
Shane Smiskol
f275d6d892 raylib: log prime status failure to fetch 2025-06-12 21:05:36 -07:00
Shane Smiskol
62b301ae76 raylib ui: fix Firehose param caching (#35549)
* oof

* fixx
2025-06-12 21:04:42 -07:00
Shane Smiskol
2a1939f37a raylib: fix Firehose parsing v2 2025-06-12 20:21:01 -07:00
Shane Smiskol
7b8d6b6eb7 raylib ui: reduce DM drawing (#35547)
* reduce?

* clean up
2025-06-12 20:02:27 -07:00
Shane Smiskol
e9fe40755c raylib ui: fix Firehose param loading (#35548)
fix
2025-06-12 17:44:20 -07:00
Shane Smiskol
cd657f35f0 ui: update layout rects on change (#35545)
* update_layout_rects

* check prev

* about it

* need this since touch can change :(

* looks nicer

* Revert "looks nicer"

This reverts commit 8f36c92675db66695f22f93a01682426db9c05e8.
2025-06-12 16:53:09 -07:00
Shane Smiskol
98c34c4b7d Raylib: generic Widget visibility (#35543)
* generic visibility

* clean up

* fix op lint

* ? why do we care if it's None

* no need to make it too generic

* do driver state

* noise

* clean up

* draft on listview

* waiting for deanlees listview refactor - Revert "draft on listview"

This reverts commit 8ea4fa2a68361079bc79ac99e67c5cb58068daa4.

* rm demo
2025-06-12 15:23:02 -07:00
Shane Smiskol
3a10bdb1e7 Revert "ui: refactor ListView for generic widget support and simplified item architecture" (#35542)
Revert "ui: refactor ListView for generic widget support and simplified item …"

This reverts commit 32ae9efb3d.
2025-06-12 14:17:04 -07:00
Shane Smiskol
5138217673 raylib ui: store rects (#35538)
* simple version

* use it

* use it in one place
2025-06-12 14:11:11 -07:00
Dean Lee
32ae9efb3d ui: refactor ListView for generic widget support and simplified item architecture (#35536)
refactor list view

apply reviews
2025-06-12 08:55:13 -07:00
Dean Lee
723a52626d ui: simple HTML parser for regulatory Views (#35525)
* simple HTML parser for regulatory Views

* format

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2025-06-11 21:52:34 -07:00
Dean Lee
f3d0a9ea13 ui: fix QR code refresh tracking in pairing dialog (#35529)
fix QR code refresh tracking

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2025-06-11 21:36:24 -07:00
Dean Lee
9d8e4acec9 ui: setup widget->firehose settings navigation (#35531)
* setup widget->firehose settings navigation

* cleanup

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2025-06-11 21:21:59 -07:00
Dean Lee
79319d2447 ui: add driving personality selector to settings (#35524)
* Add driving personality selector to settings

* icon

* format

* type

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2025-06-11 21:18:07 -07:00
commaci-public
58763f4551 [bot] Update Python packages (#35535)
* Update Python packages

* fix xdist issue

* cmt

---------

Co-authored-by: Vehicle Researcher <user@comma.ai>
Co-authored-by: Shane Smiskol <shane@smiskol.com>
2025-06-11 20:28:48 -07:00
Shane Smiskol
fcebb5eb9f fix repo maintenance (#35534)
* ?

* . can't be used since then it will be modeld folder
2025-06-11 17:31:36 -07:00
Shane Smiskol
f7ce5fb94c Remove extra newlines in translations 2025-06-11 17:27:41 -07:00
Shane Smiskol
1562b88f63 Move format_fingerprints.py to opendbc (#35532)
* mv

* format fingerprints

* fixx

* no cereal

* bump
2025-06-11 15:30:45 -07:00
Dean Lee
3d987cb9b5 ui: fix wrong dash character (#35530)
Fix wrong dash character
2025-06-11 11:26:14 -07:00
Shane Smiskol
e345f25ce4 lagd calib: hide on release (#35523)
* hide on release

* pull out
2025-06-10 16:16:05 -07:00
Dean Lee
03d2e7b2b0 ui: extract Widget base class to separate lib/widget.py (#35520)
* extract Widget base class to separate lib/widget.py

* format

* format

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2025-06-10 14:32:20 -07:00
Dean Lee
5ebbb46fdf ui: increase drag threshold to 12 pixels (#35521)
increase drag threshold to 12 pixels
2025-06-10 10:12:06 -07:00
Dean Lee
2017bf970f ui: implement ssh key control (#35518)
implement ssh key control
2025-06-10 01:49:47 -07:00
Shane Smiskol
c1794e6f83 ui: expose lateral control learning state (#35519)
* add lagd

* add live torque params

* clean up

* too many openpilot is's

* add back

* fix weird pattern causing segfault

* cu

* 10 more lines for "all complete"

* Revert "10 more lines for "all complete""

This reverts commit de1ad0b7386f4c5d9967ea733edbe5bf1df5039c.

* one line
2025-06-10 01:48:46 -07:00
Shane Smiskol
a9e8649137 ui: update calibration description when resetting 2025-06-10 01:41:53 -07:00
Shane Smiskol
bfa3f3cccb Add calPerc progress tracking for torque calibration (#35512)
* Add calPerc field and torque progress

* Fix torqued test style and CarParams usage

* test: remove unused numpy import

* move here

* trying all combinations to see what's most linear

* clean up with best method

* no no

* epic

* clean up

* last min not needed

* doesn't hurt

* list comp
2025-06-10 00:22:13 -07:00
Harald Schäfer
d9b6c16037 Cleanup framereader (#35513)
* squash

* misc cleanup

* no LLM garbage

* misc fixes

* typo

* fix CI

* fix hints

* LLM soo wordy

* improve
2025-06-09 22:39:35 -07:00
Shane Smiskol
75b6ec68c6 Add lagd calibration percentage (#35511)
* lagd: publish calibration percentage

* Refine lagd calibration progress

* stash

* cleanup (match calibrationd calculation logic)

* no no no

* nor

* two lines
2025-06-09 22:10:47 -07:00
Dean Lee
1c11e28448 ui: fix path self-intersections on hills (#35514)
fix path self-intersections on hills
2025-06-09 21:29:25 -07:00
eFini
14166c980e Multilang: update zh translation (#35516) 2025-06-09 20:32:57 -07:00
Dean Lee
61b8f6f478 ui: Implement core device settings functionality with enhanced dynamic controls (#35507)
* implement device settings functionality with power controls

* format

* Update selfdrive/ui/layouts/settings/device.py

Co-authored-by: Shane Smiskol <shane@smiskol.com>

* Update selfdrive/ui/layouts/settings/device.py

Co-authored-by: Shane Smiskol <shane@smiskol.com>

* add comment back

* add comments back

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2025-06-09 14:45:29 -07:00
programanichiro
d3b300a148 Multilang: update ja translation. (#35506)
* ja translation

* 文言調整。
2025-06-09 14:43:50 -07:00
Dean Lee
ffb677b53d ui: [fix] only show driver state icon when no alert is display (#35508)
only show driver state icon when no alert is display
2025-06-09 11:36:45 -07:00
Dean Lee
fc27423ac2 ui: fix Immediate ALERT_STARTUP_PENDING after going onroad (#35509)
fix timeout alerts could appear immediately after going onroad
2025-06-09 11:35:19 -07:00
Dean Lee
08aeeabc9b ui: add FirehoseLayout to settings (#35505)
add FirehoseLayout
2025-06-09 09:56:56 -07:00
Dean Lee
e015e319b7 ui: [fix] remove unused gui_label import in HomeLayout (#35510)
fix lint issue
2025-06-09 09:53:13 -07:00
Dean Lee
41db89afdc ui: add setup widget to handing device pairing and firehose mode prompt (#35503)
* add setup widget to handing device pairing and firehose mode prompt

* format

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2025-06-08 22:19:36 -07:00
Shane Smiskol
f70592b7e9 raylib: format from today's prs 2025-06-08 22:16:45 -07:00
Shane Smiskol
9153f97900 PrimeWidget: redeclaring __init__ unneeded
for https://github.com/commaai/openpilot/pull/35496
2025-06-08 22:07:46 -07:00
Dean Lee
7b4e2e2430 ui: add ExperimentalModeButton to the home layout for toggling between driving modes (#35504)
add ExpermentalModeButton
2025-06-08 21:55:30 -07:00
Dean Lee
9a1e58102d ui: display subscription status based on prime state (#35502)
display subscription status based on PrimeState
2025-06-08 20:55:38 -07:00
Dean Lee
5df875390f ui: add pairing device dialog (#35501)
* add pairing device dialog

* refreshing QR code every 5 minutes

* fix lint issues

* int
2025-06-08 20:15:17 -07:00
Dean Lee
0e2f69883b ui: implement uninstall software in settings (#35494)
* implement uninstall software in SoftwareLayout

* use enum
2025-06-08 20:08:11 -07:00
Dean Lee
f824e6c0ec ui: implement reset calibration feature in device settings (#35479)
* implement reset calibration feature in device settings

* check confirm dialog result

* fix null check

* use enum

* use enum
2025-06-08 20:08:01 -07:00
Dean Lee
191d0d429e ui: enhanced ListView with improved actions, dynamic content, and better UX (#35485)
improve list view
2025-06-08 19:31:55 -07:00
Dean Lee
af48d23a68 ui: add PrimeState class (#35497)
* add PrimeState

* move to lib
2025-06-08 19:22:32 -07:00
Dean Lee
0c6856cf03 ui: implement driver camera preview in settings (#35480)
* implement driver camera preview in settings

rebase master

* rename to dialog
2025-06-08 19:22:23 -07:00
Dean Lee
e93a7234bc pyui: add DialogResult enum (#35500)
add DialogResult enum
2025-06-08 19:12:56 -07:00
Dean Lee
ce93a7215d add qrcode python package (#35498)
* add qrcode python package

* lock

* relock

---------

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2025-06-08 13:15:15 -07:00
Dean Lee
f0f249ecf8 ui: implement change language in settings (#35481)
implement change language in settings
2025-06-08 13:13:01 -07:00
Dean Lee
a3daca8fd5 ui: implement PrimeAdWidget (#35496)
implement PrimeAdWidget
2025-06-08 13:05:30 -07:00
Adeeb Shihadeh
6d09b2405e raylib: fix shaders on macOS (#35411)
* fix shaders

* runs now
2025-06-07 20:37:43 -07:00
Shane Smiskol
8220599dd8 raylib: onroad callback setter (#35493)
* onroad callback setter

* fix name
2025-06-06 23:18:06 -07:00
Shane Smiskol
7c5155590f raylib: simpler callbacks (#35488)
* simpler no current callback

* clean up

* back

* fixx

* clean up
2025-06-06 23:10:34 -07:00
Shane Smiskol
e0a2a7af64 raylib: use consistent mouse button constant 2025-06-06 23:08:24 -07:00
Shane Smiskol
9a2ec552f1 raylib toggles: on mouse release 2025-06-06 23:05:51 -07:00
Shane Smiskol
2c59b5f8c6 raylib: common mouse press hook (#35489)
* something like this

* need these

* rest

* another pr

* what is this merge conflict

f

* fix mouse down

* rm that!

* fix that

* rearrange

* fix bug where mouse held down on widget, dragged off, then let go

* temp

* fix that

* missing init
2025-06-06 23:00:55 -07:00
Shane Smiskol
db5e413049 Experimental button should be raylib widget (#35491)
should be widget
2025-06-06 22:53:44 -07:00
Dean Lee
2031a33188 ui: add experimental mode toggle button with visual indicator (#35446)
* add experimental mode toggle button with visual indicator

* merge master

* implement a temporary state hold after mouse click"

* move to seperate class

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2025-06-06 22:14:18 -07:00
Shane Smiskol
7875cc4713 raylib: consistent use of rect in render function (#35490)
* updater: use rect

* spinner

* and text

* better name

* simple

* also simple
2025-06-06 22:11:41 -07:00
Dean Lee
c3aa7cffed ui: add auto camera switching based on speed in experimental mode (#35437)
* add auto camera switching based on speed in experimental mode

* fix conflit
2025-06-06 21:10:51 -07:00
Shane Smiskol
c145de96f9 raylib: match QT UI panel order (#35487)
match QT UI panel order
2025-06-06 20:21:11 -07:00
Shane Smiskol
4bbbf51236 Fix raylib issue (#35486)
* ugh fix that

* our linting is trash
2025-06-06 20:20:58 -07:00
Shane Smiskol
3ce87d0ac9 raylib: base widget class (#35484)
* use some widgets

* consistent name draw -> render

* more

* rest
2025-06-06 19:32:03 -07:00
Shane Smiskol
a1ee5f5ba8 raylib spinner: temp fix crash 2025-06-06 17:18:50 -07:00
Shane Smiskol
29830440b4 format raylib (#35483)
* format raylib

* not really sure what this is
2025-06-06 15:43:47 -07:00
Dean Lee
541bd4d4d9 ui: switch spinner and text window back to standalone process (#35470)
switch spinner and text window back to standalone process
2025-06-06 13:20:05 -07:00
Dean Lee
6767bfce44 ui: add ModalOverlay system for unified modal dialog management (#35478)
add ModalOverlay
2025-06-06 13:18:07 -07:00
Adeeb Shihadeh
75434b10b9 add that back 2025-06-06 13:13:30 -07:00
Adeeb Shihadeh
63e7a0ca15 Revert "feat: remove esim.nmconnection, use AGNOS lte conn (#35389)"
This reverts commit 255b606fe4.
2025-06-06 13:09:09 -07:00
ZwX1616
ba2d2677c1 modeld: no hardcoded frame names (#35476)
* from model

* juggle
2025-06-06 13:05:54 -07:00
Dean Lee
e389b19ed7 system/ui: fix setup error: 'WifiManagerWrapper' object has no attribute 'request_scan' (#35477)
remove request_scan()
2025-06-06 11:24:41 -07:00
Adeeb Shihadeh
ce9d1683a5 bump to 0.9.10 2025-06-05 16:58:44 -07:00
Shane Smiskol
2000f9aff3 raylib: ban non-cached measure_text_ex (#35462)
* add

* use it

* Update pyproject.toml

* many more

* comment
2025-06-05 14:37:12 -07:00
Dean Lee
3a622cbe25 ui: add WiFi manager to settings (#35454)
add WiFi manager to settings
2025-06-05 13:16:38 -07:00
Dean Lee
6b59f67ab5 ui: implement home layout with fully functional offroad alerts (#35468)
implement home layout with offroad alerts
2025-06-05 13:16:07 -07:00
Dean Lee
cb22be6079 ui: add support for enabling/disabling the toggle (#35471)
add support for enabling/disabling the toggle
2025-06-05 13:15:12 -07:00
Dean Lee
23ea85dca6 ui: kick watchdog (#35460)
* kick watchdog

* use global

* use monotonic
2025-06-05 13:14:57 -07:00
Adeeb Shihadeh
8aadf02b2f selfdrived: more robust NVMe check 2025-06-05 12:51:21 -07:00
Adeeb Shihadeh
1668a46b6a bump submodules 2025-06-05 11:42:05 -07:00
Dean Lee
459179ff6c ui: fix settings close button shape and press state (#35469)
fix button rounding and pressed state display in settings
2025-06-05 11:01:49 -07:00
Andrei Radulescu
ef6719f24e webcam: make driver camera optional (#35455)
* webcam: driverCamera optional

* webcam: update README
2025-06-05 10:23:51 -07:00
Andrei Radulescu
3ad74b440c macos: no logcatd and proclogd (#35457)
* don't build proclogd on mac

* don't run logcatd and proclogd on mac
2025-06-05 10:23:27 -07:00
Dean Lee
05fa135be6 ui: make the toggle color match QT (#35466)
make the toggle color match QT
2025-06-05 10:13:44 -07:00
Harald Schäfer
a8639d3feb rgb is default (#35467)
* rgb is default

* change dummy default
2025-06-04 23:40:41 -07:00
Shane Smiskol
0d7b157965 bump opendbc (#35465)
bump
2025-06-04 15:10:52 -07:00
Dean Lee
462301d2e0 ui: implement smooth camera stream switching with seamless transitions (#35449)
implement smooth camera stream switching with seamless transitions

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2025-06-04 14:20:52 -07:00
Dean Lee
8b516abb31 ui: replace rl.measure_text with measure_text_cached in sidebar (#35450)
Replace rl.measure_text with measure_text_cached
2025-06-04 14:14:40 -07:00
Dean Lee
0360926962 ui: fill the bg with disengaged color if no frame (#35451)
fill the bg with disengaged color if no frame

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2025-06-04 14:08:29 -07:00
Dean Lee
96cfd5aaf7 ui: add ListView component and settings layouts with declarative UI (#35453)
* add flexible ListView component

* fix crash

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2025-06-04 14:06:50 -07:00
Dean Lee
88466fb62f ui: improve onroad layout transitions (#35458)
improve onroad layout transitions
2025-06-04 13:55:03 -07:00
Dean Lee
912160c429 ui: improve calibration height initialization (#35459)
improve calibration height initialization
2025-06-04 13:54:45 -07:00
Dean Lee
2e41d959ac ui: add main UI entry point (#35422)
* add new main UI entry point

* cleanup

* mv to selfdrive/ui

* fix imports

* handle_mouse_click

* use ui_state

* remove ui_state from gui_app

* setup callbacks

* handle clicks

* put layouts in a dict

* update state in render

* rebase master

* implement settings sidebar

* rename files
2025-06-03 23:12:36 -07:00
Dean Lee
7ee50e7b87 system/ui: add text measurement caching (#35436) 2025-06-03 23:07:29 -07:00
Dean Lee
fc0bb72147 selfdrive/ui: enable conflate mode in VisionIpcClient to prevent stale frame rendering (#35445)
use conflate mode in VisionIpcClient to prevent stale frame rendering
2025-06-03 23:06:46 -07:00
Shane Smiskol
4c8f15221e Tesla: move safety out of debug (#35447)
bump
2025-06-03 22:07:52 -07:00
Shane Smiskol
2dcab07be7 Revert "selfdrive/ui: add experimental mode toggle button with visual indicator" (#35442)
Revert "selfdrive/ui: add experimental mode toggle button with visual indicat…"

This reverts commit ae8076e729.
2025-06-03 14:59:07 -07:00
Shane Smiskol
fb6243688d raylib: rename DEBUG_FPS 2025-06-03 14:53:26 -07:00
Dean Lee
68b043606c ui: fix alert timeout detection using wrong FPS constant (#35438)
fix alert timeiout detection using wrong FPS constant
2025-06-03 14:52:43 -07:00
Dean Lee
ae8076e729 selfdrive/ui: add experimental mode toggle button with visual indicator (#35439)
add experimental mode toggle button with visual indicator
2025-06-03 14:51:56 -07:00
Shane Smiskol
928dc6259b Revert "ui: fill the bg with disengaged color if not started" (#35441)
Revert "ui: fill the bg with disengaged color if not started (#35434)"

This reverts commit 10dc40db04.
2025-06-03 14:51:15 -07:00
Dean Lee
da58feb869 system/ui: fix wifi network icon resize artifacts (#35440)
fix wifi network icon resize artifacts
2025-06-03 13:08:10 -07:00
Dean Lee
10dc40db04 ui: fill the bg with disengaged color if not started (#35434)
fill the bg with disengaged color if not started
2025-06-03 11:07:42 -07:00
Harald Schäfer
5505338ffb model replay: less frames and less complexity (#35427)
* Revert "ci: faster model_replay (#34036)"

This reverts commit 847a5ce1f3.

* fix conflict

* trigger on test change

* zst

* give start and end frame

* unused flags

* no print

* whitespace

* fix plotting

* slice correct

* no print

* Just start from beginning
2025-06-02 21:54:37 -07:00
Dean Lee
f78ba72a85 ui: add timeout check for unresponsive system detection (#35433)
add time out to check if messages have stopped arriving
2025-06-02 21:32:13 -07:00
Shane Smiskol
6f6adc10a8 lagd: disable in release (#35426)
* disable in release

* pass

* one liner

* Update selfdrive/locationd/lagd.py

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* test

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-06-02 21:29:05 -07:00
Alexandre Nobuharu Sato
108790870e Multilang: Update pt-BR translations. (#35428) 2025-06-02 21:18:34 -07:00
Lee Jong Mun
9568f64c57 Multilang: kor translation update (#35429)
kor translation update
2025-06-02 21:15:08 -07:00
Shane Smiskol
8695134b08 Faster lagd test (#35430)
* disable in release

* pass

* one liner

* saves 1s so far

* clean up

* fix

* Revert "one liner"

This reverts commit 5f419b5692565fc7ddc2abe9a40112fdc47ffe9e.

Revert "pass"

This reverts commit 47d260e76a9cb1310b95ea1ff83ab7f8808be96d.

Revert "disable in release"

This reverts commit 1782718b61891d87cbb9daa1c4c65314f505cee4.

* clean up

* there's more

* no mocker!
2025-06-02 21:14:53 -07:00
Dean Lee
28bf362f69 ui: add safety check to prevent ui overlay access to invalid data (#35432)
check ui_state.started
2025-06-02 21:13:21 -07:00
Shane Smiskol
1a84b05bde lagd: make method static 2025-06-02 20:53:11 -07:00
Dean Lee
29afd667cc move onroad/driving stuff from system/ui to selfdrive/ui (#35425)
* mv system/ui/onroad->selfdrive/ui/onroad

* mv ui_state

* fix import path

* fix imports

* mv cameraview

* remove from application
2025-06-02 13:27:17 -07:00
github-actions[bot]
bb36b6687c [bot] Update translations (#35424)
Update translations

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-06-02 11:44:00 -07:00
Dean Lee
d46066225d system/ui: add centralized UIState singleton for global state management (#35397)
* add centralized UIState singleton for global state management

* safely import ui_state

* merge master

* merge master
2025-06-02 10:18:44 -07:00
Dean Lee
b59841329b system/ui: refactor AlertRenderer for improved maintainability and consistency (#35421)
refactor alert
2025-06-02 09:07:19 -07:00
Dean Lee
0707114264 system/ui: optimize point allocation, cllipping, and HSLA Color Conversion in model renderer (#35423)
* faster hsla_to_color

* pre-allc points

* use np.clip

* re-alloc points
2025-06-02 08:56:47 -07:00
Dean Lee
d488529a94 system/ui: add font_weight parameter to gui_text_box (#35420)
add font_weight parameter to gui_text_box
2025-06-02 08:48:35 -07:00
Shane Smiskol
69076c50d8 bump opendbc (#35419)
bump
2025-06-01 23:15:23 -07:00
Adeeb Shihadeh
ad58fea2f0 no more pylint (#35418)
* no more pylint

* bump opendbc
2025-06-01 16:34:22 -07:00
Dean Lee
1e702de434 system/ui: add face detection box and driver state icon to DriverCameraView (#35410)
add face detection box and driver state icon to DriverCameraView
2025-06-01 12:39:41 -07:00
Dean Lee
6ece69610b systme/ui: add global ARC_POINT_COUNT and ARC_ANGLES to DriverState (#35415)
optimize arc rRendering with Pre-computed values
2025-06-01 12:39:22 -07:00
Dean Lee
79f3f30c63 system/ui: fix cruise disabled state displaying "?" instead of "–" (#35416)
fix curise disabled state showed '?'
2025-06-01 12:39:09 -07:00
Dean Lee
74541e677c system/ui: fix timeout logc and add pre-defined alerts (#35417)
fix timeout logc and add pre-defined alerts
2025-06-01 12:37:57 -07:00
Dean Lee
1935871267 system/ui: add stream switching capability to CameraView (#35414)
add stream switching capability to CameraView
2025-06-01 12:37:36 -07:00
Adeeb Shihadeh
5605c398a2 Revert "cereal: fixup build deps"
This reverts commit e9f917836b.
2025-06-01 12:37:12 -07:00
Dean Lee
e734413a21 system/ui: fix path clip issues (#35409)
fix path clip issues
2025-05-31 10:50:41 -07:00
Adeeb Shihadeh
e9f917836b cereal: fixup build deps 2025-05-31 10:49:46 -07:00
Alexandre Nobuharu Sato
d2f417ee63 Multilang: update pt-BR translation. (#35394)
Multilang: update pt-BR translations
2025-05-31 10:17:55 -07:00
Dean Lee
d992d138bf system/ui: enhance polygon fill with AABB clipping and fixed fill color issues (#35408)
enhance polygon fill with AABB clipping and fixed fill color issues
2025-05-31 10:17:15 -07:00
Dean Lee
04115b6417 system/ui: Increase font size to reduce edge aliasing (#35401)
improve text's antialiasing
2025-05-30 23:44:13 -07:00
Maxime Desroches
62a7a19d27 Revert "system/ui/: add face detection box and driver state icon to DriverCameraView" (#35403)
Revert "system/ui/: add face detection box and driver state icon to DriverCam…"

This reverts commit 5e4a4ecec8.
2025-05-30 23:43:28 -07:00
Dean Lee
5e4a4ecec8 system/ui/: add face detection box and driver state icon to DriverCameraView (#35402)
add face detection box and driver state icons
2025-05-30 23:42:35 -07:00
programanichiro
7cd6db6f19 Multilang: update ja translation. (#35399)
ja translation
2025-05-30 21:03:07 -07:00
Adeeb Shihadeh
b4c9964217 gpu box test script 2025-05-30 15:44:17 -07:00
Adeeb Shihadeh
2f80854644 sensord: rewrite in Python (#35353)
* py sensord

* fix up mmc

* temp

* port over accel

* lil more

* kinda works

* rm that

* gpiochip

* mostly there

* lil more

* lil more

* irq timestamps

* fix ts

* fix double deg2rad

* test passes

* fix up mypy

* rm one more

* exception

* lint:

* read in all events

* bump that

* get under budget:

* accel self test

* gyro self-test

* keep these readable

* give it more cores

* debug

* valid

* rewrite that

---------

Co-authored-by: Comma Device <device@comma.ai>
2025-05-30 13:31:07 -07:00
Dean Lee
45f90b1a55 system/ui: add animation to toggle (#35392)
add animation to toogle
2025-05-30 12:57:37 -07:00
Dean Lee
ea9ff45ccb system/ui: fix indentation (#35391)
fix indentation
2025-05-30 11:31:03 -07:00
Trey Moen
c4f2cf5299 feat(esim): enable eSIM profile hotswapping (#35324)
* reboot

* no sleep

* test

* back

* wait for sim

* simpler

* retry

* Revert "retry"

This reverts commit f1297160f3c085f43fc0356abb51fb52fa93ea2c.
2025-05-30 11:29:17 -07:00
Dean Lee
1221821761 system/ui: migrate c++ alert renderer to python (#35386)
* rebase

* cache metrics

* measure text

* type hint

* improve

* fix roundness

* rebase
2025-05-30 11:03:38 -07:00
Trey Moen
255b606fe4 feat: remove esim.nmconnection, use AGNOS lte conn (#35389)
* feat: remove esim.nmconnection, use AGNOS lte conn

* unused

* remove old
2025-05-30 10:54:07 -07:00
Dean Lee
e51243f2cd system/ui: remove todo and add comment (#35390)
remove todo and add document
2025-05-30 10:53:39 -07:00
Dean Lee
a3fab434a4 system/ui: migrate c++ HudRenderer to python (#35359)
* port c++ HudRenderer to python

* cache font metrics

* cache fonts

* improve

* fix bg

* refactor

* rebase

* fix
2025-05-30 09:53:11 -07:00
Dean Lee
e6eef5d9d0 system/ui: implement driver monitoring UI (#35358)
* pyui_driver_state_reander

* ddd

* draw_spline_linear

* pre-calculate the face keypoints transform

* remove int convert

* improve

* use draw_spline_linear

* pre-calc points

* state updated

* render to texture

* Revert "render to texture"

This reverts commit 27be710f4c7aca3bb05e94ad69635d292e799ff4.

* cleanup

* dd

* new dataclass

* cleanup

* use content_rect
2025-05-30 09:35:10 -07:00
Dean Lee
29010cae23 system/ui: optimize ModelRenderer (#35369)
* optimize ModelRenderer with vectorized operations

* pre-calculate the exp mode colors

* cleanup

* improve batch map line to polygon

* pre-calc leads
2025-05-30 09:34:56 -07:00
Dean Lee
b8f3e7bcf0 system/ui: improve road view with driving state border and clipping (#35385)
improve road view with driving state border and clipping
2025-05-30 07:37:07 -07:00
Dean Lee
e42044b833 system/ui: fix lint error (#35387)
fix lint error
2025-05-30 07:36:05 -07:00
Brett Sanderson
6e9e43d03b Fix CI for external repositories (#35382) 2025-05-29 23:18:44 -07:00
Dean Lee
0d527c2409 system/ui: fix the issue of missing path segments (#35383)
match c++ version
2025-05-29 20:51:15 -07:00
Shane Smiskol
a385ed59cf Invalid LKAS setting alert: custom text per brand (#35377)
* draft

* use it

* friendly

* clean up

* CC

* Apply suggestions from code review

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>

* Update selfdrive/selfdrived/events.py

---------

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2025-05-29 14:24:39 -07:00
Maxime Desroches
ae5e87e915 bump panda 2025-05-29 13:43:38 -07:00
Dean Lee
2d6662ae9f system/ui: match experimental path rendering with C++ version (#35380)
match draw_path  with c++ implementation
2025-05-29 13:07:43 -07:00
Dean Lee
ad0e556236 system/ui: fix gradient rendering to match Qt linear gradients (#35378)
Fix shader_polygon gradient rendering to match Qt linear gradients
2025-05-29 11:32:08 -07:00
YassineYousfi
618645f1d7 Revert "Vegan Filet o Fish model " (#35376)
Revert "Vegan Filet o Fish model  (#35240)"

This reverts commit b4d6b52edd.
2025-05-28 20:45:53 -07:00
Shane Smiskol
51c437c61e split 2025-05-28 19:18:03 -07:00
Shane Smiskol
deebbd3e77 add missing Fords to release notes 2025-05-28 19:16:15 -07:00
Adeeb Shihadeh
fe713b867f CI: fix nightly build (#35374)
* CI: fix nightly build

* schedule

* simplify

* cleanup
2025-05-28 19:02:00 -07:00
Shane Smiskol
1db3644a2b car interfaces: pass in if release build (#35373)
* dashcam for release

* get car

* fixes

* more fixes

* bump

* bump
2025-05-28 17:41:38 -07:00
Shane Smiskol
5bf81048bb bump opendbc (#35372)
bump
2025-05-28 14:58:48 -07:00
Dean Lee
26c61d8674 system/ui: fix incorrect THROTTLE_COLOR (#35370)
fix throttle colors
2025-05-28 13:07:19 -07:00
Dean Lee
db8ecf183f system/ui: fix rapid path color transition by correcting hardcoded increment (#35368)
refactor color blending with configurable transition duration
2025-05-28 11:35:04 -07:00
Dean Lee
3682fac7b6 system/ui: optimizes the draw_polygon() and improving code maintainability (#35366)
improve draw_polygon
2025-05-28 09:29:33 -07:00
Dean Lee
9460ff8f30 system/ui: fix gradient colors and path stops in path rendering (#35367)
Correct gradient colors and direction in path rendering
2025-05-28 09:26:38 -07:00
Dean Lee
6c28575573 system/ui: GPU-accelerated polygon rendering with anti-aliasing and gradients (#35357)
* Add GPU-accelerated polygon rendering with anti-aliased edges and gradient support

* use np array

* update ModelRenderer

* ndarray

* cleanup

* improve shader

* Revert "improve shader"

This reverts commit 992247617a9947bceb365f7b056fed6ebed3793d.

* improve shader for smoother edges
2025-05-27 21:47:55 -07:00
Maxime Desroches
feaef58188 AGNOS 12.3 (#35362)
12.3
2025-05-27 21:20:30 -07:00
Shane Smiskol
3d53df644e Live calibration reset button (#35364)
* allow reset button too

* better lang

* copy

* fix

* meh we don't do this anywhere else
2025-05-27 20:27:54 -07:00
Shane Smiskol
b119006f6a Cycle onroad when changing offroad-only toggles (#35361)
* bad

* Revert "bad"

This reverts commit 6b5475dd90c3a29c00d946c94d726563cbec6179.

* notify param

* doesn't need to live in low level paramcontrol, rename param

* should work

* fix

* disable while engaged

* note

* fix

* just in case

* param is cleared by manager -- this was all to ensure manager got our `started` transition

* clean up

* and that

* rm

* negative better than generic thing

* timer is needed as it's not clean to fix case where you toggle while no ignition -- you can't go onroad + this allows some nice tolerance time for user to switch 2 toggles

* these aren't required or useful

* add to description

* no longer unlive

* allow reset button too

* another pr -- Revert "allow reset button too"

This reverts commit 5d03edddc80d8625ceba5d5178b2781e9d10d9c9.

* rm space from i18n string

* car is powered on
2025-05-27 20:20:38 -07:00
Shane Smiskol
83ba27d7c0 Update lane departure warning toggle live (#35363)
update LDWS live
2025-05-27 19:42:02 -07:00
Dean Lee
3a7f0b66aa system/ui: fix remaining issues in WiFi Manager (#35301)
* WIP

* fix callback

* fix connecting network displayed as Connected

* thread safe states

* fix state sync issues

* fix callback
2025-05-27 15:01:53 -07:00
Dean Lee
28da563386 system/ui: render model output with new ModelRenderer class (#35356)
render model output with new ModelRenderer class
2025-05-27 12:48:33 -07:00
Dean Lee
7511983ccb system/ui: cache shader location (#35360)
cache shader location
2025-05-27 12:47:58 -07:00
github-actions[bot]
6a38dd1315 [bot] Update translations (#35354)
Update translations

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-05-26 19:44:21 -07:00
Adeeb Shihadeh
c48f161b04 bump tinygrad (#35355) 2025-05-26 18:54:34 -07:00
Adeeb Shihadeh
50aaa69137 sensord: cleanup, prep for rewrite (#35352)
* rm bmx

* thanks claude

* fix

* fix mypy
2025-05-26 17:49:44 -07:00
Cameron Clough
742e30495a Reapply "ui: rewrite installer using raylib, remove qt (#33756)" (#35308)
This reverts commit 472feefcfd.
2025-05-26 17:25:56 -07:00
Alexandre Nobuharu Sato
1fb5744685 Multilang: update pt-BR translations (#35351) 2025-05-26 13:08:54 -07:00
Trey Moen
44d233337d esim: faster switching (#35344)
* esim: lpac doesnt need disable here

* more red diff
2025-05-26 13:08:28 -07:00
Alexandre Nobuharu Sato
427a61ab12 fix Wi-FI typo on networking.cc (#35350) 2025-05-26 13:07:56 -07:00
Dean Lee
927ce0bc06 system/ui: fix typos (#35349)
fix typos
2025-05-26 11:10:32 -07:00
github-actions[bot]
8ffcddce30 [bot] Update translations (#35348)
Update translations

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-05-26 11:02:14 -07:00
Dean Lee
3d3e9599d8 system/ui: add specialized camera views with custom transformations (#35346)
* add specialized camera views with custom transformations for driver and road

* improve

* return np array

* cached matrix
2025-05-26 10:42:50 -07:00
Dean Lee
193df11a1c system/ui: avoid redundant texture updates (#35347)
avoid redundant texture updates
2025-05-26 09:29:29 -07:00
Dean Lee
22715464b9 system/ui: throttle camera connection attempts (#35343)
throttle connection attempts
2025-05-25 09:47:41 -07:00
Trey Moen
eabee8c73f bump msgq (#35345) 2025-05-25 09:33:37 -07:00
Trey Moen
993b1b4d88 refactor: LPA interface, CLI location (#35328)
* refactor: LPABase, simpler switch() interface

* leave this since LPABase hides

* hw-agnostic esim.py

* newline

* use latest
2025-05-25 08:54:07 -07:00
Dean Lee
840ced5005 system/ui: add EGL support to CameraView (#35338)
* add EGL support to CameraView

* view 3 cameras

* use a more direct approach

* add new line

* cleanup

* cleanup close()

* extract EGL to a seperate file

* cleanup

* add try/except to close()

* rename egl_textures

* improve implementation
2025-05-25 08:41:03 -07:00
Shane Smiskol
c24f349807 GM: low steer speed alert in CarState (#35332)
* simple

* rm

* bump to master

* update refs

* update refs
2025-05-23 19:43:17 -07:00
Kacper Rączy
97ad175243 Reapply "Enable online lag learning (#34968)" (#35327)
* Revert "Revert "Enable online lag learning (#34968)" (#35322)"

This reverts commit 9c40c48729.

* Update ref commit

* Update ref

* Update ref commit
2025-05-24 02:31:17 +00:00
Adeeb Shihadeh
ce8ea16303 update release notes 2025-05-23 18:50:20 -07:00
Shane Smiskol
70644e2317 VW: low steer speed alert in CarState (#35331)
* move to opendbc

* func

* clean up

* bump

* move cmt

* bump
2025-05-23 16:54:50 -07:00
Shane Smiskol
9622427044 car interfaces: improve steering pressed signal (#35333)
* bump

* update refs
2025-05-23 16:32:19 -07:00
Kacper Rączy
312658756d lagd: handle ambiguous cases (#35257)
* Mechanism to handle ambiguous estimates

* Use it

* Fix static

* Fix

* Comment

* Comment v2

* Use quantile instead

* Fix

* Make it better

* Make it confidence

* Make it a constant

* min_confidence as arg

* Make the test signal more like the real one

* Relax sample requirements

* Use constant

* Reduce confidence
2025-05-23 01:33:55 +00:00
Shane Smiskol
9b642ed016 bump opendbc (#35323)
* bump

* update refs
2025-05-22 17:49:27 -07:00
Dean Lee
fdfba3f9f7 system/ui: update camera view shader to support rendering on device (#35326)
update shader to support rendering on device
2025-05-22 11:23:50 -07:00
Shane Smiskol
f38a98fc09 Metered Wi-Fi toggle (#35293)
* draft

* here too

* fixes

* fix

* ugh more fix, wifiManager is craze

* more

* be optimistic and let refresh happen naturally, the immediate refresh causes some paths/active connect to temporarily be unavailable

selfdrive/ui/qt/network/wifi_manager.cc: DBus call error: "Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the re
ply timeout expired, or the network connection was broken."
selfdrive/ui/qt/network/wifi_manager.cc: DBus call error: "Object path cannot be empty"

* nm is slow -- it takes 2s to commit to disk, and dbus errors are raised if you try again while previous is running (this is an ubuntu 24.04 bug)

* nice experience

* rm

* minor

* clean up

* self-explanatory

* rename

* rm this too

* revert

* draft

* Revert "draft"

This reverts commit 15283d977880fc60b8f9732772256e8337d6ac8e.

* Reapply "draft"

This reverts commit 8629921b0086ca71b88746d77ec7b8d3af3cd289.

* rm colors

* trinary, bit more code

* choose default when disabled

* only if enabling, wait for disable as normal

* remove original binary toggle

* clean up

* collapse

* clean up wifimanager

* update comment

* lite is a word
2025-05-21 20:45:47 -07:00
Dean Lee
c9f3cd5ad2 system/ui: enhance scroll panel with iPhone-like physics and behavior (#35312)
* improve scroll panel for iphone-like experience

* add comments

* increase demo run time for easier testing
2025-05-21 20:31:50 -07:00
Maxime Desroches
3f53133da5 AGNOS 12.2 (#35317)
* agnos 12.2

* non-staging
2025-05-21 19:58:18 -07:00
Kacper Rączy
9c40c48729 Revert "Enable online lag learning (#34968)" (#35322)
* Revert "Enable online lag learning (#34968)"

* Update ref commit
2025-05-22 01:55:19 +00:00
Shane Smiskol
163332f368 pandad: fix premature USB panda recovery (#35287)
Update pandad.py
2025-05-21 12:50:08 -07:00
Trey Moen
786b46c0b4 feat: op esim and esim.py 2 (#35314)
* init: lpa interface

* handle multiple messages

* handle timeouts

* delete old LPA, add enable/disable/validation

* check if valid

* keep old file the same for easier diff

* keep

* nickname, bug fixes

* space

* simple

* need to test this on slow conn

* initial HITL test for eSIM provisioning

* cleanup

* lint

* test flakes if lpac called concurrently

* no

* cleanup

* org

* comment

* vibe coded uts

* Revert "vibe coded uts"

This reverts commit 8b4d8f8ade50dbeaf3fa44f1df1aa2d809deca18.

* much simpler test

* no value

* remove no value add comments

* only one test flow now

* simpler

* reorganize

* replace impl

* brevity

* moar

* why didnt u rename

* moar

* check lpac installed

* Profile dataclass

* shorten

* print out profiles

* better

* plurals

* argparse

* download/nickname

* move to end to show change

* just end early if already enabled

* --reboot

* reconfigure conn

* mutations require reboot today

* not needed

* lint

* guard delete

* better

* print help

* spaceg

* rename

* support at device

* choose backend

* desc

* more

* brackets

* op esim

* Revert "brackets"

This reverts commit 124dbc0cbcc07d93f556ca80a6dc47aa118fda5c.

* Update Jenkinsfile
2025-05-21 12:45:05 -07:00
Dean Lee
4423b47b6c system/ui: add password mask delay to InputBox (#35316)
add password mask delay to InputBox
2025-05-21 12:44:15 -07:00
YassineYousfi
b4d6b52edd Vegan Filet o Fish model (#35240)
e30305e9-5fb8-48bd-a278-f714e880aef1/700
2025-05-21 11:48:49 -07:00
Trey Moen
19ad50a185 feat(route.py): add metadata, events retrieval (#35261)
* feat(route.py): add metadata, events retrieval

* whitespace

* raise for status
2025-05-21 11:33:47 -07:00
Dean Lee
68fa8c56ab system/ui: use • for password masking in InputBox (#35313)
use • for password masking
2025-05-21 11:17:03 -07:00
Dean Lee
4c9655b5e4 system/ui: add text scrolling support to InputBox for long text (#35310)
* add text scrolling support to InputBox for long text

* add 2 pixels buffer to the scissor region
2025-05-21 17:44:49 +01:00
Dean Lee
7ea8277e39 system/ui: improve button press behavior (#35309)
improve button press behavior
2025-05-21 12:28:04 +01:00
Adeeb Shihadeh
350a235303 modeld: more USB GPU fixes (#35306)
* fixups

* builds
2025-05-20 19:41:58 -07:00
Cameron Clough
472feefcfd Revert "ui: rewrite installer using raylib, remove qt (#33756)"
This reverts commit 9cd939d354.
2025-05-21 01:52:14 +01:00
Shane Smiskol
6d0cac5305 MultiButtonControl (#35307)
* copy

* remove params from it

* split out
2025-05-20 17:32:27 -07:00
Dean Lee
9cd939d354 ui: rewrite installer using raylib, remove qt (#33756)
* update SConscript

Co-authored-by: Dean Lee <deanlee3@gmail.com>

* can't build on mac

* raylib installer

Co-authored-by: Dean Lee <deanlee3@gmail.com>

* rm

* debug pls

* cleanup

* quotes

* libs?

* bump

* hmm

* progress bar color

* more

* not rounded

* hardcode a font path..?

* embed (a subset of) inter into the installer

* different in CI

* closer font sizes

* closer

* add that back

* unnecessary

* closer to previous impl

* prefix is at start of string, substr between prefix and %

* Revert "prefix is at start of string, substr between prefix and %"

This reverts commit bc53fe8e356ca642680e90682285bd5e8d98ecb5.

* bigger on device?

* rm

---------

Co-authored-by: Cameron Clough <cameronjclough@gmail.com>
2025-05-21 00:59:48 +01:00
Maxime Desroches
10fd0f9a57 bump panda 2025-05-20 16:45:33 -07:00
Ocheretovich
ac9222bff4 docs: added a link to the selfdrive badge (#35300)
Update README.md
2025-05-20 14:57:26 -07:00
commaci-public
f5cf062a38 [bot] Update Python packages (#35303)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-05-20 14:57:13 -07:00
Adeeb Shihadeh
e47d105b97 revert extra GPU power draw to prep for release 2025-05-20 14:28:30 -07:00
Dean Lee
4f512a5c6d system/ui: fix navigation key repeat in input box (#35302)
fix navigation key repeat in input fields
2025-05-20 20:27:08 +01:00
Dean Lee
beb7f6c2bb system/ui: fix indentation (#35299)
fix indentation
2025-05-20 19:23:05 +01:00
Cameron Clough
2722e12e62 fix(system/ui): typo 2025-05-20 15:48:44 +01:00
Cameron Clough
5667583198 system/ui: define character set for loading fonts (#35298)
* system/ui: define font character set

* remove debug print statement

* shorter
2025-05-20 15:47:10 +01:00
Cameron Clough
69799fceb4 Revert "system/ui: remove special currency and symbol characters from keyboard (#35291)"
This reverts commit f646b4a17b.
2025-05-20 14:54:06 +01:00
Dean Lee
cf7a295a2c system/ui: add key repeat functionality for backspace (#35288)
add key repeat functionality for backspace

Co-authored-by: Cameron Clough <cameronjclough@gmail.com>
2025-05-20 11:01:31 +01:00
Dean Lee
f646b4a17b system/ui: remove special currency and symbol characters from keyboard (#35291)
* remove special currency and symbol characters from keyboard

* bring back

---------

Co-authored-by: Cameron Clough <cameronjclough@gmail.com>
2025-05-20 10:46:56 +01:00
Dean Lee
f00bead198 system/ui: improve button click logic for proper press-release interaction (#35289)
improve button click logic for proper press,release interaction
2025-05-20 10:22:34 +01:00
commaci-public
8752071049 [bot] Update Python packages (#35282)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-05-19 16:16:30 -07:00
Cameron Clough
d6e9df98e3 system/ui: WPA3 is unsupported (#35286) 2025-05-19 19:18:48 +01:00
Dean Lee
41db0557e9 system/ui: fix Wi-Fi conneciton flow for open networks (#35285)
fix Wi-Fi conneciton flow for open networks
2025-05-19 18:56:25 +01:00
Cameron Clough
6eecb4f986 system/ui: network widget improvements (#35284)
* larger font size for confirmation dialog

* try this

* forget btn color

* text color

* font size

* caps

* Revert "caps"

This reverts commit a3e6cfbf053e46158036728cbcd9d8bd9f99d5e5.

* too much

* fixme

* do that?

* keyboard: reset state on clear
2025-05-19 17:31:42 +01:00
Dean Lee
38c1bd096b system/ui: Improve UI rendering smoothness for scaled display (#35280)
improve smoothness
2025-05-19 14:56:45 +01:00
Cameron Clough
9bbbff14d5 system/ui: don't reset on PC 2025-05-19 11:41:09 +01:00
Cameron Clough
0c013f6186 system/ui: add caps lock to keyboard (#35277)
* add new icons shift-fill and capslock-fill, rm capslock

* SHIFT_KEY_ON, SHIFT_KEY_OFF

* capslock

* rm arrow-down

* a lot simpler

* only one

* just use time

* layout name

* rename shift

* CONSTANT
2025-05-19 11:28:04 +01:00
Cameron Clough
6640986622 system/ui: increase keyboard key font/icon size (#35276) 2025-05-19 01:31:38 +01:00
Adeeb Shihadeh
f1ba6c389b quick repo garbage collection (#35274)
* start gc

* lil more

* debug

* no sound

* add back
2025-05-18 16:59:53 -07:00
Cameron Clough
d7bf309eca system/ui: update keyboard enter key (#35275)
* system/ui: update keyboard enter key

- use arrow-right icon
- use primary color

* format
2025-05-19 00:58:33 +01:00
Adeeb Shihadeh
645bd391b7 readme: add sgo to branch guide 2025-05-18 16:57:56 -07:00
Cameron Clough
15c7d556f6 Reapply "system/ui: add SCALE env var (#35272)" (#35273)
* Reapply "system/ui: add SCALE env var (#35272)"

This reverts commit e2569a8b32.

* set mouse scale factor
2025-05-19 00:33:52 +01:00
Cameron Clough
e2569a8b32 Revert "system/ui: add SCALE env var (#35272)"
This reverts commit ed0f812995.
2025-05-19 00:27:35 +01:00
Adeeb Shihadeh
ed0f812995 system/ui: add SCALE env var (#35272)
* ui: add SCALE env var

* linting

* cleaner

---------

Co-authored-by: Cameron Clough <cameronjclough@gmail.com>
2025-05-19 00:21:20 +01:00
Andrei Radulescu
f630cac06f modeld: replace CLANG=1 with CPU=1 (#35270)
Replace CLANG=1 with CPU=1



---

For more details, open the [Copilot Workspace session](https://copilot-workspace.githubnext.com/andiradulescu/openpilot?shareId=XXXX-XXXX-XXXX-XXXX).
2025-05-18 05:57:45 -07:00
Shane Smiskol
e8fd8e6018 bump opendbc 2025-05-18 01:20:28 -07:00
Shane Smiskol
8e57f774d0 Hyundai: move low speed steering alert to car state (#35269)
* hkg can: move low speed alert to carstate

* bump
2025-05-18 01:05:15 -07:00
Shane Smiskol
a6a09276e9 Hyundai: fix recent enable button press regression (#35265)
* move back to port

* much better

* use the CS field now

* bump

* fix

* need to switch so it works on ports that don't use it, and makes more sense

* bump

* bump

* update refs

* make sense

* master
2025-05-18 00:52:02 -07:00
Shane Smiskol
33721cf5fa Lower Tesla steer limit timer (#35268)
* bump

* update refs
2025-05-18 00:38:57 -07:00
Shane Smiskol
66c0971a0f migration: remove disengage on gas alternative experience (#35267)
* fix

* done

* test

* update refs
2025-05-17 23:56:21 -07:00
Shane Smiskol
8427bf76cf typo 2025-05-17 22:54:01 -07:00
commaci-public
065e0e6369 [bot] Update Python packages (#35264)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-05-17 19:44:52 -07:00
Shane Smiskol
77102a8532 Ford: support low gear (#35238)
support low gear for ford
2025-05-17 17:31:27 -07:00
Trey Moen
1c68a073a0 feat(clip): enable ecam (#35259) 2025-05-17 12:00:24 -07:00
Adeeb Shihadeh
5a67aa3618 test_translations: don't fail on rate limit (#35262)
skip translation test on 429
2025-05-17 12:00:09 -07:00
Shane Smiskol
49c422e872 Tesla: fix angle control saturation (#35256)
* we shouldn't need this

* or this?

* stash junk

* hmm

* comment

* cc

* sadly we have to maintain behavior

* bump
2025-05-16 21:29:16 -07:00
Cameron Clough
da670108e7 system/ui: all font weights (#35255) 2025-05-17 00:23:55 +01:00
Cameron Clough
8097a92515 zipapp pack (#35253)
Used to ship python UI in agnos without an openpilot clone

* add a main method to target

* pack script

* validate inputs

* refactors

* copy into temp, dont keep this

* cleanup

* help messages

* rename to pack.py

* pack.py

* updates for device

* moar

* don't use cereal

* just log normally

* use importlib.resources

* revert

* Revert "don't use cereal"

This reverts commit 7208524d422d88a1b07e209359aeb25e8b3bf4e7.

* fix cereal?

* cleanup

* Revert "cleanup"

This reverts commit 921edfe5020f244dbdf4f26767af7c98ca837d1c.

* cython hotfix

* Reapply "cleanup"

This reverts commit 9b54552f784dea1b1eb4ffc03937571e4fc851ba.

* more cleanup

* any script?

* slightly clearer

* rm print

* nothing python should use SVGs

---------

Co-authored-by: Trey Moen <trey@moen.ai>
2025-05-16 22:24:03 +01:00
Dean Lee
09fde3c3ad system/ui: Use OPENPILOT_URL instead of google.com for network connectivity check (#35254)
check OPENPILOT_URL
2025-05-16 21:56:41 +01:00
Dean Lee
71e3fd7183 system/ui: use icon for special characters (#35248)
* use icon for special characters

* add icon for SHIFT_DOWN_KEY
2025-05-16 19:43:03 +01:00
Dean Lee
5babe18184 system/ui/setup: fix WiFi manager UI element overlap issues (#35251)
fix ui overlap issue
2025-05-16 19:24:04 +01:00
Cameron Clough
e9680a40bf selfdrive/assets: generate keyboard icons from bootstrap-icons (#35250)
* Revert "selfdrive/assets: add keyboard icons (#35247)"

This reverts commit a6456503b0.

* selfdrive/assets: use bootstrap icons, generate keyboard icons

* cleanup

* switch shift-fill for capslock
2025-05-16 19:17:24 +01:00
Dean Lee
6adc7e6bdb system/ui: disable continue button when no network connecton in setup.py (#35249)
disable continue button when no network connecton
2025-05-16 19:10:58 +01:00
Dean Lee
b740d23dd0 system/ui: display icons in wifi manager (#35244)
display icons in wifi manager
2025-05-16 13:51:08 +01:00
Dean Lee
dcfbb99b13 system/ui: add password visibility toggle with eye icon to keyboard (#35246)
* add password visibility toggle with eye icon to keyboard

* added show_password_toggle
2025-05-16 13:50:27 +01:00
Cameron Clough
a6456503b0 selfdrive/assets: add keyboard icons (#35247) 2025-05-16 13:38:51 +01:00
Cameron Clough
512d83cc36 ui(raylib): setup.py (#35140)
* setup.py

* better font

* use gui_button

* btn

* fix button and triangle

* low voltage text color

* fix network page

* HARDWARE.get_os_version()

* typing

* white title

* update default text color

* use default font color

* fix software screen

* fix software screen

* radio font size

* line length

* fix regex

* draw svgs

* comment is out of date

* add cairosvg

* use cairosvg

* remove unused import

* support other image types

* revert origin

* fix setup warning icon

* fix

* remove cairosvg

* use pngs

* wrap

* fix disabled style

* TODO

* revert uv.lock

* use new file paths (not rasterized yet)

* oops

* fixes

* params not used

* network check thread

* oops

* fix custom URL and download failed screens

* clear keyboard

* rm

* fixes

* show full error message

* check network type
2025-05-16 12:41:20 +01:00
Cameron Clough
83679bd856 selfdrive/assets: rasterize SVGs (#35243)
* selfdrive/assets: rasterize SVGs

* do entire assets dir

* fixed size - 4096px is a lot

* optimise them too

* use inkscape

* regenerate

* abandon runtime svg
2025-05-16 01:33:16 +01:00
Cameron Clough
62f5a59f77 selfdrive/assets: optimize SVGs (#35242) 2025-05-16 00:52:49 +01:00
Cameron Clough
ec208f2d3d cleanup selfdrive/assets (#35241)
* remove unused assets

* these are icons

* these are images

* fix

* fix

* Revert "remove unused assets"

This reverts commit 95d1a800de7e830df15d88e8e329aeadd4548b2f.

* move these too
2025-05-16 00:26:13 +01:00
Trey Moen
60113632b4 feat(clip): delete get_metadata call (#35229)
* feat: delete get_metadata call

* no one else is using this now
2025-05-15 10:02:46 -07:00
Adeeb Shihadeh
735c227f3c svg -> png script 2025-05-15 09:53:48 -07:00
Cameron Clough
6c03e9472d system/ui: disabled button styles (#35236) 2025-05-15 16:42:32 +01:00
Trey Moen
0fec3656a1 feat(clip): faster qlog (#35227)
* feat(clip): faster qlog

* simpler

* imports
2025-05-15 14:18:58 +01:00
Shane Smiskol
5d8c8ae911 Tesla: raised lateral limits (#35231)
* bump

* bump

* update refs
2025-05-14 19:51:12 -07:00
Shane Smiskol
2af3cc6093 joystick: use ISO acceleration (#35230)
ISO max
2025-05-14 19:31:55 -07:00
Trey Moen
33c164629f fix(clip): ignore unknown Params keys (#35226)
* fix: ignore params configured by forks

* comment

* dont bother logging count or in normal flow

* better log
2025-05-14 15:44:57 -07:00
Trey Moen
e8394a27d7 fix(clip): properly set exit code (#35225)
fix: properly set exit code
2025-05-14 14:25:27 -07:00
Dean Lee
2ad501cc94 common/params.cc: Handle EINTR for fsync in Params::put to Improve Robustness (#35142)
Handle EINTR for fsync in Params::put to Improve Robustness
2025-05-14 11:21:36 -07:00
Dean Lee
02a251f50d cabana: add RouteInfo dialog to view and navigate route segment details (#35134)
add RouteInfo dialog to view and navigate route segment details
2025-05-14 11:21:28 -07:00
Dean Lee
84e9b75983 system/ui: fix WiFi manager shutdown task errors (#35204)
fix WiFi manager shutdown task errors
2025-05-14 11:20:39 -07:00
Dean Lee
f1c0109c89 system/ui: Fix crash when exiting the application with CTRL+C (KeyboardInterrupt). (#35221)
handle KeyboardInterrupt
2025-05-14 11:18:08 -07:00
omahs
64b0ede9ae fix: typos (#35224)
* fix: typos

* Update what-is-a-car-port.md

---------

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2025-05-14 11:17:50 -07:00
Trey Moen
665d2c3bec feat(clip): hydrate route's CarParams before starting UI (#35218)
* feat: hydrate CarParams before starting UI

* only get first segment, faster
2025-05-14 08:14:44 -07:00
Dean Lee
b1bdab0c90 system/ui: improve texture caching (#35222)
improve texture caching
2025-05-14 16:11:38 +01:00
Dean Lee
c57f576436 system/ui: fix FPS drop issues (#35220)
set VSYNC flag only when the env is set
2025-05-14 14:49:47 +01:00
Cameron Clough
92e27f0ba2 fix .editorconfig 2025-05-14 14:34:11 +01:00
Maxime Desroches
997a99926c ci: overwrite previous comment for model_replay (#35209)
* less

* test

* fix

* cleanup
2025-05-13 21:06:30 -07:00
Maxime Desroches
3fd05d2ace more robust modem 2025-05-13 21:05:17 -07:00
Kacper Rączy
f242b1e88a lagd: remove saved param if mismatch (#35217)
Remove LiveDelay on mismatch
2025-05-14 03:18:14 +00:00
Kacper Rączy
cbec1886e7 paramsd: remove saved param if mismatch (#35215)
remove LiveParametersV2
2025-05-14 02:26:28 +00:00
Trey Moen
bdffd34088 feat(clip): support metric units if requested (#35213) 2025-05-13 19:23:36 -07:00
Kacper Rączy
1a3e342303 ui: reset live parameters and delay when reset calibration pressed (#35211)
* Reset params and lag too

* Old param too
2025-05-14 02:22:44 +00:00
Trey Moen
98c4a4582b chore: reformat clip params for extension (#35212) 2025-05-13 18:56:13 -07:00
commaci-public
77c35f8e5d [bot] Update Python packages (#35214)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-05-13 18:55:58 -07:00
Adeeb Shihadeh
9d7fce8dd1 CI: bump tinygrad in cronjob 2025-05-13 18:48:21 -07:00
Adeeb Shihadeh
d0bf2be6f0 External GPU support for big models (#35172)
* usb gpu

* cleanup

---------

Co-authored-by: Comma Device <device@comma.ai>
2025-05-13 17:12:32 -07:00
Shane Smiskol
478015e788 typo 2025-05-13 17:04:16 -07:00
Adeeb Shihadeh
67486ff92d bump tinygrad (#35208)
* bump tinygrad

* fix

* why is mac different?

* fix sim

* relax that
2025-05-13 16:59:35 -07:00
Adeeb Shihadeh
313ede3d1e Update NDOG live (#35205)
* no alt exp

* live

* fix

* update res
2025-05-13 14:48:40 -07:00
Maxime Desroches
3d696c0f90 jenkins: remove logs during setup 2025-05-13 13:34:54 -07:00
Eric Brown
480cc57da3 Pass args to op auth (#35202) 2025-05-13 09:32:33 -07:00
Dean Lee
73ff9dc944 system/ui: add require_full_screen to WifiManagerUI (#35191)
add require_full_screen to WifiManagerUI
2025-05-13 14:34:17 +01:00
Dean Lee
896dabb190 system/ui: add right-side text eliding to gui_label (#35201)
add optional right-side text eliding to gui_label
2025-05-13 14:31:50 +01:00
Robbe Derks
15a567ffee bump panda 2025-05-13 13:03:31 +02:00
Shane Smiskol
8473774b65 process replay: add Tesla route (#35199)
* add tesla

* update refs

* run tesla on more procs

* update refs
2025-05-12 21:18:51 -07:00
Shane Smiskol
3f724400c5 Tesla: check checksums in safety (#35198)
bump
2025-05-12 21:15:43 -07:00
Trey Moen
6b4436b980 feat(clip): font from selfdrive/assets (#35194)
* feat(clip): find font dynamically

* check font path as part of validating environment

* from testing

* use font from assets

* no mas
2025-05-12 19:49:37 -07:00
Trey Moen
51ab7ec8f5 feat(clip): ffmpeg improvements to reduce frame skips (#35196)
* test

* no benefit with two pass

* rm

* typo, testing

* re-add
2025-05-12 18:56:13 -07:00
Shane Smiskol
2e5014d793 Tesla: check counters and checksums in car interface (#35195)
bump
2025-05-12 17:23:58 -07:00
Dean Lee
b5545a6736 system/ui: confirm dialog always opens in fullscreen mode (#35192)
confirm dialog always opens in fullscreen mode
2025-05-12 22:00:18 +01:00
commaci-public
b2d414cc8b [bot] Update Python packages (#35187)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-05-12 13:01:29 -07:00
Dean Lee
ce4fda1f92 system/ui: add minimum WIFI password length validation (#35190)
* add minimum WIFI password length validation

* add min text size to keyboard

* disable enter if text size<min size

* add MAX_PASSWORD_LENGTH

* disable enter key

* set min_text_size for demo
2025-05-12 19:01:25 +01:00
Dean Lee
8c995ab26d system/ui: implement CameraView widget (#35185)
* initial commit

* run at 60hz, nonblock

* graceful cleanup

* re-position

* rename

---------

Co-authored-by: Cameron Clough <cameronjclough@gmail.com>
2025-05-12 17:32:20 +01:00
Trey Moen
98dba943b2 feat(clip): add timestamp onto clip (#35182)
* feat(clip): add timestamp onto clip

* same font size as title

* revert

* just declare it here, and add comments
2025-05-12 09:30:01 -07:00
Dean Lee
02125f6862 system/ui: fix cursor position in inputBox mouse click handler (#35189)
fix cursor position in inputBox mouse click handler
2025-05-12 16:59:00 +01:00
Cameron Clough
43054a56c2 system/ui: fix tethering ssid (#35188)
system/ui: fix tethering ssid when no params
2025-05-12 15:39:48 +01:00
Cameron Clough
59fbeb6070 system/ui: keyboard demo script 2025-05-12 15:28:36 +01:00
Dean Lee
2b32325be1 system/ui: Full-Featured InputBox Component (#35178)
custom input box component
2025-05-12 15:21:12 +01:00
Adeeb Shihadeh
35dbdf9124 raylib: fwd everything to cloudlog 2025-05-11 11:08:50 -07:00
Dean Lee
e62b6a38e9 system/ui: set keyboard to use full window area (#35181)
set keyboard to use full window area
2025-05-11 11:06:04 -07:00
Dean Lee
bfadab078e system/ui: set log level to WARNING to reduce noise (#35180)
* set log level to WARNING to reduce noise

* custom callback handling for raylib logs
2025-05-11 11:05:59 -07:00
Harald Schäfer
e9cea3ae5c Revert TR again (#35179)
Revert "Tomb Raider 7 (#35114)"

This reverts commit 0fb4aafa35.
2025-05-11 08:24:46 -07:00
Dean Lee
01867f1b2b system/ui: integrate WifiManagerUI into Updater (#35177)
integrate WifiManagerUI into Updater
2025-05-11 14:40:06 +01:00
Dean Lee
bbeb37d726 system/ui: add MultiOptionDialog for selection from scrollable lists (#35176)
* add MultiOptionDialog for selection from scrollable lists

* mv

---------

Co-authored-by: Cameron Clough <cameronjclough@gmail.com>
2025-05-11 08:43:23 +01:00
Dean Lee
f1760e63d3 system/ui: performance optimizations for WiFi Manager with cached network data (#35170)
Performance optimizations for WiFi Manager with cached network data
2025-05-11 08:26:25 +01:00
Dean Lee
eaa595958c system/ui: prevent duplicate WiFi connections when retrying with new password (#35174)
Prevent duplicate WiFi connections when retrying with new password
2025-05-10 14:22:06 -07:00
Dean Lee
7147c26954 system/ui: fix WIFI authentication callback and connection tracking (#35169)
fix authentication callback and state handling
2025-05-10 10:00:28 -07:00
Dean Lee
3b94e6f92f system/ui: add tethering support to WifiManager (#35167)
add tethering support to WifiManager
2025-05-10 09:59:42 -07:00
Trey Moen
13965bdf0b docs: clarify process to connect to 3/3X over ADB (#35090)
* three

* codespell being smart with me

---------

Co-authored-by: Maxime Desroches <desroches.maxime@gmail.com>
2025-05-09 19:59:44 -07:00
Shane Smiskol
db855d56d3 Log Hexagon DSP temperature (#35166)
* add hexagon dsp temp

* log

* whoops
2025-05-09 15:18:52 -07:00
David
32167e02c0 ui: show alert when user flag (bookmark) pressed (#34920)
* feat: Show alert on user flag event

* feat: Temporarily update border status on user flag to match connect timeline

* Revert "feat: Temporarily update border status on user flag to match connect timeline"

This reverts commit f1da6a4f5f555d4db50b47fb68ce74ae7737b8af.

* feat: Increase alert duration to 1.5 seconds

* remove audible alert for bookmark event

* refactor: Use NormalPermamentAlert for user flag alert

* fix: Update userFlag enum value in OnroadEvent struct

* fix: Handle userFlag event even in dashcam mode

* don't need to ignore that anymore

* remove 'userFlag' from ignore list

---------

Co-authored-by: Jason Young <jyoung8607@gmail.com>
2025-05-09 15:57:00 -04:00
Jason Young
1f312e16d4 messaging: cleanup zero-frequency service initialization (#35145)
* messaging: fix bug with relaxed checks under simulation

* refactor

* cleanup

* fix bug

* Revert "fix bug"

This reverts commit ea31f3ee83676c5b8ffe57500881557f7586998c.

* that did need to be different

* fix bug, add test coverage

* retry CI
2025-05-09 15:13:52 -04:00
Dean Lee
908ea36126 ui(raylib): add thread-safe property access to WifiManagerWrapper (#35162)
* Add thread-safe property access to WifiManagerWrapper

* cleanup

* type-safe manager, always specify default

* import

---------

Co-authored-by: Cameron Clough <cameronjclough@gmail.com>
2025-05-09 16:23:37 +01:00
Dean Lee
dde9c703f3 cabana: optimize get_raw_value() function for CAN signal extraction (#35137)
optimize get_raw_value() for CAN signal extraction
2025-05-08 14:31:00 -07:00
Cameron Clough
4bbbe3d2d1 ui(raylib): revert fps to 60 (#35163)
bump default fps
2025-05-08 22:22:53 +01:00
Dean Lee
33849245d8 uploader.py: fix empty string handing in AthenadRecentlyViewedRoutes parameter (#35139)
Fix empty strings in AthenadRecentlyViewedRoutes parameter
2025-05-08 16:31:06 +01:00
Cameron Clough
73ee0c022f Reapply "ui(raylib): create BaseWindow (#35074)" (#35077)
* Reapply "ui(raylib): create BaseWindow (#35074)"

This reverts commit 83b84a5bec.

* correct title

* error msg

* cloudlog
2025-05-08 16:18:01 +01:00
Dean Lee
e7f7675458 micd: fix thread safety by adding locking for shared state (#35148)
* fix thread safety by adding locking for shared state

* Update system/micd.py

---------

Co-authored-by: Cameron Clough <cameronjclough@gmail.com>
2025-05-08 16:09:44 +01:00
Dean Lee
f123e7ed75 CI: add system/ui to UI labeler (#35157)
add system/ui to UI labeler
2025-05-08 15:19:28 +01:00
Maxime Desroches
52669b6ad2 AGNOS 12.1 (#35154)
12.1
2025-05-07 20:34:08 -07:00
Maxime Desroches
47ed90c6cf Reapply "Mypy: Got passing on macos (#34591)" (#35126) (#35153)
* Mypy: Got passing on macos (#34591)

* Mypy: Got mypy passing on macos

* common/realtime.py refactor

* Mypy: mypy passing on darwin

* Refactor: Removed else: pass statement

* Refactor: Removed unnecessary check

* added xattr to pyproject

* loggerd: switched to xatter module

* loggerd: removed unused module in xattr_cache.py

* UV: update uv.lock

* Update system/athena/athenad.py



* athenad: fixed blank lines

* loggerd: refactor of xattr_cache

* cleanup

---------



* fix getxattr no attribute on macOS

* try fixing missing ENOATTR on Linux

---------

Co-authored-by: Andrei Radulescu <andi.radulescu@gmail.com>
Co-authored-by: BrainLess <116778989+BrainLessPea@users.noreply.github.com>
2025-05-07 19:11:37 -07:00
Maxime Desroches
2451d70408 AGNOS 12 (#35151)
agnos 12
2025-05-07 18:21:53 -07:00
Trey Moen
380f383e2e ci: enable cache by default (#35121)
* enable cache for Mac brew and scons

* bump

* save cache by default, explicitly opt-out

* Delete bump-ci

---------

Co-authored-by: Maxime Desroches <desroches.maxime@gmail.com>
2025-05-07 18:13:53 -07:00
Harald Schäfer
0fb4aafa35 Tomb Raider 7 (#35114)
* Revert "Revert TR (#35110)"

This reverts commit df4f2955dc.

* eb5f884a-10ad-49fd-ae5c-e2818c26e568/400

* 1cc828ab-95e5-4620-aa07-b98918b4268d/400

* 5790a2c1-b487-4bef-a3c3-db1fcd5a756d/400

* raw plan
2025-05-07 18:06:41 -07:00
Maxime Desroches
36ff474bc8 remove numpy.core usage (#35152)
fix
2025-05-07 16:44:20 -07:00
Shane Smiskol
2e0fa3f827 Tesla: allow enabling in tight curves (#35147)
* bump

* revert steer limit timer

* alert for stock lkas

* add enum

* same as ldw

* bump

* draft

* bump

* bump

* rm

* why here?1

* bump to master
2025-05-07 16:26:20 -07:00
Shane Smiskol
dcca094ad8 Tesla: forward stock LKAS while disengaged (#35150)
* bump

* update docs

* bump
2025-05-07 15:29:41 -07:00
Robbe Derks
433e7268f5 Log register errors as errors (#35141)
log register errors as errors
2025-05-07 18:12:01 +02:00
Dean Lee
7c16e65347 loggerd: remove redundant Params Construction (#35138)
remove redundant Params Construction
2025-05-07 16:39:05 +01:00
Maxime Desroches
aa1b790708 revert agnos 12 2025-05-06 21:38:50 -07:00
Andrei Radulescu
bbf37ae5c7 Reapply "Mypy: Got passing on macos (#34591)" (#35126)
* Mypy: Got passing on macos (#34591)

* Mypy: Got mypy passing on macos

* common/realtime.py refactor

* Mypy: mypy passing on darwin

* Refactor: Removed else: pass statement

* Refactor: Removed unnecessary check

* added xattr to pyproject

* loggerd: switched to xatter module

* loggerd: removed unused module in xattr_cache.py

* UV: update uv.lock

* Update system/athena/athenad.py

Co-authored-by: Maxime Desroches <desroches.maxime@gmail.com>

* athenad: fixed blank lines

* loggerd: refactor of xattr_cache

* cleanup

---------

Co-authored-by: Maxime Desroches <desroches.maxime@gmail.com>

* fix getxattr no attribute on macOS

* try fixing missing ENOATTR on Linux

---------

Co-authored-by: BrainLess <116778989+BrainLessPea@users.noreply.github.com>
Co-authored-by: Maxime Desroches <desroches.maxime@gmail.com>
2025-05-06 21:09:59 -07:00
Maxime Desroches
b400312042 agnos 12 (#35133)
* new

* all

* prod

* both

* 12

* version

* update
2025-05-06 20:37:09 -07:00
Adeeb Shihadeh
e64be675e3 don't need to assert, CI updates this 2025-05-06 14:58:40 -07:00
Maxime Desroches
2393e0d27d update CARS doc 2025-05-06 14:54:24 -07:00
Adeeb Shihadeh
97bad78553 bump opendbc 2025-05-06 14:29:16 -07:00
Adeeb Shihadeh
58bc8e3b43 op: more robust openpilot finding (#35136) 2025-05-06 10:51:15 -07:00
Dean Lee
9622b6f8bd ui(raylib): add a simple toggle component (#35128)
* simple toggle

* Update system/ui/lib/toggle.py

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>

* cleanup

---------

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2025-05-06 10:25:51 -07:00
Adeeb Shihadeh
ddb19cc074 op: better adb SSH (#35135)
* op: better adb SSH

* fix
2025-05-06 10:21:23 -07:00
Joey
5c1f28591f remove dead link in SAFETY.md (#35122)
* Update SAFETY.md

remove broken link

* Update SAFETY.md

* Update docs/SAFETY.md

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2025-05-05 17:07:27 -07:00
Maxime Desroches
3c58da5c84 mimic agnos pyproject order 2025-05-05 16:54:14 -07:00
Dean Lee
b920e2a998 tools: add --auto flag to replay and cabana for loading routes from auto source (#34863)
* add flag to auto load a route from the most suitable source

* split to functions

* early return

* add --auto to replay

* README

* cleanup

* remove prefix

* parse datetime

* cleanup

* improve help

* do not modify logreader.py

* fix seg_num

* cleanup
2025-05-05 16:48:15 -07:00
Maxime Desroches
5a94d818bb add xattr python package (#35131)
* add xattr

* comment
2025-05-05 15:21:06 -07:00
Dean Lee
71b37cfb94 tools/clip: fix SyntaxError in f-string due to unmatched brackets (#35129)
fix lint issue
2025-05-05 14:33:45 -07:00
commaci-public
a8b9350103 [bot] Update Python packages (#35125)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-05-05 12:51:04 -07:00
Dean Lee
c33e5b3209 python ui: wifi manager (#34814)
* python wifi manager

* fix ui

* need auth callback

* move to widgets

* confirm forgot

* add drag detection

* improve keyboard & list

* remove duplicate

* typos

* use gui_app render

* refactor

* cleanup

* cleanup

* shutdown

* fix types

* revert

* scroll panel cleanup

* reset is_dragging on mouse release

* Revert "reset is_dragging on mouse release"

This reverts commit ff5e51cf6f00848d93aa3ce0bab16602fea7a319.

* unformat

* cleanup

* update state when connecting

* forgotten callback

* maybe fix? first tap didn't work

* Revert "maybe fix? first tap didn't work"

This reverts commit 739f0e3bd37323d10479b081a20d05c7fdff5495.

* remove set_target_fps

* Revert "remove set_target_fps"

This reverts commit 96f74553ef6fa2ab2a4d1a07880175e7da628c9f.

---------

Co-authored-by: Cameron Clough <cameronjclough@gmail.com>
2025-05-05 16:28:12 +01:00
Trey Moen
87fae0c6f2 fix(clip): longer timeout for ffmpeg to finish (#35092) 2025-05-04 10:16:48 -07:00
Trey Moen
f704d18a8b feat(clip): title and metadata overlay (#35099)
* wip

* moar

* ensure inter is installed

* line len

* refactor

* dont need this

* no longer than

* show meta for 4s
2025-05-04 10:16:35 -07:00
Dean Lee
8ee99523f4 cleanup .gitignore (#35116) 2025-05-04 10:15:47 -07:00
Dean Lee
8c8b2c4488 replay: fix potential timestamp parsing error in Route::load (#35117)
Fix potential timestamp parsing error in Route::load
2025-05-04 10:15:25 -07:00
Shane Smiskol
db6832762b Tesla: forward Summon (#35113)
bump
2025-05-02 21:48:55 -07:00
Harald Schäfer
df4f2955dc Revert TR (#35110)
* Revert "Tomb raider 2 (#35029)"

This reverts commit 2c162d9b75.

* bugfix

* fix policy

* min control speed
2025-05-02 20:54:42 -07:00
Shane Smiskol
a1ec8c6bfe test models: check steering disengage matches for Tesla (#35107)
test models: check steering disengage matches for tesla
2025-05-02 20:23:30 -07:00
Harald Schäfer
e1d2360b8c Revert: Tomb Raider 6 (#35105) 2025-05-02 10:17:40 -07:00
Shane Smiskol
b58552542d Tesla safety: fix high angle rate fault and enforce steering disengage via safety (#35101) 2025-05-01 22:10:16 -07:00
Shane Smiskol
e972a47b93 CI: check submodules after tests (#35100)
release: check submodules after tests
2025-05-01 20:27:14 -07:00
Shane Smiskol
37fa8dc2ba Tesla: move steering disengage to generic param (#35097)
* add event

* fix

* for now don't change

* bump to master
2025-05-01 20:26:28 -07:00
commaci-public
afcd031cf1 [bot] Update Python packages (#35095)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-05-01 13:59:07 -07:00
Kacper Rączy
45b273328d Enable online lag learning (#34968)
* Use in modeld

* Use in torqued

* Do not use default value in torqued

* Add liveDelay in process replay

* update ref

---------

Co-authored-by: Bruce Wayne <harald.the.engineer@gmail.com>
2025-05-01 11:42:49 -07:00
Harald Schäfer
9f1e462faa Tomb Raider 6 (#35087)
* 5ec366c3-7883-4004-84a2-e4b14bac5b1d/400

* Use lat plan

* fix import

* fix

* 8d0a1b3b-9972-4e53-b9c5-3e13e5e3e404/400

* whitespace

* whitespace
2025-04-30 17:19:53 -07:00
Adeeb Shihadeh
c5ba5c9c23 push back a couple weeks, cvpr release! 2025-04-30 15:44:27 -07:00
Trey Moen
45787163a2 feat: clip.py (#35071) 2025-04-30 15:32:11 -07:00
Shane Smiskol
a0bcea5719 capitalization typo 2025-04-29 15:49:41 -07:00
Shane Smiskol
cf0b0399d9 replay: more speed options (#35091)
* match connect

* simple
2025-04-29 15:48:29 -07:00
commaci-public
91fbbf812f [bot] Update Python packages (#35085)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-04-28 13:33:28 -07:00
William Bonilla
c5b75168e9 Fix test_update_returns_state to flatten Kalman output (#35083)
fix(tests): flatten Kalman filter output in test_update_returns_state
2025-04-28 13:30:16 -07:00
William Bonilla
c4acae6b51 "docs: update 'Turn the Speed Blue' tutorial with new UI path and fu… (#35016)
* "docs: update 'Turn the Speed Blue' tutorial with new UI path and function"

* Change 'Openpilot' to all lowercase ('openpilot') based on the review.
2025-04-27 19:54:00 -07:00
Trey Moen
c0b0bb554c fix(replay): search for route key in entire str (#35081)
fix(replay): look at whole segment string
2025-04-26 13:43:18 -07:00
Harald Schäfer
e7cf508f50 Tomb Raider 5 (#35080)
846c53a4-b886-4942-a4d3-7ea3aff5be8d/400
2025-04-26 07:30:47 -07:00
Cameron Clough
9d17c73f6b avoid importing Raylib UI (#35078) 2025-04-25 19:09:19 -07:00
Cameron Clough
83b84a5bec Revert "ui(raylib): create BaseWindow (#35074)"
This reverts commit 124198460b.
2025-04-26 01:20:58 +01:00
Shane Smiskol
2619732d9f Fix tethering connection disabling internet (#35075)
* fix

* this is ignored in this networkmanager

* whoop
2025-04-25 16:49:09 -07:00
Cameron Clough
124198460b ui(raylib): create BaseWindow (#35074)
* ui(raylib): create BaseWindow

* test without typing

* revert

* Revert "test without typing"

This reverts commit c8a5e1b8322bb7250ede540d7b6d25eefa72cef1.

* lines
2025-04-25 23:33:32 +01:00
github-actions[bot]
41b34c6f43 [bot] Update translations (#35072)
Update translations

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-04-25 14:00:28 -07:00
commaci-public
38610419dc [bot] Update Python packages (#35041)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-04-25 13:58:25 -07:00
Jason Young
37839ea0c5 controls: publish current curvature in CarControl (#34679)
* controls: publish current curvature in CarControl

* clean up

* update refs

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2025-04-25 13:57:18 -07:00
Cameron Clough
362ddfc0c7 ui: replace qt text window with raylib (#35064)
* remove qt text window

* use wrapper, render text window in thread

* add wait_for_exit method

* update imports
2025-04-25 14:17:47 +01:00
Cameron Clough
7eb1c31d72 ui(raylib/text): spacing between button and scrollbar (#35069) 2025-04-25 14:06:37 +01:00
Cameron Clough
92ada2170f ui(raylib): start scroll at bottom of text window (#35068) 2025-04-25 14:00:31 +01:00
Cameron Clough
c961fb095f ui(raylib): preserve whitespace in wrapped text (#35067)
* ui(raylib): preserve whitespace in wrapped text

* lint
2025-04-25 13:57:04 +01:00
Adeeb Shihadeh
37e86df41e CI: comment reporter links on PRs (#35066)
* comment

* Revert "Tomb Raider 4 (#35058)"

This reverts commit 756aebd39f.

* no dpeth

* Reapply "Tomb Raider 4 (#35058)"

This reverts commit 7143835b3d075271e86fb181e08f32db7720c6f8.

* no forks
2025-04-24 18:16:18 -07:00
Harald Schäfer
756aebd39f Tomb Raider 4 (#35058)
* dc455ed7-0ef1-4c57-9391-c71767784c7e/400

* f16884e6-417e-4842-aeda-b2e1b3edf40b/400
2025-04-24 16:24:21 -07:00
Cameron Clough
3ee2882093 ui: replace qt spinner with raylib (#35059)
* use raylib spinner

* remove qt spinner

* use wrapper, render spinner in thread

* english

* fix?

* match Qt font size more closely
2025-04-24 21:16:38 +01:00
Cameron Clough
7c223e5586 ui(raylib): decrease target FPS to 30 (#35062) 2025-04-24 21:00:48 +01:00
Cameron Clough
8088438bd6 hardware: make set_display_power not abstract (#35061)
hardware: make set_dispaly_power not abstract

follow-up to https://github.com/commaai/openpilot/pull/35060#discussion_r2058829397
2025-04-24 20:18:31 +01:00
Cameron Clough
196848c023 ui(raylib): set display power and brightness on init (#35060)
* add set_display_power to hardware.py

* set display power and brightness on app init
2025-04-24 15:55:15 +01:00
ZwX1616
e85d833a80 Revert "Revert "OS04C10: use IFE downscaler for road cameras"" (#35047)
* Revert "Revert "OS04C10: use IFE downscaler for road cameras" (#35046)"

This reverts commit aaaa2d0dd0.

* fixed

* patch it here

* surely
2025-04-23 21:09:22 -07:00
Harald Schäfer
a38dcbb3fe Disable low speed steer in modeld (#35056)
* disable low speed steer

* No steer under
2025-04-23 14:15:06 -07:00
Cameron Clough
281a72780b Reapply "ui(raylib): "exit" btn in text window on PC" (#35053)
* ui(raylib): "exit" btn in text window on PC

* unused import

* request close

* this was missing
2025-04-23 14:06:09 +01:00
Kacper Rączy
7b5468b2e8 plotjuggler: support relative paths (#35054)
* Support relative paths

* Abspath for rlog too
2025-04-22 21:50:03 +00:00
Cameron Clough
754f5aa955 Revert "ui(raylib): "exit" btn in text window on PC (#35052)"
This reverts commit f9767d2650.
2025-04-22 22:30:20 +01:00
Cameron Clough
f9767d2650 ui(raylib): "exit" btn in text window on PC (#35052)
* ui(raylib): "exit" btn in text window on PC

* unused import
2025-04-22 22:07:47 +01:00
Cameron Clough
c9259a9bcf ui(raylib): update spinner vertical pos (#35051)
Adjust the spinner vertical position when displaying text or a progress bar

- When displaying the progress bar, center the comma logo and spinner in the middle of the screen
- When displaying text, center the entire content vertically

Also updated `wrap_text` to not include an empty line in the array if it's the first line, so that `wrap_text("")` always returns `[]`
2025-04-22 20:54:36 +01:00
Cameron Clough
651ff78cb0 ui(raylib): increase font size and wrap text in spinner (#35049)
- Wrap text onto separate lines
- Increase font size to be closer to Qt
- Remove extra letter spacing - 0.0 should use font default spacing, and this is used in `wrap_text`

Will fix vertical alignment separately, as both the text and progress bar layouts need to be considered
2025-04-22 16:07:05 +01:00
Cameron Clough
23524e2038 ui(raylib): reduce spinner rotation artifact (#35048)
* ui(raylib): reduce spinner rotation artifact

A visual artifact (white pixels) appeared on the edge of the
rotating spinner track texture, likely due to RGB color bleed during
bilinear filtering in Raylib.

Pre-multiplying the alpha channel of the spinner track image using
`rl.image_alpha_premultiply` significantly reduces the visibility of the
artifact.

* lint
2025-04-22 15:28:54 +01:00
Harald Schäfer
8cefc00a6e Tomb Raider 3 (#35042)
* 92b64884-4506-4a03-87ad-33e1a177fe73/400

* faster lat
2025-04-21 17:06:53 -07:00
ZwX1616
aaaa2d0dd0 Revert "OS04C10: use IFE downscaler for road cameras" (#35046)
Revert "OS04C10: use IFE downscaler for road cameras (#35023)"

This reverts commit 3b60b22cee.
2025-04-21 17:02:36 -07:00
Adeeb Shihadeh
a9b9e0bb54 raylib: init updater (#35045)
* raylib: init updater

* cleanup
2025-04-21 16:13:55 -07:00
Bruce Wayne
a029d13398 update smooth 2025-04-21 15:44:30 -07:00
Harald Schäfer
33a7d853f0 Modeld: small refactor (#35044)
refactor
2025-04-21 15:10:41 -07:00
Harald Schäfer
34514ef176 Long planner: make work with training (#35043)
* revert useless

* update ref
2025-04-21 14:11:57 -07:00
github-actions[bot]
ed555cb948 [bot] Update translations (#35040)
Update translations

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-04-21 12:48:11 -07:00
Cameron Clough
d56baa0fbb ui(raylib): constant spinner rotation speed (#35037) 2025-04-20 15:03:49 +01:00
Cameron Clough
618b7ccf23 ui(raylib): calculate spinner progress in set_text (#35036) 2025-04-19 17:08:33 +01:00
Cameron Clough
fb5fa70e78 ui(raylib): update text window font, new lines and indentation (#35031) 2025-04-19 16:17:18 +01:00
YassineYousfi
7ceb284d6d process replay migration: fix longitudinalPlan (#35035) 2025-04-18 19:21:52 -07:00
ZwX1616
3b60b22cee OS04C10: use IFE downscaler for road cameras (#35023)
* squashh

* wrong

* clean up

* rename
2025-04-18 14:29:37 -07:00
Harald Schäfer
2c162d9b75 Tomb raider 2 (#35029)
* db56b8fb-9135-4ab6-af18-99b7df7b2245/400

* fixes

* linter unhappy

* 6dbe0991-baa1-49ad-836a-ab370d1f0d92/400

* This one is good: 19387087-1005-475e-9015-9458dd8e7c5f/400

* Better every day: 39ed911c-0937-417f-97d2-58a8bb3caa53/400

* Actually end-to-end

* typo

* smooooooth: 94e23541-eb84-4fef-9f51-6a2d82aff314/360

* Revert "smooooooth: 94e23541-eb84-4fef-9f51-6a2d82aff314/360"

This reverts commit edd4f02386d83d82dd8a188985cde80ed1646b7f.

* 11632ef7-f555-489c-8480-e3bf97d9285e/400

* 08712d27-f6bd-4536-a30e-c729e5f62356/400

* 0a92a35e-1f72-476a-8cb6-c9f103f36822/400

* ee6d2394-2072-420c-a664-b4c0d4ed0b61/400

* no prev curv

* No double work

* fix bug

* smooth

* update prev action

* whitespace

* add little accel

* new ref

* Update plant.py
2025-04-17 23:21:25 -07:00
niko001
65c210265b Multilang: Update de translation (#35025)
added missing German translations
2025-04-17 20:55:32 -07:00
Kacper Rączy
15326c2d30 lagd: check for validity of the estimate when restoring state (#35034)
Do not restore if invalid
2025-04-18 01:37:48 +00:00
Harald Schäfer
b42ec33a63 Update modeld action logic (#35032)
* add action logic

* magic numbers

* unused

* plot accel

* more changes
2025-04-17 17:59:15 -07:00
Cameron Clough
4f913f0cfb ui(raylib): fix typos (#35030) 2025-04-18 01:11:22 +01:00
Bruce Wayne
a4cdc96a99 update 2025-04-17 16:58:00 -07:00
Kacper Rączy
06a9483a24 lagd: estimate std (#35009)
* Std

* Fix static

* Refactor

* Assert std zero
2025-04-17 23:49:30 +00:00
Cameron Clough
c933914f86 ui(raylib): update spinner progress bar to match Qt (#35028) 2025-04-17 23:11:19 +01:00
Kacper Rączy
60da5dd39a lagd: check sensors valid (#35027)
* Check if sensors valid

* Fix test

* Fix static

* Constants

* time buffer for pose valid

* Fix static
2025-04-17 09:35:30 +02:00
Shane Smiskol
d7a5661ffe Fix possible CAN ignition overlap due to incorrect counter tracking (#35019)
* fix-rivian-ign

* bump
2025-04-14 21:08:45 -07:00
Maxime Desroches
0a40162039 Temporary disable UI preview from CI (#35018)
disable
2025-04-14 18:36:55 -07:00
Shane Smiskol
abad7649d6 Rename experimental long (#35011)
* now alpha long

* fix

* rename param

* thought i did this

* debug

* debug

* more

* more

* moar

* Revert "moar"

This reverts commit e347106246583982e1be206485ad4d8eb944f817.

* Revert "more"

This reverts commit 0746e6d2e400ce1715614c62af84a9680c4d65c1.

* Revert "more"

This reverts commit 0db5a8792c01bb2d687f9152e6ba37fb76d4a453.

* Revert "debug"

This reverts commit 72f235b13727980e4331ff487998ddc7c7f7fb63.

* Revert "debug"

This reverts commit 7871b69f8c1bdffed386c2baac99542fcc50f7eb.
2025-04-14 17:17:59 -07:00
commaci-public
dced8d7f87 [bot] Update Python packages (#35017)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-04-14 16:51:16 -07:00
commaci-public
b0915db50a [bot] Update Python packages (#35012)
* Update Python packages

* update refs

---------

Co-authored-by: Vehicle Researcher <user@comma.ai>
Co-authored-by: Shane Smiskol <shane@smiskol.com>
2025-04-11 14:55:12 -07:00
Adeeb Shihadeh
24c2d9a68a bump panda 2025-04-10 15:57:15 -07:00
Robbe Derks
3e6267967b Raise thermal setpoint (#35008)
We don't need to control all the way down to 70C
2025-04-10 16:33:36 +02:00
Kacper Rączy
f237649a7a Reapply "Online lateral lag learning" (#34975)
* Online lateral lag learning (#34974)

This reverts commit b4cc9e68d1.

* pad to the best size for fft

* Fix static analysis

* Add typing

* Fix typing

* MAX_LAG

* Calculate cross correlation regardless if the points are valid

* Back to lagd

* Add lagd to process_config

* Lagd in test onroad

* Move lag estimator for lagd

* Remove duplicate entry from test_onroad

* Update process replay

* pre-fill the data

* Update cpu usage

* 25sec window

* Change the meaning of lateralDelayEstimate

* No newline

* Fix typing

* Prefill

* Update ref commit

* Add a unit test

* Fix static issues

* Time limit

* Or timeout

* Use mocker

* Update estimate every time

* empty test

* DT const

* enable RIVIAN again

* Update ref commit

* Update that again

* Improve the tests

* Fix static

* Add masking test

* Increase timeout

* Add liveDelay to selfdrived

* Add liveDelay to selfdrived in process_replay

* Fix block_avg restore after num_blocks

* regen most

* Update bolt

* Update ref commit

* Change the key name

* Add assert

* True weighted average
2025-04-09 22:31:07 +00:00
Shane Smiskol
5d1816e2b8 Revert "test_models: update relay malfunction check" (#35002)
Revert "test_models: update relay malfunction check (#34999)"

This reverts commit 2cd0079abe.
2025-04-08 21:27:05 -07:00
Kacper Rączy
dec42839e3 process_replay: remove GM (volt) (#35000)
Remove volt segment
2025-04-09 04:13:02 +00:00
Shane Smiskol
2cd0079abe test_models: update relay malfunction check (#34999)
relay is checked in fwd hook
2025-04-08 21:11:24 -07:00
Shane Smiskol
4c7d29b907 bump opendbc 2025-04-08 21:08:04 -07:00
Kacper Rączy
0b72ae3bc2 process_replay: fix GM and replace TOYOTA3 (#34996)
* Add volt and bolt param migration

* Remove mazda due to invalid sensor timings

* Fix the import

* Add mazda to excluded

* Bring back mazda, but add todo

* New segment for TOYOTA3

* Fix

* Update ref commit
2025-04-09 03:12:52 +00:00
Adeeb Shihadeh
84b0baf68b Revert "hardwared: give stuck LTE connections a kick"
This reverts commit e4aa346259.
2025-04-08 11:04:00 -07:00
Adeeb Shihadeh
e4aa346259 hardwared: give stuck LTE connections a kick
This reverts commit e3e694096a.
2025-04-08 11:03:24 -07:00
Kacper Rączy
fc65a8ea8f paramsd: cache backwards compatibility (#34991)
* LiveParametersV2 key

* Param key

* Fix tests

* Remove old params if error

* Update exception message

* Update the test

* Add test for corrupted byte format in v1

* Rename params_reader => params
2025-04-08 02:23:11 +00:00
Maxime Desroches
cdc801c3c1 update to latest userdata partition (#34990)
update
2025-04-07 11:51:53 -07:00
eFini
9f1a4569d1 Multilang: Update zh translation (#34985) 2025-04-07 10:55:52 -07:00
programanichiro
d1caf29f7d Multilang: Update ja translation (#34986)
* 日本語訳2025/3/19

* numerusform追加。

* connect to an unmetered networkに対応

* panda是正

* opendbc_repo是正
2025-04-07 10:55:35 -07:00
commaci-public
d78c9c26f6 [bot] Update Python packages (#34987)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-04-07 10:52:45 -07:00
Alexandre Nobuharu Sato
05ba480e02 Multilang: Update pt-BR translation (#34983) 2025-04-06 14:27:40 -07:00
Adeeb Shihadeh
f3c1427027 agnos 11.13 (#34980)
* agnos 11.12

* new build
2025-04-06 12:42:09 -07:00
Kacper Rączy
490c53e2dc locationd: make pose_kf inherit from KalmanFilter (#34982)
* Read message not json for initial state

* Delete lines

* Fix param
2025-04-05 05:48:34 +00:00
Kacper Rączy
1e3f6599bd calibrationd: read carParams from Params (#34981)
* Read CarParams once from Params

* Remove it from process replay
2025-04-04 23:05:36 +00:00
Adeeb Shihadeh
cab57a00d0 selfdrived: remove ignored processes list (#34978)
* selfdrived: remove ignored processes list

* it's a set
2025-04-04 09:52:59 -07:00
Kacper Rączy
049193b178 test_onroad: test liveParameters service timing (#34977)
Add live params to test onroad
2025-04-04 03:31:55 +00:00
Harald Schäfer
e45fc5e84b Bump tinygrad to upstream master (#34973)
bump tg
2025-04-03 19:51:15 -07:00
Kacper Rączy
5c4ceb7b39 liveDelay message (#34976)
Bring back the lag message
2025-04-02 19:12:54 +00:00
Jason Wen
6a3d0e090c ci: update package management for ui_preview (#34967)
* ci: update package management for `ui_preview`

Add `apt-get update` before installing ImageMagick to ensure the package list is up-to-date. This prevents potential installation issues due to outdated package information.

* test commit

* try this

* revert
2025-04-02 11:38:29 -07:00
Adeeb Shihadeh
3707efff6b camerad: don't gate first frame on FSIN (#34972)
don't wait
2025-04-01 16:54:53 -07:00
Kacper Rączy
b4cc9e68d1 Revert "Online lateral lag learning" (#34974)
Revert "Online lateral lag learning (#34531)"

This reverts commit 1034dbd37c.
2025-04-01 21:44:30 +00:00
Iamz
9cb4d3d75e Update Thai translations (#34970) 2025-04-01 11:39:01 -07:00
Kacper Rączy
1034dbd37c Online lateral lag learning (#34531)
* Add struct and services

* Proof of concept

* Use vego

* Process replay support

* Fix issues

* Max not min

* Remove print

* Make lag positive

* Points and updates

* Sliding cross corr

* Stuff

* Remove redundant param

* Move to lagd

* Update alert

* Something that works

* Report isEstimated

* Corr field

* Use skimage masked corr

* Fixes

* Move to lat_accel_loc

* Use the delay it in the model

* Mark as executable

* Add 0.2 to initial

* add install line

* Back to 5m window

* Move the import up

* corr window 120

* Show is estimated

* Sort messages

* New impl

* Fix

* Params

* Set initial_lag elsewhere

* Add param

* Rename Param

* Fix type isues

* More blocks

* Masked fft NCC implementation

* Remove package installation

* Use 20hz data and interp the correlation peak

* Move ncc code to separate function

* steering_saturated support

* Constants

* Add recovery buffer

* Fix static

* min_valid_block_count nad liveDelay

* lateralDelayEstimate

* Fix comm issues. Do estimations at 4hz

* Fix

* Display the estimate

* Increase the block size

* Cache every minute

* DEBUG flag

* Add progress to the alert

* Fix crash

* points only in debug

* Fix BlockAverage restoration

* Comment

* Move estimators into estimator directory

* Remove lagd

* Feed only relevant messages

* Rewrite as a set literal

* np.diag with P_initial

* Fix static

* Struct renames

* Update ref commit

* Make it nicer

* Some renames
2025-04-01 04:02:02 +00:00
Kacper Rączy
39d4148c70 paramsd: cache restore unit test (#34966)
* Add a test

* Fix P_init restore

* Add migration to the first test

* Reuse the route from lld scenarios test
2025-04-01 01:45:58 +00:00
Kacper Rączy
ffcbdc8c43 paramsd: catch all exceptions during migration (#34965)
Catch all exceptions during migration
2025-03-31 23:59:29 +00:00
James
bad6103ce7 Remove duplicate "edited" type in PR review workflow (#34961) 2025-03-31 13:09:06 -07:00
Kacper Rączy
75cc300480 paramsd: refactor VehicleParamsLearner (#34955)
* Refactor ParamsLearner

* Make it VehicleParamsLearner

* Fix

* Use capnp serialization instead of json

* Fix speed

* Remove redundant comments

* Monitor observed_roll

* Just use init_state

* Comment

* Improve reset

* Set globals api

* Typing for return value

* Redo reset messaging

* Remove usages of math

* Fix process_replay custom_params

* Type ignores for rednose fields

* Remove import

* Reset previous values too

* Update ref_commit

* Revert it

* Bring it back

* Remove more

* Add migration for cached params
2025-03-31 20:07:39 +00:00
commaci-public
447f279f83 [bot] Update Python packages (#34962)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-03-31 13:07:23 -07:00
Maxime Desroches
c4efe2f973 add cache key for macOS runners (#34963)
* fix

* test

* restore

* cleanup
2025-03-31 13:06:37 -07:00
Maxime Desroches
e674bc1355 Use Github Actions macOS runners for external contributors (#34956)
mac
2025-03-28 21:06:02 -07:00
Harald Schäfer
6c046e5aa3 Update np > 2.0 (#34949)
* Update np

* Update lock

* update rednose

* newest numpy has mypy issues

* typo

* revert
2025-03-28 11:37:03 -07:00
Harald Schäfer
05f7519628 Remove T_IDXS from road edges and lanelines (#34950)
* Not useful anymore

* add type
2025-03-28 10:43:43 -07:00
Harald Schäfer
b33677c0dc WORKFLOW.md : remove redundant testing and linting info 2025-03-28 10:30:56 -07:00
Robbe Derks
b8065d3138 Parse out more ublox sat info (#34947)
parse out more sat info
2025-03-28 10:26:37 +01:00
commaci-public
98a2b85529 [bot] Update Python packages (#34946)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-03-27 01:47:55 -07:00
Shane Smiskol
a2859090d8 controls: reset desired curvature while disabled (#34943)
* reset curvature while disabled

* comment

* duplicate line

* fix possible iso violation because it was unlimited while disengaged

* rename so you can't accidentally use

* update refs
2025-03-26 22:41:26 -07:00
Shane Smiskol
a6bfb9919d Rivian: increase low speed torque (#34939)
* bump opendbc for more torq

* bump to master
2025-03-26 17:10:10 -07:00
Louis Velez
ce318e9c40 ui: update spanish translation (#34944)
Update main_es.ts
2025-03-26 16:06:43 -07:00
Shane Smiskol
27d882cc0a Revert "logreader.py: concurrent file existence checks" (#34942)
Revert "logreader.py: concurrent file existence checks (#34875)"

This reverts commit e11b239b2e.
2025-03-26 14:45:35 -07:00
Adeeb Shihadeh
45de2f7f19 fix codespell 2025-03-26 10:46:16 -07:00
Adeeb Shihadeh
531893d1c5 simple gps layout 2025-03-26 10:27:57 -07:00
commaci-public
b413f3de47 [bot] Update Python packages (#34934)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-03-25 23:45:06 -07:00
Adeeb Shihadeh
ea4554526e Keep steering active at standstill (#34918)
* Keep steering active at standstill

* bump opendbc

* bump opendbc

* update refs
2025-03-25 14:00:24 -07:00
Shane Smiskol
e652f435f9 max_lat_accel.py: use parallel processing (#34936)
* use run_across_segments

* disable tqdm
2025-03-25 13:26:16 -07:00
Louis Velez
e607cbe5a2 ui: spanish translation update (#34933)
Translate unfinished strings in main_es.ts to Spanish, including ADB, Firehose Mode, and welcome messages for improved user experience.
2025-03-24 23:22:10 -07:00
Maxime Desroches
5d8fd36022 jenkins looper: new branch for each runs 2025-03-24 21:53:52 -07:00
Shane Smiskol
3748fdc355 Rivian: add another EPS query (#34932)
* bump

* update docs
2025-03-24 17:25:17 -07:00
Adeeb Shihadeh
2382f1cab0 Run DM model twice, prep for bigger models (#34894)
* twice

* swap

* adjust
2025-03-24 15:54:42 -07:00
Dean Lee
e11b239b2e logreader.py: concurrent file existence checks (#34875)
* concurrent file existence checks

* upper bound on parallel queries

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2025-03-24 15:46:42 -07:00
Shane Smiskol
de8806cdfd Add extrapolate option to max_lat_accel.py (#34931)
* add extrapolate

* -e

* adjust
2025-03-24 15:21:36 -07:00
Alexandre Nobuharu Sato
5a28b0c9fe Avoid IndexError in max_lat_accel.py due to empty values in dataset (#34926)
* Update max_lat_accel.py

The error you're encountering is due to the fact that the code is trying to calculate the 90th percentile of lateral acceleration values that are less than 0, but there are no such values in the dataset. This results in an empty list, which causes the np.percentile function to fail with an IndexError

* fix

* simpler

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2025-03-24 14:40:25 -07:00
Shane Smiskol
313a3d81e0 Rivian: add hardware part number query (#34930)
bump
2025-03-24 14:23:22 -07:00
commaci-public
7627432830 [bot] Update Python packages (#34928)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-03-24 10:27:31 -07:00
Adeeb Shihadeh
4bbb697998 bump panda 2025-03-22 15:06:25 -07:00
Shane Smiskol
65d667e60e Revert "logreader: avoid repeated prompts in auto_strategy when rlogs are missing" (#34919)
Revert "logreader: avoid repeated prompts in auto_strategy when rlogs are mis…"

This reverts commit b8229ebca6.
2025-03-21 17:28:19 -07:00
Shane Smiskol
27ce30587a fix 2025-03-21 16:18:39 -07:00
Shane Smiskol
715a38fd6a max_lat_accel: support multiple routes 2025-03-21 16:16:53 -07:00
Shane Smiskol
124c75a94f Remove duplicate radar fault event (#34917)
🤦
2025-03-21 15:01:59 -07:00
Dean Lee
b8229ebca6 logreader: avoid repeated prompts in auto_strategy when rlogs are missing (#34890)
* avoid repeated prompts in auto_strategy when rlogs are missing

* shorter

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2025-03-21 14:43:48 -07:00
Lee Jong Mun
2413f73108 kor translation update (#34915) 2025-03-20 23:38:05 -07:00
Trey Moen
b511fb7245 fix: macOS CI (#34911)
force brew update
2025-03-20 20:45:41 -07:00
commaci-public
46e435f124 [bot] Update Python packages (#34914)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-03-20 19:23:42 -07:00
Shane Smiskol
5c6c438bcb Rivian: adjust lateral actuator delay (#34913)
* bump

* update refs
2025-03-20 18:22:12 -07:00
Shane Smiskol
c55ef3ae1b Rivian: enable torqued learning (#34912) 2025-03-20 17:09:52 -07:00
Shane Smiskol
2b9bd8dc36 Fix colors on torque-controller.xml 2025-03-20 15:31:42 -07:00
commaci-public
05700433d8 [bot] Update Python packages (#34909)
* Update Python packages

* update refs

---------

Co-authored-by: Vehicle Researcher <user@comma.ai>
Co-authored-by: Shane Smiskol <shane@smiskol.com>
2025-03-20 14:28:24 -07:00
github-actions[bot]
a40ab9a69b [bot] Update translations (#34908)
Update translations

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-03-20 14:13:07 -07:00
Dean Lee
6d12ade231 python ui: refactor spinner&text (#34897)
refactor spinner&text
2025-03-19 13:11:22 -07:00
Trey Moen
e785026a98 feat(athenad): priority uploads (#34856)
Today, Firehose uploads and user-requested uploads from Connect are treated the same. This is not ideal behavior if the user wants to upload routes immediately for a bug report and the queue is full of uploads for Firehose. The workaround is to clear the queue and retry the upload from Connect.

This PR adds an optional `priority` to requested file uploads in `athenad`. By default, all requests are marked `Low`. However, if the caller wishes to mark their uploads as "more important," then the upload queue will prioritize those requests when uploading.

The only caveat to this PR is that we won't reorder files currently being uploaded. Most connections are quick enough to finish uploading max 4 files before polling the new high-priority items in the queue.

Closes https://github.com/commaai/openpilot/issues/34836

**Verification**

Added test case to insert upload tasks with differing priorities. Polling the queue produces items in the correct order (smallest # to largest).

PR to mark Connect uploads as high priority: https://github.com/commaai/connect/pull/557

---------

Co-authored-by: Cameron Clough <cameronjclough@gmail.com>
2025-03-19 19:22:54 +00:00
programanichiro
2fca845153 Multilang: Update JA translations (#34904)
* 日本語訳2025/3/19

* numerusform追加。
2025-03-19 10:41:44 -07:00
Dean Lee
988fc477eb camerad: remove duplicate include (#34905)
remove duplicate include
2025-03-19 09:27:23 -07:00
Maxime Desroches
c3bba7431a update to latest userdata partition (#34898)
update cache
2025-03-18 11:38:27 -07:00
DevTekVE
ed56ac52f4 ci: Add ui previews for new ui elements as well (#34886)
* Add previews for new ui elements as well

* Actualizar ui_preview.yaml

Co-authored-by: Maxime Desroches <desroches.maxime@gmail.com>

---------

Co-authored-by: Maxime Desroches <desroches.maxime@gmail.com>
2025-03-18 11:33:15 -07:00
Adeeb Shihadeh
d59e514209 missing an 2025-03-18 09:58:48 -07:00
Adeeb Shihadeh
ffd54e41ee bump manager starting time after 519ea9d 2025-03-17 15:19:34 -07:00
commaci-public
469b494026 [bot] Update Python packages (#34893)
* Update Python packages

* fix ruff

---------

Co-authored-by: Vehicle Researcher <user@comma.ai>
Co-authored-by: Maxime Desroches <desroches.maxime@gmail.com>
2025-03-17 12:47:49 -07:00
Adeeb Shihadeh
fe08e52683 0.9.9 soon 2025-03-17 09:26:52 -07:00
Dean Lee
5cffaf5bb5 url_file.py: remove the unnecessary str() wrapping around the hexdigest() (#34891)
remove the unnecessary str() wrapping around the hexdigest()
2025-03-17 12:23:57 +00:00
eFini
d1042df632 Multilang: Update ZH translations (#34889)
update zh translations
2025-03-16 20:39:50 -07:00
Shane Smiskol
9571fc5607 radard: use a filter for aLeadTau (#34883)
use a filter
2025-03-15 23:49:22 -07:00
Shane Smiskol
abc1c5fb95 selfdrived: add canError for radar can errors (#34873)
radar can invalid
2025-03-15 22:21:58 -07:00
Adeeb Shihadeh
c0b39d328d fix typo 2025-03-15 22:08:43 -07:00
Adeeb Shihadeh
561d33d81e remove '-release' suffix 2025-03-15 20:55:03 -07:00
Adeeb Shihadeh
519ea9dcab Make model daemons Python processes (#34880) 2025-03-15 15:55:29 -07:00
Adeeb Shihadeh
fb7b9c0f94 camerad: log failed sync time (#34878)
* camerad: log failed sync time

* mv

---------

Co-authored-by: Comma Device <device@comma.ai>
2025-03-15 14:02:03 -07:00
Shane Smiskol
5c3020844e car interfaces: each specify their own dependencies (#34874)
* remove these

* fix

* oops

* clean up

* nl

* bump
2025-03-14 22:37:49 -07:00
Shane Smiskol
4e7c605a79 Ford: radar is invalid while in reverse (#34866)
* temp unavailable

* fix

* replay multiple

* clean up

* bump

* rename

* reason is in liveTracks

* more rename

* bump

* fix

* bump

* fix

* need to totally ignore it, or it will throw commIssues for radarErrors or not alive

* this is just simpler -- good thing kept struct

* rm
2025-03-14 21:08:30 -07:00
Shane Smiskol
714348e17e liveTracks: bool error fields (#34869)
* bool fields

* liveTracks.valid is already set using errors

* fix

* clean up

* same but diff

* fix

* fix

* fix test

* clean up

* rm radarErrors

* whoops

* no struct

* Revert "no struct"

This reverts commit ed8ec02493673f850800344c73c969508fc38991.

* bump

* update
2025-03-14 20:40:28 -07:00
Shane Smiskol
811272dc28 radarState: check average frequency (#34872)
* always check radarState freq since it polls on modelV2 and sends at a fixed rate

* fine

* can just check this since valid is all_checks on liveTracks, and liveTracks.valid is len(errors) as well

full circle
2025-03-14 19:37:27 -07:00
Adeeb Shihadeh
e1eac057ca camerad: fix rare BPS startup issues (#34871)
* repros

* handle old frames

* cleanup

* more freq

* fix request id skipping

---------

Co-authored-by: Comma Device <device@comma.ai>
2025-03-14 19:30:09 -07:00
Shane Smiskol
349d569dfa radard: radar errors are captured in valid flag (#34870)
* already set valid from this

* clean up
2025-03-14 17:21:02 -07:00
Shane Smiskol
07edc54db6 bump opendbc (#34868)
bump
2025-03-14 16:16:10 -07:00
Shane Smiskol
7ab558a789 run_process_on_route: support multiple processes (#34867)
support multiple procs
2025-03-14 16:09:23 -07:00
Kacper Rączy
02519b7a6e process_replay: refactor migrate_deviceState (#34864)
* Refactor migrate_deviceState

* Fix again
2025-03-14 22:24:41 +00:00
Shane Smiskol
a8bb9cfe41 Revert "ignore"
This reverts commit bd2f0017ff.
2025-03-13 20:50:51 -07:00
Shane Smiskol
bd2f0017ff ignore 2025-03-13 20:49:55 -07:00
Dean Lee
c0b6d58236 setup: fix dangling pointer Issue in curl header setup (#34860)
fix dangling pointer in curl header setup
2025-03-13 10:42:22 -07:00
Dean Lee
1cd6ca467d pandad: forward debug logs to cloudlog (#34859)
forward debug logs to cloudlog
2025-03-13 10:40:26 -07:00
Kacper Rączy
3652dff77a paramsd: allow uncalibrated values while calibrating (#34852)
* Use uncalibrated values

* Use calib_valid

* Move valids together

* Add calibration valid field

* Add migration block for new field

* No paramsdTemporaryError while calibrating

* comment

* Fix static issues

* Update ref commit

* Comment

* Remove redundant field

* check for calstatus in selfdrived

* Remove comment

* Update ref commit
2025-03-13 07:51:25 +01:00
royjr
41536f6e48 ui: update arabic translations (#34857)
Update main_ar.ts
2025-03-12 19:21:28 -07:00
Adeeb Shihadeh
196eb50d23 camerad: log whether sync fails in IFE or BPS (#34854) 2025-03-12 15:59:27 -07:00
Adeeb Shihadeh
96641ac12c no gh actions in release 2025-03-12 14:56:40 -07:00
Adeeb Shihadeh
800a41c4e1 agnos 11.11 (#34816) 2025-03-12 14:02:54 -07:00
Alexandre Nobuharu Sato
8c14985c00 Multilang: update pt_BR translations (#34851)
* Multilang: update pt_BR translations

* no need (s)
2025-03-12 11:04:55 -07:00
Dean Lee
dbbb938ae0 commonmodel: release input_frame_cl and input_frames_cl (#34850)
release input_frame_cl and input_frames_cl
2025-03-12 10:44:04 -07:00
Shane Smiskol
04aed6ba89 Firehose: fix plural is/are (#34849)
* use qt plurals

* remove old
2025-03-12 01:38:13 -07:00
Shane Smiskol
4e469a2987 raise timeout for forks 2025-03-12 00:48:49 -07:00
Shane Smiskol
b732e8eee9 bump opendbc (#34848)
* bump

* bump

* adds EV flag
2025-03-12 00:47:34 -07:00
Adeeb Shihadeh
3f6fd3da78 test_onroad threshold tuning 2025-03-11 16:03:00 -07:00
Shane Smiskol
18db927fc1 test_models: convert can data to namedtuple (#34845)
* stash

* fastest

* faster but not fastest

* clean up

* here too

* fix that

* revert

* already sorted

* rev

* clean up

* allow empty

* lower tm time for cache miss
2025-03-11 14:58:05 -07:00
Dean Lee
4d86e0b039 pyproject.toml: add pygame and dbus-next dependencies (#34826)
add pygame and dbus-next dependencies to pyproject.toml
2025-03-11 13:57:20 -07:00
Adeeb Shihadeh
8c359892be camerad: clear request queue on exit (#34842)
* camerad: doesn't need rt

* clear q
2025-03-11 11:02:02 -07:00
Adeeb Shihadeh
b33342c18f loggerd: limit encoded queue size (#34837)
* loggerd: limit encoded queue size

* less spammy
2025-03-11 10:22:49 -07:00
Lee Jong Mun
dc9b5b7c25 kor translation update (#34838) 2025-03-10 17:29:55 -07:00
ZwX1616
1c678c910e camerad: fix AE oscillation (#34833)
* flooring is fine

* .

* better solution

---------

Co-authored-by: Comma Device <device@comma.ai>
2025-03-10 16:01:03 -07:00
Alexandre Nobuharu Sato
58e5b31cca Multilang: update pt-BR translations (#34832) 2025-03-10 13:56:21 -07:00
github-actions[bot]
c749e90846 [bot] Update translations (#34829)
Update translations

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-03-10 10:57:25 -07:00
commaci-public
5b6c7ddc93 [bot] Update Python packages (#34830)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-03-10 10:57:06 -07:00
Adeeb Shihadeh
f870e48b3a BASEDIR -> DIR 2025-03-10 09:43:46 -07:00
Dean Lee
5574b91d17 python ui: add confirm dialog implementation (#34828)
add confirm dialog implementation
2025-03-10 08:28:32 -07:00
Dean Lee
2bfbb181e5 python ui: add Keyboard Implementation (#34827)
implement keyboard
2025-03-09 18:48:01 -07:00
Dean Lee
06d6f254df radard: use dict comprehension for ar_pts construction (#34824)
use dict comprehension
2025-03-09 18:10:30 -07:00
Adeeb Shihadeh
8edaaeae50 one more firehose faq 2025-03-09 10:07:14 -07:00
Alexandre Nobuharu Sato
08e70f19ed Multilang: update pt-BR translations (#34821)
update pt-BR translations
2025-03-09 09:50:22 -07:00
Lee Jong Mun
ddfbb88cde kor translation update (#34822) 2025-03-09 09:49:47 -07:00
Dean Lee
b98e10acc1 pandad_api_impl: add nogil to can_list_to_can_capnp (#34823)
add nogil to can_list_to_can_capnp
2025-03-08 20:28:08 -08:00
commaci-public
ce355250be [bot] Update Python packages (#34819)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-03-07 22:04:03 -08:00
Adeeb Shihadeh
878ca53d78 hw: remove unused function 2025-03-07 19:01:11 -08:00
commaci-public
7090c1be59 [bot] Update Python packages (#34818)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-03-07 17:25:07 -08:00
Shane Smiskol
d469ce669b test_models: missing skip dashcam for panda safety
found when using release safety FW
2025-03-07 16:58:18 -08:00
ZwX1616
d807b5c476 Filet o Fish model (#34798)
* 690b01c3 seems ok

* correct temporal

* push

* inplace

* bs

* what thw

* is this wrong

* frames are skipped

* new models

* simplify decimation

* clean up

* clean up modelframe

* need attr

* lint

* 0

* use all samples

* this should break - Revert "use all samples"

This reverts commit 6c0d7943ac5fbb7ae60af1a1201e2423e4c3c105.

* add lc probs

* Revert "this should break - Revert "use all samples""

This reverts commit ca38c54333555266a0d2c885c28af28941841431.

* Reapply "this should break - Revert "use all samples""

This reverts commit a3f0246f209f85f06b9090d9492bfba32ed8cfed.

* Revert "Reapply "this should break - Revert "use all samples"""

This reverts commit 7fd3d2a191b688e5ef7b4dcc8f5379e900af10f8.

* new fish

* e07ce1de-bdea-463e-b5bc-a38ce8d43f4f/700

---------

Co-authored-by: Comma Device <device@comma.ai>
2025-03-07 14:24:22 -08:00
Dean Lee
2d2efb3f58 pyui: implement styled label and text box (#34813)
implement styled label
2025-03-07 14:20:49 -08:00
Dean Lee
fa79b29cba soundd: use with statement for wave.open to ensure proper resource cleanup (#34815)
use with statement for wave.open to ensure proper resource cleanup
2025-03-07 13:08:05 -08:00
Dean Lee
3e629acf79 camerad: use ALL_CAMERA_CONFIGS array (#34810)
use ALL_CAMERA_CONFIGS array
2025-03-07 10:31:01 -08:00
Dean Lee
a0a9df2d55 loggerd: enhance ZstdFileWriter test coverage with variable data sizes (#34812)
enhance ZstdFileWriter test coverage
2025-03-07 10:23:46 -08:00
Shane Smiskol
0789877cd3 paramsd: fix unbounded yaw rate while calibrating (#34806)
* rm

* comments

* default values when yaw rate invalid

* clean up

Revert "default values when yaw rate invalid"

This reverts commit e983abb3b009f15a57ebdfbadd4f616aba5b266e.

do the same for yaw rate we do for roll

and

* 1 is fine

* update refs

---------

Co-authored-by: Kacper Rączy <gfw.kra@gmail.com>
2025-03-06 22:44:09 -08:00
commaci-public
e61a4ac76e [bot] Update Python packages (#34805)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-03-06 19:43:02 -08:00
github-actions[bot]
11618c617f [bot] Update translations (#34804)
Update translations

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-03-06 19:42:47 -08:00
Shane Smiskol
ae3a715f51 test_fw_query_on_routes: support no FW 2025-03-06 18:52:46 -08:00
Adeeb Shihadeh
ca7b4340c1 camerad: make recovery reset threshold based on queue depth (#34803)
Co-authored-by: Comma Device <device@comma.ai>
2025-03-06 16:57:37 -08:00
Adeeb Shihadeh
c3a83ccc63 simplify release build 2025-03-06 16:00:48 -08:00
Shane Smiskol
08fea7fa27 Fix torque control layout 2025-03-06 13:20:56 -08:00
Adeeb Shihadeh
63f60505db ui: no scroll terms (#34797)
* remove scroller

* match setup style

* rm that
2025-03-06 10:55:39 -08:00
Mauricio Alvarez Leon
88fa3cdd90 op adb: change directory to match ssh (#34770)
Update adb_shell.sh
2025-03-06 10:18:12 -08:00
Dean Lee
e9f7c01a3a camerad: move output_type to config (#34792)
move output_type to config
2025-03-06 10:17:58 -08:00
Dean Lee
e3ce984701 clutil: remove deprecated and unused code (#34793)
remove deprecated and unused code
2025-03-06 10:17:11 -08:00
Dean Lee
2c2c6e6437 deleter: fix duplicate segments in get_preserved_segments return value (#34795)
fix duplicate segments in get_preserved_segments return value
2025-03-06 10:16:56 -08:00
Dean Lee
47f37d5fec remove numpy_fast.py (#34796) 2025-03-06 10:14:53 -08:00
Robbe Derks
1506ff3122 bump panda 2025-03-06 17:29:04 +01:00
Shane Smiskol
f3bfdf6969 Rivian: don't show set speed in UI (#34705)
* Rivian: don't show set speed in UI

* stash

* bump

* use speed

* bump

* bump to master

* update refs

* default true
2025-03-05 23:49:00 -08:00
Shane Smiskol
59bb5c54b3 Rivian: cancel command (#34767)
* test it

* bump

* bump

* bump

* bump

* clean up

* bump refs
2025-03-05 20:50:22 -08:00
Shane Smiskol
95adfd97f0 bump opendbc 2025-03-05 20:37:30 -08:00
Adeeb Shihadeh
8c2cd247f0 camerad: stress test (#34735)
* refactor a bunch of stuff

* prob

* enable

* rm print

* cleanup

---------

Co-authored-by: Comma Device <device@comma.ai>
2025-03-05 19:31:44 -08:00
Adeeb Shihadeh
4bb0dfd59c camerad: cleaner queueing logic (#34786) 2025-03-05 17:12:30 -08:00
Adeeb Shihadeh
f4d17cbfdd camerad: sanity check tests (#34785)
lil more
2025-03-05 16:54:35 -08:00
Adeeb Shihadeh
65bf2ec0ea test_onroad: add sanity check on ecode outputs (#34784)
* test_onroad: add sanity check on ecode outputs

* exact
2025-03-05 15:58:03 -08:00
Adeeb Shihadeh
821148150b Revert "make test_onroad faster (#34704) (#34783)
* Revert "make test_onroad faster (#34704)"

This reverts commit 470ec46830.

* try this

* add there

* cleanup

* try this

* lil more

* list

* classic

* don't skip test
2025-03-05 15:42:22 -08:00
Jason Young
d15599a30b tools: updates to find_segments_with_message notebook (#34782)
* cleanup, refactor, progress bar

* more cleanup, add EXTRA_SEGMENTS

* not everyone can see that route

* add to README

* update README

* red panda support
2025-03-05 16:40:51 -05:00
Harald Schäfer
e394569eae Pre leak TinyGrad unbump (#34781) 2025-03-05 13:33:45 -08:00
Shane Smiskol
a82db2d331 Revert "Filet o Fish model" (#34780)
Revert "Filet o Fish model (#34775)"

This reverts commit 31076b818d.
2025-03-05 01:41:16 -08:00
github-actions[bot]
50d059f96b [bot] Update translations (#34778)
Update translations

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-03-04 22:54:21 -08:00
commaci-public
54f845c369 [bot] Update Python packages (#34779)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-03-04 22:54:05 -08:00
ZwX1616
31076b818d Filet o Fish model (#34775)
* 690b01c3 seems ok

* correct temporal

* push

* inplace

* bs

* what thw

* is this wrong

* frames are skipped

* new models

* simplify decimation

* clean up

* clean up modelframe

* need attr

* lint

* 0

* use all samples

* this should break - Revert "use all samples"

This reverts commit 6c0d7943ac5fbb7ae60af1a1201e2423e4c3c105.

* add lc probs

* Revert "this should break - Revert "use all samples""

This reverts commit ca38c54333555266a0d2c885c28af28941841431.

* Reapply "this should break - Revert "use all samples""

This reverts commit a3f0246f209f85f06b9090d9492bfba32ed8cfed.

* Revert "Reapply "this should break - Revert "use all samples"""

This reverts commit 7fd3d2a191b688e5ef7b4dcc8f5379e900af10f8.

---------

Co-authored-by: Comma Device <device@comma.ai>
2025-03-04 20:35:57 -08:00
ZwX1616
3f9437e249 process_replay: support lane changes in model_replay (#34777)
* lane changes need to see these

* newline

* add lc probs
2025-03-04 20:24:17 -08:00
ZwX1616
3e8e7e8e6d update model_replay route (#34774)
* update route

* Update selfdrive/test/process_replay/model_replay.py

Co-authored-by: Maxime Desroches <desroches.maxime@gmail.com>

---------

Co-authored-by: Maxime Desroches <desroches.maxime@gmail.com>
2025-03-04 18:36:30 -08:00
ZwX1616
7dfbf0b1e1 process_replay: set sensor in cameraState migration (#34776)
set sensor in cameraState migration
2025-03-04 18:28:44 -08:00
Alexandre Nobuharu Sato
b8362fd725 Multilang: update pt-BR translations (#34773)
update pt-BR translations
2025-03-04 15:25:01 -08:00
Shane Smiskol
bc422a0738 juggle: use DBC dict generator (#34772)
* juggle: support tesla DBC

* better

* fix

* sort
2025-03-04 13:54:43 -08:00
Jason Young
fe4585ee88 tools: notebook to search commaCarSegments for a CAN ID (#34771) 2025-03-04 16:27:25 -05:00
Adeeb Shihadeh
e5ba737db0 Revert "Filet o Fish model (#34637)"
This reverts commit 159b1c9eb4.
2025-03-03 22:56:59 -08:00
Shane Smiskol
f818c5528f bump opendbc (#34768)
bump
2025-03-03 20:24:16 -08:00
Shane Smiskol
6891b795c4 controls: limit max curvature from lateral acceleration (#34651)
* limit max curvature with lateral accel too

* not a guideline

* roll compensation in curv clip

* improve clipping and alerting

* typo

* clean up

* no float

* get ready

* good idea

* good

* redundant

* TODO

* test

* do max curvature clip last

* flip

---------

Co-authored-by: Bruce Wayne <harald.the.engineer@gmail.com>
2025-03-03 19:47:52 -08:00
Shane Smiskol
949aaaba2c regenerate problem segments 2025-03-03 19:34:49 -08:00
Shane Smiskol
9c9a060365 saturated warning: remove redundant speed check 2025-03-03 19:11:53 -08:00
Kacper Rączy
338b7c915f regen: use ci bucket for files (#34766)
* Remove route meta mode

* use get_url

* Remove useless import
2025-03-04 03:10:48 +00:00
Adeeb Shihadeh
34a072890c fix translations 2025-03-03 18:39:12 -08:00
Adeeb Shihadeh
701868d5cd firehose auto start + stats (#34747)
* don't need that

* stats

* lil more

* lil more

* cleanup

* tweaks

---------

Co-authored-by: Comma Device <device@comma.ai>
2025-03-03 18:21:02 -08:00
Adeeb Shihadeh
41346b2cc7 agnos 11.10 (#34764) 2025-03-03 16:40:35 -08:00
Shane Smiskol
68d22b960b rename steer_limited (#34763)
rename
2025-03-03 16:28:49 -08:00
ZwX1616
159b1c9eb4 Filet o Fish model (#34637)
* 690b01c3 seems ok

* correct temporal

* push

* inplace

* bs

* what thw

* is this wrong

* frames are skipped

* new models

* simplify decimation

* clean up

* clean up modelframe

* need attr

* lint

* 0

---------

Co-authored-by: Comma Device <device@comma.ai>
2025-03-03 15:15:36 -08:00
commaci-public
e39e4b9a61 [bot] Update Python packages (#34761)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-03-03 14:47:18 -08:00
Adeeb Shihadeh
ec81e78c54 no gps localizer 2025-03-03 12:58:43 -08:00
Adeeb Shihadeh
97ffda4ada agnos 11.9 (#34762) 2025-03-03 10:16:05 -08:00
eFini
9200ae38c1 zhs/zht translation update (#34760)
* updated CHT/CHS translations

* better "firehose" translation
2025-03-03 09:37:24 -08:00
Adeeb Shihadeh
1836d1594c Revert "selfdrived: remove ignored process list (#34491)", needed for C3 with NVMe for now
This reverts commit 82722217be.
2025-03-03 09:28:16 -08:00
Shane Smiskol
792e75582a Ford CAN FD: enable safety in release (#34759)
bump
2025-03-02 22:57:17 -08:00
programanichiro
0f2bc09fe7 ja translation update (#34745)
* Firehoseモード翻訳

* 翻訳調整。

* 翻訳調整。

* はみ出し、表現調整。

* Openpilot->openpilot

* 翻訳調整。

* 句読点調整。
2025-03-02 20:31:49 -08:00
Adeeb Shihadeh
a2bc5061e4 camerad: fix bps flush (#34758) 2025-03-02 20:22:06 -08:00
Adeeb Shihadeh
a922b69239 jenkins: enable os04 test (#34757)
This reverts commit a4980dbb0d.
2025-03-02 20:12:22 -08:00
Dean Lee
c52112ad4e loggerd: eliminate recursion from handle_encoder_msg (#33453)
* refactor handle_encoder_msg

* removing the recursion only

---------

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2025-03-02 20:01:21 -08:00
Maxime Desroches
2431bc6262 ci: fix firehose UI preview position (#34754)
prev
2025-03-02 17:14:55 -08:00
Maxime Desroches
e539e34f73 ci: only specify scene name once in UI preview test (#34752)
remove this garbage
2025-03-02 16:56:38 -08:00
Adeeb Shihadeh
29ff29bcb5 master-ci is dead 2025-03-02 13:49:19 -08:00
Adeeb Shihadeh
c32c405f65 remove model shims (#34750) 2025-03-02 13:39:36 -08:00
Adeeb Shihadeh
0abe348283 gc old stuff in modeld 2025-03-02 13:23:33 -08:00
Adeeb Shihadeh
54f1b00447 Log git source commit (#34749)
* Log git source commit

* strip

* fix trim

* no trim
2025-03-02 13:11:38 -08:00
Adeeb Shihadeh
2d9f33cbe2 detect BASEDIR 2025-03-02 12:46:00 -08:00
Mauricio Alvarez Leon
38100805bf move update_translations from scons to GHA (#34481)
* remove update_translations from scons

* update_translations GHA

* working GHA

* fix scons fails

* job name

* remove test_update_translations

* cleanup

* move to repo-maintenance

* Update .github/workflows/repo-maintenance.yaml

* bring that back

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2025-03-02 10:20:03 -08:00
Adeeb Shihadeh
5067ee1e94 plotjuggler: fix for fork routes 2025-03-02 09:45:05 -08:00
Lee Jong Mun
f50e1baa89 kor translation update (#34741) 2025-03-01 17:34:38 -08:00
Adeeb Shihadeh
095088ea91 Deprecate master-ci (#34744) 2025-03-01 13:16:44 -08:00
Dean Lee
2d882b716a replay: update help text with route and service list details (#34743)
improve help
2025-03-01 10:33:49 -08:00
commaci-public
cace242433 [bot] Update Python packages (#34739)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-03-01 00:50:08 -08:00
Adeeb Shihadeh
f90faf30bc bump to 0.9.9 2025-02-28 19:35:34 -08:00
Adeeb Shihadeh
a1ac4ce23f update release notes 2025-02-28 17:10:47 -08:00
Shane Smiskol
a14bcb5461 fix static analysis 2025-02-28 17:01:20 -08:00
Shane Smiskol
7d43fbae7f debug_fw_fingerprinting_offline: add rxoffset 2025-02-28 15:55:50 -08:00
Adeeb Shihadeh
33e84ad4b3 dedicated firehose ui (#34712)
* init

* lil more

* revert that for now

* update that too

* update

* update test

* update

* i hate translations
2025-02-28 15:12:40 -08:00
Adeeb Shihadeh
00e447bc30 Revert "camerad: make robust to introduced failures (#34723)"
This reverts commit c10abce1d5.
2025-02-28 14:09:53 -08:00
Willem Melching
9d65a49ee8 cabana SocketCanStream: support CAN-FD (#34728) 2025-02-28 10:31:58 -08:00
Kacper Rączy
00a0547978 paramsd: invalid angle offset alert (#34715)
* Add angle offset valid field

* Remove print

* Move it

* Add check in selfdrived

* Same thing for stiffnessFactor and steerRatio

* Fix

* Alert callback

* Fix bugs

* Fix

* Update events

* Make it functional

* Ref commit

* Update ref commit

* Remove dot

* Fix

Fix formatting

* Default values

* Update ref commit
2025-02-28 18:40:12 +01:00
Dean Lee
d9bc9be388 camerad: ensure sync objects are assigned only on successful creation (#34731)
ensure sync objects are assigned only on successful creation
2025-02-28 07:49:48 -08:00
Dean Lee
1bd0d6577c camerad: remove unnecessary pthread linkage (#34732)
remove unnecessary pthread linkage
2025-02-28 07:49:10 -08:00
Dean Lee
1c66515bed cabana: simplify streaming arguments (#34730)
* simplify streaming arguments

* update README
2025-02-28 04:48:22 -08:00
Shane Smiskol
59b4b2e6f8 test models: test vehicle speed (#34727)
* test vehicle speed

* clean up

* whoops

* ohhhhhh

* work

* clean up

* clean up

* all good

* fix

* shorter

* bump

* update refs

* bump to master
2025-02-28 02:35:58 -08:00
Shane Smiskol
d12370600e Fix car interface test (#34729)
* bump

* bump opendbc

* bump

* bump to master
2025-02-28 02:26:46 -08:00
Adeeb Shihadeh
c10abce1d5 camerad: make robust to introduced failures (#34723)
* camerad: make robust to introduced failures

* more test

* start here

---------

Co-authored-by: Comma Device <device@comma.ai>
2025-02-27 18:26:31 -08:00
Maxime Desroches
25463deeec Disable IR switch before setting torch (#34725)
switch reset
2025-02-27 17:20:32 -08:00
ZwX1616
29ca4aa7de modeld refactor: supercombo -> vision+policy (#34718)
* should be ok

* update tg

* type

* wrong model

* is no more

* update readme

* add back

---------

Co-authored-by: Comma Device <device@comma.ai>
2025-02-27 17:00:56 -08:00
Shane Smiskol
8f3e773977 actuators: rename steer to torque (#34724)
* bump

* temp fix

* fix

* forgot these
2025-02-27 16:12:55 -08:00
ZwX1616
b927d3ef46 bump tinygrad to latest master (#34719)
* bump tg

* update commit
2025-02-27 14:41:14 -08:00
Adeeb Shihadeh
937e2f7eb2 camerad: spectra stress test (#34716)
* cam stress

* lint fixes

---------

Co-authored-by: Comma Device <device@comma.ai>
2025-02-27 13:41:33 -08:00
Shane Smiskol
c8e598e647 Revert "Speed up juggle.py loading"
This reverts commit 87fc6d177b.
2025-02-26 23:07:58 -08:00
Shane Smiskol
51598a7580 add platform to PJ title 2025-02-26 20:13:22 -08:00
Shane Smiskol
87fc6d177b Speed up juggle.py loading 2025-02-26 20:09:56 -08:00
Shane Smiskol
6723106bf5 Move vehicle_model.py to opendbc (#34681)
* move

* fix

* move test too

* bump

* better

* bump to master
2025-02-26 17:35:43 -08:00
commaci-public
bd879be27a [bot] Update Python packages (#34717)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-02-26 17:31:40 -08:00
Shane Smiskol
a8c14a4e10 Script to plot max lateral acceleration events (#34710)
* max lat accel script

* more

* clean up

* 90th percentile good

* ugh
2025-02-25 18:03:59 -08:00
Maxime Desroches
470ec46830 make test_onroad faster (#34704)
* revert that

* again

* port over

* clean

* round
2025-02-25 10:32:35 -08:00
Adeeb Shihadeh
f2480d68b8 update issue templates 2025-02-25 09:27:50 -08:00
Shane Smiskol
5bde16fc0f Rivian in release (#34700)
* bump

* bump

* fix

* bump

* fix footnotes

* bump

* docs

* add rivian to proc replay

* update
2025-02-24 22:09:22 -08:00
commaci-public
7c904e796e [bot] Update Python packages (#34695)
* Update Python packages

* update refs

---------

Co-authored-by: Vehicle Researcher <user@comma.ai>
Co-authored-by: Shane Smiskol <shane@smiskol.com>
2025-02-24 22:04:05 -08:00
Dean Lee
cd014325c5 camerad: remove unused CameraState forward declaration (#34703)
remove unused CameraState forward declaration
2025-02-24 15:58:15 -08:00
Jason Young
d3af4a31ec PC: Fix Panda DFU device permissions (#34674) 2025-02-24 18:35:48 -05:00
Harald Schäfer
d41311ca20 Switch PC running to tinygrad with LLVM (#34660)
* try llvm on cpu

* update lock

* Make sure test fails

* With BEAM=3 its fast

* small fixes

* more fixes

* Fix macos

* do dm too

* rm ort
2025-02-24 14:51:10 -08:00
Maxime Desroches
c13b1f95e1 Revert "Bump submodules every hour"
This reverts commit a8e416abbe.
2025-02-24 11:33:48 -08:00
Adeeb Shihadeh
a4a2e19dd6 new cars! 2025-02-24 08:30:35 -08:00
Dean Lee
0619e9a581 v4l_encoder: used encoder_info.fps instead of hardcoded 20 (#34701)
Used encoder_info.fps instead of hardcoded 20
2025-02-24 07:06:38 -08:00
commaci-public
949fe31bad [bot] Update Python packages (#34693)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-02-23 18:23:04 -08:00
Kacper Rączy
66425a61c9 test_models: sort messages by time (#34691)
Sort messages by time in test_models
2025-02-23 13:14:18 -08:00
commaci-public
5c662da0db [bot] Update Python packages (#34692)
Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-02-23 21:14:07 +00:00
commaci-public
e3b7fa032c [bot] Update Python packages (#34690)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-02-23 12:50:30 -08:00
commaci-public
c8a8bf2ce7 [bot] Update Python packages (#34687)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-02-23 10:29:53 -08:00
commaci-public
088ba13f21 bump opendbc
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-02-22 21:09:21 -08:00
Adeeb Shihadeh
0300525d83 bump opendbc 2025-02-22 19:34:01 -08:00
Adeeb Shihadeh
a4980dbb0d disable os04 test for now 2025-02-22 18:42:32 -08:00
commaci-public
8cae7b2bc6 [bot] Update Python packages (#34680)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-02-22 18:41:27 -08:00
commaci-public
7ffea8a0eb [bot] Update Python packages (#34673)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-02-22 18:27:16 -08:00
Mauricio Alvarez Leon
d15d77f7bb op.sh: adb (#34468)
* add op adb

* adb_shell.sh

* su comma

* add to op output
2025-02-22 11:24:03 -08:00
commaci-public
5bc58e0b36 [bot] Update Python packages (#34670)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-02-22 10:58:33 -08:00
Adeeb Shihadeh
07835dc1ae jenkins: add pytest -s for debugging (#34672) 2025-02-22 10:52:48 -08:00
commaci-public
6ff80028b0 [bot] Update Python packages (#34667)
* Update Python packages

* update refs

---------

Co-authored-by: Vehicle Researcher <user@comma.ai>
Co-authored-by: Shane Smiskol <shane@smiskol.com>
2025-02-22 02:35:05 -08:00
Shane Smiskol
e9aa331f0f set curvature in joystickd (#34668)
* set curvature in joystickd

* Update joystickd.py

* Update joystickd.py
2025-02-22 01:43:00 -08:00
Shane Smiskol
a8e416abbe Bump submodules every hour 2025-02-21 23:52:23 -08:00
commaci-public
2944bead37 [bot] Update Python packages (#34664)
* Update Python packages

* fix that

* fix that too

* bump panda

* bump

---------

Co-authored-by: Vehicle Researcher <user@comma.ai>
Co-authored-by: Shane Smiskol <shane@smiskol.com>
2025-02-21 17:37:04 -08:00
Dean Lee
61bec65f32 common: add MovingAverage class for real-time windowed average calculation (#34569)
* add MovingAverage class for real-time windowed average calculation

* move to util.py
2025-02-21 14:47:21 -08:00
Dean Lee
c3c878908d camerad: Inline processing_time calculation during frame data initialization (#34661)
* Inline processing_time calculation during frame data initialization

* remove timestamp_end_of_isp
2025-02-21 12:50:46 -08:00
Adeeb Shihadeh
e00b5337d2 misc encoder cleanups 2025-02-21 10:41:30 -08:00
Adeeb Shihadeh
9881cf9c20 slightly more robust time validity check 2025-02-21 10:22:19 -08:00
Dean Lee
839c8fbd6b camerad/MemoryManager: remove lock and reduce redundant lookups (#34656)
remove lock and reduce redundant lookups
2025-02-21 09:58:26 -08:00
Dean Lee
2c56f44380 camerad: remove unused variables (#34657)
remove unused variables
2025-02-21 09:57:53 -08:00
Dean Lee
47c04210e2 camerad: refactor frame processing to direct handling (#34655)
refactor frame processing
2025-02-21 09:18:35 -08:00
Dean Lee
2215abb762 camerad: use single instance of MemoryManager for all cameras (#34654)
use single instance of MemoryManager for all cameras
2025-02-21 08:48:10 -08:00
Maxime Desroches
00acf26908 jenkins loop: update branch on start (#34649)
refresh
2025-02-20 21:35:09 -08:00
Adeeb Shihadeh
9167e3dcf6 Revert "camerad: fix incorrect row offset calculation in calculate_exposure_value (#34634)"
This reverts commit 2941445849.
2025-02-20 19:54:41 -08:00
Adeeb Shihadeh
e7dddaeb7e rm test_time_to_onroad.py 2025-02-20 17:13:20 -08:00
Adeeb Shihadeh
952def7abf start logging services first (#34646)
* start logging services first

* fix test

---------

Co-authored-by: Comma Device <device@comma.ai>
2025-02-20 16:53:07 -08:00
Maxime Desroches
7c791ae3d9 jenkins: fix looping (#34645)
fix
2025-02-20 16:37:05 -08:00
Dean Lee
2941445849 camerad: fix incorrect row offset calculation in calculate_exposure_value (#34634)
Fix incorrect row offset calculation
2025-02-20 16:23:23 -08:00
Maxime Desroches
614be347ba jenkins: add more devices to camerad test (#34643)
* more cam

* para

* fix
2025-02-20 16:20:50 -08:00
Adeeb Shihadeh
2e374cd962 on-device building fixups (#34642)
* on-device building fixups

* fix
2025-02-20 16:16:57 -08:00
Adeeb Shihadeh
d9a8fab3e6 test_onroad: run same checks on both EncodeIdx and CameraState (#34638)
* try this

* cleanup

* lil more

---------

Co-authored-by: Comma Device <device@comma.ai>
2025-02-20 15:46:19 -08:00
Adeeb Shihadeh
bdf0b7b42e camerad: use full VIPC buffers for BPS cams (#34641) 2025-02-20 15:03:13 -08:00
commaci-public
2ea241ff7e [bot] Update Python packages (#34639)
* Update Python packages

* update refs

---------

Co-authored-by: Vehicle Researcher <user@comma.ai>
Co-authored-by: Shane Smiskol <shane@smiskol.com>
2025-02-20 14:52:46 -08:00
royjr
263e349d7e ui: update arabic translations (#34640)
* Update main_ar.ts

* arabic first to fix rtl
2025-02-20 14:47:39 -08:00
Adeeb Shihadeh
52b66a1c0c Stricter cam sync tests (#34609)
* strict

* fix that

---------

Co-authored-by: Comma Device <device@comma.ai>
2025-02-20 14:15:38 -08:00
Adeeb Shihadeh
617eb33edc camerad/OX03C10: accept FSIN on every frame (#34636) 2025-02-20 13:17:48 -08:00
Dean Lee
6d0aafd0f4 camerad: fix null dereference in camera_bufs_raw when accessing cur_camera_buf (#34635)
Fix null dereference in camera_bufs_raw
2025-02-20 10:57:20 -08:00
Dean Lee
99e552b485 camerad: remove camera threads (#34627)
* remove camera threads

* remove unnecessary frame delay handling logic

---------

Co-authored-by: Comma Device <device@comma.ai>
2025-02-20 08:52:03 -08:00
Dean Lee
4835e9fa88 camerad: rename set_exposure_target to calculate_exposure_value (#34631)
rename set_exposure_target to calculate_exposure_value
2025-02-20 08:08:49 -08:00
Dean Lee
51d21f0113 camerad: fix crash during camera re-alignment (#34630)
fix crash during road camera re-alignment
2025-02-20 08:07:15 -08:00
BirdZhang
5bcaca7321 [udev rules] Add back bbaa vendor id (#34632)
As some pandas (such as c2) still use the bbaa vendor id, add bbaa back to avoid misrecognition.
2025-02-20 08:06:46 -08:00
Shane Smiskol
dc8fbcd7e3 Rivian: lower lateral jerk limit (#34629)
bump
2025-02-20 01:55:00 -08:00
Shane Smiskol
ba236db20b Move car safety modes to opendbc (#34628)
* bump

* fix test_models
2025-02-20 01:45:44 -08:00
Shane Smiskol
f2fb0b92ad debug_fw_fingerprinting_offline.py: better formatting 2025-02-19 23:30:33 -08:00
Dean Lee
0f5f3c4cb2 camerad: cleanup syncFirstFrame (#34626)
* cleanup syncFirstFrame

* handle disabled camera
2025-02-19 21:34:36 -08:00
Dean Lee
4674d0ae53 python ui: fix scroll issues (#34600)
fix scroll issues
2025-02-19 21:15:21 -08:00
Dean Lee
df2d615fc7 python ui: Implement styled rounded buttons with multiple states (#34603)
* styled button

* corner rounding in pixels
2025-02-19 21:14:35 -08:00
Adeeb Shihadeh
071f8ba658 LogReader: add time_series helper 2025-02-19 16:43:54 -08:00
Shane Smiskol
b0735e44f3 Faster Tesla fingerprinting (#34621)
* bump

* docs

* fix
2025-02-19 15:48:19 -08:00
YassineYousfi
9ec69ddb36 modeld: trigger model metadata on script change (#34623) 2025-02-19 15:11:33 -08:00
Shane Smiskol
f3004c22ce Rm all known cars (#34624)
* bump

* docs

* rm all_known_cars

* bump

* fix lint
2025-02-19 15:09:19 -08:00
Maxime Desroches
d3fd36b5b7 jenkins: always clean old git repos on checkout (#34625)
* force

* test

* cleanup
2025-02-19 14:51:09 -08:00
Adeeb Shihadeh
b35d86551d Revert "Remove EncodeIdx packets from qlog (#34590)"
This reverts commit 917b45afd0.
2025-02-19 13:17:44 -08:00
Dean Lee
acd00b9791 camerad: sync initial frame ID (#34614)
* sync initial frame ID

* count enabled cameras

* static function

* Replace std::abs with std::max/std::min to avoid overflow

* rebase master

* timeout

* cleanup

---------

Co-authored-by: Comma Device <device@comma.ai>
2025-02-19 13:09:49 -08:00
Maxime Desroches
9b74021766 jenkins loop: refresh deactivated branches (#34622)
refresh
2025-02-19 11:45:43 -08:00
Adeeb Shihadeh
fb3f5dd169 camerad: make handle_camera_event readable (#34620)
* renames

* lil more

---------

Co-authored-by: Comma Device <device@comma.ai>
2025-02-18 22:58:53 -08:00
Dean Lee
51ba8f796d params: separate parameter keys from params.cc (#34526)
seperate keys
2025-02-18 21:42:31 -08:00
Adeeb Shihadeh
19b11825fc Revert "Faster Tesla fingerprinting and Rivian VIN (#34617)"
This reverts commit 7c93049408.
2025-02-18 21:38:11 -08:00
Adeeb Shihadeh
bea096f0c5 op: skip env check for op switch (#34619) 2025-02-18 21:18:34 -08:00
Dean Lee
1cff1a363e camerad: simplify SpectraBuf::init by reducing redundant flags (#34618)
refactor init
2025-02-18 21:13:04 -08:00
Shane Smiskol
7c93049408 Faster Tesla fingerprinting and Rivian VIN (#34617)
* bump

* update docs
2025-02-18 19:49:33 -08:00
Shane Smiskol
64320615c5 Enable Tesla Model 3/Y behind dashcam (#34615)
* bump panda

* bump opendbc
2025-02-18 14:53:01 -08:00
Shane Smiskol
8e19185cee Bump submodules (#34616)
* bump

* now libsafety

* skip rivian for now
2025-02-18 13:48:28 -08:00
Adeeb Shihadeh
a30d3f7d72 test_onroad: cleanup with time series LogReader (#34613) 2025-02-17 21:26:21 -08:00
Adeeb Shihadeh
b3d5ab6a38 camerad/OX03C10: gate first frame on FSIN pulse (#34611) 2025-02-17 20:39:58 -08:00
Adeeb Shihadeh
4c6b7c3c44 camerad: remove GPU debayer (#34610) 2025-02-17 17:52:10 -08:00
Adeeb Shihadeh
bab1254a02 LogReader: add time series helper (#34608)
* simple time series

* example
2025-02-17 16:26:41 -08:00
Adeeb Shihadeh
6f5f8e7746 loggerd: reduce debug log frequency 2025-02-17 15:06:16 -08:00
Dean Lee
1a63fef85a ui/spinner.py: adjust spinner rotation speed based on FPS (#34601)
adjust spinner rotation speed based on FPS
2025-02-17 15:02:45 -08:00
YassineYousfi
f06701ea24 modeld: add model names to metadata (#34602)
* modeld: add model names to metadata

* lint

* type hint

* oops

* assert

* ok Any
2025-02-17 14:15:34 -08:00
Adeeb Shihadeh
07ef523ec1 system/ui docs (#34607) 2025-02-17 10:40:07 -08:00
Adeeb Shihadeh
73266a016c test_onroad: always show model exec timings (#34606)
Co-authored-by: Comma Device <device@comma.ai>
2025-02-17 09:18:41 -08:00
Dean Lee
ca05c25ba2 python ui: Implement FPS monitor (#34605)
monitor fps
2025-02-17 08:10:36 -08:00
Shane Smiskol
d2c0bcf7b9 use model aLead in MPC (#34598)
* use model aLead in MPC

* update
2025-02-16 21:24:41 -08:00
Dean Lee
fc77ac706e python ui: implement inertial scrolling for GuiScrollPanel (#34596)
implement inertial scrolling for GuiScrollPanel
2025-02-16 12:47:22 -08:00
Dean Lee
d4d0312794 python ui: display FPS on top-left corner if DEBUG_FPS=1 (#34595)
* display FPS on top-left corner if DEBUG_FPS=1

* use generator

* use rl.draw_fps
2025-02-16 12:35:04 -08:00
Dean Lee
99ef66de4b python ui: implement reset.py (#34593)
reset
2025-02-16 08:59:32 -08:00
Adeeb Shihadeh
27b5a727e3 Revert "Mypy: Got passing on macos (#34591)"
This reverts commit b09b48130e.
2025-02-16 08:50:46 -08:00
BrainLess
b09b48130e Mypy: Got passing on macos (#34591)
* Mypy: Got mypy passing on macos

* common/realtime.py refactor

* Mypy: mypy passing on darwin

* Refactor: Removed else: pass statement

* Refactor: Removed unnecessary check

* added xattr to pyproject

* loggerd: switched to xatter module

* loggerd: removed unused module in xattr_cache.py

* UV: update uv.lock

* Update system/athena/athenad.py

Co-authored-by: Maxime Desroches <desroches.maxime@gmail.com>

* athenad: fixed blank lines

* loggerd: refactor of xattr_cache

* cleanup

---------

Co-authored-by: Maxime Desroches <desroches.maxime@gmail.com>
2025-02-16 00:05:52 -08:00
Adeeb Shihadeh
917b45afd0 Remove EncodeIdx packets from qlog (#34590) 2025-02-15 15:17:58 -08:00
Adeeb Shihadeh
e86dbb622d update release notes 2025-02-15 15:16:39 -08:00
Dean Lee
ce7ff5c0e6 ui: Initial UI rewrite using pyray (spinner and text window) (#34583)
* pyray init version

* remove c++ code

* cleanup

* restruct the directory layout

* improve GuiApplication

* smooth out the texture after resize

* use atexit to close app

* rename FontSize->FontWeight

* make files executable

* use Inter Regular for FrontWeight.NORMAL

* set FLAG_VSYNC_HINT to avoid tearing while scrolling

* smoother scrolling

* mange textures in gui_app
2025-02-15 12:44:20 -08:00
Adeeb Shihadeh
958c8d1ce3 Beautiful camera timings (#34558)
* the start of something beautiful

* mv that

* cleanup

* cleanup output

* the good stuff

---------

Co-authored-by: Comma Device <device@comma.ai>
2025-02-14 21:33:50 -08:00
Adeeb Shihadeh
c4ee645fbc tici: move kgsl affinity to modeld core (#34588) 2025-02-14 19:35:43 -08:00
Kacper Rączy
032f3688a2 plotjuggler: opt-out log migration (#34587)
* Option to migrate logs if needed

* Opt-out migration

* Remove late import
2025-02-15 02:41:39 +00:00
Adeeb Shihadeh
ec6c7cd152 adjust default can_replay route slice to work with test_onroad 2025-02-14 17:29:01 -08:00
Adeeb Shihadeh
efda24dbe1 camerad: match some BPS settings (#34548)
* start common

* fix bayer pattern

* lil more

* all 1q10

* cc en

* same pts?

* this is weird

* some cleanup

* less

* off

* clean up

---------

Co-authored-by: Comma Device <device@comma.ai>
2025-02-14 16:05:00 -08:00
Maxime Desroches
9ccfecb813 use PyPI wheel for raylib on PC (#34586)
* wheel

* build
2025-02-14 15:17:26 -08:00
Maxime Desroches
4b278fe14f Jenkins in a loop (#34582)
* loop

* better

* clean

* more

* fix
2025-02-13 19:21:45 -08:00
Adeeb Shihadeh
d1b93287f2 camerad: flush BPS requests (#34581)
* repro

* cleanup

* flush bps

* cleanup

* revert that

---------

Co-authored-by: Comma Device <device@comma.ai>
2025-02-13 19:19:56 -08:00
Harald Schäfer
77a442c4e8 Long planner: allow negative accel constraint (#34565)
* allow negative accel constraint

* dont let MPC do clipping

* Typo

* whitespace

* Fix tests

* More cruise accel

* rm print

* ref commit
2025-02-12 13:11:32 -08:00
Shane Smiskol
d6a0e49def Move safety constants to opendbc (#34573)
* forgot these

* bump

* get these

* and flags

* fix

* bump

* test

* debug

* print sim thread errors
2025-02-11 21:48:20 -08:00
Adeeb Shihadeh
d98a554b17 tici: set core affinity for all realtime processes (#34574) 2025-02-11 21:20:31 -08:00
Adeeb Shihadeh
3d097faec0 Revert "camerad: enable BPS (#34570)"
This reverts commit da2a5f4305.
2025-02-11 20:30:37 -08:00
Adeeb Shihadeh
fbf918b311 test_onroad fixups (#34572)
* test_onroad fixpus

* fix
2025-02-11 20:15:30 -08:00
Adeeb Shihadeh
6ec5d82a29 tici: affine ICP IRQ to camerad core (#34571) 2025-02-11 19:20:35 -08:00
Adeeb Shihadeh
da2a5f4305 camerad: enable BPS (#34570)
* camerad: enable BPS

* update power draw
2025-02-11 14:03:32 -08:00
Dean Lee
644130ca3d encoderd: use AV_CODEC_ID_H264 codec for qcamera encoding (#34498) 2025-02-11 12:46:43 +00:00
Dean Lee
3c0990e716 move thumbnail generation from camerad to encoderd (#34554)
Co-authored-by: Cameron Clough <cameronjclough@gmail.com>
2025-02-10 23:43:46 +00:00
Dean Lee
27c11eb597 athena upload: streaming file upload (#34559)
streaming file upload
2025-02-10 13:57:31 -08:00
commaci-public
4cca971888 [bot] Update Python packages (#34561)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-02-10 10:26:48 -08:00
Adeeb Shihadeh
c4c43bebd2 Drop Ubuntu 20.04 support (#34557) 2025-02-09 13:41:11 -08:00
Dean Lee
ad2b1edbd0 replay: flush codec buffers after seeking (#34556)
* flush codec buffers after seeking

* replace avio_seek with the higher-level avformat_seek_file

* exit early
2025-02-09 13:02:43 -08:00
Dean Lee
65e478f27f camerad: simplify buffer indexing in enqueue_req_multi (#34553)
simplify buffer indexing in enqueue_req_multi
2025-02-09 09:58:47 -08:00
Dean Lee
4b7a25efc3 loggerd: remove unused zlib and libswscale linkage (#34552)
remove unused link
2025-02-09 09:13:58 -08:00
Adeeb Shihadeh
1090af6e3d camerad: IFE register cleanup (#34550)
* start there

* lil more

* get camera num out of there

---------

Co-authored-by: Comma Device <device@comma.ai>
2025-02-08 14:02:49 -08:00
Adeeb Shihadeh
22591dc6f8 op: simplify service restart (#34551) 2025-02-08 13:59:50 -08:00
Dean Lee
9ec54f59c6 loggerd: switch logging from raw file format to zstd compressed files (#34549)
* switch logging from raw file format to zstd compressed files

* more zst suffix

* compress bootlog

* remove class RawFile

* Optimize ZstdFileWriter by adding input caching

* use ZSTD_compressStream2

* cleanup

* LOG_COMPRESSION_LEVEL=10

* space

* add zst suffix to LOGS_SIZE_RATE
2025-02-08 12:55:31 -08:00
Adeeb Shihadeh
4066d49d70 camerad: debayer in the BPS (#33763)
* bps support

* cleanup with offsetof

* cleanup

---------

Co-authored-by: Comma Device <device@comma.ai>
2025-02-07 19:28:50 -08:00
Shane Smiskol
8b67e04d7d test_models: remove cereal (#34547)
rm more
2025-02-07 16:16:50 -08:00
Shane Smiskol
092685cae7 test_models: use opendbc CanData (#34546)
* replace with non-messaging CanData

* clean up
2025-02-07 15:55:52 -08:00
Shane Smiskol
b4a9c67bbe qcomgps: fix NameError on teardown (#34545)
continue teardown if diag not there
2025-02-07 14:06:02 -08:00
Shane Smiskol
fb517b5bca Remove can_capnp_to_can_list (#34542)
* about equal with multiprocessing

* but almost half without ;)

* rm

* Update tools/replay/can_replay.py
2025-02-06 20:54:31 -08:00
Shane Smiskol
3c72f1aa42 can_list_to_can_capnp: use opendbc CanFrame 2025-02-06 20:23:25 -08:00
Adeeb Shihadeh
49f7cb835b agnos 11.7 (#34471)
* agnos 11.7

* new build

* new build

* new build

* nb

* raylib

---------

Co-authored-by: Maxime Desroches <desroches.maxime@gmail.com>
2025-02-06 19:22:40 -08:00
Shane Smiskol
65d7b86902 test_models: remove selfdrived dependency (#34539)
* remove selfdrived

* fully

* todo

* yay

* moremoremore

* clean up

* more

* don't care

* update refs

* bump to master

* no more selfdrived

* yup

* too complex

* Update selfdrive/car/tests/test_models.py

* Update selfdrive/car/tests/test_models.py
2025-02-06 19:17:01 -08:00
Shane Smiskol
151e5ba20f test_models: remove Params 2025-02-06 18:55:07 -08:00
Shane Smiskol
951631e1ab Remove brand-specific button logic from car_specific.py (#34540)
* yay

* moremoremore

* clean up

* more

* don't care

* update refs

* bump to master
2025-02-06 18:02:31 -08:00
Adeeb Shihadeh
5b870c6f92 camerad: simple BPS support (#34538)
* camerad: simple BPS support

* works

* cleanup

* lil more

---------

Co-authored-by: Comma Device <device@comma.ai>
2025-02-06 15:23:19 -08:00
Adeeb Shihadeh
e31ae06959 camerad: remove AR register processing (#34537) 2025-02-06 14:15:37 -08:00
Adeeb Shihadeh
9bc35c0919 Revert "athena upload: reduce memory usage and improve efficiency with streaming (#34528)"
This reverts commit 4c65f51a55.
2025-02-06 11:50:04 -08:00
Maxime Desroches
61fa7e1ead raylib python bindings (#34534)
* build

* fix

* build

* wheel

* arm

* linux

* both
2025-02-05 15:35:06 -08:00
Shane Smiskol
40863aa988 card: default events (#34532)
default events
2025-02-04 20:26:47 -08:00
commaci-public
ddc29430ec [bot] Update Python packages (#34530)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-02-04 20:02:11 -08:00
Dean Lee
4c65f51a55 athena upload: reduce memory usage and improve efficiency with streaming (#34528)
* reduce memory usage and improve upload efficiency with streaming

* space
2025-02-04 13:10:13 -08:00
Robbe Derks
12307dcb37 op auth command (#34529)
* auth command

* no python
2025-02-04 11:26:57 -08:00
Shane Smiskol
26f972b9f7 Bump opendbc (#34525)
* no debug param and new import

* bump

* bump to master

* and fix that

* oop

* bump to master
2025-02-03 21:05:23 -08:00
Maxime Desroches
9658fcbe79 Revert "unpin pyopenssl (#34522)" (#34524)
This reverts commit b1843ee7a7.
2025-02-03 11:37:27 -08:00
Maxime Desroches
b1843ee7a7 unpin pyopenssl (#34522)
try
2025-02-03 10:28:54 -08:00
commaci-public
ebe48552cf [bot] Update Python packages (#34520)
* Update Python packages

* fix

---------

Co-authored-by: Vehicle Researcher <user@comma.ai>
Co-authored-by: Maxime Desroches <desroches.maxime@gmail.com>
2025-02-03 10:22:52 -08:00
Adeeb Shihadeh
17647f99a4 setup: try removing uv update loop 2025-02-02 21:45:13 -08:00
Adeeb Shihadeh
cc14903137 strip output on sudo_read 2025-02-01 12:48:04 -08:00
Adeeb Shihadeh
6d12a47d05 Revert "camerad: disable ISP for now (#34440)"
This reverts commit e48752d8fa.
2025-01-31 19:17:07 -08:00
Shane Smiskol
e3d83b4b13 camerad: fix tearing when hitting frame timeout (#34514)
* this works

* todo
2025-01-31 17:14:58 -08:00
eFini
913337d98c update CHT/CHS translations (#34513)
updated CHT/CHS translations
2025-01-31 08:47:13 -08:00
Dean Lee
2b19b8f3d7 ui/DeveloperPanel: initialize offroad state, refresh toggle, and cleanup Includes (#34510)
small fixes
2025-01-30 22:56:14 -08:00
Adeeb Shihadeh
a5dd2ab2aa athena: upload logs in parallel (#34509)
Co-authored-by: Comma Device <device@comma.ai>
2025-01-30 20:12:00 -08:00
programanichiro
bfb898ef3f update ja translations (#34506)
* 見切れる部分の見直しと表現を調整。

* 和訳を追加。

* Improved truncation
見切れを改善。

* FIREHOSEモード!
2025-01-30 14:56:16 -08:00
Kacper Rączy
a8b829167d locationd: use cloudlog (#34508)
* Use cloudlog instead of print

* Changes
2025-01-30 22:36:20 +00:00
Shane Smiskol
1e35a24564 fdcan: rate limit CAN core reset (#34507)
bump panda
2025-01-30 14:08:27 -08:00
Adeeb Shihadeh
5d421020c3 Revert "SConstruct: remove CPPPATH entries for libyuv and json11 (#34504)"
This reverts commit 7792fee92c.
2025-01-30 11:47:49 -08:00
Maxime Desroches
c82af71e83 model_replay: raise max modelV2 exec time (#34505)
raise
2025-01-30 11:21:45 -08:00
Andrei Radulescu
d4a7a87a3c third_party: raylib builds on macos (#34499)
* updated raylib setup for macos

* raylib setup.sh renamed to build.sh

* simplified copy

* silent curl
2025-01-30 10:34:29 -08:00
Dean Lee
804b801ef8 SConstruct: remove duplicate -lzmq link (#34503)
remove duplicate -lzmq link
2025-01-30 10:30:54 -08:00
Dean Lee
7792fee92c SConstruct: remove CPPPATH entries for libyuv and json11 (#34504)
cleanup cpppath
2025-01-30 10:30:40 -08:00
Alexandre Nobuharu Sato
cdf46e340f update pt-BR translations (#34500) 2025-01-30 09:48:04 -08:00
Dean Lee
a9956c0116 cleanup: remove SNPE paths from SConstruct (#34501)
remove SNPE paths from SConstruct
2025-01-30 07:37:00 -08:00
Adeeb Shihadeh
79e52ea83d FIREHOSE mode v0.1 (#34496)
* add toggle

* athena

* fix mypy
2025-01-29 15:31:15 -08:00
Robbe Derks
bf4e9170c5 Add Tesla to car_specific events (#34493) 2025-01-29 10:41:38 -08:00
Robbe Derks
0a17b21321 bump panda again 2025-01-29 17:02:24 +01:00
Robbe Derks
acfc44a490 bump panda 2025-01-29 16:53:43 +01:00
Dean Lee
227bb68e18 replay: improve segment loading and event handling (#34490)
improve segment Loading and Event Handling
2025-01-28 15:37:05 -08:00
YassineYousfi
2eb3585dae Not Too Shabby Model (#34484)
* b25c27a8-263b-4f3f-b1f8-72ac49b4f9c7/700

* replay

* model_replay: support empty
2025-01-28 12:16:13 -08:00
Adeeb Shihadeh
82722217be selfdrived: remove ignored process list (#34491) 2025-01-27 21:17:27 -08:00
Dean Lee
e7b63dce65 encoderd: enhance robustness of open() with HANDLE_EINTR Macro (#34478)
HANDLE_EINTR
2025-01-27 19:46:43 -08:00
Shane Smiskol
1b1d37db65 Toyota: clip pitch for PERMIT_BRAKING (#34489)
bump
2025-01-27 17:13:40 -08:00
Mauricio Alvarez Leon
3eb02f1d54 ui-preview: fix keyboard screenshot (#34482)
* update to click keyboard SSH ADD

* Update run.py
2025-01-27 17:05:46 -08:00
BirdZhang
15211b2e52 Update to new USB VID (#34487)
https://github.com/commaai/panda/pull/2112/files
2025-01-27 14:01:59 -08:00
commaci-public
ca11a18061 [bot] Update Python packages (#34486)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-01-27 10:01:50 -08:00
YassineYousfi
8bfce0979d modeld: use temporalPose from model (#34460)
* modeld: use temporalPose from model

* cleanup
2025-01-26 10:29:58 -08:00
Mauricio Alvarez Leon
c57f535238 add adb toggle to developerPanel (#34459)
* add adb toggle to developerPanel

* translations + toggleOrder

* initial docs

* move adb.sh into toggle

* finish up docs

* QProcess

* adbToggle h

* translations

* vanish translations

* description

* tr

---------

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2025-01-25 13:24:24 -08:00
Andrei Radulescu
754882c985 reset: auto-format is back (#34479)
* Revert "update factory reset"

This reverts commit 533206be2f.

* keep reset message

* Update selfdrive/ui/qt/setup/reset.h

---------

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2025-01-25 12:29:48 -08:00
Shane Smiskol
1d86afdf83 carName -> brand (#34474)
* bump

* brand

* body is lower
2025-01-25 01:39:06 -06:00
Shane Smiskol
dc7fa59e35 Toyota: tweak longitudinal gains (#34473)
bump
2025-01-25 01:36:03 -06:00
Kacper Rączy
93a8a18b6d locationd: frequency based bad observation resiliance and recovery (#34476)
* Improve it

* Fix static

* Fix test_consistent_timing_spikes test

* Fix tests

* Comment

* Remove crap
2025-01-25 05:38:20 +00:00
Jason Wen
45de7664bc ui: move alpha longitudinal control toggle to Developer panel (#34467)
* ui: move alpha longitudinal control toggle to Developer panel

* show toggle in ui preview

* Revert "show toggle in ui preview"

This reverts commit 4b12964726b966a906840099ecc1d584e307b614.

* write to CarParamsPersistent on ui init

* no need for new msg

* missed

* no icon
2025-01-24 18:24:56 -08:00
Shane Smiskol
a90720690c Toyota: fix acceleration discontinuity when stopping (#34472)
bump
2025-01-24 17:16:55 -08:00
Shane Smiskol
540c45bfec Log git diff inside submodules (#34469)
get diffs inside submodules
2025-01-24 16:27:24 -08:00
Adeeb Shihadeh
45276652b8 update translations 2025-01-24 16:23:23 -08:00
Shane Smiskol
7803ff4f62 Revert "update translations"
my lupdate is broken?!

This reverts commit 9982b03e47.
2025-01-24 13:50:36 -08:00
Shane Smiskol
9982b03e47 update translations 2025-01-24 13:49:59 -08:00
Adeeb Shihadeh
d0f5e5a09d Revert "Move alpha longitudinal control toggle to developer panel (#34223)"
This reverts commit d4a6f62c40.
2025-01-24 10:47:14 -08:00
Dean Lee
2e1436a515 camerad/ife.h: add #pragma once (#34464)
add #pragma once
2025-01-24 10:24:51 -08:00
Dean Lee
26cedc5ff1 bridge: remove deprecated services check (#34463)
Remove deprecated services check from get_services
2025-01-24 10:24:20 -08:00
Dean Lee
770c59eb4e Revert "ui: show driver camera in popup on demand" (#34412)
Revert "ui: show driver camera in popup on demand (#33459)"

This reverts commit 5f3625436c.

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2025-01-23 22:12:19 -08:00
Maxime Desroches
822c624413 bump opendbc (#34461)
bump
2025-01-23 20:27:22 -08:00
Adeeb Shihadeh
c916635ad8 agnos 11.6 (#34458) 2025-01-23 17:04:41 -08:00
Adeeb Shihadeh
cf83167ce6 add AdbEnabled param 2025-01-23 16:14:46 -08:00
Maxime Desroches
52f935da74 model_replay: check modelExecutionTime (#34457)
* metric

* fix

* format

* table

* test failure

* cleanup

* 3

* 4
2025-01-23 16:14:02 -08:00
programanichiro
645418e754 Multilang ja translations (#34444)
* Japanese translation

* Adjusting the translation to avoid truncation.
見切れ翻訳を調整。

* Fixes some issues1.
指摘事項調整。

* update

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2025-01-23 15:35:15 -08:00
ZwX1616
0ca726ed29 camerad: increase dcam ae min (#34455)
* never dip below 0.125

* clamp is double
2025-01-23 14:13:35 -08:00
Adeeb Shihadeh
aca1567a8c didn't bump yet 2025-01-23 11:16:14 -08:00
Adeeb Shihadeh
be9e5fe763 agnos 11.6 2025-01-23 10:48:53 -08:00
Shane Smiskol
02ec9e5bf8 dmonitoringmodeld: clean exit (#34454)
* nice exit

* correct spacing

* sentry
2025-01-22 20:39:52 -08:00
Shane Smiskol
590a37a566 Ford CAN: enable long safety in release (#34453)
bump
2025-01-22 20:23:00 -08:00
ugtthis
8613530b46 Keyboard UX/UI: Access to caps lock - clearer icons (#34362)
* add-slash-to uppercase

* caps-lock-works

* leaner and simpler

* this is simpler

* better...

* simpler

* rm comments

* clearer naming

* make more explicit

* change to SHIFT_KEY

* change name

* works - no more double tap

* better and works

* more readable

* simpler but still readable

* more self documenting

* whoops

* add back - needed for if string requirment not meant
2025-01-22 19:51:54 -08:00
Adeeb Shihadeh
c3211b1c25 bump panda 2025-01-22 19:46:58 -08:00
Adeeb Shihadeh
5db124ae07 agnos 11.5 (#34413)
* agnos 11.5

* new build

* prod manifest
2025-01-22 19:46:06 -08:00
Dean Lee
f98c6a7f8a camerad: properly clean up sync objects after request flush (#34418)
destroy sync objects after re-align
2025-01-22 19:39:05 -08:00
royjr
feb9b1cd8d op.sh start stop restart (#34404)
* op start stop restart

* =}

* only agnos

* Revert "only agnos"

This reverts commit ffb720ff3f08f5bd59ad77a45d89c3ac3b4d4621.

* only agnos systemctl

* fix got taps

* cleanup

---------

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2025-01-22 17:01:29 -08:00
commaci-public
dcb05af228 [bot] Update Python packages (#34431)
* Update Python packages

* codespell

* update refs

---------

Co-authored-by: Vehicle Researcher <user@comma.ai>
Co-authored-by: Shane Smiskol <shane@smiskol.com>
2025-01-21 21:04:19 -08:00
Adeeb Shihadeh
bb09fd0d4e pandad: reset safety mode on exit (#32103)
* boardd: reset safety mode on exit

old-commit-hash: dd18ccbf0a9ab72ace0a7533632d5939c0719953

* comment

old-commit-hash: 01b598e8dde93548f7783be19b1cb37d22fadc23

* log it

old-commit-hash: 181c4d412e9e3a9c576934e16fc26a9b6e07a117

* logmessaged might not be alive

old-commit-hash: 7483ba0eac42875a822df97596d23ff277bf3865

* reproduction, manager gets SIGTERM from python_process

old-commit-hash: b90402bd776c3933bfe3dd60998f9913b4bd0068

* even smaller repro

old-commit-hash: 03dd430b7131da2b48243714df0513c6a1e594f0

* should work

old-commit-hash: 388c4273385ee4c67b1a229ccb9abac6dd94dd0f

* let's not change that rn

old-commit-hash: d057299058503e8fb792b5a765d0da4af6bef943

* something like this

old-commit-hash: 123d6ed845d662aec2bd95d1ccf9c2782308d693

* pandad.cc should receive same SIGTERM and exit

old-commit-hash: afc5ef6b916c54ac2ec471d144f601ead71250cb

* stash

old-commit-hash: e02e0dc488de51c5d40d227c4c2202ba40436d8d

* remove debugging

old-commit-hash: ac170d0ca32a4285be22e28ec7730fcba3d0697d

* remove debugging

old-commit-hash: 50949600aeed231347cc4c600a8a7d24accde674

* match behavior

old-commit-hash: 5f24167c58caf98b641af2f63f839015e404c349

* convention

old-commit-hash: 1664113a232c4b1a3aa67073e9e8cebef414518f

* systemd option

old-commit-hash: 95183ff77842fcb9592715db07396be28d778197

* manager option

old-commit-hash: 2071893299cb32c3a7cd8a444d8d386c5fa96511

* just curious if this works, change to ELM327 on exit

old-commit-hash: 9674ed525134aa03f995942b18163cb047a59c5b

* Revert "just curious if this works, change to ELM327 on exit"

This reverts commit d4ae294d419dc3d787d11dee4474799f3fb2acef.

old-commit-hash: 6d24edd1635ddd0b8ed68a4a4fc8aaaa88984e45

* check onroad

same update

* useless

* comment

* fix

* debug

* Revert "debug"

This reverts commit 2bb138610ea7b26d8610d36ef3f0bbb2d6ada388.

* Update common/util.h

* double wait does not work, blocking in signal handler not good, exit on do_exit, change to SIGINT, use existing stop to support ctrl+c

nope

* organize?

* no sys

* None

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2025-01-21 18:32:33 -08:00
Shane Smiskol
475c9ba497 bump msgq (#34445)
* Reapply "Reapply "bump msgq (#34410)" (#34443)"

This reverts commit cb6eb4f3cf.

* here too

* running locally in loop to make sure this was fluke

* running locally in loop to make sure this was fluke
2025-01-21 18:25:14 -08:00
Shane Smiskol
4bb578ff1b Fix duplicate process names (#34446)
* test

* anything actually use this?

* keep it around
2025-01-21 17:29:56 -08:00
Shane Smiskol
cb6eb4f3cf Revert "Reapply "bump msgq (#34410)" (#34443)"
This reverts commit 45903adaf6.
2025-01-21 16:48:28 -08:00
Shane Smiskol
45903adaf6 Reapply "bump msgq (#34410)" (#34443)
* Reapply "bump msgq (#34410)"

This reverts commit 895c78b09a.

* fix exit early
2025-01-21 16:34:27 -08:00
Adeeb Shihadeh
8f8f185a95 sensord: add new config (#34442)
* sensord: add new config

* fix mypy
2025-01-21 16:26:13 -08:00
Dean Lee
2a9e5ed7f8 camerad: add destructor to SpectraBuffer for proper resource cleanup (#34419)
Add destructor to SpectraBuffer for proper resource cleanup

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2025-01-21 15:19:48 -08:00
Adeeb Shihadeh
e48752d8fa camerad: disable ISP for now (#34440) 2025-01-21 15:10:50 -08:00
Shane Smiskol
9ceb8cc324 swaglog: support np.bool_ (#34439)
fix np.bool_
2025-01-21 12:52:51 -08:00
Korben
ffa5834225 Update main_fr.ts (#34437)
French language update. The only constraint encountered was the “Developer” menu, which I had to abbreviate to “Dév.” because its translation ("Développeur") went beyond the interface.
2025-01-21 10:11:58 -08:00
royjr
c96e7ee4fd ui: update arabic translations (#34433)
Update main_ar.ts
2025-01-20 10:02:51 -08:00
Joshua Mack
eba4cfbca5 Multilang: update Spanish translation (#34434)
* Test slightly shorter name

* Confirm translations & add Wi-Fi pairing

* Revert "Test slightly shorter name"

This reverts commit b5aca0939132de45993441c5578323be70d79b89.
2025-01-20 10:02:32 -08:00
Alexandre Nobuharu Sato
f23d7bf995 Multilang: update pt-BR translation (#34427) 2025-01-19 17:02:42 -08:00
Dean Lee
3219fe1472 encoder: optimize MessageBuilder data handling by adopting encoded data (#34391)
optimize data handing by adopting external data
2025-01-19 16:22:40 -08:00
Dean Lee
205c2b63aa modeld: simplify model message construction by removing redundant variables (#34354)
Simplify model message construction by removing redundant variables
2025-01-19 16:21:02 -08:00
Lee Jong Mun
7b9220e3dd remove duplicate condition (#34425) 2025-01-19 16:19:40 -08:00
Alexandre Nobuharu Sato
d4a6f62c40 Move alpha longitudinal control toggle to developer panel (#34223)
* duplicate alphalong toggle

* add description

* cleanup

* add cases

* remove old alpha_long toggle and cleanup

* fix some design errors

* Revert "fix some design errors"

This reverts commit c11b8c41c033f81fd0b2f9a0fb3724a92c8025b9.

* Create FUNDING.yml

* cleanup

* hidde btn in release and no translate

* remove new translations

* update translation files

* rm obsolete translations

* if is a release branch or if the car already have long control the alphaLongToggle should not be visible

* fix identation

---------

Co-authored-by: Maxime Desroches <desroches.maxime@gmail.com>
2025-01-19 16:19:18 -08:00
Alexandre Nobuharu Sato
31672520e1 Multilang: update pt-BR translation (#34426)
update pt-BR translation
2025-01-19 16:16:29 -08:00
Adeeb Shihadeh
bc2fe9d897 how to get in the training set (#34424)
* how to get in the training set

* Update CONTRIBUTING.md

* Update CONTRIBUTING.md

* Update docs/CONTRIBUTING.md
2025-01-19 15:16:26 -08:00
Dean Lee
31ae8958ee hardware/tici: simplify use of std::ofstream (#34420)
Simplify Use of std::ofstream
2025-01-19 14:53:28 -08:00
Dean Lee
ba6afb19ed ui/cameraview: gate glDeleteTextures to PC platforms only (#34423)
delete textures only when QCOM2 is not defined
2025-01-19 14:11:27 -08:00
Lee Jong Mun
3c3617088b Multilang: kor translation update (#34422) 2025-01-19 10:33:11 -08:00
Dean Lee
39a1f040d6 ui/installer: replace time_valid() with util::system_time_valid() for consistency (#34417)
replace time_valid() with util::system_time_valid() for consistency
2025-01-18 19:59:08 -08:00
Adeeb Shihadeh
ae58be87bc cereal fork compatibility (#34414)
* more custom

* cleanup

* lil more
2025-01-18 13:29:02 -08:00
Adeeb Shihadeh
f0257a847d Update README.md 2025-01-18 13:27:11 -08:00
Calvin Park
5509850986 Install user SecOCKey to params (#34401)
* Install user SecOCKey to params

* Move it to launch_chffrplus.sh/launch

* Move it to card.py

* Basic error check

* Catch Exception to suppress the linter

* Make it local to secOC section
2025-01-18 11:25:07 -08:00
Dean Lee
7a1bf26aa5 ui: prevent device pairing if no internet or system time is invalid (#34403)
* gate pairing device if system time is invalid

* update translations

* Check for internet connectivity

* Update selfdrive/ui/qt/widgets/prime.cc

* Update selfdrive/ui/qt/widgets/prime.cc

---------

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2025-01-18 11:18:45 -08:00
Shane Smiskol
895c78b09a Revert "bump msgq (#34410)"
This reverts commit 4dc95f6064.
2025-01-17 21:17:05 -08:00
Shane Smiskol
4dc95f6064 bump msgq (#34410)
* bump msgq

* bump
2025-01-17 20:39:14 -08:00
Shane Smiskol
c515021576 joystick: fix long control state 2025-01-16 16:07:56 -08:00
Shane Smiskol
733206fdd9 fix joystick 2025-01-16 16:06:11 -08:00
Shane Smiskol
1d919221e4 Update build.py 2025-01-16 14:52:26 -08:00
Shane Smiskol
37b4e61b00 Allow brake hold (#34384)
* allow brake hold

* rev
2025-01-16 14:22:02 -08:00
Shane Smiskol
0539df7685 bring back ui.py (#34396)
* bring back uipy

* fix it

* fix
2025-01-15 18:50:44 -08:00
Adeeb Shihadeh
a2ced8c8eb Log satellite count in GpsLocationData (#34395)
* Log satellite count in GpsLocationData

* update refs

* forgot to build
2025-01-15 16:53:39 -08:00
Shane Smiskol
69d33ac11d Toyota: allow brake hold (#34394)
toyota okay
2025-01-15 15:03:22 -08:00
Maxime Desroches
707a845218 fix uv (#34393)
uv fix
2025-01-15 14:23:58 -08:00
Adeeb Shihadeh
db61cfb2c1 Update RELEASES.md 2025-01-15 14:20:54 -08:00
Adeeb Shihadeh
3f629e97eb release this month 2025-01-15 13:54:58 -08:00
Shane Smiskol
2258ea310d Hyundai: match cancel button panda safety logic (#34390)
* rising edge

* should work

* TODO

* fix
2025-01-14 21:37:55 -08:00
Shane Smiskol
38fad751cb card: fix cruise speed initialization w/ buttons (#34386)
* fix initialize w/ buttons

* what

* comment
2025-01-14 19:58:22 -08:00
Shane Smiskol
b3fc407538 VW: switch to common pcmCruise check (#34389)
Update car_specific.py
2025-01-14 19:54:28 -08:00
Shane Smiskol
3d38b139bc card: vcruise all in one place (#34387)
* no reason to not be here

* oh this was off by a frame!

* ref
2025-01-14 19:37:44 -08:00
Shane Smiskol
a1d81e63e1 Fix missing visual car dash alerts (#34385)
* fix missing visual dash alerts

* update refs
2025-01-14 18:52:40 -08:00
Kacper Rączy
2054495e79 process_replay: add cast in migrate_longitudinalPlan (#34383)
* Cast

* Something

* Remove newline
2025-01-15 01:37:28 +00:00
Kacper Rączy
ea4a127ab8 process_replay: ignore unknown members in the migration code (#34382)
* Fix the migration for the events

* clean up

clean up

clean up

* no continue

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2025-01-15 00:12:48 +00:00
Sammohana
8eebce75ac Getting rid of openpilot.common.numpy_fast (#34368)
* Got rid openpilot.common.numpy_fast

* fixed some data type erros

* importing numpy instead of importing specific functions

* fixing some numpy importing mistakes

* Update selfdrive/car/cruise.py

---------

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2025-01-14 14:52:56 -08:00
commaci-public
c54cd4569a Toyota: remove longitudinal derivative (#34378)
* Update Python packages

* update refs

---------

Co-authored-by: Vehicle Researcher <user@comma.ai>
Co-authored-by: Shane Smiskol <shane@smiskol.com>
2025-01-14 13:32:09 -08:00
Jason Young
f771ddac88 PlotJuggler: Layout for debugging locationdTemporaryError (#34381)
* PlotJuggler: layout for debugging locationd

* not needed, and codespell doesn't like it
2025-01-14 11:12:05 -08:00
Dean Lee
0e7c697bad raylib: revert auto fit screen size (#34380)
revert auto fit screen size
2025-01-13 19:45:13 -08:00
Adeeb Shihadeh
57abd8b0c2 Remove release files (conceptually) (#34379)
* Remove release files (conceptually)

* fix
2025-01-13 19:31:21 -08:00
Dean Lee
1ab98e38e5 raylib: refactor to implement new App class (#34375)
refactor to implement new App class
2025-01-13 14:52:03 -08:00
commaci-public
4d714113d1 [bot] Update Python packages (#34376)
* Update Python packages

* time -> time_helpers

---------

Co-authored-by: Vehicle Researcher <user@comma.ai>
Co-authored-by: Maxime Desroches <desroches.maxime@gmail.com>
2025-01-13 09:38:17 -08:00
ugtthis
7b09d08764 CI: Add missing uppercase_keyboard UI view (#34347)
* add-uppercase-preview

* testing-UI-on-fork

* change back

* add-my-branch

* needs to see sha from fork for test

* fix missing sha

* change back

* get correct named artifact

* try this

* experimenting coordinates

* try these coordinates

* try these coordinates

* draws circles to see touches - changes coordinates

* try these changes

* better coordinates

* click is more centered

* try again

* revert back

* revert these too

* last revert...
2025-01-13 09:05:22 -08:00
ugtthis
71951566c5 Keyboard: add missing control btns to uppercase (#34344)
* add-slash-to uppercase

* Trigger UI preview workflow
2025-01-13 01:22:04 -08:00
Shane Smiskol
db2032c398 Move uds.py (#34374)
* rm uds pt. 1

* rm uds pt. 2

* imports
2025-01-13 00:54:10 -08:00
Adeeb Shihadeh
74ed6c5657 oops need raw 2025-01-12 15:07:18 -08:00
Adeeb Shihadeh
99bb7da850 third_party: add raygui (#34369) 2025-01-12 15:02:30 -08:00
Adeeb Shihadeh
d35ef3b3d5 swaglog: fix locale dependence (#34367) 2025-01-12 11:57:26 -08:00
Dean Lee
47b13f54f6 encoderd: refactor VideoEncoder::publisher_publish to standardize member variable access (#34342)
remove redundant pointer parameter
2025-01-12 11:38:20 -08:00
Dean Lee
1068779294 modeld: properly release OpenCL context in __dealloc__ method (#34353)
release OpenCL context in __dealloc__
2025-01-12 10:15:26 -08:00
Adeeb Shihadeh
55cdf5ad7c release soon 2025-01-12 08:58:53 -08:00
Cameron Clough
08779941e5 loggerd: typing and remove unused default arg (#34349) 2025-01-09 22:12:10 +00:00
Cameron Clough
f761f53205 deleter cleanups (#34345) 2025-01-09 20:00:45 +00:00
Kacper Rączy
5dd1972f96 logreader: support filesystem DATA_ENDPOINT (#34340)
* Check if DATA_ENDPOINT is a dir

* Change url resolution to support joining dirs
2025-01-09 01:20:59 +00:00
Maxime Desroches
89204b5464 test_onroad: adjust rlog size (#34336)
s
2025-01-07 19:45:53 -08:00
ZwX1616
2290d2f2fb camerad: ISP lsc buffers (#34335)
* luts

* assert sizeof

* remove 0s

---------

Co-authored-by: Comma Device <device@comma.ai>
2025-01-07 16:12:29 -08:00
Harald Schäfer
c8264cbf2c Notre Dame model in tinygrad (#34324)
* release model: 6f23a03f-486b-4d3e-a314-19d149644c7c/700

* old style model in tinygrad

* fix desire

* tg hack

* 20Hz

* no gas probs

* No gas here

* better indexing

---------

Co-authored-by: Yassine Yousfi <yyousfi1@binghamton.edu>
2025-01-06 20:52:36 -08:00
commaci-public
b1170c98c1 [bot] Update Python packages (#34334)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-01-06 09:55:37 -08:00
Adeeb Shihadeh
420d6f0d5e Quick GC pass heading into 2025 (#34330)
* first pass

* bye bye snpe
2025-01-05 15:10:24 -08:00
Dean Lee
8b4ddc987f cabana: fix missing transmitter after undoing DBC message removal (#34329)
fix missing transmitter after undoing DBC message removal
2025-01-04 10:35:22 -08:00
commaci-public
253f4343f0 [bot] Update Python packages (#34320)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2025-01-02 11:40:55 -08:00
Harald Schäfer
5c5f2aacc8 Tinygrad upstream master (#34325)
Upstream master
2024-12-31 14:02:04 -08:00
Adeeb Shihadeh
b36db7810c tici: fix cpp device type (#34315)
fix cpp
2024-12-26 20:48:45 -08:00
Adeeb Shihadeh
9cf02ca8db Skip registration on newer devices (#34316) 2024-12-26 20:22:44 -08:00
Adeeb Shihadeh
2e0c91c295 uv from brew doesn't have self update 2024-12-24 17:21:34 -08:00
Maxime Desroches
14123e94bb cleanup touch_replay (#34305)
mathematics
2024-12-23 17:30:05 -05:00
commaci-public
e98741f5b2 [bot] Update Python packages (#34304)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2024-12-23 17:09:55 -05:00
Adeeb Shihadeh
87f7bb6a9e bump panda 2024-12-22 09:59:14 -08:00
Dean Lee
52c8a12b08 cabana: fix crash in live streaming mode by skipping thumbnail display (#34302)
resolve crash in live streaming mode
2024-12-22 09:27:24 -08:00
Dean Lee
d6214690dc replay: fix various synchronization and event handling issues (#34254)
fix various synchronization and event handling issues
2024-12-21 14:32:49 -08:00
Dean Lee
822f613139 cabana: real-time cursor and video frame sync for chart and video (#34301)
* sync cursor and thumbnail between chart and video

* Revert "replay: Update video immediately after seek when paused. (#34237)"

This reverts commit 3363881844.

* use thumbnails while scrubing

* draw alert

* no update on resume

* draw timestamp

* cleanup
2024-12-21 13:49:18 -08:00
Dean Lee
9e8815def4 cabana: miscellaneous bug fixes and enhancements (#34297)
* toHexString

* use QToolBar

* fix incorrect groove rect

* limit CAN_MAX_DATA_BYTES

* add series type selector to chart toolbar

* dim inactive messages

* rename

* add help to chart

* cleanup
2024-12-21 13:49:09 -08:00
Adeeb Shihadeh
484b96f2b6 timed: diff against absolute value of timedelta (#34299) 2024-12-20 15:28:52 -08:00
Dean Lee
7ac011ca89 cabana: add live and time-window heatmap modes for enhanced signal analysis (#34296)
add live and time-window heatmap modes
2024-12-20 10:40:05 -08:00
Angus Gratton
3363881844 replay: Update video immediately after seek when paused. (#34237)
replay: Update video immediately after seeking when paused.

Otherwise, if paused then have to resume playback for the video
frame to update and show the new location.

Implemented by temporarily un-pausing replay for a single
frame time.
2024-12-19 20:15:04 -08:00
Adeeb Shihadeh
ce4ebbde64 fix IR power scaling (#34293)
* fix IR power scaling

* Update system/hardware/tici/hardware.h
2024-12-19 16:16:59 -08:00
Maxime Desroches
0265f20976 Update metadrive wheel (#34292)
* test

* new wheel
2024-12-19 14:57:29 -08:00
Mike Busuttil
7a72e419fe Openpilot webcam support improved (#34215)
* control webcam with ENV vars

* WIP: actual instructions

* wording

* file no longer exists

* this is expected behavior, just untested

* more readable

* tested on fresh install

* wording tweaks

* explicit USE_WEBCAM toggle required

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>

* debug-ability improved

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>

* newline removed

---------

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2024-12-19 14:36:36 -08:00
Dean Lee
9f3c2f0a37 cabana: enhance message heatmap visualization (#34239)
* enhance message heatmap visualization

* TODO

* improve log_factor

* typo

* bit_flip_counts
2024-12-19 10:49:35 -08:00
Maxime Desroches
9c9b273a3e set python upper bound to 3.13 (#34286)
* try

* test

* ...

* wow

* y

* docker

* <
2024-12-18 22:17:28 -08:00
Harald Schäfer
383893d39e Long planner get accel: new function args (#34288)
* Change function args

* typo

* typo

* ref commit
2024-12-18 16:41:57 -08:00
YassineYousfi
1a7c284445 National Public Radio Model 📻 (#34259)
* f3a009b7-dcb9-41f3-8917-6fcb3cec37bf/400

* 65f26b40-56c9-4c6c-a3ac-e1788bd52567/400
2024-12-18 16:13:47 -08:00
Lukas
af5082089e cabana: issue filtering by addresses in FindSignal tool (#34283)
fixed filtering by addresses issue in cabana
2024-12-18 14:11:05 -08:00
Harald Schäfer
17ca6389e1 Tinygrad runner (#34261)
* squash

* dmonitoringmodeld: use cl transform (#34235)

* needs cleanup

* only if tici

* bump tinygrad

* check width

* base modelframe

* .

* need to be args

* more cleanup

* no _frame in base

* tici only

* its DrivingModelFrame

* .6 is fair

---------

Co-authored-by: Comma Device <device@comma.ai>

* Update tinygrad

* tg upstream

* bump tg

* bump tg

* debug

* attr

* misc cleanup

* whitespace

* remove

* Add TODOs to make python proc for modelrunners

* whitespace

---------

Co-authored-by: ZwX1616 <zwx1616@gmail.com>
Co-authored-by: Comma Device <device@comma.ai>
Co-authored-by: Maxime Desroches <desroches.maxime@gmail.com>
2024-12-18 11:58:59 -08:00
Adeeb Shihadeh
ff97a43c50 fix typo 2024-12-17 20:42:44 -08:00
ZwX1616
9c3aa2e2dc camerad: add os04+4.6mm lsc profile (#34280)
* draft

* ifdef in cl

---------

Co-authored-by: Comma Device <device@comma.ai>
2024-12-17 20:32:08 -08:00
Shane Smiskol
7ffad1935d bump msgq (#34278)
bump
2024-12-17 15:43:51 -08:00
Maxime Desroches
155d842a3b set plot limits for touch events viz (#34277)
lim
2024-12-17 15:10:13 -08:00
Dean Lee
d40fd1956d wifimanager: use asyncCall to avoid timeout when adding connections (#34273)
* use asyncCall to avoid timeout when adding Wi-Fi connections

* use async call for addTetheringConnection

* only this change

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2024-12-17 14:48:08 -08:00
Shane Smiskol
857133635c ui: wait for lte connection to update before reactivating (#34275)
async
2024-12-17 14:35:43 -08:00
Shane Smiskol
f149083e4a ui: initialize tethering connection on startup (#34274)
* initialize hotspot connection on init

* better place

* fix
2024-12-17 14:25:31 -08:00
Adeeb Shihadeh
247ee2bda8 bump panda for new USB VID 2024-12-17 11:18:41 -08:00
Adeeb Shihadeh
e317485200 tici: fix device types (#34269) 2024-12-16 19:44:43 -08:00
Shane Smiskol
3da346e2e4 AGNOS: fix update loop (#34268)
fix update loop
2024-12-16 18:30:08 -08:00
Adeeb Shihadeh
6c1314baf9 camerad: only build debayer kernel when necessary (#34267) 2024-12-16 17:22:59 -08:00
Maxime Desroches
71b02f8001 hardwared: non blocking read for touch events (#34263)
* slow

* slow

* non blocking

* 10

* try

* simple

* int

* test

* get

* try

* clean

* read all

* nested

* simpler

* indent

* cleanup
2024-12-16 17:10:47 -08:00
Jason Wen
a984903298 Hyundai: Allow controls with Sport and Manumatic Gears (#34113)
* Hyundai CAN: Explicitly parse gear shifter values for `EV, HEV, PHEV`

* for this pr

* more segments

* found 4.0!

* only print when spornt=4.0 is found

* new outputs

* bump opendbc

* Update selfdrive/car/car_specific.py

* delete notebook

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2024-12-16 16:51:04 -08:00
Adeeb Shihadeh
bedbe6fd94 agnos 11.4 (#34250) 2024-12-16 16:46:03 -08:00
ZwX1616
7352e612a2 dmonitoringmodeld: use cl transform without tinygrad (#34266)
* merge

* why

* self.buf_size

* 0.05 more than with tg due to copy

---------

Co-authored-by: Comma Device <device@comma.ai>
2024-12-16 16:29:06 -08:00
Jason Wen
35278ba63b ui: Allow Qt spinner/text/setup/reset/updater to build on macOS (#34265)
ui: Allow spinner/text/setup/reset/updater to build on macOS
2024-12-16 16:25:46 -08:00
Adeeb Shihadeh
a82116ac46 camerad: fix VisionBuf freeing (#34264)
Co-authored-by: Comma Device <device@comma.ai>
2024-12-16 15:12:17 -08:00
Adeeb Shihadeh
b2930682ff tici: only write eSIM connection once 2024-12-16 14:41:36 -08:00
Harald Schäfer
5018cf75ff North America Model (#34260)
* 0e1c9c12-0472-4a0c-8963-611ad240ec62/400

* rm outputs
2024-12-16 14:17:31 -08:00
Harald Schäfer
a98210aeec modeld: ort helpers (#34258)
* ort helpers

* import from ort helpers

* import that too

* linter

* linter

* linter
2024-12-16 13:10:00 -08:00
commaci-public
11fb0b95d2 [bot] Update Python packages (#34256)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2024-12-16 10:28:17 -08:00
Edward Wang
ea444ec340 Standardize ENV=* formatting in Dockerfiles (#34253)
fix ENV formatting
2024-12-16 09:47:32 -08:00
Mike Busuttil
cf4fae5464 CTF.md typo (#34257)
typo
2024-12-16 09:37:29 -08:00
commaci-public
833a67b019 [bot] Update Python packages (#34251)
Update Python packages

Co-authored-by: Vehicle Researcher <user@comma.ai>
2024-12-15 21:05:29 -08:00
Adeeb Shihadeh
8558928864 add branch guide to the readme 2024-12-15 13:36:51 -08:00
Adeeb Shihadeh
df2bf83846 op/switch: more robust switching 2024-12-15 09:39:23 -08:00
Adeeb Shihadeh
d735db6113 rm cppcheck (#34248) 2024-12-14 23:17:45 -08:00
Adeeb Shihadeh
b6233838eb macOS: disable brew auto update (#34247) 2024-12-14 23:10:04 -08:00
Adeeb Shihadeh
ba0e7c4719 hardware: add helper for setting IR power (#34245)
* hardware: add helper for setting IR power

* fix
2024-12-14 13:50:25 -08:00
Maxime Desroches
70fa0ab4c1 debug: touch events plot (#34242)
* replay

* remove
2024-12-14 13:09:59 -08:00
Harald Schäfer
f6885dcbec Revert Tinygrad (#34243)
* Revert "dmonitoringmodeld: use cl transform (#34235)"

This reverts commit 684b0b9d4d.

* Revert "load model before calling convert_fp16_to_fp32"

This reverts commit 31606a7d15.

* Revert "bump tinygrad"

This reverts commit 44f58ff758.

* Revert "Tinygrad runner (#34171)"

This reverts commit 7b5a4fbb03.

* Allow init buffer

* typo
2024-12-14 12:15:36 -08:00
Adeeb Shihadeh
4c27878f67 camerad: prep for the BPS (#34244)
prep

Co-authored-by: Comma Device <device@comma.ai>
2024-12-14 11:50:49 -08:00
ZwX1616
684b0b9d4d dmonitoringmodeld: use cl transform (#34235)
* needs cleanup

* only if tici

* bump tinygrad

* check width

* base modelframe

* .

* need to be args

* more cleanup

* no _frame in base

* tici only

* its DrivingModelFrame

* .6 is fair

---------

Co-authored-by: Comma Device <device@comma.ai>
2024-12-14 00:44:15 -08:00
Maxime Desroches
b3ad7ef24b add touch events to qlogs (#34236)
deci
2024-12-13 21:22:43 -08:00
Louis Velez
93a8d87b34 docs: glossary infra (#34231)
* feat: glossary infra

* fix static analysis error

* fix ruff linter error.

* updates docs.yaml to use ubuntu-24.04

* code review fixes
2024-12-13 20:28:01 -08:00
Harald Schäfer
8743bc4fe2 Null Pointer Model (#34111)
* e8cb7f27-e448-4c15-90c2-ac440cd5a042/400

* 0078ad07-4d46-4086-820f-23d61c90e07f/400

* 4bd74082-70af-47da-8156-e84ebf4d4812/400

* 2a074022-5c2c-4628-97f9-f54849a936a6/400

* 0660aa81-93c5-41b7-9cc2-dc8816a512cd/400

* Clip curvature to reasonable limits

* Better curvature and speed clips

* typo

* typo

* 31aa62c3-b373-4878-8f2e-5107305de187/400

* 384690ca-9b8a-41fe-9bcd-389b20fc6aa4/400

* ref commit

---------

Co-authored-by: Yassine <yassine.y10@gmail.com>
2024-12-13 19:14:21 -08:00
Maxime Desroches
e04ac10509 ci: fix cache key for test_models (#34230)
* fix this

* please rerun this my good ci friend

* thank you very much
2024-12-13 17:20:28 -08:00
Maxime Desroches
64db514d41 hardwared: log touch events (#34225)
* touch

* touch

* touch

* touch

* this

* valid

* better
2024-12-13 16:50:34 -08:00
Shane Smiskol
da2c70e097 Revert "LogReader: fix issue when your dns resolves all requests" (#34229)
Revert "LogReader: fix issue when your dns resolves all requests (#34089)"

This reverts commit 7fc5040ed9.
2024-12-13 15:11:30 -08:00
Shane Smiskol
d574513879 bump opendbc (#34227)
* bump

* update docs
2024-12-13 13:33:37 -08:00
mitchellgoffpc
31606a7d15 load model before calling convert_fp16_to_fp32 2024-12-12 15:04:54 -08:00
mitchellgoffpc
44f58ff758 bump tinygrad 2024-12-12 14:12:45 -08:00
Shane Smiskol
cd6d9fee3f Revert "athenad: fix thread safety issues in upload handing" (#34224)
Revert "athenad: fix thread safety issues in upload handing (#34199)"

This reverts commit dcb3113c4b.
2024-12-12 13:32:36 -08:00
Maxime Desroches
c1ae9eabf1 ci: skip simulator for external PRs (#34221)
* try

* try

* try

* try...

* skip

* cleanup
2024-12-12 11:17:50 -08:00
Harald Schäfer
7b5a4fbb03 Tinygrad runner (#34171)
* squash

* bump tg

* bump tg

* debump tinygrad

* bump tinygrad

* bump tg

* Skip init iteration

* fixes

* cleanups

* skip first test sample

* typos

* linter unhappy

* update cpu usage

* OPENCL just zeros for now

* imports

* Try printing

* Runs again, but slower

* unused import

* Allow more buffer with tg and all on gpu

* bump tinygrad

* seems ok

* stricter timings for driving looser for dm

* try llvm

* check nvidia

* More timeout for now

* make test pass

* Revert "try llvm"

This reverts commit ef136e478320101fea262bae3579e558da991902.

* small fixes

* whitespace

* revert test timeout

* No model runners

* Always CPU always fast

* No onnx runtime GPU

* more cores

* cleanup

* Is this faster

* Is this faster

* at least runs

* FP32 is faster than 16

* fix deps

* whitespace

* comment

---------

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2024-12-11 23:15:20 -08:00
Adeeb Shihadeh
0cf04af227 timed: gate time setting on GPS fix (#34217) 2024-12-11 20:42:45 -08:00
Adeeb Shihadeh
7a2af78846 camerad: re-enable ISP debayer (#34212)
camerad: re-enable ISP debayer

Co-authored-by: Comma Device <device@comma.ai>
2024-12-11 20:04:40 -08:00
Adeeb Shihadeh
3328845be1 op/switch: fix ambiguous remote on checkout 2024-12-11 19:27:39 -08:00
Dean Lee
3a6db78601 camerad: pass std::vector by const reference (#34206)
pass std::vector by const reference
2024-12-11 14:09:37 -08:00
Jason Young
7202c5acb8 Webcam fixes (#34211)
* follow VIPC API change, add logging

* use full path for video devices
2024-12-11 14:03:40 -08:00
Maxime Desroches
216ebcaa50 Fix model runtime on PC (#34210)
exhaustive
2024-12-11 13:27:39 -08:00
Shane Smiskol
1dcdf57395 Toyota: raise max acceleration for TSS2 (#34201)
* bump

* Update ref_commit
2024-12-11 13:05:39 -08:00
Mike Busuttil
02976db472 Tools: simplified setup documentation (#34204)
platform agnostic setup script
2024-12-10 21:29:27 -08:00
Jason Wen
03cd00719c Tools: Update setup command for macOS native setup (#34202) 2024-12-10 19:05:09 -08:00
1387 changed files with 78470 additions and 73158 deletions

View File

@@ -1,19 +0,0 @@
---
Checks: '
bugprone-*,
-bugprone-integer-division,
-bugprone-narrowing-conversions,
performance-*,
clang-analyzer-*,
misc-*,
-misc-unused-parameters,
modernize-*,
-modernize-avoid-c-arrays,
-modernize-deprecated-headers,
-modernize-use-auto,
-modernize-use-using,
-modernize-use-nullptr,
-modernize-use-trailing-return-type,
'
CheckOptions:
...

View File

@@ -13,27 +13,6 @@
*.o-*
*.os
*.os-*
*.so
*.a
venv/
.venv/
notebooks
phone
massivemap
neos
installer
chffr/app2
chffr/backend/env
selfdrive/nav
selfdrive/baseui
selfdrive/test/simulator2
**/cache_data
xx/plus
xx/community
xx/projects
!xx/projects/eon_testing_master
!xx/projects/map3d
xx/ops
xx/junk

View File

@@ -5,7 +5,7 @@ end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
[{*.py, *.pyx, *.pxd}]
[*.{py,pyx,pxd}]
charset = utf-8
indent_style = space
indent_size = 2

6
.gitattributes vendored
View File

@@ -7,12 +7,12 @@
*.png filter=lfs diff=lfs merge=lfs -text
*.gif filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.otf filter=lfs diff=lfs merge=lfs -text
*.wav filter=lfs diff=lfs merge=lfs -text
selfdrive/car/tests/test_models_segs.txt filter=lfs diff=lfs merge=lfs -text
system/hardware/tici/updater filter=lfs diff=lfs merge=lfs -text
selfdrive/ui/qt/spinner_larch64 filter=lfs diff=lfs merge=lfs -text
selfdrive/ui/qt/text_larch64 filter=lfs diff=lfs merge=lfs -text
system/hardware/tici/updater_weston filter=lfs diff=lfs merge=lfs -text
system/hardware/tici/updater_magic filter=lfs diff=lfs merge=lfs -text
third_party/**/*.a filter=lfs diff=lfs merge=lfs -text
third_party/**/*.so filter=lfs diff=lfs merge=lfs -text
third_party/**/*.so.* filter=lfs diff=lfs merge=lfs -text

View File

@@ -1,53 +0,0 @@
name: Car bug report
description: For issues with a particular car make or model
labels: ["car", "bug"]
body:
- type: markdown
attributes:
value: >
Before creating a **bug report**, please check the following:
* Ensure you're running the latest openpilot release.
* Ensure you're using officially supported hardware. Issues running on PCs have a different issue template.
* Ensure there isn't an existing issue for your bug. If there is, leave a comment on the existing issue.
* Ensure you're running stock openpilot. We cannot look into bug reports from forks.
If you're unsure whether you've hit a bug, check out the #installation-help channel in the [community Discord server](https://discord.comma.ai).
- type: textarea
attributes:
label: Describe the bug
description: Also include a description of how to reproduce the bug
validations:
required: true
- type: input
id: car
attributes:
label: Which car does this affect?
placeholder: Toyota Prius 2017
validations:
required: true
- type: input
id: route
attributes:
label: Provide a route where the issue occurs
description: Ensure the route is fully uploaded at https://useradmin.comma.ai
placeholder: 77611a1fac303767|2020-05-11--16-37-07
validations:
required: true
- type: input
id: version
attributes:
label: openpilot version
description: If you're not on release, provide the commit hash
placeholder: 0.8.10
validations:
required: true
- type: textarea
attributes:
label: Additional info

View File

@@ -1,9 +1,12 @@
blank_issues_enabled: false
contact_links:
- name: Car bug report
url: https://github.com/commaai/opendbc/issues/new
about: For issues with a particular car make or model
- name: Join the Discord
url: https://discord.comma.ai
about: The community Discord is for both openpilot development and experience discussion
- name: Report model bugs
- name: Report driving behavior feedback
url: https://discord.com/channels/469524606043160576/1254834193066623017
about: Feedback for the driving and driver monitoring models goes in the #driving-feedback in Discord
- name: Community Wiki

View File

@@ -1,15 +0,0 @@
---
name: Bug fix
about: For openpilot bug fixes
title: ''
labels: 'bugfix'
assignees: ''
---
**Description**
<!-- A description of the bug and the fix. Also link the issue if it exists. -->
**Verification**
<!-- Explain how you tested this bug fix. -->

View File

@@ -1,19 +0,0 @@
---
name: Car Bug fix
about: For vehicle/brand specific bug fixes
title: ''
labels: 'car bug fix'
assignees: ''
---
**Description**
<!-- A description of the bug and the fix. Also link the issue if it exists. -->
**Verification**
<!-- Explain how you tested this bug fix. -->
**Route**
Route: [a route with the bug fix]

View File

@@ -1,15 +0,0 @@
---
name: Car port
about: For new car ports
title: ''
labels: 'car port'
assignees: ''
---
**Checklist**
- [ ] added entry to CAR in selfdrive/car/*/values.py and ran `selfdrive/car/docs.py` to generate new docs
- [ ] test route added to [routes.py](https://github.com/commaai/openpilot/blob/master/selfdrive/car/tests/routes.py)
- [ ] route with openpilot:
- [ ] route with stock system:
- [ ] car harness used (if comma doesn't sell it, put N/A):

View File

@@ -1,13 +0,0 @@
---
name: Fingerprint
about: For adding fingerprints to existing cars
title: ''
labels: 'fingerprint'
assignees: ''
---
**Car**
Which car (make, model, year) this fingerprint is for
**Route**
A route with the fingerprint

View File

@@ -1,15 +0,0 @@
---
name: Refactor
about: For code refactors
title: ''
labels: 'refactor'
assignees: ''
---
**Description**
<!-- A description of the refactor, including the goals it accomplishes. -->
**Verification**
<!-- Explain how you tested the refactor for regressions. -->

View File

@@ -1,31 +0,0 @@
---
name: Tuning
about: For openpilot tuning changes
title: ''
labels: 'tuning'
assignees: ''
---
**Description**
<!-- A description of what is wrong with the current tuning and how the PR addresses this. -->
**Verification**
<!-- To verify tuning, capture the following scenarios (broadly, not exactly), with current tune and this tune.
Use the PlotJuggler tuning layout to compare planned versus actual behavior.
Run ./juggle.py <route> --layout layouts/tuning.xml , screenshot the full tab of interest, and paste into this PR.
Longitudinal:
* Maintaining speed at 25, 40, 65mph
* Driving up and down hills
* Accelerating from a stop
* Decelerating to a stop
* Following large changes in set speed
* Coming to a stop behind a lead car
Lateral:
* Straight driving at ~25, ~45 and ~65mph
* Turns driving at ~25, ~45 and ~65mph
-->

30
.github/build.py vendored
View File

@@ -1,30 +0,0 @@
import pathlib
GITHUB_FOLDER = pathlib.Path(__file__).parent
PULL_REQUEST_TEMPLATES = (GITHUB_FOLDER / "PULL_REQUEST_TEMPLATE")
order = ["fingerprint", "car_bugfix", "bugfix", "car_port", "refactor"]
def create_pull_request_template():
with open(GITHUB_FOLDER / "pull_request_template.md", "w") as f:
f.write("<!-- Please copy and paste the relevant template -->\n\n")
for t in order:
template = PULL_REQUEST_TEMPLATES / f"{t}.md"
text = template.read_text()
# Remove metadata for GitHub
start = text.find("---")
end = text.find("---", start+1)
text = text[end + 4:]
# Remove comments
text = text.replace("<!-- ", "").replace("-->", "")
f.write(f"<!--- ***** Template: {template.stem.replace('_', ' ').title()} *****\n")
f.write(text)
f.write("\n\n")
f.write("-->\n\n")
create_pull_request_template()

View File

@@ -1,6 +1,6 @@
CI / testing:
- changed-files:
- any-glob-to-all-files: "{.github/**,**/test_*,Jenkinsfile}"
- any-glob-to-all-files: "{.github/**,**/test_*,**/test/**,Jenkinsfile}"
car:
- changed-files:
@@ -12,7 +12,7 @@ simulation:
ui:
- changed-files:
- any-glob-to-all-files: 'selfdrive/ui/**'
- any-glob-to-all-files: '{selfdrive/assets/**,selfdrive/ui/**,system/ui/**}'
tools:
- changed-files:

View File

@@ -1,58 +0,0 @@
name: 'automatically cache based on current runner'
inputs:
path:
description: 'path to cache'
required: true
key:
description: 'key'
required: true
restore-keys:
description: 'restore-keys'
required: true
save:
description: 'whether to save the cache'
default: 'false'
required: false
outputs:
cache-hit:
description: 'cache hit occurred'
value: ${{ (contains(runner.name, 'nsc') && steps.ns-cache.outputs.cache-hit) ||
(!contains(runner.name, 'nsc') && inputs.save != 'false' && steps.gha-cache.outputs.cache-hit) ||
(!contains(runner.name, 'nsc') && inputs.save == 'false' && steps.gha-cache-ro.outputs.cache-hit) }}
runs:
using: "composite"
steps:
- name: setup namespace cache
id: ns-cache
if: ${{ contains(runner.name, 'nsc') }}
uses: namespacelabs/nscloud-cache-action@v1
with:
path: ${{ inputs.path }}
- name: setup github cache
id: gha-cache
if: ${{ !contains(runner.name, 'nsc') && inputs.save != 'false' }}
uses: 'actions/cache@v4'
with:
path: ${{ inputs.path }}
key: ${{ inputs.key }}
restore-keys: ${{ inputs.restore-keys }}
- name: setup github cache
id: gha-cache-ro
if: ${{ !contains(runner.name, 'nsc') && inputs.save == 'false' }}
uses: 'actions/cache/restore@v4'
with:
path: ${{ inputs.path }}
key: ${{ inputs.key }}
restore-keys: ${{ inputs.restore-keys }}
# make the directory manually in case we didn't get a hit, so it doesn't fail on future steps
- id: scons-cache-setup
shell: bash
run: |
mkdir -p ${{ inputs.path }}
sudo chmod -R 777 ${{ inputs.path }}
sudo chown -R $USER ${{ inputs.path }}

View File

@@ -1,7 +1,7 @@
name: "PR review"
on:
pull_request_target:
types: [opened, reopened, synchronize, edited, edited]
types: [opened, reopened, synchronize, edited]
jobs:
labeler:
@@ -11,12 +11,12 @@ jobs:
pull-requests: write
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
submodules: false
# Label PRs
- uses: actions/labeler@v5.0.0
- uses: actions/labeler@v6
with:
dot: true
configuration-path: .github/labeler.yaml
@@ -33,21 +33,3 @@ jobs:
change-to: ${{ github.base_ref }}
already-exists-action: close_this
already-exists-comment: "Your PR should be made against the `master` branch"
# Welcome comment
- name: "First timers PR"
uses: actions/first-interaction@v1
if: github.event.pull_request.head.repo.full_name != 'commaai/openpilot'
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
pr-message: |
<!-- _(run_id **${{ github.run_id }}**)_ -->
Thanks for contributing to openpilot! In order for us to review your PR as quickly as possible, check the following:
* Convert your PR to a draft unless it's ready to review
* Read the [contributing docs](https://github.com/commaai/openpilot/blob/master/docs/CONTRIBUTING.md)
* Before marking as "ready for review", ensure:
* the goal is clearly stated in the description
* all the tests are passing
* the change is [something we merge](https://github.com/commaai/openpilot/blob/master/docs/CONTRIBUTING.md#what-gets-merged)
* include a route or your device' dongle ID if relevant

View File

@@ -5,9 +5,7 @@ on:
workflow_dispatch:
env:
BASE_IMAGE: openpilot-base
DOCKER_REGISTRY: ghcr.io/commaai
RUN: docker run --shm-size 2G -v $PWD:/tmp/openpilot -w /tmp/openpilot -e PYTHONPATH=/tmp/openpilot -e NUM_JOBS -e JOB_ID -e GITHUB_ACTION -e GITHUB_REF -e GITHUB_HEAD_REF -e GITHUB_SHA -e GITHUB_REPOSITORY -e GITHUB_RUN_ID -v $GITHUB_WORKSPACE/.ci_cache/scons_cache:/tmp/scons_cache -v $GITHUB_WORKSPACE/.ci_cache/comma_download_cache:/tmp/comma_download_cache -v $GITHUB_WORKSPACE/.ci_cache/openpilot_cache:/tmp/openpilot_cache $DOCKER_REGISTRY/$BASE_IMAGE:latest /bin/bash -c
PYTHONPATH: ${{ github.workspace }}
jobs:
badges:
@@ -17,13 +15,13 @@ jobs:
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
submodules: true
- uses: ./.github/workflows/setup-with-retry
- run: ./tools/op.sh setup
- name: Push badges
run: |
${{ env.RUN }} "scons -j$(nproc) && python3 selfdrive/ui/translations/create_badges.py"
python3 selfdrive/ui/translations/create_badges.py
rm .gitattributes

View File

@@ -1,101 +0,0 @@
name: weekly CI test report
on:
schedule:
- cron: '37 9 * * 1' # 9:37AM UTC -> 2:37AM PST every monday
workflow_dispatch:
inputs:
ci_runs:
description: 'The amount of runs to trigger in CI test report'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
CI_RUNS: ${{ github.event.inputs.ci_runs || '50' }}
jobs:
setup:
if: github.repository == 'commaai/openpilot'
runs-on: ubuntu-latest
outputs:
ci_runs: ${{ steps.ci_runs_setup.outputs.matrix }}
steps:
- id: ci_runs_setup
name: CI_RUNS=${{ env.CI_RUNS }}
run: |
matrix=$(python3 -c "import json; print(json.dumps({ 'run_number' : list(range(${{ env.CI_RUNS }})) }))")
echo "matrix=$matrix" >> $GITHUB_OUTPUT
ci_matrix_run:
needs: [ setup ]
strategy:
fail-fast: false
matrix: ${{fromJSON(needs.setup.outputs.ci_runs)}}
uses: commaai/openpilot/.github/workflows/ci_weekly_run.yaml@master
with:
run_number: ${{ matrix.run_number }}
report:
needs: [ci_matrix_run]
runs-on: ubuntu-latest
if: always()
steps:
- name: Get job results
uses: actions/github-script@v7
id: get-job-results
with:
script: |
const jobs = await github
.paginate("GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt}/jobs", {
owner: "commaai",
repo: "${{ github.event.repository.name }}",
run_id: "${{ github.run_id }}",
attempt: "${{ github.run_attempt }}",
})
var report = {}
jobs.slice(1, jobs.length-1).forEach(job => {
if (job.conclusion === "skipped") return;
const jobName = job.name.split(" / ")[2];
const runRegex = /\((.*?)\)/;
const run = job.name.match(runRegex)[1];
report[jobName] = report[jobName] || { successes: [], failures: [], canceled: [] };
switch (job.conclusion) {
case "success":
report[jobName].successes.push({ "run_number": run, "link": job.html_url}); break;
case "failure":
report[jobName].failures.push({ "run_number": run, "link": job.html_url }); break;
case "canceled":
report[jobName].canceled.push({ "run_number": run, "link": job.html_url }); break;
}
});
return JSON.stringify({"jobs": report});
- name: Add job results to summary
env:
JOB_RESULTS: ${{ fromJSON(steps.get-job-results.outputs.result) }}
run: |
cat <<EOF >> template.html
<table>
<thead>
<tr>
<th></th>
<th>Job</th>
<th>✅ Passing</th>
<th>❌ Failure Details</th>
</tr>
</thead>
<tbody>
{% for key in jobs.keys() %}<tr>
<td>{% for i in range(5) %}{% if i+1 <= (5 * jobs[key]["successes"]|length // ${{ env.CI_RUNS }}) %}🟩{% else %}🟥{% endif %}{% endfor%}</td>
<td>{{ key }}</td>
<td>{{ 100 * jobs[key]["successes"]|length // ${{ env.CI_RUNS }} }}%</td>
<td>{% if jobs[key]["failures"]|length > 0 %}<details>{% for failure in jobs[key]["failures"] %}<a href="{{ failure['link'] }}">Log for run #{{ failure['run_number'] }}</a><br>{% endfor %}</details>{% else %}{% endif %}</td>
</td>
</tr>{% endfor %}
</table>
EOF
pip install jinja2-cli
echo $JOB_RESULTS | jinja2 template.html > report.html
echo "# CI Test Report - ${{ env.CI_RUNS }} Runs" >> $GITHUB_STEP_SUMMARY
cat report.html >> $GITHUB_STEP_SUMMARY

View File

@@ -1,17 +0,0 @@
name: weekly CI test run
on:
workflow_call:
inputs:
run_number:
required: true
type: string
concurrency:
group: ci-run-${{ inputs.run_number }}-${{ github.ref }}
cancel-in-progress: true
jobs:
selfdrive_tests:
uses: commaai/openpilot/.github/workflows/selfdrive_tests.yaml@master
with:
run_number: ${{ inputs.run_number }}

View File

@@ -1,21 +0,0 @@
name: 'compile openpilot'
runs:
using: "composite"
steps:
- shell: bash
name: Build openpilot with all flags
run: |
${{ env.RUN }} "scons -j$(nproc)"
${{ env.RUN }} "release/check-dirty.sh"
- shell: bash
name: Cleanup scons cache and rebuild
run: |
${{ env.RUN }} "rm -rf /tmp/scons_cache/* && \
scons -j$(nproc) --cache-populate"
- name: Save scons cache
uses: actions/cache/save@v4
if: github.ref == 'refs/heads/master'
with:
path: .ci_cache/scons_cache
key: scons-${{ runner.arch }}-${{ env.CACHE_COMMIT_DATE }}-${{ github.sha }}

45
.github/workflows/diff_report.yaml vendored Normal file
View File

@@ -0,0 +1,45 @@
name: diff report
on:
pull_request_target:
types: [opened, synchronize, reopened]
jobs:
comment:
name: comment
runs-on: ubuntu-latest
timeout-minutes: 10
permissions:
contents: read
pull-requests: write
actions: read
steps:
- name: Wait for process replay
id: wait
continue-on-error: true
uses: lewagon/wait-on-check-action@v1.3.4
with:
ref: ${{ github.event.pull_request.head.sha }}
check-name: process replay
repo-token: ${{ secrets.GITHUB_TOKEN }}
allowed-conclusions: success,failure
wait-interval: 20
- name: Download diff
if: steps.wait.outcome == 'success'
uses: dawidd6/action-download-artifact@v6
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
workflow: tests.yaml
workflow_conclusion: ''
pr: ${{ github.event.number }}
name: diff_report_${{ github.event.number }}
path: .
allow_forks: true
- name: Comment on PR
if: steps.wait.outcome == 'success'
uses: thollander/actions-comment-pull-request@v2
with:
filePath: diff_report.txt
comment_tag: diff_report
pr_number: ${{ github.event.number }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -18,11 +18,11 @@ concurrency:
jobs:
docs:
name: build docs
runs-on: ubuntu-latest
runs-on: ubuntu-24.04
steps:
- uses: commaai/timeout@v1
- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
submodules: true
@@ -34,7 +34,7 @@ jobs:
mkdocs build
# Push to docs.comma.ai
- uses: actions/checkout@v4
- uses: actions/checkout@v6
if: github.ref == 'refs/heads/master' && github.repository == 'commaai/openpilot'
with:
path: openpilot-docs

View File

@@ -5,14 +5,54 @@ on:
types: [created, edited]
jobs:
# TODO: gc old branches in a separate job in this workflow
cleanup-branches:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Delete stale Jenkins branches
uses: actions/github-script@v8
with:
script: |
const cutoff = Date.now() - 24 * 60 * 60 * 1000;
const prefixes = ['tmp-jenkins', '__jenkins'];
for await (const response of github.paginate.iterator(github.rest.repos.listBranches, {
owner: context.repo.owner,
repo: context.repo.repo,
per_page: 100,
})) {
for (const branch of response.data) {
if (!prefixes.some(p => branch.name.startsWith(p))) continue;
const { data: commit } = await github.rest.repos.getCommit({
owner: context.repo.owner,
repo: context.repo.repo,
ref: branch.commit.sha,
});
const commitDate = new Date(commit.commit.committer.date).getTime();
if (commitDate < cutoff) {
console.log(`Deleting branch: ${branch.name} (last commit: ${commit.commit.committer.date})`);
await github.rest.git.deleteRef({
owner: context.repo.owner,
repo: context.repo.repo,
ref: `heads/${branch.name}`,
});
}
}
}
scan-comments:
runs-on: ubuntu-latest
if: ${{ github.event.issue.pull_request }}
permissions:
contents: write
issues: write
steps:
- name: Check for trigger phrase
id: check_comment
uses: actions/github-script@v7
uses: actions/github-script@v8
with:
script: |
const triggerPhrase = "trigger-jenkins";
@@ -32,7 +72,7 @@ jobs:
- name: Checkout repository
if: steps.check_comment.outputs.result == 'true'
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
ref: refs/pull/${{ github.event.issue.number }}/head
@@ -43,3 +83,14 @@ jobs:
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git checkout -b tmp-jenkins-${{ github.event.issue.number }}
GIT_LFS_SKIP_PUSH=1 git push -f origin tmp-jenkins-${{ github.event.issue.number }}
- name: Delete trigger comment
if: steps.check_comment.outputs.result == 'true' && always()
uses: actions/github-script@v8
with:
script: |
await github.rest.issues.deleteComment({
owner: context.repo.owner,
repo: context.repo.repo,
comment_id: context.payload.comment.id,
});

42
.github/workflows/model_review.yaml vendored Normal file
View File

@@ -0,0 +1,42 @@
name: "model review"
on:
pull_request:
types: [opened, reopened, synchronize]
paths:
- 'selfdrive/modeld/models/*.onnx'
workflow_dispatch:
jobs:
comment:
permissions:
contents: read
pull-requests: write
runs-on: ubuntu-latest
if: github.repository == 'commaai/openpilot'
steps:
- name: Checkout
uses: actions/checkout@v6
with:
submodules: true
- name: Checkout master
uses: actions/checkout@v6
with:
ref: master
path: base
- run: git lfs pull
- run: cd base && git lfs pull
- name: scripts/reporter.py
id: report
run: |
echo "content<<EOF" >> $GITHUB_OUTPUT
echo "## Model Review" >> $GITHUB_OUTPUT
PYTHONPATH=${{ github.workspace }} MASTER_PATH=${{ github.workspace }}/base python scripts/reporter.py >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
- name: Post model report comment
uses: marocchino/sticky-pull-request-comment@baa7203ed60924babbe5dcd0ac8eae3b66ec5e16
with:
header: model-review
message: ${{ steps.report.outputs.content }}

View File

@@ -6,7 +6,7 @@ on:
env:
DOCKER_LOGIN: docker login ghcr.io -u ${{ github.actor }} -p ${{ secrets.GITHUB_TOKEN }}
BUILD: selfdrive/test/docker_build.sh prebuilt
BUILD: selfdrive/test/docker_build.sh
jobs:
build_prebuilt:
@@ -28,8 +28,8 @@ jobs:
wait-interval: 30
running-workflow-name: 'build prebuilt'
repo-token: ${{ secrets.GITHUB_TOKEN }}
check-regexp: ^((?!.*(build master-ci).*).)*$
- uses: actions/checkout@v4
check-regexp: ^((?!.*(build master-ci|create badges).*).)*$
- uses: actions/checkout@v6
with:
submodules: true
- run: git lfs pull

View File

@@ -7,48 +7,25 @@ on:
jobs:
build_masterci:
name: build master-ci
env:
TARGET_DIR: /tmp/openpilot
ImageOS: ubuntu20
container:
image: ghcr.io/commaai/openpilot-base:latest
runs-on: ubuntu-latest
if: github.repository == 'commaai/openpilot'
permissions:
checks: read
contents: write
steps:
- name: Install wait-on-check-action dependencies
run: |
sudo apt-get update
sudo apt-get install -y libyaml-dev
- name: Wait for green check mark
if: ${{ github.event_name != 'workflow_dispatch' }}
if: ${{ github.event_name == 'schedule' }}
uses: lewagon/wait-on-check-action@ccfb013c15c8afb7bf2b7c028fb74dc5a068cccc
with:
ref: master
wait-interval: 30
running-workflow-name: 'build master-ci'
repo-token: ${{ secrets.GITHUB_TOKEN }}
check-regexp: ^((?!.*(build prebuilt).*).)*$
check-regexp: ^((?!.*(build prebuilt|create badges).*).)*$
- uses: actions/checkout@v4
with:
submodules: true
fetch-depth: 0
- name: Pull LFS
run: |
git config --global --add safe.directory '*'
git lfs pull
- name: Build master-ci
run: |
release/build_devel.sh
- name: Run tests
run: |
export PYTHONPATH=$TARGET_DIR
cd $TARGET_DIR
scons -j$(nproc)
pytest -n logical selfdrive/car/tests/test_car_interfaces.py
- run: ./tools/op.sh setup
- name: Push master-ci
run: |
unset TARGET_DIR
BRANCH=master-ci release/build_devel.sh
run: BRANCH=__nightly release/build_stripped.sh

View File

@@ -5,34 +5,51 @@ on:
- cron: "0 14 * * 1" # every Monday at 2am UTC (6am PST)
workflow_dispatch:
env:
PYTHONPATH: ${{ github.workspace }}
jobs:
package_updates:
name: package_updates
runs-on: ubuntu-latest
container:
image: ghcr.io/commaai/openpilot-base:latest
if: github.repository == 'commaai/openpilot'
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
submodules: true
- run: ./tools/op.sh setup
- name: uv lock
run: uv lock --upgrade
- name: uv pip tree
id: pip_tree
run: |
python3 -m ensurepip --upgrade
pip3 install uv
uv lock --upgrade
echo 'PIP_TREE<<EOF' >> $GITHUB_OUTPUT
uv pip tree >> $GITHUB_OUTPUT
echo 'EOF' >> $GITHUB_OUTPUT
- name: venv size
id: venv_size
run: |
echo 'VENV_SIZE<<EOF' >> $GITHUB_OUTPUT
echo "Total: $(du -sh .venv | cut -f1)" >> $GITHUB_OUTPUT
echo "" >> $GITHUB_OUTPUT
echo "Top 10 by size:" >> $GITHUB_OUTPUT
du -sh .venv/lib/python*/site-packages/* 2>/dev/null \
| grep -v '\.dist-info' \
| grep -v '__pycache__' \
| sort -rh \
| head -10 \
| while IFS=$'\t' read size path; do echo "$size ${path##*/}"; done >> $GITHUB_OUTPUT
echo 'EOF' >> $GITHUB_OUTPUT
- name: bump submodules
run: |
git config --global --add safe.directory '*'
git -c submodule."tinygrad".update=none submodule update --remote
git submodule update --remote
git add .
- name: update car docs
run: |
scons -j$(nproc) --minimal opendbc_repo
PYTHONPATH=. python selfdrive/car/docs.py
python selfdrive/car/docs.py
git add docs/CARS.md
- name: Create Pull Request
uses: peter-evans/create-pull-request@9153d834b60caba6d51c9b9510b087acf9f33f83
uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0
with:
author: Vehicle Researcher <user@comma.ai>
token: ${{ secrets.ACTIONS_CREATE_PR_PAT }}
@@ -41,5 +58,16 @@ jobs:
branch: auto-package-updates
base: master
delete-branch: true
body: 'Automatic PR from repo-maintenance -> package_updates'
body: |
Automatic PR from repo-maintenance -> package_updates
```
$ du -sh .venv && du -sh .venv/lib/python*/site-packages/* | sort -rh | head -10
${{ steps.venv_size.outputs.VENV_SIZE }}
```
```
$ uv pip tree
${{ steps.pip_tree.outputs.PIP_TREE }}
```
labels: bot

View File

@@ -1,357 +0,0 @@
name: selfdrive
on:
push:
branches:
- master
pull_request:
workflow_dispatch:
workflow_call:
inputs:
run_number:
default: '1'
required: true
type: string
concurrency:
group: selfdrive-tests-ci-run-${{ inputs.run_number }}-${{ github.event_name == 'push' && github.ref == 'refs/heads/master' && github.run_id || github.head_ref || github.ref }}-${{ github.workflow }}-${{ github.event_name }}
cancel-in-progress: true
env:
PYTHONWARNINGS: error
BASE_IMAGE: openpilot-base
AZURE_TOKEN: ${{ secrets.AZURE_COMMADATACI_OPENPILOTCI_TOKEN }}
DOCKER_LOGIN: docker login ghcr.io -u ${{ github.actor }} -p ${{ secrets.GITHUB_TOKEN }}
BUILD: selfdrive/test/docker_build.sh base
RUN: docker run --shm-size 2G -v $PWD:/tmp/openpilot -w /tmp/openpilot -e CI=1 -e PYTHONWARNINGS=error -e FILEREADER_CACHE=1 -e PYTHONPATH=/tmp/openpilot -e NUM_JOBS -e JOB_ID -e GITHUB_ACTION -e GITHUB_REF -e GITHUB_HEAD_REF -e GITHUB_SHA -e GITHUB_REPOSITORY -e GITHUB_RUN_ID -v $GITHUB_WORKSPACE/.ci_cache/scons_cache:/tmp/scons_cache -v $GITHUB_WORKSPACE/.ci_cache/comma_download_cache:/tmp/comma_download_cache -v $GITHUB_WORKSPACE/.ci_cache/openpilot_cache:/tmp/openpilot_cache $BASE_IMAGE /bin/bash -c
PYTEST: pytest --continue-on-collection-errors --cov --cov-report=xml --cov-append --durations=0 --durations-min=5 --hypothesis-seed 0 -n logical
jobs:
build_release:
name: build release
runs-on:
- ${{ ((github.repository == 'commaai/openpilot') && ((github.event_name != 'pull_request') || (github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))) && 'namespace-profile-amd64-8x16' || 'ubuntu-24.04' }}
- ${{ ((github.repository == 'commaai/openpilot') && ((github.event_name != 'pull_request') || (github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))) && 'namespace-experiments:docker.builds.local-cache=separate' || 'ubuntu-24.04' }}
env:
STRIPPED_DIR: /tmp/releasepilot
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Getting LFS files
uses: nick-fields/retry@7152eba30c6575329ac0576536151aca5a72780e
with:
timeout_minutes: 2
max_attempts: 3
command: git lfs pull
- name: Build devel
timeout-minutes: 1
run: TARGET_DIR=$STRIPPED_DIR release/build_devel.sh
- uses: ./.github/workflows/setup-with-retry
- name: Check submodules
if: github.repository == 'commaai/openpilot'
timeout-minutes: 3
run: release/check-submodules.sh
- name: Build openpilot and run checks
timeout-minutes: ${{ ((steps.restore-scons-cache.outputs.cache-hit == 'true') && 10 || 30) }} # allow more time when we missed the scons cache
run: |
cd $STRIPPED_DIR
${{ env.RUN }} "python3 system/manager/build.py"
- name: Run tests
timeout-minutes: 1
run: |
cd $STRIPPED_DIR
${{ env.RUN }} "release/check-dirty.sh && \
MAX_EXAMPLES=5 $PYTEST -m 'not slow' selfdrive/car system/manager"
- name: Static analysis
timeout-minutes: 1
run: |
cd $GITHUB_WORKSPACE
cp pyproject.toml $STRIPPED_DIR
cd $STRIPPED_DIR
${{ env.RUN }} "scripts/lint/lint.sh --skip check_added_large_files"
build:
runs-on:
- ${{ ((github.repository == 'commaai/openpilot') && ((github.event_name != 'pull_request') || (github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))) && 'namespace-profile-amd64-8x16' || 'ubuntu-24.04' }}
- ${{ ((github.repository == 'commaai/openpilot') && ((github.event_name != 'pull_request') || (github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))) && 'namespace-experiments:docker.builds.local-cache=separate' || 'ubuntu-24.04' }}
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Setup docker push
if: github.ref == 'refs/heads/master' && github.event_name != 'pull_request' && github.repository == 'commaai/openpilot'
run: |
echo "PUSH_IMAGE=true" >> "$GITHUB_ENV"
$DOCKER_LOGIN
- uses: ./.github/workflows/setup-with-retry
- uses: ./.github/workflows/compile-openpilot
timeout-minutes: 30
build_mac:
name: build macOS
runs-on: ${{ github.repository == 'commaai/openpilot' && 'namespace-profile-macos-8x14' || 'macos-latest' }}
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Homebrew cache
uses: ./.github/workflows/auto-cache
with:
path: ~/Library/Caches/Homebrew
- name: Install dependencies
run: ./tools/mac_setup.sh
env:
# package install has DeprecationWarnings
PYTHONWARNINGS: default
- run: git lfs pull
- run: echo "CACHE_COMMIT_DATE=$(git log -1 --pretty='format:%cd' --date=format:'%Y-%m-%d-%H:%M')" >> $GITHUB_ENV
- name: Getting scons cache
uses: ./.github/workflows/auto-cache
with:
path: /tmp/scons_cache
- name: Building openpilot
run: . .venv/bin/activate && scons -j$(nproc)
static_analysis:
name: static analysis
runs-on:
- ${{ ((github.repository == 'commaai/openpilot') && ((github.event_name != 'pull_request') || (github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))) && 'namespace-profile-amd64-8x16' || 'ubuntu-24.04' }}
- ${{ ((github.repository == 'commaai/openpilot') && ((github.event_name != 'pull_request') || (github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))) && 'namespace-experiments:docker.builds.local-cache=separate' || 'ubuntu-24.04' }}
env:
PYTHONWARNINGS: default
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: ./.github/workflows/setup-with-retry
- name: Static analysis
timeout-minutes: 1
run: ${{ env.RUN }} "scripts/lint/lint.sh"
unit_tests:
name: unit tests
runs-on:
- ${{ ((github.repository == 'commaai/openpilot') && ((github.event_name != 'pull_request') || (github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))) && 'namespace-profile-amd64-8x16' || 'ubuntu-24.04' }}
- ${{ ((github.repository == 'commaai/openpilot') && ((github.event_name != 'pull_request') || (github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))) && 'namespace-experiments:docker.builds.local-cache=separate' || 'ubuntu-24.04' }}
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: ./.github/workflows/setup-with-retry
- name: Build openpilot
run: ${{ env.RUN }} "scons -j$(nproc)"
- name: Run unit tests
timeout-minutes: ${{ contains(runner.name, 'nsc') && 1 || 20 }}
run: |
${{ env.RUN }} "$PYTEST --collect-only -m 'not slow' &> /dev/null && \
MAX_EXAMPLES=1 $PYTEST -m 'not slow' && \
./selfdrive/ui/tests/create_test_translations.sh && \
QT_QPA_PLATFORM=offscreen ./selfdrive/ui/tests/test_translations && \
chmod -R 777 /tmp/comma_download_cache"
- name: "Upload coverage to Codecov"
uses: codecov/codecov-action@v4
with:
name: ${{ github.job }}
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
process_replay:
name: process replay
runs-on:
- ${{ ((github.repository == 'commaai/openpilot') && ((github.event_name != 'pull_request') || (github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))) && 'namespace-profile-amd64-8x16' || 'ubuntu-24.04' }}
- ${{ ((github.repository == 'commaai/openpilot') && ((github.event_name != 'pull_request') || (github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))) && 'namespace-experiments:docker.builds.local-cache=separate' || 'ubuntu-24.04' }}
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: ./.github/workflows/setup-with-retry
- name: Cache test routes
id: dependency-cache
uses: actions/cache@v4
with:
path: .ci_cache/comma_download_cache
key: proc-replay-${{ hashFiles('selfdrive/test/process_replay/ref_commit', 'selfdrive/test/process_replay/test_processes.py') }}
- name: Build openpilot
run: |
${{ env.RUN }} "scons -j$(nproc)"
- name: Run replay
timeout-minutes: ${{ contains(runner.name, 'nsc') && (steps.dependency-cache.outputs.cache-hit == 'true') && 1 || 20 }}
run: |
${{ env.RUN }} "coverage run selfdrive/test/process_replay/test_processes.py -j$(nproc) && \
chmod -R 777 /tmp/comma_download_cache && \
coverage combine && \
coverage xml"
- name: Print diff
id: print-diff
if: always()
run: cat selfdrive/test/process_replay/diff.txt
- uses: actions/upload-artifact@v4
if: always()
continue-on-error: true
with:
name: process_replay_diff.txt
path: selfdrive/test/process_replay/diff.txt
- name: Upload reference logs
if: ${{ failure() && steps.print-diff.outcome == 'success' && github.repository == 'commaai/openpilot' && env.AZURE_TOKEN != '' }}
run: |
${{ env.RUN }} "unset PYTHONWARNINGS && AZURE_TOKEN='$AZURE_TOKEN' python3 selfdrive/test/process_replay/test_processes.py -j$(nproc) --upload-only"
- name: Run regen
if: false
timeout-minutes: 4
run: |
${{ env.RUN }} "ONNXCPU=1 $PYTEST selfdrive/test/process_replay/test_regen.py && \
chmod -R 777 /tmp/comma_download_cache"
- name: "Upload coverage to Codecov"
uses: codecov/codecov-action@v4
with:
name: ${{ github.job }}
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
test_cars:
name: cars
runs-on:
- ${{ ((github.repository == 'commaai/openpilot') && ((github.event_name != 'pull_request') || (github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))) && 'namespace-profile-amd64-8x16' || 'ubuntu-24.04' }}
- ${{ ((github.repository == 'commaai/openpilot') && ((github.event_name != 'pull_request') || (github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))) && 'namespace-experiments:docker.builds.local-cache=separate' || 'ubuntu-24.04' }}
strategy:
fail-fast: false
matrix:
job: [0, 1, 2, 3]
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: ./.github/workflows/setup-with-retry
- name: Cache test routes
id: routes-cache
uses: actions/cache@v4
with:
path: .ci_cache/comma_download_cache
key: car_models-${{ hashFiles('selfdrive/car/tests/test_models.py', 'selfdrive/car/tests/routes.py') }}-${{ matrix.job }}
- name: Build openpilot
run: ${{ env.RUN }} "scons -j$(nproc)"
- name: Test car models
timeout-minutes: ${{ contains(runner.name, 'nsc') && (steps.routes-cache.outputs.cache-hit == 'true') && 1 || 20 }}
run: |
${{ env.RUN }} "MAX_EXAMPLES=1 $PYTEST selfdrive/car/tests/test_models.py && \
chmod -R 777 /tmp/comma_download_cache"
env:
NUM_JOBS: 4
JOB_ID: ${{ matrix.job }}
- name: "Upload coverage to Codecov"
uses: codecov/codecov-action@v4
with:
name: ${{ github.job }}-${{ matrix.job }}
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
car_docs_diff:
name: PR comments
runs-on: ubuntu-latest
#if: github.event_name == 'pull_request'
if: false # TODO: run this in opendbc?
steps:
- uses: actions/checkout@v4
with:
submodules: true
ref: ${{ github.event.pull_request.base.ref }}
- run: git lfs pull
- uses: ./.github/workflows/setup-with-retry
- name: Get base car info
run: |
${{ env.RUN }} "scons -j$(nproc) && python3 selfdrive/debug/dump_car_docs.py --path /tmp/openpilot_cache/base_car_docs"
sudo chown -R $USER:$USER ${{ github.workspace }}
- uses: actions/checkout@v4
with:
submodules: true
path: current
- run: cd current && git lfs pull
- name: Save car docs diff
id: save_diff
run: |
cd current
${{ env.RUN }} "scons -j$(nproc)"
output=$(${{ env.RUN }} "python3 selfdrive/debug/print_docs_diff.py --path /tmp/openpilot_cache/base_car_docs")
output="${output//$'\n'/'%0A'}"
echo "::set-output name=diff::$output"
- name: Find comment
if: ${{ env.AZURE_TOKEN != '' }}
uses: peter-evans/find-comment@3eae4d37986fb5a8592848f6a574fdf654e61f9e
id: fc
with:
issue-number: ${{ github.event.pull_request.number }}
body-includes: This PR makes changes to
- name: Update comment
if: ${{ steps.save_diff.outputs.diff != '' && env.AZURE_TOKEN != '' }}
uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043
with:
comment-id: ${{ steps.fc.outputs.comment-id }}
issue-number: ${{ github.event.pull_request.number }}
body: "${{ steps.save_diff.outputs.diff }}"
edit-mode: replace
- name: Delete comment
if: ${{ steps.fc.outputs.comment-id != '' && steps.save_diff.outputs.diff == '' && env.AZURE_TOKEN != '' }}
uses: actions/github-script@v7
with:
script: |
github.rest.issues.deleteComment({
owner: context.repo.owner,
repo: context.repo.repo,
comment_id: ${{ steps.fc.outputs.comment-id }}
})
simulator_driving:
name: simulator driving
runs-on:
- ${{ ((github.repository == 'commaai/openpilot') && ((github.event_name != 'pull_request') || (github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))) && 'namespace-profile-amd64-8x16' || 'ubuntu-24.04' }}
- ${{ ((github.repository == 'commaai/openpilot') && ((github.event_name != 'pull_request') || (github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))) && 'namespace-experiments:docker.builds.local-cache=separate' || 'ubuntu-24.04' }}
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: ./.github/workflows/setup-with-retry
- name: Build openpilot
run: |
${{ env.RUN }} "scons -j$(nproc)"
- name: Driving test
timeout-minutes: 1
run: |
${{ env.RUN }} "source selfdrive/test/setup_xvfb.sh && \
source selfdrive/test/setup_vsound.sh && \
CI=1 pytest tools/sim/tests/test_metadrive_bridge.py"
create_ui_report:
# This job name needs to be the same as UI_JOB_NAME in ui_preview.yaml
name: Create UI Report
runs-on:
- ${{ ((github.repository == 'commaai/openpilot') && ((github.event_name != 'pull_request') || (github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))) && 'namespace-profile-amd64-8x16' || 'ubuntu-24.04' }}
- ${{ ((github.repository == 'commaai/openpilot') && ((github.event_name != 'pull_request') || (github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))) && 'namespace-experiments:docker.builds.local-cache=separate' || 'ubuntu-24.04' }}
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: ./.github/workflows/setup-with-retry
- name: caching frames
id: frames-cache
uses: actions/cache@v4
with:
path: .ci_cache/comma_download_cache
key: ui_screenshots_test_${{ hashFiles('selfdrive/ui/tests/test_ui/run.py') }}
- name: Build openpilot
run: ${{ env.RUN }} "scons -j$(nproc)"
- name: Create Test Report
timeout-minutes: ${{ ((steps.frames-cache.outputs.cache-hit == 'true') && 1 || 3) }}
run: >
${{ env.RUN }} "PYTHONWARNINGS=ignore &&
source selfdrive/test/setup_xvfb.sh &&
CACHE_ROOT=/tmp/comma_download_cache python3 selfdrive/ui/tests/test_ui/run.py &&
chmod -R 777 /tmp/comma_download_cache"
- name: Upload Test Report
uses: actions/upload-artifact@v4
with:
name: report-${{ inputs.run_number || '1' }}-${{ github.event_name == 'push' && github.ref == 'refs/heads/master' && 'master' || github.event.number }}
path: selfdrive/ui/tests/test_ui/report_1/screenshots

View File

@@ -1,37 +0,0 @@
name: 'openpilot env setup, with retry on failure'
inputs:
docker_hub_pat:
description: 'Auth token for Docker Hub, required for BuildJet jobs'
required: false
default: ''
sleep_time:
description: 'Time to sleep between retries'
required: false
default: 30
runs:
using: "composite"
steps:
- id: setup1
uses: ./.github/workflows/setup
continue-on-error: true
with:
is_retried: true
- if: steps.setup1.outcome == 'failure'
shell: bash
run: sleep ${{ inputs.sleep_time }}
- id: setup2
if: steps.setup1.outcome == 'failure'
uses: ./.github/workflows/setup
continue-on-error: true
with:
is_retried: true
- if: steps.setup2.outcome == 'failure'
shell: bash
run: sleep ${{ inputs.sleep_time }}
- id: setup3
if: steps.setup2.outcome == 'failure'
uses: ./.github/workflows/setup
with:
is_retried: true

View File

@@ -1,56 +0,0 @@
name: 'openpilot env setup'
inputs:
is_retried:
description: 'A mock param that asserts that we use the setup-with-retry instead of this action directly'
required: false
default: 'false'
runs:
using: "composite"
steps:
# assert that this action is retried using the setup-with-retry
- shell: bash
if: ${{ inputs.is_retried == 'false' }}
run: |
echo "You should not run this action directly. Use setup-with-retry instead"
exit 1
- shell: bash
name: No retries!
run: |
if [ "${{ github.run_attempt }}" -gt 1 ]; then
echo -e "\033[0;31m##################################################"
echo -e "\033[0;31m Retries not allowed! Fix the flaky test! "
echo -e "\033[0;31m##################################################\033[0m"
exit 1
fi
# do this after checkout to ensure our custom LFS config is used to pull from GitLab
- shell: bash
run: git lfs pull
# build cache
- id: date
shell: bash
run: echo "CACHE_COMMIT_DATE=$(git log -1 --pretty='format:%cd' --date=format:'%Y-%m-%d-%H:%M')" >> $GITHUB_ENV
- shell: bash
run: echo "$CACHE_COMMIT_DATE"
- id: scons-cache
uses: ./.github/workflows/auto-cache
with:
path: .ci_cache/scons_cache
key: scons-${{ runner.arch }}-${{ env.CACHE_COMMIT_DATE }}-${{ github.sha }}
restore-keys: |
scons-${{ runner.arch }}-${{ env.CACHE_COMMIT_DATE }}
scons-${{ runner.arch }}
# as suggested here: https://github.com/moby/moby/issues/32816#issuecomment-910030001
- id: normalize-file-permissions
shell: bash
name: Normalize file permissions to ensure a consistent docker build cache
run: |
find . -type f -executable -not -perm 755 -exec chmod 755 {} \;
find . -type f -not -executable -not -perm 644 -exec chmod 644 {} \;
# build our docker image
- shell: bash
run: eval ${{ env.BUILD }}

View File

@@ -5,14 +5,15 @@ on:
workflow_dispatch:
env:
DAYS_BEFORE_PR_CLOSE: 2
DAYS_BEFORE_PR_STALE: 9
DAYS_BEFORE_PR_CLOSE: 7
DAYS_BEFORE_PR_STALE: 24
DAYS_BEFORE_PR_STALE_DRAFT: 30
jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v9
- uses: actions/stale@v10
with:
exempt-all-milestones: true
@@ -24,6 +25,28 @@ jobs:
exempt-pr-labels: "ignore stale,needs testing" # if wip or it needs testing from the community, don't mark as stale
days-before-pr-stale: ${{ env.DAYS_BEFORE_PR_STALE }}
days-before-pr-close: ${{ env.DAYS_BEFORE_PR_CLOSE }}
exempt-draft-pr: false
# issue config
days-before-issue-stale: -1 # ignore issues for now
# same as above, but give draft PRs more time
stale_drafts:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v10
with:
exempt-all-milestones: true
# pull request config
stale-pr-message: 'This PR has had no activity for ${{ env.DAYS_BEFORE_PR_STALE_DRAFT }} days. It will be automatically closed in ${{ env.DAYS_BEFORE_PR_CLOSE }} days if there is no activity.'
close-pr-message: 'This PR has been automatically closed due to inactivity. Feel free to re-open once activity resumes.'
stale-pr-label: stale
delete-branch: ${{ github.event.pull_request.head.repo.full_name == 'commaai/openpilot' }} # only delete branches on the main repo
exempt-pr-labels: "ignore stale,needs testing" # if wip or it needs testing from the community, don't mark as stale
days-before-pr-stale: ${{ env.DAYS_BEFORE_PR_STALE_DRAFT }}
days-before-pr-close: ${{ env.DAYS_BEFORE_PR_CLOSE }}
exempt-draft-pr: true
# issue config
days-before-issue-stale: -1 # ignore issues for now

231
.github/workflows/tests.yaml vendored Normal file
View File

@@ -0,0 +1,231 @@
name: tests
on:
push:
branches:
- master
pull_request:
workflow_dispatch:
workflow_call:
inputs:
run_number:
default: '1'
required: true
type: string
concurrency:
group: tests-ci-run-${{ inputs.run_number }}-${{ github.event_name == 'push' && github.ref == 'refs/heads/master' && github.run_id || github.head_ref || github.ref }}-${{ github.workflow }}-${{ github.event_name }}
cancel-in-progress: true
env:
CI: 1
PYTHONPATH: ${{ github.workspace }}
PYTEST: pytest --continue-on-collection-errors --durations=0 -n logical
jobs:
build_release:
name: build release
runs-on: ${{
(github.repository == 'commaai/openpilot') &&
((github.event_name != 'pull_request') ||
(github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))
&& fromJSON('["namespace-profile-amd64-8x16"]')
|| fromJSON('["ubuntu-24.04"]') }}
env:
STRIPPED_DIR: /tmp/releasepilot
PYTHONPATH: /tmp/releasepilot
steps:
- uses: actions/checkout@v6
with:
submodules: true
- name: Getting LFS files
uses: nick-fields/retry@7152eba30c6575329ac0576536151aca5a72780e
with:
timeout_minutes: 2
max_attempts: 3
command: git lfs pull
- name: Build devel
timeout-minutes: 1
run: TARGET_DIR=$STRIPPED_DIR release/build_stripped.sh
- run: ./tools/op.sh setup
- name: Build openpilot and run checks
timeout-minutes: 30
working-directory: ${{ env.STRIPPED_DIR }}
run: python3 system/manager/build.py
- name: Run tests
timeout-minutes: 1
working-directory: ${{ env.STRIPPED_DIR }}
run: release/check-dirty.sh
- name: Check submodules
if: github.repository == 'commaai/openpilot'
timeout-minutes: 3
run: release/check-submodules.sh
build_mac:
name: build macOS
runs-on: ${{ ((github.repository == 'commaai/openpilot') && ((github.event_name != 'pull_request') || (github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))) && 'namespace-profile-macos-8x14' || 'macos-latest' }}
steps:
- uses: actions/checkout@v6
with:
submodules: true
- name: Remove Homebrew from environment
run: |
FILTERED=$(echo "$PATH" | tr ':' '\n' | grep -v '/opt/homebrew' | tr '\n' ':')
echo "PATH=${FILTERED}/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin" >> $GITHUB_ENV
- run: ./tools/op.sh setup
- name: Building openpilot
run: scons
static_analysis:
name: static analysis
runs-on: ${{
(github.repository == 'commaai/openpilot') &&
((github.event_name != 'pull_request') ||
(github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))
&& fromJSON('["namespace-profile-amd64-8x16"]')
|| fromJSON('["ubuntu-24.04"]') }}
steps:
- uses: actions/checkout@v6
with:
submodules: true
- run: ./tools/op.sh setup
- name: Static analysis
timeout-minutes: 1
run: scripts/lint/lint.sh
unit_tests:
name: unit tests
runs-on: ${{
(github.repository == 'commaai/openpilot') &&
((github.event_name != 'pull_request') ||
(github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))
&& fromJSON('["namespace-profile-amd64-8x16"]')
|| fromJSON('["ubuntu-24.04"]') }}
steps:
- uses: actions/checkout@v6
with:
submodules: true
- run: ./tools/op.sh setup
- name: Build openpilot
run: scons -j$(nproc)
- name: Run unit tests
timeout-minutes: ${{ contains(runner.name, 'nsc') && 2 || 20 }}
run: |
source selfdrive/test/setup_xvfb.sh
# Pre-compile Python bytecode so each pytest worker doesn't need to
$PYTEST --collect-only -m 'not slow' -qq
MAX_EXAMPLES=1 $PYTEST -m 'not slow'
process_replay:
name: process replay
runs-on: ${{
(github.repository == 'commaai/openpilot') &&
((github.event_name != 'pull_request') ||
(github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))
&& fromJSON('["namespace-profile-amd64-8x16"]')
|| fromJSON('["ubuntu-24.04"]') }}
steps:
- uses: actions/checkout@v6
with:
submodules: true
- run: ./tools/op.sh setup
- name: Build openpilot
run: scons -j$(nproc)
- name: Run replay
timeout-minutes: ${{ contains(runner.name, 'nsc') && 2 || 20 }}
continue-on-error: ${{ github.ref == 'refs/heads/master' }}
run: selfdrive/test/process_replay/test_processes.py -j$(nproc)
- name: Print diff
id: print-diff
if: always()
run: cat selfdrive/test/process_replay/diff.txt
- name: Print diff report
if: always()
run: cat selfdrive/test/process_replay/diff_report.txt
- uses: actions/upload-artifact@v6
if: always()
continue-on-error: true
with:
name: process_replay_diff.txt
path: selfdrive/test/process_replay/diff.txt
- name: Upload diff report
uses: actions/upload-artifact@v6
if: always() && github.event_name == 'pull_request'
continue-on-error: true
with:
name: diff_report_${{ github.event.number }}
path: selfdrive/test/process_replay/diff_report.txt
- name: Checkout ci-artifacts
if: github.repository == 'commaai/openpilot' && github.ref == 'refs/heads/master'
uses: actions/checkout@v4
with:
repository: commaai/ci-artifacts
ssh-key: ${{ secrets.CI_ARTIFACTS_DEPLOY_KEY }}
path: ${{ github.workspace }}/ci-artifacts
- name: Push refs
if: github.repository == 'commaai/openpilot' && github.ref == 'refs/heads/master'
working-directory: ${{ github.workspace }}/ci-artifacts
run: |
git config user.name "GitHub Actions Bot"
git config user.email "<>"
git fetch origin process-replay || true
git checkout process-replay 2>/dev/null || git checkout --orphan process-replay
cp ${{ github.workspace }}/selfdrive/test/process_replay/fakedata/*.zst .
echo "${{ github.sha }}" > ref_commit
git add .
git commit -m "process-replay refs for ${{ github.repository }}@${{ github.sha }}" || echo "No changes to commit"
git push origin process-replay --force
- name: Run regen
if: false
timeout-minutes: 4
env:
ONNXCPU: 1
run: $PYTEST selfdrive/test/process_replay/test_regen.py
simulator_driving:
name: simulator driving
runs-on: ${{
(github.repository == 'commaai/openpilot') &&
((github.event_name != 'pull_request') ||
(github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))
&& fromJSON('["namespace-profile-amd64-8x16"]')
|| fromJSON('["ubuntu-24.04"]') }}
if: false # FIXME: Started to timeout recently
steps:
- uses: actions/checkout@v6
with:
submodules: true
- run: ./tools/op.sh setup
- name: Build openpilot
run: scons -j$(nproc)
- name: Driving test
timeout-minutes: 2
run: |
source selfdrive/test/setup_xvfb.sh
pytest -s tools/sim/tests/test_metadrive_bridge.py
create_ui_report:
name: Create UI Report
runs-on: ${{
(github.repository == 'commaai/openpilot') &&
((github.event_name != 'pull_request') ||
(github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))
&& fromJSON('["namespace-profile-amd64-8x16"]')
|| fromJSON('["ubuntu-24.04"]') }}
steps:
- uses: actions/checkout@v6
with:
submodules: true
- run: ./tools/op.sh setup
- name: Build openpilot
run: scons -j$(nproc)
- name: Create UI Report
run: |
source selfdrive/test/setup_xvfb.sh
python3 selfdrive/ui/tests/diff/replay.py
python3 selfdrive/ui/tests/diff/replay.py --big
- name: Upload UI Report
uses: actions/upload-artifact@v6
with:
name: ui-report-${{ inputs.run_number || '1' }}-${{ github.event_name == 'push' && github.ref == 'refs/heads/master' && 'master' || github.event.number }}
path: selfdrive/ui/tests/diff/report

View File

@@ -8,14 +8,20 @@ on:
branches:
- 'master'
paths:
- 'selfdrive/assets/**'
- 'selfdrive/ui/**'
- 'system/ui/**'
workflow_dispatch:
env:
UI_JOB_NAME: "Create UI Report"
REPORT_NAME: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' && 'master' || github.event.number }}
SHA: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' && github.sha || github.event.pull_request.head.sha }}
BRANCH_NAME: "openpilot/pr-${{ github.event.number }}"
BRANCH_NAME: "openpilot/pr-${{ github.event.number }}-ui-preview"
REPORT_FILES_BRANCH_NAME: "mici-raylib-ui-reports"
# variant:video_prefix:master_branch
VARIANTS: "mici:mici_ui_replay:openpilot_master_ui_mici_raylib big:tizi_ui_replay:openpilot_master_ui_big_raylib"
jobs:
preview:
@@ -28,8 +34,9 @@ jobs:
pull-requests: write
actions: read
steps:
- name: Waiting for ui generation to start
run: sleep 30
- uses: actions/checkout@v6
with:
submodules: true
- name: Waiting for ui generation to end
uses: lewagon/wait-on-check-action@v1.3.4
@@ -46,98 +53,93 @@ jobs:
echo "run_id=$(curl https://api.github.com/repos/${{ github.repository }}/commits/${{ env.SHA }}/check-runs | jq -r '.check_runs[] | select(.name == "${{ env.UI_JOB_NAME }}") | .html_url | capture("(?<number>[0-9]+)") | .number')" >> $GITHUB_OUTPUT
- name: Getting proposed ui
id: download-artifact
uses: dawidd6/action-download-artifact@v6
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
run_id: ${{ steps.get_run_id.outputs.run_id }}
search_artifacts: true
name: report-1-${{ env.REPORT_NAME }}
name: ui-report-1-${{ env.REPORT_NAME }}
path: ${{ github.workspace }}/pr_ui
- name: Getting master ui
uses: actions/checkout@v4
- name: Getting mici master ui
uses: actions/checkout@v6
with:
repository: commaai/ci-artifacts
ssh-key: ${{ secrets.CI_ARTIFACTS_DEPLOY_KEY }}
path: ${{ github.workspace }}/master_ui
ref: openpilot_master_ui
path: ${{ github.workspace }}/master_mici
ref: openpilot_master_ui_mici_raylib
- name: Getting big master ui
uses: actions/checkout@v6
with:
repository: commaai/ci-artifacts
ssh-key: ${{ secrets.CI_ARTIFACTS_DEPLOY_KEY }}
path: ${{ github.workspace }}/master_big
ref: openpilot_master_ui_big_raylib
- name: Saving new master ui
if: github.ref == 'refs/heads/master' && github.event_name == 'push'
working-directory: ${{ github.workspace }}/master_ui
run: |
git checkout --orphan=new_master_ui
git rm -rf *
git branch -D openpilot_master_ui
git branch -m openpilot_master_ui
git config user.name "GitHub Actions Bot"
git config user.email "<>"
mv ${{ github.workspace }}/pr_ui/*.png .
git add .
git commit -m "screenshots for commit ${{ env.SHA }}"
git push origin openpilot_master_ui --force
for variant in $VARIANTS; do
IFS=':' read -r name video branch <<< "$variant"
master_dir="${{ github.workspace }}/master_${name}"
cd "$master_dir"
git checkout --orphan=new_branch
git rm -rf *
git branch -D "$branch"
git branch -m "$branch"
git config user.name "GitHub Actions Bot"
git config user.email "<>"
cp "${{ github.workspace }}/pr_ui/${video}.mp4" .
git add .
git commit -m "${name} video for commit ${{ env.SHA }}"
git push origin "$branch" --force
done
- name: Finding diff
- name: Setup FFmpeg
uses: AnimMouse/setup-ffmpeg@ae28d57dabbb148eff63170b6bf7f2b60062cbae
- name: Finding diffs
if: github.event_name == 'pull_request_target'
id: find_diff
run: >-
sudo apt-get install -y imagemagick
run: |
export PYTHONPATH=${{ github.workspace }}
baseurl="https://github.com/commaai/ci-artifacts/raw/refs/heads/${{ env.BRANCH_NAME }}"
scenes="homescreen settings_device settings_software settings_toggles settings_developer offroad_alert update_available prime onroad onroad_disengaged onroad_override onroad_sidebar onroad_wide onroad_wide_sidebar onroad_alert_small onroad_alert_mid onroad_alert_full driver_camera body keyboard"
A=($scenes)
COMMENT=""
for variant in $VARIANTS; do
IFS=':' read -r name video _ <<< "$variant"
diff_name="${name}_diff"
DIFF=""
TABLE="<details><summary>All Screenshots</summary>"
TABLE="${TABLE}<table>"
mv "${{ github.workspace }}/pr_ui/${video}.mp4" "${{ github.workspace }}/pr_ui/${video}_proposed.mp4"
cp "${{ github.workspace }}/master_${name}/${video}.mp4" "${{ github.workspace }}/pr_ui/${video}_master.mp4"
for ((i=0; i<${#A[*]}; i=i+1));
do
diff_exit_code=0
python3 ${{ github.workspace }}/selfdrive/ui/tests/diff/diff.py \
"${{ github.workspace }}/pr_ui/${video}_master.mp4" \
"${{ github.workspace }}/pr_ui/${video}_proposed.mp4" \
"${diff_name}.html" --basedir "$baseurl" --no-open || diff_exit_code=$?
if ! compare -fuzz 2% -highlight-color DeepSkyBlue1 -lowlight-color Black -compose Src ${{ github.workspace }}/master_ui/${A[$i]}.png ${{ github.workspace }}/pr_ui/${A[$i]}.png ${{ github.workspace }}/pr_ui/${A[$i]}_diff.png; then
convert ${{ github.workspace }}/pr_ui/${A[$i]}_diff.png -transparent black mask.png
composite mask.png ${{ github.workspace }}/master_ui/${A[$i]}.png composite_diff.png
convert -delay 100 ${{ github.workspace }}/master_ui/${A[$i]}.png composite_diff.png -loop 0 ${{ github.workspace }}/pr_ui/${A[$i]}_diff.gif
cp "${{ github.workspace }}/selfdrive/ui/tests/diff/report/${diff_name}.html" "${{ github.workspace }}/pr_ui/"
cp "${{ github.workspace }}/selfdrive/ui/tests/diff/report/${diff_name}.mp4" "${{ github.workspace }}/pr_ui/"
mv ${{ github.workspace }}/master_ui/${A[$i]}.png ${{ github.workspace }}/pr_ui/${A[$i]}_master_ref.png
DIFF="${DIFF}<details open>"
DIFF="${DIFF}<summary>${A[$i]} : \$\${\\color{red}\\text{DIFFERENT}}\$\$</summary>"
DIFF="${DIFF}<table>"
DIFF="${DIFF}<tr>"
DIFF="${DIFF} <td> master <img src=\"https://raw.githubusercontent.com/commaai/ci-artifacts/${{ env.BRANCH_NAME }}/${A[$i]}_master_ref.png\"> </td>"
DIFF="${DIFF} <td> proposed <img src=\"https://raw.githubusercontent.com/commaai/ci-artifacts/${{ env.BRANCH_NAME }}/${A[$i]}.png\"> </td>"
DIFF="${DIFF}</tr>"
DIFF="${DIFF}<tr>"
DIFF="${DIFF} <td> diff <img src=\"https://raw.githubusercontent.com/commaai/ci-artifacts/${{ env.BRANCH_NAME }}/${A[$i]}_diff.png\"> </td>"
DIFF="${DIFF} <td> composite diff <img src=\"https://raw.githubusercontent.com/commaai/ci-artifacts/${{ env.BRANCH_NAME }}/${A[$i]}_diff.gif\"> </td>"
DIFF="${DIFF}</tr>"
DIFF="${DIFF}</table>"
DIFF="${DIFF}</details>"
REPORT_URL="https://commaai.github.io/ci-artifacts/${diff_name}_pr_${{ github.event.number }}.html"
if [ $diff_exit_code -eq 0 ]; then
COMMENT+="**${name}**: Videos are identical! [View Diff Report]($REPORT_URL)"$'\n'
else
rm -f ${{ github.workspace }}/pr_ui/${A[$i]}_diff.png
fi
INDEX=$(($i % 2))
if [[ $INDEX -eq 0 ]]; then
TABLE="${TABLE}<tr>"
fi
TABLE="${TABLE} <td> <img src=\"https://raw.githubusercontent.com/commaai/ci-artifacts/${{ env.BRANCH_NAME }}/${A[$i]}.png\"> </td>"
if [[ $INDEX -eq 1 || $(($i + 1)) -eq ${#A[*]} ]]; then
TABLE="${TABLE}</tr>"
COMMENT+="**${name}**: ⚠️ <strong>Videos differ!</strong> [View Diff Report]($REPORT_URL)"$'\n'
fi
done
TABLE="${TABLE}</table></details>"
echo "DIFF=$DIFF$TABLE" >> "$GITHUB_OUTPUT"
{
echo "COMMENT<<EOF"
echo "$COMMENT"
echo "EOF"
} >> "$GITHUB_OUTPUT"
- name: Saving proposed ui
if: github.event_name == 'pull_request_target'
working-directory: ${{ github.workspace }}/master_ui
working-directory: ${{ github.workspace }}/master_mici
run: |
git config user.name "GitHub Actions Bot"
git config user.email "<>"
@@ -145,17 +147,29 @@ jobs:
git rm -rf *
mv ${{ github.workspace }}/pr_ui/* .
git add .
git commit -m "screenshots for PR #${{ github.event.number }}"
git commit -m "ui videos for PR #${{ github.event.number }}"
git push origin ${{ env.BRANCH_NAME }} --force
- name: Comment Screenshots on PR
# Append diff reports to report files branch
git fetch origin ${{ env.REPORT_FILES_BRANCH_NAME }}
git checkout ${{ env.REPORT_FILES_BRANCH_NAME }}
for variant in $VARIANTS; do
IFS=':' read -r name _ _ <<< "$variant"
diff_name="${name}_diff"
cp "${{ github.workspace }}/selfdrive/ui/tests/diff/report/${diff_name}.html" "${diff_name}_pr_${{ github.event.number }}.html"
git add "${diff_name}_pr_${{ github.event.number }}.html"
done
git commit -m "ui diff reports for PR #${{ github.event.number }}" || echo "No changes to commit"
git push origin ${{ env.REPORT_FILES_BRANCH_NAME }}
- name: Comment on PR
if: github.event_name == 'pull_request_target'
uses: thollander/actions-comment-pull-request@v2
with:
message: |
<!-- _(run_id_screenshots **${{ github.run_id }}**)_ -->
<!-- _(run_id_ui_preview **${{ github.run_id }}**)_ -->
## UI Preview
${{ steps.find_diff.outputs.DIFF }}
comment_tag: run_id_screenshots
${{ steps.find_diff.outputs.COMMENT }}
comment_tag: run_id_ui_preview
pr_number: ${{ github.event.number }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

59
.gitignore vendored
View File

@@ -10,15 +10,16 @@ venv/
.overlay_init
.overlay_consistent
.sconsign.dblite
model2.png
a.out
.hypothesis
.cache/
bin/
/docs_site/
*.mp4
*.dylib
*.DSYM
*.d
*.pem
*.pyc
*.pyo
.*.swp
@@ -35,71 +36,53 @@ a.out
*.class
*.pyxbldc
*.vcd
*.qm
*.mo
*_pyx.cpp
*.stats
*.pkl
*.pkl*
config.json
clcache
compile_commands.json
compare_runtime*.html
persist
# build artifacts
selfdrive/pandad/pandad
cereal/services.h
cereal/gen
cereal/messaging/bridge
selfdrive/logcatd/logcatd
selfdrive/mapd/default_speeds_by_region.json
system/proclogd/proclogd
selfdrive/ui/translations/alerts_generated.h
selfdrive/ui/translations/tmp
selfdrive/test/longitudinal_maneuvers/out
selfdrive/car/tests/cars_dump
system/camerad/camerad
system/camerad/test/ae_gray_test
notebooks
hyperthneed
provisioning
.coverage*
coverage.xml
htmlcov
pandaextra
.mypy_cache/
flycheck_*
cppcheck_report.txt
comma*.sh
selfdrive/modeld/thneed/compile
selfdrive/modeld/models/*.thneed
selfdrive/modeld/models/*.pkl
# openpilot log files
*.bz2
*.zst
*.rlog
build/
!**/.gitkeep
poetry.toml
Pipfile
### VisualStudioCode ###
*.vsix
.history
.ionide
.vscode/*
.history/
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
!.vscode/*.code-snippets
# Local History for Visual Studio Code
.history/
# Built Visual Studio Code Extensions
*.vsix
### VisualStudioCode Patch ###
# Ignore all local history of files
.history
.ionide
# agents
.claude/
.context/
PLAN.md
TASK.md

2
.gitmodules vendored
View File

@@ -15,4 +15,4 @@
url = ../../commaai/teleoprtc
[submodule "tinygrad"]
path = tinygrad_repo
url = https://github.com/commaai/tinygrad.git
url = https://github.com/tinygrad/tinygrad.git

1
.python-version Normal file
View File

@@ -0,0 +1 @@
3.12.13

41
.vscode/launch.json vendored
View File

@@ -23,6 +23,11 @@
"id": "args",
"description": "Arguments to pass to the process",
"type": "promptString"
},
{
"id": "replayArg",
"type": "promptString",
"description": "Enter route or segment to replay."
}
],
"configurations": [
@@ -40,7 +45,41 @@
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/${input:cpp_process}",
"cwd": "${workspaceFolder}",
"cwd": "${workspaceFolder}"
},
{
"name": "Attach LLDB to Replay drive",
"type": "lldb",
"request": "attach",
"pid": "${command:pickMyProcess}",
"initCommands": [
"script import time; time.sleep(3)"
]
},
{
"name": "Replay drive",
"type": "debugpy",
"request": "launch",
"program": "${workspaceFolder}/opendbc/safety/tests/safety_replay/replay_drive.py",
"args": [
"${input:replayArg}"
],
"console": "integratedTerminal",
"justMyCode": false,
"env": {
"PYTHONPATH": "${workspaceFolder}"
},
"subProcess": true,
"stopOnEntry": false
}
],
"compounds": [
{
"name": "Replay drive + Safety LLDB",
"configurations": [
"Replay drive",
"Attach LLDB to Replay drive"
]
}
]
}

View File

@@ -1,13 +1,38 @@
FROM ghcr.io/commaai/openpilot-base:latest
FROM ubuntu:24.04
ENV PYTHONUNBUFFERED 1
ENV PYTHONUNBUFFERED=1
ENV OPENPILOT_PATH /home/batman/openpilot
ENV PYTHONPATH ${OPENPILOT_PATH}:${PYTHONPATH}
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && \
apt-get install -y --no-install-recommends sudo tzdata locales && \
rm -rf /var/lib/apt/lists/*
RUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && locale-gen
ENV LANG=en_US.UTF-8
ENV LANGUAGE=en_US:en
ENV LC_ALL=en_US.UTF-8
ENV NVIDIA_VISIBLE_DEVICES=all
ENV NVIDIA_DRIVER_CAPABILITIES=graphics,utility,compute
ARG USER=batman
ARG USER_UID=1001
RUN useradd -m -s /bin/bash -u $USER_UID $USER
RUN usermod -aG sudo $USER
RUN echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
USER $USER
ENV OPENPILOT_PATH=/home/$USER/openpilot
RUN mkdir -p ${OPENPILOT_PATH}
WORKDIR ${OPENPILOT_PATH}
COPY . ${OPENPILOT_PATH}/
COPY --chown=$USER . ${OPENPILOT_PATH}/
RUN scons --cache-readonly -j$(nproc)
ENV UV_BIN="/home/$USER/.local/bin/"
ENV VIRTUAL_ENV=${OPENPILOT_PATH}/.venv
ENV PATH="$UV_BIN:$VIRTUAL_ENV/bin:$PATH"
RUN tools/setup_dependencies.sh && \
sudo rm -rf /var/lib/apt/lists/*
USER root
RUN git config --global --add safe.directory '*'

View File

@@ -1,81 +0,0 @@
FROM ubuntu:24.04
ENV PYTHONUNBUFFERED 1
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && \
apt-get install -y --no-install-recommends sudo tzdata locales ssh pulseaudio xvfb x11-xserver-utils gnome-screenshot && \
rm -rf /var/lib/apt/lists/*
RUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && locale-gen
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8
COPY tools/install_ubuntu_dependencies.sh /tmp/tools/
RUN /tmp/tools/install_ubuntu_dependencies.sh && \
rm -rf /var/lib/apt/lists/* /tmp/* && \
cd /usr/lib/gcc/arm-none-eabi/* && \
rm -rf arm/ thumb/nofp thumb/v6* thumb/v8* thumb/v7+fp thumb/v7-r+fp.sp
# Add OpenCL
RUN apt-get update && apt-get install -y --no-install-recommends \
apt-utils \
alien \
unzip \
tar \
curl \
xz-utils \
dbus \
gcc-arm-none-eabi \
tmux \
vim \
libx11-6 \
wget \
&& rm -rf /var/lib/apt/lists/*
RUN mkdir -p /tmp/opencl-driver-intel && \
cd /tmp/opencl-driver-intel && \
wget https://github.com/intel/llvm/releases/download/2024-WW14/oclcpuexp-2024.17.3.0.09_rel.tar.gz && \
wget https://github.com/oneapi-src/oneTBB/releases/download/v2021.12.0/oneapi-tbb-2021.12.0-lin.tgz && \
mkdir -p /opt/intel/oclcpuexp_2024.17.3.0.09_rel && \
cd /opt/intel/oclcpuexp_2024.17.3.0.09_rel && \
tar -zxvf /tmp/opencl-driver-intel/oclcpuexp-2024.17.3.0.09_rel.tar.gz && \
mkdir -p /etc/OpenCL/vendors && \
echo /opt/intel/oclcpuexp_2024.17.3.0.09_rel/x64/libintelocl.so > /etc/OpenCL/vendors/intel_expcpu.icd && \
cd /opt/intel && \
tar -zxvf /tmp/opencl-driver-intel/oneapi-tbb-2021.12.0-lin.tgz && \
ln -s /opt/intel/oneapi-tbb-2021.12.0/lib/intel64/gcc4.8/libtbb.so /opt/intel/oclcpuexp_2024.17.3.0.09_rel/x64 && \
ln -s /opt/intel/oneapi-tbb-2021.12.0/lib/intel64/gcc4.8/libtbbmalloc.so /opt/intel/oclcpuexp_2024.17.3.0.09_rel/x64 && \
ln -s /opt/intel/oneapi-tbb-2021.12.0/lib/intel64/gcc4.8/libtbb.so.12 /opt/intel/oclcpuexp_2024.17.3.0.09_rel/x64 && \
ln -s /opt/intel/oneapi-tbb-2021.12.0/lib/intel64/gcc4.8/libtbbmalloc.so.2 /opt/intel/oclcpuexp_2024.17.3.0.09_rel/x64 && \
mkdir -p /etc/ld.so.conf.d && \
echo /opt/intel/oclcpuexp_2024.17.3.0.09_rel/x64 > /etc/ld.so.conf.d/libintelopenclexp.conf && \
ldconfig -f /etc/ld.so.conf.d/libintelopenclexp.conf && \
cd / && \
rm -rf /tmp/opencl-driver-intel
ENV NVIDIA_VISIBLE_DEVICES all
ENV NVIDIA_DRIVER_CAPABILITIES graphics,utility,compute
ENV QTWEBENGINE_DISABLE_SANDBOX 1
RUN dbus-uuidgen > /etc/machine-id
ARG USER=batman
ARG USER_UID=1001
RUN useradd -m -s /bin/bash -u $USER_UID $USER
RUN usermod -aG sudo $USER
RUN echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
USER $USER
COPY --chown=$USER pyproject.toml uv.lock /home/$USER
COPY --chown=$USER tools/install_python_dependencies.sh /home/$USER/tools/
ENV VIRTUAL_ENV=/home/$USER/.venv
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
RUN cd /home/$USER && \
tools/install_python_dependencies.sh && \
rm -rf tools/ pyproject.toml uv.lock .cache
USER root
RUN sudo git config --global --add safe.directory /tmp/openpilot

65
Jenkinsfile vendored
View File

@@ -22,7 +22,7 @@ shopt -s huponexit # kill all child processes when the shell exits
export CI=1
export PYTHONWARNINGS=error
export LOGPRINT=debug
#export LOGPRINT=debug # this has gotten too spammy...
export TEST_DIR=${env.TEST_DIR}
export SOURCE_DIR=${env.SOURCE_DIR}
export GIT_BRANCH=${env.GIT_BRANCH}
@@ -31,7 +31,7 @@ export CI_ARTIFACTS_TOKEN=${env.CI_ARTIFACTS_TOKEN}
export GITHUB_COMMENTS_TOKEN=${env.GITHUB_COMMENTS_TOKEN}
export AZURE_TOKEN='${env.AZURE_TOKEN}'
# only use 1 thread for tici tests since most require HIL
export PYTEST_ADDOPTS="-n 0"
export PYTEST_ADDOPTS="-n0 -s"
export GIT_SSH_COMMAND="ssh -i /data/gitkey"
@@ -103,7 +103,7 @@ def deviceStage(String stageName, String deviceType, List extra_env, def steps)
def diffPaths = args.diffPaths ?: []
def cmdTimeout = args.timeout ?: 9999
if (branch != "master" && diffPaths && !hasPathChanged(gitDiff, diffPaths)) {
if (branch != "master" && !branch.contains("__jenkins_loop_") && diffPaths && !hasPathChanged(gitDiff, diffPaths)) {
println "Skipping ${name}: no changes in ${diffPaths}."
return
} else {
@@ -166,11 +166,11 @@ node {
env.GIT_BRANCH = checkout(scm).GIT_BRANCH
env.GIT_COMMIT = checkout(scm).GIT_COMMIT
def excludeBranches = ['master-ci', 'devel', 'devel-staging', 'release3', 'release3-staging',
'testing-closet*', 'hotfix-*']
def excludeBranches = ['__nightly', 'devel', 'devel-staging', 'release3', 'release3-staging',
'release-tici', 'release-tizi', 'release-tizi-staging', 'release-mici-staging', 'testing-closet*', 'hotfix-*']
def excludeRegex = excludeBranches.join('|').replaceAll('\\*', '.*')
if (env.BRANCH_NAME != 'master') {
if (env.BRANCH_NAME != 'master' && !env.BRANCH_NAME.contains('__jenkins_loop_')) {
properties([
disableConcurrentBuilds(abortPrevious: true)
])
@@ -178,20 +178,20 @@ node {
try {
if (env.BRANCH_NAME == 'devel-staging') {
deviceStage("build release3-staging", "tici-needs-can", [], [
step("build release3-staging", "RELEASE_BRANCH=release3-staging $SOURCE_DIR/release/build_release.sh"),
deviceStage("build release-tizi-staging", "tizi-needs-can", [], [
step("build release-tizi-staging", "RELEASE_BRANCH=release-tizi-staging $SOURCE_DIR/release/build_release.sh && git push -f origin release-tizi-staging:release-mici-staging"),
])
}
if (env.BRANCH_NAME == 'master-ci') {
if (env.BRANCH_NAME == '__nightly') {
parallel (
'nightly': {
deviceStage("build nightly", "tici-needs-can", [], [
deviceStage("build nightly", "tizi-needs-can", [], [
step("build nightly", "RELEASE_BRANCH=nightly $SOURCE_DIR/release/build_release.sh"),
])
},
'nightly-dev': {
deviceStage("build nightly-dev", "tici-needs-can", [], [
deviceStage("build nightly-dev", "tizi-needs-can", [], [
step("build nightly-dev", "PANDA_DEBUG_BUILD=1 RELEASE_BRANCH=nightly-dev $SOURCE_DIR/release/build_release.sh"),
])
},
@@ -200,57 +200,43 @@ node {
if (!env.BRANCH_NAME.matches(excludeRegex)) {
parallel (
// tici tests
'onroad tests': {
deviceStage("onroad", "tici-needs-can", ["UNSAFE=1"], [
// TODO: ideally, this test runs in master-ci, but it takes 5+m to build it
//["build master-ci", "cd $SOURCE_DIR/release && TARGET_DIR=$TEST_DIR $SOURCE_DIR/scripts/retry.sh ./build_devel.sh"],
deviceStage("onroad", "tizi-needs-can", ["UNSAFE=1"], [
step("build openpilot", "cd system/manager && ./build.py"),
step("check dirty", "release/check-dirty.sh"),
step("onroad tests", "pytest selfdrive/test/test_onroad.py -s", [timeout: 60]),
//["time to onroad", "pytest selfdrive/test/test_time_to_onroad.py"],
])
},
'HW + Unit Tests': {
deviceStage("tici-hardware", "tici-common", ["UNSAFE=1"], [
deviceStage("tizi-hardware", "tizi-common", ["UNSAFE=1"], [
step("build", "cd system/manager && ./build.py"),
step("test pandad", "pytest selfdrive/pandad/tests/test_pandad.py", [diffPaths: ["panda", "selfdrive/pandad/"]]),
step("test power draw", "pytest -s system/hardware/tici/tests/test_power_draw.py"),
step("test encoder", "LD_LIBRARY_PATH=/usr/local/lib pytest system/loggerd/tests/test_encoder.py", [diffPaths: ["system/loggerd/"]]),
step("test pigeond", "pytest system/ubloxd/tests/test_pigeond.py", [diffPaths: ["system/ubloxd/"]]),
step("test manager", "pytest system/manager/test/test_manager.py"),
])
},
'loopback': {
deviceStage("loopback", "tici-loopback", ["UNSAFE=1"], [
step("build openpilot", "cd system/manager && ./build.py"),
step("test pandad loopback", "pytest selfdrive/pandad/tests/test_pandad_loopback.py"),
'camerad OX03C10': {
deviceStage("OX03C10", "tizi-ox03c10", ["UNSAFE=1"], [
step("build", "cd system/manager && ./build.py"),
step("test pandad", "pytest selfdrive/pandad/tests/test_pandad.py"),
step("test camerad", "pytest system/camerad/test/test_camerad.py", [timeout: 90]),
])
},
'camerad': {
deviceStage("AR0231", "tici-ar0231", ["UNSAFE=1"], [
'camerad OS04C10': {
deviceStage("OS04C10", "tici-os04c10", ["UNSAFE=1"], [
step("build", "cd system/manager && ./build.py"),
step("test camerad", "pytest system/camerad/test/test_camerad.py", [timeout: 60]),
step("test exposure", "pytest system/camerad/test/test_exposure.py"),
])
deviceStage("OX03C10", "tici-ox03c10", ["UNSAFE=1"], [
step("build", "cd system/manager && ./build.py"),
step("test camerad", "pytest system/camerad/test/test_camerad.py", [timeout: 60]),
step("test exposure", "pytest system/camerad/test/test_exposure.py"),
step("test pandad", "pytest selfdrive/pandad/tests/test_pandad.py"),
step("test camerad", "pytest system/camerad/test/test_camerad.py", [timeout: 90]),
])
},
'sensord': {
deviceStage("LSM + MMC", "tici-lsmc", ["UNSAFE=1"], [
step("build", "cd system/manager && ./build.py"),
step("test sensord", "pytest system/sensord/tests/test_sensord.py"),
])
deviceStage("BMX + LSM", "tici-bmx-lsm", ["UNSAFE=1"], [
deviceStage("LSM + MMC", "tizi-lsmc", ["UNSAFE=1"], [
step("build", "cd system/manager && ./build.py"),
step("test sensord", "pytest system/sensord/tests/test_sensord.py"),
])
},
'replay': {
deviceStage("model-replay", "tici-replay", ["UNSAFE=1"], [
deviceStage("model-replay", "tizi-replay", ["UNSAFE=1"], [
step("build", "cd system/manager && ./build.py", [diffPaths: ["selfdrive/modeld/", "tinygrad_repo", "selfdrive/test/process_replay/model_replay.py"]]),
step("model replay", "selfdrive/test/process_replay/model_replay.py", [diffPaths: ["selfdrive/modeld/", "tinygrad_repo", "selfdrive/test/process_replay/model_replay.py"]]),
])
@@ -258,9 +244,8 @@ node {
'tizi': {
deviceStage("tizi", "tizi", ["UNSAFE=1"], [
step("build openpilot", "cd system/manager && ./build.py"),
step("test pandad loopback", "SINGLE_PANDA=1 pytest selfdrive/pandad/tests/test_pandad_loopback.py"),
step("test pandad loopback", "pytest selfdrive/pandad/tests/test_pandad_loopback.py"),
step("test pandad spi", "pytest selfdrive/pandad/tests/test_pandad_spi.py"),
step("test pandad", "pytest selfdrive/pandad/tests/test_pandad.py", [diffPaths: ["panda", "selfdrive/pandad/"]]),
step("test amp", "pytest system/hardware/tici/tests/test_amplifier.py"),
step("test qcomgpsd", "pytest system/qcomgpsd/tests/test_qcomgpsd.py", [diffPaths: ["system/qcomgpsd/"]]),
])

View File

@@ -5,7 +5,7 @@
<p>
<b>openpilot is an operating system for robotics.</b>
<br>
Currently, it upgrades the driver assistance system in 275+ supported cars.
Currently, it upgrades the driver assistance system in 300+ supported cars.
</p>
<h3>
@@ -17,13 +17,12 @@
<span> · </span>
<a href="https://discord.comma.ai">Community</a>
<span> · </span>
<a href="https://comma.ai/shop">Try it on a comma 3X</a>
<a href="https://comma.ai/shop">Try it on a comma four</a>
</h3>
Quick start: `bash <(curl -fsSL openpilot.comma.ai)`
![openpilot tests](https://github.com/commaai/openpilot/actions/workflows/selfdrive_tests.yaml/badge.svg)
[![codecov](https://codecov.io/gh/commaai/openpilot/branch/master/graph/badge.svg)](https://codecov.io/gh/commaai/openpilot)
[![openpilot tests](https://github.com/commaai/openpilot/actions/workflows/tests.yaml/badge.svg)](https://github.com/commaai/openpilot/actions/workflows/tests.yaml)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
[![X Follow](https://img.shields.io/twitter/follow/comma_ai)](https://x.com/comma_ai)
[![Discord](https://img.shields.io/discord/469524606043160576)](https://discord.comma.ai)
@@ -38,17 +37,30 @@ Quick start: `bash <(curl -fsSL openpilot.comma.ai)`
</tr>
</table>
To start using openpilot in a car
Using openpilot in a car
------
To use openpilot in a car, you need four things:
1. **Supported Device:** a comma 3/3X, available at [comma.ai/shop](https://comma.ai/shop/comma-3x).
2. **Software:** The setup procedure for the comma 3/3X allows users to enter a URL for custom software. Use the URL `openpilot.comma.ai` to install the release version.
1. **Supported Device:** a comma four, available at [comma.ai/shop/comma-four](https://www.comma.ai/shop/comma-four).
2. **Software:** The setup procedure for the comma four allows users to enter a URL for custom software. Use the URL `openpilot.comma.ai` to install the release version.
3. **Supported Car:** Ensure that you have one of [the 275+ supported cars](docs/CARS.md).
4. **Car Harness:** You will also need a [car harness](https://comma.ai/shop/car-harness) to connect your comma 3/3X to your car.
4. **Car Harness:** You will also need a [car harness](https://comma.ai/shop/car-harness) to connect your comma four to your car.
We have detailed instructions for [how to install the harness and device in a car](https://comma.ai/setup). Note that it's possible to run openpilot on [other hardware](https://blog.comma.ai/self-driving-car-for-free/), although it's not plug-and-play.
### Branches
Running `master` and other branches directly is supported, but it's recommended to run one of the following prebuilt branches:
| comma four branch | comma 3X branch | URL | description |
|------------------------|------------------------|----------------------------------------|-------------------------------------------------------------------------------------|
| `release-mici` | `release-tizi` | openpilot.comma.ai | This is openpilot's release branch. |
| `release-mici-staging` | `release-tizi-staging` | openpilot-test.comma.ai | This is the staging branch for releases. Use it to get new releases slightly early. |
| `nightly` | `nightly` | openpilot-nightly.comma.ai | This is the bleeding edge development branch. Do not expect this to be stable. |
| `nightly-dev` | `nightly-dev` | installer.comma.ai/commaai/nightly-dev | Same as nightly, but includes experimental development features for some cars. |
To start developing openpilot
------
@@ -57,7 +69,6 @@ openpilot is developed by [comma](https://comma.ai/) and by users like you. We w
* Join the [community Discord](https://discord.comma.ai)
* Check out [the contributing docs](docs/CONTRIBUTING.md)
* Check out the [openpilot tools](tools/)
* Read about the [development workflow](docs/WORKFLOW.md)
* Code documentation lives at https://docs.comma.ai
* Information about running openpilot lives on the [community wiki](https://github.com/commaai/openpilot/wiki)
@@ -67,15 +78,15 @@ Safety and Testing
----
* openpilot observes [ISO26262](https://en.wikipedia.org/wiki/ISO_26262) guidelines, see [SAFETY.md](docs/SAFETY.md) for more details.
* openpilot has software-in-the-loop [tests](.github/workflows/selfdrive_tests.yaml) that run on every commit.
* openpilot has software-in-the-loop [tests](.github/workflows/tests.yaml) that run on every commit.
* The code enforcing the safety model lives in panda and is written in C, see [code rigor](https://github.com/commaai/panda#code-rigor) for more details.
* panda has software-in-the-loop [safety tests](https://github.com/commaai/panda/tree/master/tests/safety).
* Internally, we have a hardware-in-the-loop Jenkins test suite that builds and unit tests the various processes.
* panda has additional hardware-in-the-loop [tests](https://github.com/commaai/panda/blob/master/Jenkinsfile).
* We run the latest openpilot in a testing closet containing 10 comma devices continuously replaying routes.
Licensing
------
<details>
<summary>MIT Licensed</summary>
openpilot is released under the MIT license. Some parts of the software are released under other licenses as specified.
@@ -84,15 +95,17 @@ Any user of this software shall indemnify and hold harmless Comma.ai, Inc. and i
**THIS IS ALPHA QUALITY SOFTWARE FOR RESEARCH PURPOSES ONLY. THIS IS NOT A PRODUCT.
YOU ARE RESPONSIBLE FOR COMPLYING WITH LOCAL LAWS AND REGULATIONS.
NO WARRANTY EXPRESSED OR IMPLIED.**
</details>
User Data and comma Account
------
<details>
<summary>User Data and comma Account</summary>
By default, openpilot uploads the driving data to our servers. You can also access your data through [comma connect](https://connect.comma.ai/). We use your data to train better models and improve openpilot for everyone.
openpilot is open source software: the user is free to disable data collection if they wish to do so.
openpilot logs the road-facing cameras, CAN, GPS, IMU, magnetometer, thermal sensors, crashes, and operating system logs.
The driver-facing camera is only logged if you explicitly opt-in in settings. The microphone is not recorded.
The driver-facing camera and microphone are only logged if you explicitly opt-in in settings.
By using openpilot, you agree to [our Privacy Policy](https://comma.ai/privacy). You understand that use of this software or its related services will generate certain types of user data, which may be logged and stored at the sole discretion of comma. By accepting this agreement, you grant an irrevocable, perpetual, worldwide right to comma for the use of this data.
</details>

View File

@@ -1,16 +1,88 @@
Version 0.9.8 (2024-XX-XX)
Version 0.11.1 (2026-04-22)
========================
* New driver monitoring model
* Improved image processing pipeline for driver camera
* Rivian R1S and R1T 2025 support thanks to lukasloetkolben!
Version 0.11.0 (2026-03-17)
========================
* New driving model #36798
* Fully trained using a learned simulator
* Improved longitudinal performance in Experimental mode
* Reduce comma four standby power usage by 77% to 52 mW
* Kia K7 2017 support thanks to royjr!
* Lexus LS 2018 support thanks to Hacheoy!
Version 0.10.3 (2025-12-17)
========================
* New driving model #36249
* New temporal policy architecture
* New on-policy training physics noise model
* New driver monitoring model #36409
* Trained on a new dataset, including comma four data
* Improved inter-process communication memory efficiency
Version 0.10.2 (2025-11-19)
========================
* comma four support
Version 0.10.1 (2025-09-08)
========================
* New driving model #36276
* World Model: removed global localization inputs
* World Model: 2x the number of parameters
* World Model: trained on 4x the number of segments
* VAE Compression Model: new architecture and training objective
* Driving Vision Model: trained on 4x the number of segments
* New Driver Monitoring model #36198
* Acura TLX 2021 support thanks to MVL!
* Honda City 2023 support thanks to vanillagorillaa and drFritz!
* Honda N-Box 2018 support thanks to miettal!
* Honda Odyssey 2021-25 support thanks to csouers and MVL!
* Honda Passport 2026 support thanks to vanillagorillaa and MVL!
Version 0.10.0 (2025-08-05)
========================
* New driving model
* Trained in brand new ML simulator
* Model now gates applying positive accel in Chill mode
* New driving monitoring model
* New training architecture
* Described in our CVPR paper: "Learning to Drive from a World Model"
* Longitudinal MPC replaced by E2E planning from World Model in Experimental Mode
* Action from lateral MPC as training objective replaced by E2E planning from World Model
* Low-speed lead car ground-truth fixes
* Enable live-learned steering actuation delay
* Opt-in audio recording for dashcam video
* Acura MDX 2025 support thanks to vanillagorillaa and MVL!
* Honda Accord 2023-25 support thanks to vanillagorillaa and MVL!
* Honda CR-V 2023-25 support thanks to vanillagorillaa and MVL!
* Honda Pilot 2023-25 support thanks to vanillagorillaa and MVL!
Version 0.9.9 (2025-05-23)
========================
* New driving model
* New training architecture using parts from MLSIM
* Steering actuation delay is now learned online
* Ford Escape 2023-24 support thanks to incognitojam!
* Ford Kuga 2024 support thanks to incognitojam!
* Hyundai Nexo 2021 support thanks to sunnyhaibin!
* Tesla Model 3 and Y support thanks to lukasloetkolben!
* Lexus RC 2023 support thanks to nelsonjchen!
Version 0.9.8 (2025-02-28)
========================
* New driving model
* Model now gates applying positive acceleration in Chill mode
* New driver monitoring model
* Reduced false positives related to passengers
* Image processing pipeline moved to the ISP
* More GPU time for driving models
* Power draw reduced 0.5W, which means your device runs cooler
* More GPU time for bigger driving models
* Power draw reduced 0.5W, which means your device runs cooler
* Added toggle to enable driver monitoring even when openpilot is not engaged
* Localizer rewritten to remove GPS dependency at runtime
* Firehose Mode for maximizing your training data uploads
* Enable openpilot longitudinal control for Ford Q3 vehicles
* New Toyota TSS2 longitudinal tune
* Rivian R1S and R1T support thanks to lukasloetkolben!
* Ford F-150, F-150 Hybrid, Mach-E, and Ranger support
Version 0.9.7 (2024-06-13)
========================

View File

@@ -3,358 +3,227 @@ import subprocess
import sys
import sysconfig
import platform
import shlex
import importlib
import numpy as np
import SCons.Errors
from SCons.Defaults import _stripixes
SCons.Warnings.warningAsException(True)
# pending upstream fix - https://github.com/SCons/scons/issues/4461
#SetOption('warn', 'all')
TICI = os.path.isfile('/TICI')
AGNOS = TICI
Decider('MD5-timestamp')
SetOption('num_jobs', int(os.cpu_count()/2))
AddOption('--kaitai',
action='store_true',
help='Regenerate kaitai struct parsers')
AddOption('--asan',
action='store_true',
help='turn on ASAN')
AddOption('--ubsan',
action='store_true',
help='turn on UBSan')
AddOption('--coverage',
action='store_true',
help='build with test coverage options')
AddOption('--clazy',
action='store_true',
help='build with clazy')
AddOption('--compile_db',
action='store_true',
help='build clang compilation database')
AddOption('--ccflags',
action='store',
type='string',
default='',
help='pass arbitrary flags over the command line')
AddOption('--snpe',
action='store_true',
help='use SNPE on PC')
AddOption('--external-sconscript',
action='store',
metavar='FILE',
dest='external_sconscript',
help='add an external SConscript to the build')
AddOption('--pc-thneed',
action='store_true',
dest='pc_thneed',
help='use thneed on pc')
AddOption('--mutation',
action='store_true',
help='generate mutation-ready code')
SetOption('num_jobs', max(1, int(os.cpu_count()/2)))
AddOption('--ccflags', action='store', type='string', default='', help='pass arbitrary flags over the command line')
AddOption('--verbose', action='store_true', default=False, help='show full build commands')
AddOption('--minimal',
action='store_false',
dest='extras',
default=os.path.exists(File('#.lfsconfig').abspath), # minimal by default on release branch (where there's no LFS)
default=os.path.exists(File('#.gitattributes').abspath), # minimal by default on release branch (where there's no LFS)
help='the minimum build to run openpilot. no tests, tools, etc.')
## Architecture name breakdown (arch)
## - larch64: linux tici aarch64
## - aarch64: linux pc aarch64
## - x86_64: linux pc x64
## - Darwin: mac x64 or arm64
real_arch = arch = subprocess.check_output(["uname", "-m"], encoding='utf8').rstrip()
# Detect platform
arch = subprocess.check_output(["uname", "-m"], encoding='utf8').rstrip()
if platform.system() == "Darwin":
arch = "Darwin"
brew_prefix = subprocess.check_output(['brew', '--prefix'], encoding='utf8').strip()
elif arch == "aarch64" and AGNOS:
elif arch == "aarch64" and os.path.isfile('/TICI'):
arch = "larch64"
assert arch in ["larch64", "aarch64", "x86_64", "Darwin"]
assert arch in [
"larch64", # linux tici arm64
"aarch64", # linux pc arm64
"x86_64", # linux pc x64
"Darwin", # macOS arm64 (x86 not supported)
]
lenv = {
"PATH": os.environ['PATH'],
"LD_LIBRARY_PATH": [Dir(f"#third_party/acados/{arch}/lib").abspath],
"PYTHONPATH": Dir("#").abspath + ':' + Dir(f"#third_party/acados").abspath,
pkg_names = ['bzip2', 'capnproto', 'eigen', 'ffmpeg', 'libjpeg', 'libyuv', 'ncurses', 'zeromq', 'zstd']
pkgs = [importlib.import_module(name) for name in pkg_names]
"ACADOS_SOURCE_DIR": Dir("#third_party/acados").abspath,
"ACADOS_PYTHON_INTERFACE_PATH": Dir("#third_party/acados/acados_template").abspath,
"TERA_PATH": Dir("#").abspath + f"/third_party/acados/{arch}/t_renderer"
# ***** enforce a whitelist of system libraries *****
# this prevents silently relying on a 3rd party package,
# e.g. apt-installed libusb. all libraries should either
# be distributed with all Linux distros and macOS, or
# vendored in commaai/dependencies.
allowed_system_libs = {
"EGL", "GLESv2", "GL",
"Qt5Charts", "Qt5Core", "Qt5Gui", "Qt5Widgets",
"dl", "drm", "gbm", "m", "pthread",
}
rpath = lenv["LD_LIBRARY_PATH"].copy()
def _resolve_lib(env, name):
for d in env.Flatten(env.get('LIBPATH', [])):
p = Dir(str(d)).abspath
for ext in ('.a', '.so', '.dylib'):
f = File(os.path.join(p, f'lib{name}{ext}'))
if f.exists() or f.has_builder():
return name
if name in allowed_system_libs:
return name
raise SCons.Errors.UserError(f"Unexpected non-vendored library '{name}'")
if arch == "larch64":
cpppath = [
"#third_party/opencl/include",
]
libpath = [
"/usr/local/lib",
"/system/vendor/lib64",
f"#third_party/acados/{arch}/lib",
]
libpath += [
"#third_party/snpe/larch64",
"#third_party/libyuv/larch64/lib",
"/usr/lib/aarch64-linux-gnu"
]
cflags = ["-DQCOM2", "-mcpu=cortex-a57"]
cxxflags = ["-DQCOM2", "-mcpu=cortex-a57"]
rpath += ["/usr/local/lib"]
else:
cflags = []
cxxflags = []
cpppath = []
rpath += []
# MacOS
if arch == "Darwin":
libpath = [
f"#third_party/libyuv/{arch}/lib",
f"#third_party/acados/{arch}/lib",
f"{brew_prefix}/lib",
f"{brew_prefix}/opt/openssl@3.0/lib",
"/System/Library/Frameworks/OpenGL.framework/Libraries",
]
cflags += ["-DGL_SILENCE_DEPRECATION"]
cxxflags += ["-DGL_SILENCE_DEPRECATION"]
cpppath += [
f"{brew_prefix}/include",
f"{brew_prefix}/opt/openssl@3.0/include",
]
lenv["DYLD_LIBRARY_PATH"] = lenv["LD_LIBRARY_PATH"]
# Linux
else:
libpath = [
f"#third_party/acados/{arch}/lib",
f"#third_party/libyuv/{arch}/lib",
"/usr/lib",
"/usr/local/lib",
]
if arch == "x86_64":
libpath += [
f"#third_party/snpe/{arch}"
]
rpath += [
Dir(f"#third_party/snpe/{arch}").abspath,
]
if GetOption('asan'):
ccflags = ["-fsanitize=address", "-fno-omit-frame-pointer"]
ldflags = ["-fsanitize=address"]
elif GetOption('ubsan'):
ccflags = ["-fsanitize=undefined"]
ldflags = ["-fsanitize=undefined"]
else:
ccflags = []
ldflags = []
# no --as-needed on mac linker
if arch != "Darwin":
ldflags += ["-Wl,--as-needed", "-Wl,--no-undefined"]
ccflags_option = GetOption('ccflags')
if ccflags_option:
ccflags += ccflags_option.split(' ')
def _libflags(target, source, env, for_signature):
libs = []
lp = env.subst('$LIBLITERALPREFIX')
for lib in env.Flatten(env.get('LIBS', [])):
if isinstance(lib, str):
if os.sep in lib or lib.startswith('#'):
libs.append(File(lib))
elif lib.startswith('-') or (lp and lib.startswith(lp)):
libs.append(lib)
else:
libs.append(_resolve_lib(env, lib))
else:
libs.append(lib)
return _stripixes(env['LIBLINKPREFIX'], libs, env['LIBLINKSUFFIX'],
env['LIBPREFIXES'], env['LIBSUFFIXES'], env, env['LIBLITERALPREFIX'])
env = Environment(
ENV=lenv,
ENV={
"PATH": os.environ['PATH'],
"PYTHONPATH": Dir("#").abspath + ':' + Dir(f"#third_party/acados").abspath,
"ACADOS_SOURCE_DIR": Dir("#third_party/acados").abspath,
"ACADOS_PYTHON_INTERFACE_PATH": Dir("#third_party/acados/acados_template").abspath,
"TERA_PATH": Dir("#").abspath + f"/third_party/acados/{arch}/t_renderer"
},
CCFLAGS=[
"-g",
"-fPIC",
"-O2",
"-Wunused",
"-Werror",
"-Wshadow",
"-Wshadow" if arch in ("Darwin", "larch64") else "-Wshadow=local",
"-Wno-unknown-warning-option",
"-Wno-inconsistent-missing-override",
"-Wno-c99-designator",
"-Wno-reorder-init-list",
"-Wno-vla-cxx-extension",
] + cflags + ccflags,
CPPPATH=cpppath + [
],
CFLAGS=["-std=gnu11"],
CXXFLAGS=["-std=c++1z"],
CPPPATH=[
"#",
"#msgq",
"#third_party",
"#third_party/json11",
"#third_party/linux/include",
"#third_party/acados/include",
"#third_party/acados/include/blasfeo/include",
"#third_party/acados/include/hpipm/include",
"#third_party/catch2/include",
"#third_party/libyuv/include",
"#third_party/json11",
"#third_party/linux/include",
"#third_party/snpe/include",
"#third_party",
"#msgq",
[x.INCLUDE_DIR for x in pkgs],
],
CC='clang',
CXX='clang++',
LINKFLAGS=ldflags,
RPATH=rpath,
CFLAGS=["-std=gnu11"] + cflags,
CXXFLAGS=["-std=c++1z"] + cxxflags,
LIBPATH=libpath + [
LIBPATH=[
"#common",
"#msgq_repo",
"#third_party",
"#selfdrive/pandad",
"#common",
"#rednose/helpers",
f"#third_party/acados/{arch}/lib",
[x.LIB_DIR for x in pkgs],
],
RPATH=[],
CYTHONCFILESUFFIX=".cpp",
COMPILATIONDB_USE_ABSPATH=True,
REDNOSE_ROOT="#",
tools=["default", "cython", "compilation_db", "rednose_filter"],
toolpath=["#site_scons/site_tools", "#rednose_repo/site_scons/site_tools"],
)
if arch != "larch64":
env['_LIBFLAGS'] = _libflags
if arch == "Darwin":
# RPATH is not supported on macOS, instead use the linker flags
darwin_rpath_link_flags = [f"-Wl,-rpath,{path}" for path in env["RPATH"]]
env["LINKFLAGS"] += darwin_rpath_link_flags
# Arch-specific flags and paths
if arch == "larch64":
env["CC"] = "clang"
env["CXX"] = "clang++"
env.Append(LIBPATH=[
"/usr/lib/aarch64-linux-gnu",
])
arch_flags = ["-D__TICI__", "-mcpu=cortex-a57"]
env.Append(CCFLAGS=arch_flags)
env.Append(CXXFLAGS=arch_flags)
elif arch == "Darwin":
env.Append(LIBPATH=[
"/System/Library/Frameworks/OpenGL.framework/Libraries",
])
env.Append(CCFLAGS=["-DGL_SILENCE_DEPRECATION"])
env.Append(CXXFLAGS=["-DGL_SILENCE_DEPRECATION"])
if GetOption('compile_db'):
env.CompilationDatabase('compile_commands.json')
_extra_cc = shlex.split(GetOption('ccflags') or '')
if _extra_cc:
env.Append(CCFLAGS=_extra_cc)
# Setup cache dir
cache_dir = '/data/scons_cache' if AGNOS else '/tmp/scons_cache'
CacheDir(cache_dir)
Clean(["."], cache_dir)
# no --as-needed on mac linker
if arch != "Darwin":
env.Append(LINKFLAGS=["-Wl,--as-needed", "-Wl,--no-undefined"])
# Shorter build output: show brief descriptions instead of full commands.
# Full command lines are still printed on failure by scons.
if not GetOption('verbose'):
for action, short in (
("CC", "CC"),
("CXX", "CXX"),
("LINK", "LINK"),
("SHCC", "CC"),
("SHCXX", "CXX"),
("SHLINK", "LINK"),
("AR", "AR"),
("RANLIB", "RANLIB"),
("AS", "AS"),
):
env[f"{action}COMSTR"] = f" [{short}] $TARGET"
# progress output
node_interval = 5
node_count = 0
def progress_function(node):
global node_count
node_count += node_interval
sys.stderr.write("progress: %d\n" % node_count)
if os.environ.get('SCONS_PROGRESS'):
Progress(progress_function, interval=node_interval)
# Cython build environment
py_include = sysconfig.get_paths()['include']
# ********** Cython build environment **********
envCython = env.Clone()
envCython["CPPPATH"] += [py_include, np.get_include()]
envCython["CCFLAGS"] += ["-Wno-#warnings", "-Wno-shadow", "-Wno-deprecated-declarations"]
envCython["CPPPATH"] += [sysconfig.get_paths()['include'], np.get_include()]
envCython["CCFLAGS"] += ["-Wno-#warnings", "-Wno-cpp", "-Wno-shadow", "-Wno-deprecated-declarations"]
envCython["CCFLAGS"].remove("-Werror")
envCython["LIBS"] = []
if arch == "Darwin":
envCython["LINKFLAGS"] = ["-bundle", "-undefined", "dynamic_lookup"] + darwin_rpath_link_flags
envCython["LINKFLAGS"] = env["LINKFLAGS"] + ["-bundle", "-undefined", "dynamic_lookup"]
else:
envCython["LINKFLAGS"] = ["-pthread", "-shared"]
np_version = SCons.Script.Value(np.__version__)
Export('envCython', 'np_version')
# Qt build environment
qt_env = env.Clone()
qt_modules = ["Widgets", "Gui", "Core", "Network", "Concurrent", "DBus", "Xml"]
Export('env', 'arch')
qt_libs = []
if arch == "Darwin":
qt_env['QTDIR'] = f"{brew_prefix}/opt/qt@5"
qt_dirs = [
os.path.join(qt_env['QTDIR'], "include"),
]
qt_dirs += [f"{qt_env['QTDIR']}/include/Qt{m}" for m in qt_modules]
qt_env["LINKFLAGS"] += ["-F" + os.path.join(qt_env['QTDIR'], "lib")]
qt_env["FRAMEWORKS"] += [f"Qt{m}" for m in qt_modules] + ["OpenGL"]
qt_env.AppendENVPath('PATH', os.path.join(qt_env['QTDIR'], "bin"))
else:
qt_install_prefix = subprocess.check_output(['qmake', '-query', 'QT_INSTALL_PREFIX'], encoding='utf8').strip()
qt_install_headers = subprocess.check_output(['qmake', '-query', 'QT_INSTALL_HEADERS'], encoding='utf8').strip()
# Setup cache dir
cache_dir = '/data/scons_cache' if arch == "larch64" else '/tmp/scons_cache'
CacheDir(cache_dir)
Clean(["."], cache_dir)
qt_env['QTDIR'] = qt_install_prefix
qt_dirs = [
f"{qt_install_headers}",
]
qt_gui_path = os.path.join(qt_install_headers, "QtGui")
qt_gui_dirs = [d for d in os.listdir(qt_gui_path) if os.path.isdir(os.path.join(qt_gui_path, d))]
qt_dirs += [f"{qt_install_headers}/QtGui/{qt_gui_dirs[0]}/QtGui", ] if qt_gui_dirs else []
qt_dirs += [f"{qt_install_headers}/Qt{m}" for m in qt_modules]
qt_libs = [f"Qt5{m}" for m in qt_modules]
if arch == "larch64":
qt_libs += ["GLESv2", "wayland-client"]
qt_env.PrependENVPath('PATH', Dir("#third_party/qt5/larch64/bin/").abspath)
elif arch != "Darwin":
qt_libs += ["GL"]
qt_env['QT3DIR'] = qt_env['QTDIR']
# compatibility for older SCons versions
try:
qt_env.Tool('qt3')
except SCons.Errors.UserError:
qt_env.Tool('qt')
qt_env['CPPPATH'] += qt_dirs + ["#third_party/qrcode"]
qt_flags = [
"-D_REENTRANT",
"-DQT_NO_DEBUG",
"-DQT_WIDGETS_LIB",
"-DQT_GUI_LIB",
"-DQT_CORE_LIB",
"-DQT_MESSAGELOGCONTEXT",
]
qt_env['CXXFLAGS'] += qt_flags
qt_env['LIBPATH'] += ['#selfdrive/ui', ]
qt_env['LIBS'] = qt_libs
if GetOption("clazy"):
checks = [
"level0",
"level1",
"no-range-loop",
"no-non-pod-global-static",
]
qt_env['CXX'] = 'clazy'
qt_env['ENV']['CLAZY_IGNORE_DIRS'] = qt_dirs[0]
qt_env['ENV']['CLAZY_CHECKS'] = ','.join(checks)
Export('env', 'qt_env', 'arch', 'real_arch')
# ********** start building stuff **********
# Build common module
SConscript(['common/SConscript'])
Import('_common', '_gpucommon')
Import('_common')
common = [_common, 'json11', 'zmq']
gpucommon = [_gpucommon]
Export('common', 'gpucommon')
Export('common')
# Build messaging (cereal + msgq + socketmaster + their dependencies)
# Enable swaglog include in submodules
env_swaglog = env.Clone()
env_swaglog['CXXFLAGS'].append('-DSWAGLOG="\\"common/swaglog.h\\""')
SConscript(['msgq_repo/SConscript'], exports={'env': env_swaglog})
SConscript(['opendbc_repo/SConscript'], exports={'env': env_swaglog})
SConscript(['cereal/SConscript'])
Import('socketmaster', 'msgq')
messaging = [socketmaster, msgq, 'zmq', 'capnp', 'kj',]
messaging = [socketmaster, msgq, 'capnp', 'kj',]
Export('messaging')
@@ -366,16 +235,8 @@ SConscript(['rednose/SConscript'])
# Build system services
SConscript([
'system/ui/SConscript',
'system/proclogd/SConscript',
'system/ubloxd/SConscript',
'system/loggerd/SConscript',
])
if arch != "Darwin":
SConscript([
'system/sensord/SConscript',
'system/logcatd/SConscript',
])
if arch == "larch64":
SConscript(['system/camerad/SConscript'])
@@ -383,13 +244,23 @@ if arch == "larch64":
# Build openpilot
SConscript(['third_party/SConscript'])
SConscript(['selfdrive/SConscript'])
# Build selfdrive
SConscript([
'selfdrive/pandad/SConscript',
'selfdrive/controls/lib/lateral_mpc_lib/SConscript',
'selfdrive/controls/lib/longitudinal_mpc_lib/SConscript',
'selfdrive/locationd/SConscript',
'selfdrive/modeld/SConscript',
'selfdrive/ui/SConscript',
])
if Dir('#tools/cabana/').exists() and GetOption('extras'):
SConscript(['tools/replay/SConscript'])
if arch != "larch64":
SConscript(['tools/cabana/SConscript'])
# Build tools
if arch != "larch64":
SConscript([
'tools/replay/SConscript',
'tools/cabana/SConscript',
'tools/jotpluggler/SConscript',
])
external_sconscript = GetOption('external_sconscript')
if external_sconscript:
SConscript([external_sconscript])
env.CompilationDatabase('compile_commands.json')

View File

@@ -29,6 +29,50 @@ then means breaking backwards-compatibility with all old logs of your fork. So w
[custom.capnp](custom.capnp) that we will leave empty in mainline cereal/openpilot. **If you only modify those, you can ensure your
fork will remain backwards-compatible with all versions of mainline openpilot and your fork.**
An example of compatible changes:
```diff
diff --git a/cereal/custom.capnp b/cereal/custom.capnp
index 3348e859e..3365c7b98 100644
--- a/cereal/custom.capnp
+++ b/cereal/custom.capnp
@@ -10,7 +10,11 @@ $Cxx.namespace("cereal");
# DO rename the structs
# DON'T change the identifier (e.g. @0x81c2f05a394cf4af)
-struct CustomReserved0 @0x81c2f05a394cf4af {
+struct SteeringInfo @0x81c2f05a394cf4af {
+ active @0 :Bool;
+ steeringAngleDeg @1 :Float32;
+ steeringRateDeg @2 :Float32;
+ steeringAccelDeg @3 :Float32;
}
struct CustomReserved1 @0xaedffd8f31e7b55d {
diff --git a/cereal/log.capnp b/cereal/log.capnp
index 1209f3fd9..b189f58b6 100644
--- a/cereal/log.capnp
+++ b/cereal/log.capnp
@@ -2558,14 +2558,14 @@ struct Event {
# DO change the name of the field
# DON'T change anything after the "@"
- customReservedRawData0 @124 :Data;
+ rawCanData @124 :Data;
customReservedRawData1 @125 :Data;
customReservedRawData2 @126 :Data;
# DO change the name of the field and struct
# DON'T change the ID (e.g. @107)
# DON'T change which struct it points to
- customReserved0 @107 :Custom.CustomReserved0;
+ steeringInfo @107 :Custom.SteeringInfo;
customReserved1 @108 :Custom.CustomReserved1;
customReserved2 @109 :Custom.CustomReserved2;
customReserved3 @110 :Custom.CustomReserved3;
```
---
Example
---
```python

View File

@@ -13,7 +13,7 @@ cereal = env.Library('cereal', [f'gen/cpp/{s}.c++' for s in schema_files])
# Build messaging
services_h = env.Command(['services.h'], ['services.py'], 'python3 ' + cereal_dir.path + '/services.py > $TARGET')
env.Program('messaging/bridge', ['messaging/bridge.cc', 'messaging/msgq_to_zmq.cc'], LIBS=[msgq, common, 'pthread'])
env.Program('messaging/bridge', ['messaging/bridge.cc', 'messaging/msgq_to_zmq.cc', 'messaging/bridge_zmq.cc'], LIBS=[msgq, common, 'pthread'])
socketmaster = env.Library('socketmaster', ['messaging/socketmaster.cc'])

View File

@@ -1,9 +1,11 @@
import os
import capnp
from importlib.resources import as_file, files
CEREAL_PATH = os.path.dirname(os.path.abspath(__file__))
capnp.remove_import_hook()
log = capnp.load(os.path.join(CEREAL_PATH, "log.capnp"))
car = capnp.load(os.path.join(CEREAL_PATH, "car.capnp"))
custom = capnp.load(os.path.join(CEREAL_PATH, "custom.capnp"))
with as_file(files("cereal")) as fspath:
CEREAL_PATH = fspath.as_posix()
log = capnp.load(os.path.join(CEREAL_PATH, "log.capnp"))
car = capnp.load(os.path.join(CEREAL_PATH, "car.capnp"))
custom = capnp.load(os.path.join(CEREAL_PATH, "custom.capnp"))

View File

@@ -7,7 +7,9 @@ $Cxx.namespace("cereal");
# These structs are guaranteed to remain reserved and empty in mainline
# cereal, so use these if you want custom events in your fork.
# you can rename the struct, but don't change the identifier
# DO rename the structs
# DON'T change the identifier (e.g. @0x81c2f05a394cf4af)
struct CustomReserved0 @0x81c2f05a394cf4af {
}
@@ -37,3 +39,33 @@ struct CustomReserved8 @0xf416ec09499d9d19 {
struct CustomReserved9 @0xa1680744031fdb2d {
}
struct CustomReserved10 @0xcb9fd56c7057593a {
}
struct CustomReserved11 @0xc2243c65e0340384 {
}
struct CustomReserved12 @0x9ccdc8676701b412 {
}
struct CustomReserved13 @0xcd96dafb67a082d0 {
}
struct CustomReserved14 @0xb057204d7deadf3f {
}
struct CustomReserved15 @0xbd443b539493bc68 {
}
struct CustomReserved16 @0xfc6241ed8877b611 {
}
struct CustomReserved17 @0xa30662f84033036c {
}
struct CustomReserved18 @0xc86a3d38d13eb3ef {
}
struct CustomReserved19 @0xa4f1eb3323f5f582 {
}

View File

@@ -48,6 +48,7 @@ struct OnroadEvent @0xc4fa6047f024e718 {
preEnableStandstill @12; # added during pre-enable state with brake
gasPressedOverride @13; # added when user is pressing gas with no disengage on gas
steerOverride @14;
steerDisengage @94; # exits active state
cruiseDisabled @15;
speedTooLow @16;
outOfSpace @17;
@@ -59,6 +60,7 @@ struct OnroadEvent @0xc4fa6047f024e718 {
pcmEnable @23;
pcmDisable @24;
radarFault @25;
radarTempUnavailable @93;
brakeHold @26;
parkBrake @27;
manualRestart @28;
@@ -85,6 +87,8 @@ struct OnroadEvent @0xc4fa6047f024e718 {
laneChange @50;
lowMemory @51;
stockAeb @52;
stockLkas @98;
lateralManeuver @99;
ldw @53;
carUnrecognized @54;
invalidLkasSetting @55;
@@ -125,6 +129,9 @@ struct OnroadEvent @0xc4fa6047f024e718 {
espActive @90;
personalityChanged @91;
aeb @92;
userBookmark @95;
excessiveActuation @96;
audioFeedback @97;
soundsUnavailableDEPRECATED @47;
}
@@ -151,6 +158,10 @@ struct InitData {
gitBranch @11 :Text;
gitRemote @13 :Text;
# this is source commit for prebuilt branches
gitSrcCommit @23 :Text;
gitSrcCommitDate @24 :Text;
androidProperties @16 :Map(Text, Text);
pandaInfo @8 :PandaInfo;
@@ -409,6 +420,7 @@ struct GpsLocationData {
speedAccuracy @12 :Float32;
hasFix @13 :Bool;
satelliteCount @14 :Int8;
enum SensorSource {
android @0;
@@ -482,13 +494,14 @@ struct DeviceState @0xa4d8b5af2aa492eb {
# device thermals
cpuTempC @26 :List(Float32);
gpuTempC @27 :List(Float32);
dspTempC @49 :Float32;
memoryTempC @28 :Float32;
nvmeTempC @35 :List(Float32);
modemTempC @36 :List(Float32);
pmicTempC @39 :List(Float32);
intakeTempC @46 :Float32;
exhaustTempC @47 :Float32;
caseTempC @48 :Float32;
gnssTempC @48 :Float32;
bottomSocTempC @50 :Float32;
maxTempC @44 :Float32; # max of other temps, used to control fan
thermalZones @38 :List(ThermalZone);
thermalStatus @14 :ThermalStatus;
@@ -559,6 +572,7 @@ struct DeviceState @0xa4d8b5af2aa492eb {
chargingDisabledDEPRECATED @18 :Bool;
usbOnlineDEPRECATED @12 :Bool;
ambientTempCDEPRECATED @30 :Float32;
nvmeTempCDEPRECATED @35 :List(Float32);
}
struct PandaState @0xa7649e2575e4591e {
@@ -574,13 +588,13 @@ struct PandaState @0xa7649e2575e4591e {
heartbeatLost @22 :Bool;
interruptLoad @25 :Float32;
fanPower @28 :UInt8;
fanStallCount @34 :UInt8;
spiChecksumErrorCount @33 :UInt16;
spiErrorCount @33 :UInt16;
harnessStatus @21 :HarnessStatus;
sbu1Voltage @35 :Float32;
sbu2Voltage @36 :Float32;
soundOutputLevel @37 :UInt16;
# can health
canState0 @29 :PandaCanState;
@@ -703,6 +717,7 @@ struct PandaState @0xa7649e2575e4591e {
usbPowerModeDEPRECATED @12 :PeripheralState.UsbPowerModeDEPRECATED;
safetyParamDEPRECATED @20 :Int16;
safetyParam2DEPRECATED @26 :UInt32;
fanStallCountDEPRECATED @34 :UInt8;
}
struct PeripheralState {
@@ -723,7 +738,7 @@ struct PeripheralState {
struct RadarState @0x9a185389d6fdd05f {
mdMonoTime @6 :UInt64;
carStateMonoTime @11 :UInt64;
radarErrors @12 :List(Car.RadarData.Error);
radarErrors @13 :Car.RadarData.Error;
leadOne @3 :LeadData;
leadTwo @4 :LeadData;
@@ -757,6 +772,7 @@ struct RadarState @0x9a185389d6fdd05f {
calPercDEPRECATED @9 :Int8;
canMonoTimesDEPRECATED @10 :List(UInt64);
cumLagMsDEPRECATED @5 :Float32;
radarErrorsDEPRECATED @12 :List(Car.RadarData.ErrorDEPRECATED);
}
struct LiveCalibrationData {
@@ -906,6 +922,8 @@ struct ControlsState @0x97ff69c53601abf1 {
saturated @7 :Bool;
actualLateralAccel @9 :Float32;
desiredLateralAccel @10 :Float32;
desiredLateralJerk @11 :Float32;
version @12 :Int32;
}
struct LateralLQRState {
@@ -1073,7 +1091,7 @@ struct ModelDataV2 {
confidence @23: ConfidenceClass;
# Model perceived motion
temporalPose @21 :Pose;
temporalPoseDEPRECATED @21 :Pose;
# e2e lateral planner
action @26: Action;
@@ -1167,6 +1185,8 @@ struct ModelDataV2 {
struct Action {
desiredCurvature @0 :Float32;
desiredAcceleration @1 :Float32;
shouldStop @2 :Bool;
}
}
@@ -1222,6 +1242,10 @@ struct DriverAssistance {
# FCW, AEB, etc. will go here
}
struct LateralManeuverPlan {
desiredCurvature @0 :Float32; # 1/m
}
struct LongitudinalPlan @0xe00b5b3eba12876c {
modelMonoTime @9 :UInt64;
hasLead @7 :Bool;
@@ -1407,6 +1431,8 @@ struct LivePose {
posenetOK @5 :Bool = false;
sensorsOK @6 :Bool = false;
timestamp @8 :UInt64;
debugFilterState @7 :FilterState;
struct XYZMeasurement {
@@ -1461,6 +1487,11 @@ struct ProcLog {
cmdline @15 :List(Text);
exe @16 :Text;
# from /proc/<pid>/smaps_rollup (proportional/private memory)
memPss @17 :UInt64; # Pss — shared pages split by mapper count
memPssAnon @18 :UInt64; # Pss_Anon — private anonymous (heap, stack)
memPssShmem @19 :UInt64; # Pss_Shmem — proportional MSGQ/tmpfs share
}
struct CPUTimes {
@@ -1579,6 +1610,10 @@ struct UbloxGnss {
svId @0 :UInt8;
gnssId @1 :UInt8;
flagsBitfield @2 :UInt32;
cno @3 :UInt8;
elevationDeg @4 :Int8;
azimuthDeg @5 :Int16;
pseudorangeResidual @6 :Float32;
}
}
@@ -2128,13 +2163,10 @@ struct Joystick {
struct DriverStateV2 {
frameId @0 :UInt32;
modelExecutionTime @1 :Float32;
dspExecutionTimeDEPRECATED @2 :Float32;
gpuExecutionTime @8 :Float32;
rawPredictions @3 :Data;
poorVisionProb @4 :Float32;
wheelOnRightProb @5 :Float32;
leftDriverData @6 :DriverData;
rightDriverData @7 :DriverData;
@@ -2144,15 +2176,21 @@ struct DriverStateV2 {
facePosition @2 :List(Float32);
facePositionStd @3 :List(Float32);
faceProb @4 :Float32;
leftEyeProb @5 :Float32;
rightEyeProb @6 :Float32;
leftBlinkProb @7 :Float32;
rightBlinkProb @8 :Float32;
sunglassesProb @9 :Float32;
occludedProb @10 :Float32;
readyProb @11 :List(Float32);
notReadyProb @12 :List(Float32);
eyesVisibleProb @14 :Float32;
eyesClosedProb @15 :Float32;
phoneProb @13 :Float32;
leftEyeProbDEPRECATED @5 :Float32;
rightEyeProbDEPRECATED @6 :Float32;
leftBlinkProbDEPRECATED @7 :Float32;
rightBlinkProbDEPRECATED @8 :Float32;
sunglassesProbDEPRECATED @9 :Float32;
notReadyProbDEPRECATED @12 :List(Float32);
occludedProbDEPRECATED @10 :Float32;
readyProbDEPRECATED @11 :List(Float32);
}
dspExecutionTimeDEPRECATED @2 :Float32;
poorVisionProbDEPRECATED @4 :Float32;
}
struct DriverStateDEPRECATED @0xb83c6cc593ed0a00 {
@@ -2204,7 +2242,10 @@ struct DriverMonitoringState @0xb83cda094a1da284 {
hiStdCount @14 :UInt32;
isActiveMode @16 :Bool;
isRHD @4 :Bool;
uncertainCount @19 :UInt32;
phoneProbOffsetDEPRECATED @20 :Float32;
phoneProbValidCountDEPRECATED @21 :UInt32;
isPreviewDEPRECATED @15 :Bool;
rhdCheckedDEPRECATED @5 :Bool;
eventsDEPRECATED @0 :List(Car.OnroadEventDEPRECATED);
@@ -2237,6 +2278,11 @@ struct LiveParametersData {
roll @14 :Float32;
debugFilterState @16 :FilterState;
angleOffsetValid @17 :Bool = true;
angleOffsetAverageValid @18 :Bool = true;
steerRatioValid @19 :Bool = true;
stiffnessFactorValid @20 :Bool = true;
yawRateDEPRECATED @7 :Float32;
filterStateDEPRECATED @15 :LiveLocationKalman.Measurement;
@@ -2260,6 +2306,24 @@ struct LiveTorqueParametersData {
points @10 :List(List(Float32));
version @11 :Int32;
useParams @12 :Bool;
calPerc @13 :Int8;
}
struct LiveDelayData {
lateralDelay @0 :Float32;
validBlocks @1 :Int32;
status @2 :Status;
lateralDelayEstimate @3 :Float32;
lateralDelayEstimateStd @5 :Float32;
points @4 :List(Float32);
calPerc @6 :Int8;
enum Status {
unestimated @0;
estimated @1;
invalid @2;
}
}
struct LiveMapDataDEPRECATED {
@@ -2428,16 +2492,35 @@ struct DebugAlert {
alertText2 @1 :Text;
}
struct UserFlag {
struct UserBookmark @0xfe346a9de48d9b50 {
}
struct Microphone {
struct SoundPressure @0xdc24138990726023 {
soundPressure @0 :Float32;
# uncalibrated, A-weighted
soundPressureWeighted @3 :Float32;
soundPressureWeightedDb @1 :Float32;
filteredSoundPressureWeightedDb @2 :Float32;
filteredSoundPressureWeightedDbDEPRECATED @2 :Float32;
}
struct AudioData {
data @0 :Data;
sampleRate @1 :UInt32;
}
struct AudioFeedback {
audio @0 :AudioData;
blockNum @1 :UInt16;
}
struct Touch {
sec @0 :Int64;
usec @1 :Int64;
type @2 :UInt8;
code @3 :Int32;
value @4 :Int32;
}
struct Event {
@@ -2458,13 +2541,10 @@ struct Event {
controlsState @7 :ControlsState;
selfdriveState @130 :SelfdriveState;
gyroscope @99 :SensorEventData;
gyroscope2 @100 :SensorEventData;
accelerometer @98 :SensorEventData;
accelerometer2 @101 :SensorEventData;
magnetometer @95 :SensorEventData;
lightSensor @96 :SensorEventData;
temperatureSensor @97 :SensorEventData;
temperatureSensor2 @123 :SensorEventData;
pandaStates @81 :List(PandaState);
peripheralState @80 :PeripheralState;
radarState @13 :RadarState;
@@ -2484,6 +2564,7 @@ struct Event {
gnssMeasurements @91 :GnssMeasurements;
liveParameters @61 :LiveParametersData;
liveTorqueParameters @94 :LiveTorqueParametersData;
liveDelay @146 : LiveDelayData;
cameraOdometry @63 :CameraOdometry;
thumbnail @66: Thumbnail;
onroadEvents @134: List(OnroadEvent);
@@ -2508,7 +2589,8 @@ struct Event {
livestreamDriverEncodeIdx @119 :EncodeIndex;
# microphone data
microphone @103 :Microphone;
soundPressure @103 :SoundPressure;
rawAudioData @147 :AudioData;
# systems stuff
androidLog @20 :AndroidLogEntry;
@@ -2520,6 +2602,9 @@ struct Event {
logMessage @18 :Text;
errorLogMessage @85 :Text;
# touch frame
touch @135 :List(Touch);
# navigation
navInstruction @82 :NavInstruction;
navRoute @83 :NavRoute;
@@ -2527,9 +2612,15 @@ struct Event {
mapRenderState @105: MapRenderState;
# UI services
userFlag @93 :UserFlag;
uiDebug @102 :UIDebug;
# driving feedback
userBookmark @93 :UserBookmark;
bookmarkButton @148 :UserBookmark;
audioFeedback @149 :AudioFeedback;
lateralManeuverPlan @150 :LateralManeuverPlan;
# *********** debug ***********
testJoystick @52 :Joystick;
roadEncodeData @86 :EncodeData;
@@ -2542,11 +2633,17 @@ struct Event {
livestreamWideRoadEncodeData @121 :EncodeData;
livestreamDriverEncodeData @122 :EncodeData;
# *********** Custom: reserved for forks ***********
# DO change the name of the field
# DON'T change anything after the "@"
customReservedRawData0 @124 :Data;
customReservedRawData1 @125 :Data;
customReservedRawData2 @126 :Data;
# *********** Custom: reserved for forks ***********
# DO change the name of the field and struct
# DON'T change the ID (e.g. @107)
# DON'T change which struct it points to
customReserved0 @107 :Custom.CustomReserved0;
customReserved1 @108 :Custom.CustomReserved1;
customReserved2 @109 :Custom.CustomReserved2;
@@ -2557,6 +2654,16 @@ struct Event {
customReserved7 @114 :Custom.CustomReserved7;
customReserved8 @115 :Custom.CustomReserved8;
customReserved9 @116 :Custom.CustomReserved9;
customReserved10 @136 :Custom.CustomReserved10;
customReserved11 @137 :Custom.CustomReserved11;
customReserved12 @138 :Custom.CustomReserved12;
customReserved13 @139 :Custom.CustomReserved13;
customReserved14 @140 :Custom.CustomReserved14;
customReserved15 @141 :Custom.CustomReserved15;
customReserved16 @142 :Custom.CustomReserved16;
customReserved17 @143 :Custom.CustomReserved17;
customReserved18 @144 :Custom.CustomReserved18;
customReserved19 @145 :Custom.CustomReserved19;
# *********** legacy + deprecated ***********
model @9 :Legacy.ModelData; # TODO: rename modelV2 and mark this as deprecated
@@ -2602,5 +2709,8 @@ struct Event {
liveLocationKalmanDEPRECATED @72 :LiveLocationKalman;
liveTracksDEPRECATED @16 :List(LiveTracksDEPRECATED);
onroadEventsDEPRECATED @68: List(Car.OnroadEventDEPRECATED);
gyroscope2DEPRECATED @100 :SensorEventData;
accelerometer2DEPRECATED @101 :SensorEventData;
temperatureSensor2DEPRECATED @123 :SensorEventData;
}
}

View File

@@ -1,49 +0,0 @@
using Cxx = import "./include/c++.capnp";
$Cxx.namespace("cereal");
@0xa086df597ef5d7a0;
# Geometry
struct Point {
x @0: Float64;
y @1: Float64;
z @2: Float64;
}
struct PolyLine {
points @0: List(Point);
}
# Map features
struct Lane {
id @0 :Text;
leftBoundary @1 :LaneBoundary;
rightBoundary @2 :LaneBoundary;
leftAdjacentId @3 :Text;
rightAdjacentId @4 :Text;
inboundIds @5 :List(Text);
outboundIds @6 :List(Text);
struct LaneBoundary {
polyLine @0 :PolyLine;
startHeading @1 :Float32; # WRT north
}
}
# Map tiles
struct TileSummary {
version @0 :Text;
updatedAt @1 :UInt64; # Millis since epoch
level @2 :UInt8;
x @3 :UInt16;
y @4 :UInt16;
}
struct MapTile {
summary @0 :TileSummary;
lanes @1 :List(Lane);
}

View File

@@ -1,23 +1,35 @@
# must be built with scons
from msgq.ipc_pyx import Context, Poller, SubSocket, PubSocket, SocketEventHandle, toggle_fake_events, \
set_fake_prefix, get_fake_prefix, delete_fake_prefix, wait_for_one_event
from msgq.ipc_pyx import MultiplePublishersError, IpcError
from msgq import fake_event_handle, pub_sock, sub_sock, drain_sock_raw
from msgq import fake_event_handle, drain_sock_raw, MultiplePublishersError, IpcError, \
Context, Poller, SubSocket, PubSocket, SocketEventHandle, toggle_fake_events, \
set_fake_prefix, get_fake_prefix, delete_fake_prefix, wait_for_one_event
import msgq
import os
import capnp
import time
from typing import Optional, List, Union, Dict, Deque
from collections import deque
from typing import Optional, List, Union, Dict
from cereal import log
from cereal.services import SERVICE_LIST
from openpilot.common.utils import MovingAverage
NO_TRAVERSAL_LIMIT = 2**64-1
def pub_sock(endpoint: str) -> PubSocket:
service = SERVICE_LIST.get(endpoint)
segment_size = service.queue_size if service else 0
return msgq.pub_sock(endpoint, segment_size)
def sub_sock(endpoint: str, poller: Optional[Poller] = None, addr: str = "127.0.0.1",
conflate: bool = False, timeout: Optional[int] = None) -> SubSocket:
service = SERVICE_LIST.get(endpoint)
segment_size = service.queue_size if service else 0
return msgq.sub_sock(endpoint, poller=poller, addr=addr, conflate=conflate,
timeout=timeout, segment_size=segment_size)
def reset_context():
msgq.context = Context()
@@ -108,10 +120,8 @@ class FrequencyTracker:
self.min_freq = min_freq * 0.8
self.max_freq = max_freq * 1.2
self.recv_dts: Deque[float] = deque(maxlen=int(10 * freq))
self.recv_dts_sum = 0.0
self.recent_recv_dts: Deque[float] = deque(maxlen=int(freq))
self.recent_recv_dts_sum = 0.0
self.avg_dt = MovingAverage(int(10 * freq))
self.recent_avg_dt = MovingAverage(int(freq))
self.prev_time = 0.0
def record_recv_time(self, cur_time: float) -> None:
@@ -119,28 +129,21 @@ class FrequencyTracker:
if self.prev_time > 1e-5:
dt = cur_time - self.prev_time
if len(self.recv_dts) == self.recv_dts.maxlen:
self.recv_dts_sum -= self.recv_dts[0]
self.recv_dts.append(dt)
self.recv_dts_sum += dt
if len(self.recent_recv_dts) == self.recent_recv_dts.maxlen:
self.recent_recv_dts_sum -= self.recent_recv_dts[0]
self.recent_recv_dts.append(dt)
self.recent_recv_dts_sum += dt
self.avg_dt.add_value(dt)
self.recent_avg_dt.add_value(dt)
self.prev_time = cur_time
@property
def valid(self) -> bool:
if not self.recv_dts:
if self.avg_dt.count == 0:
return False
avg_freq = len(self.recv_dts) / self.recv_dts_sum
avg_freq = 1.0 / self.avg_dt.get_average()
if self.min_freq <= avg_freq <= self.max_freq:
return True
avg_freq_recent = len(self.recent_recv_dts) / self.recent_recv_dts_sum
avg_freq_recent = 1.0 / self.recent_avg_dt.get_average()
return self.min_freq <= avg_freq_recent <= self.max_freq
@@ -154,12 +157,16 @@ class SubMaster:
self.updated = {s: False for s in services}
self.recv_time = {s: 0. for s in services}
self.recv_frame = {s: 0 for s in services}
self.alive = {s: False for s in services}
self.freq_ok = {s: False for s in services}
self.sock = {}
self.data = {}
self.valid = {}
self.logMonoTime = {}
self.logMonoTime = {s: 0 for s in services}
# zero-frequency / on-demand services are always alive and presumed valid; all others must pass checks
on_demand = {s: SERVICE_LIST[s].frequency <= 1e-5 for s in services}
self.static_freq_services = set(s for s in services if not on_demand[s])
self.alive = {s: on_demand[s] for s in services}
self.freq_ok = {s: on_demand[s] for s in services}
self.valid = {s: on_demand[s] for s in services}
self.freq_tracker: Dict[str, FrequencyTracker] = {}
self.poller = Poller()
@@ -186,8 +193,6 @@ class SubMaster:
data = new_message(s, 0) # lists
self.data[s] = getattr(data.as_reader(), s)
self.logMonoTime[s] = 0
self.valid[s] = False
self.freq_tracker[s] = FrequencyTracker(SERVICE_LIST[s].frequency, self.update_freq, s == poll)
def __getitem__(self, s: str) -> capnp.lib.capnp._DynamicStructReader:
@@ -224,14 +229,10 @@ class SubMaster:
self.logMonoTime[s] = msg.logMonoTime
self.valid[s] = msg.valid
for s in self.services:
if SERVICE_LIST[s].frequency > 1e-5 and not self.simulation:
# alive if delay is within 10x the expected frequency
self.alive[s] = (cur_time - self.recv_time[s]) < (10. / SERVICE_LIST[s].frequency)
self.freq_ok[s] = self.freq_tracker[s].valid
else:
self.freq_ok[s] = True
self.alive[s] = self.seen[s] if self.simulation else True
for s in self.static_freq_services:
# alive if delay is within 10x the expected frequency; checks relaxed in simulator
self.alive[s] = (cur_time - self.recv_time[s]) < (10. / SERVICE_LIST[s].frequency) or (self.seen[s] and self.simulation)
self.freq_ok[s] = self.freq_tracker[s].valid or self.simulation
def all_alive(self, service_list: Optional[List[str]] = None) -> bool:
return all(self.alive[s] for s in (service_list or self.services) if s not in self.ignore_alive)

View File

@@ -6,12 +6,12 @@
ExitHandler do_exit;
static std::vector<std::string> get_services(std::string whitelist_str, bool zmq_to_msgq) {
static std::vector<std::string> get_services(const std::string &whitelist_str, bool zmq_to_msgq) {
std::vector<std::string> service_list;
for (const auto& it : services) {
std::string name = it.second.name;
bool in_whitelist = whitelist_str.find(name) != std::string::npos;
if (name == "plusFrame" || name == "uiLayoutState" || (zmq_to_msgq && !in_whitelist)) {
if (zmq_to_msgq && !in_whitelist) {
continue;
}
service_list.push_back(name);
@@ -25,15 +25,16 @@ void msgq_to_zmq(const std::vector<std::string> &endpoints, const std::string &i
}
void zmq_to_msgq(const std::vector<std::string> &endpoints, const std::string &ip) {
auto poller = std::make_unique<ZMQPoller>();
auto pub_context = std::make_unique<MSGQContext>();
auto sub_context = std::make_unique<ZMQContext>();
std::map<SubSocket *, PubSocket *> sub2pub;
auto poller = std::make_unique<BridgeZmqPoller>();
auto pub_context = std::make_unique<Context>();
auto sub_context = std::make_unique<BridgeZmqContext>();
std::map<BridgeZmqSubSocket *, PubSocket *> sub2pub;
for (auto endpoint : endpoints) {
auto pub_sock = new MSGQPubSocket();
auto sub_sock = new ZMQSubSocket();
pub_sock->connect(pub_context.get(), endpoint);
auto pub_sock = new PubSocket();
auto sub_sock = new BridgeZmqSubSocket();
size_t queue_size = services.at(endpoint).queue_size;
pub_sock->connect(pub_context.get(), endpoint, true, queue_size);
sub_sock->connect(sub_context.get(), endpoint, ip, false);
poller->registerSocket(sub_sock);

View File

@@ -0,0 +1,170 @@
#include "cereal/messaging/bridge_zmq.h"
#include <cassert>
#include <cstring>
#include <unistd.h>
static size_t fnv1a_hash(const std::string &str) {
const size_t fnv_prime = 0x100000001b3;
size_t hash_value = 0xcbf29ce484222325;
for (char c : str) {
hash_value ^= (unsigned char)c;
hash_value *= fnv_prime;
}
return hash_value;
}
// FIXME: This is a hack to get the port number from the socket name, might have collisions.
static int get_port(std::string endpoint) {
size_t hash_value = fnv1a_hash(endpoint);
int start_port = 8023;
int max_port = 65535;
return start_port + (hash_value % (max_port - start_port));
}
BridgeZmqContext::BridgeZmqContext() {
context = zmq_ctx_new();
}
BridgeZmqContext::~BridgeZmqContext() {
if (context != nullptr) {
zmq_ctx_term(context);
}
}
void BridgeZmqMessage::init(size_t sz) {
size = sz;
data = new char[size];
}
void BridgeZmqMessage::init(char *d, size_t sz) {
size = sz;
data = new char[size];
memcpy(data, d, size);
}
void BridgeZmqMessage::close() {
if (size > 0) {
delete[] data;
}
data = nullptr;
size = 0;
}
BridgeZmqMessage::~BridgeZmqMessage() {
close();
}
int BridgeZmqSubSocket::connect(BridgeZmqContext *context, std::string endpoint, std::string address, bool conflate, bool check_endpoint) {
sock = zmq_socket(context->getRawContext(), ZMQ_SUB);
if (sock == nullptr) {
return -1;
}
zmq_setsockopt(sock, ZMQ_SUBSCRIBE, "", 0);
if (conflate) {
int arg = 1;
zmq_setsockopt(sock, ZMQ_CONFLATE, &arg, sizeof(int));
}
int reconnect_ivl = 500;
zmq_setsockopt(sock, ZMQ_RECONNECT_IVL_MAX, &reconnect_ivl, sizeof(reconnect_ivl));
full_endpoint = "tcp://" + address + ":";
if (check_endpoint) {
full_endpoint += std::to_string(get_port(endpoint));
} else {
full_endpoint += endpoint;
}
return zmq_connect(sock, full_endpoint.c_str());
}
void BridgeZmqSubSocket::setTimeout(int timeout) {
zmq_setsockopt(sock, ZMQ_RCVTIMEO, &timeout, sizeof(int));
}
Message *BridgeZmqSubSocket::receive(bool non_blocking) {
zmq_msg_t msg;
assert(zmq_msg_init(&msg) == 0);
int flags = non_blocking ? ZMQ_DONTWAIT : 0;
int rc = zmq_msg_recv(&msg, sock, flags);
Message *ret = nullptr;
if (rc >= 0) {
ret = new BridgeZmqMessage;
ret->init((char *)zmq_msg_data(&msg), zmq_msg_size(&msg));
}
zmq_msg_close(&msg);
return ret;
}
BridgeZmqSubSocket::~BridgeZmqSubSocket() {
if (sock != nullptr) {
zmq_close(sock);
}
}
int BridgeZmqPubSocket::connect(BridgeZmqContext *context, std::string endpoint, bool check_endpoint) {
sock = zmq_socket(context->getRawContext(), ZMQ_PUB);
if (sock == nullptr) {
return -1;
}
full_endpoint = "tcp://*:";
if (check_endpoint) {
full_endpoint += std::to_string(get_port(endpoint));
} else {
full_endpoint += endpoint;
}
// ZMQ pub sockets cannot be shared between processes, so we need to ensure pid stays the same.
pid = getpid();
return zmq_bind(sock, full_endpoint.c_str());
}
int BridgeZmqPubSocket::sendMessage(Message *message) {
assert(pid == getpid());
return zmq_send(sock, message->getData(), message->getSize(), ZMQ_DONTWAIT);
}
int BridgeZmqPubSocket::send(char *data, size_t size) {
assert(pid == getpid());
return zmq_send(sock, data, size, ZMQ_DONTWAIT);
}
BridgeZmqPubSocket::~BridgeZmqPubSocket() {
if (sock != nullptr) {
zmq_close(sock);
}
}
void BridgeZmqPoller::registerSocket(BridgeZmqSubSocket *socket) {
assert(num_polls + 1 < (sizeof(polls) / sizeof(polls[0])));
polls[num_polls].socket = socket->getRawSocket();
polls[num_polls].events = ZMQ_POLLIN;
sockets.push_back(socket);
num_polls++;
}
std::vector<BridgeZmqSubSocket *> BridgeZmqPoller::poll(int timeout) {
std::vector<BridgeZmqSubSocket *> ret;
int rc = zmq_poll(polls, num_polls, timeout);
if (rc < 0) {
return ret;
}
for (size_t i = 0; i < num_polls; i++) {
if (polls[i].revents) {
ret.push_back(sockets[i]);
}
}
return ret;
}

View File

@@ -0,0 +1,72 @@
#pragma once
#include <cstddef>
#include <string>
#include <vector>
#include <zmq.h>
#include "msgq/ipc.h"
class BridgeZmqContext {
public:
BridgeZmqContext();
void *getRawContext() { return context; }
~BridgeZmqContext();
private:
void *context = nullptr;
};
class BridgeZmqMessage : public Message {
public:
void init(size_t size);
void init(char *data, size_t size);
void close();
size_t getSize() { return size; }
char *getData() { return data; }
~BridgeZmqMessage();
private:
char *data = nullptr;
size_t size = 0;
};
class BridgeZmqSubSocket {
public:
int connect(BridgeZmqContext *context, std::string endpoint, std::string address, bool conflate = false, bool check_endpoint = true);
void setTimeout(int timeout);
Message *receive(bool non_blocking = false);
void *getRawSocket() { return sock; }
~BridgeZmqSubSocket();
private:
void *sock = nullptr;
std::string full_endpoint;
};
class BridgeZmqPubSocket {
public:
int connect(BridgeZmqContext *context, std::string endpoint, bool check_endpoint = true);
int sendMessage(Message *message);
int send(char *data, size_t size);
void *getRawSocket() { return sock; }
~BridgeZmqPubSocket();
private:
void *sock = nullptr;
std::string full_endpoint;
int pid = -1;
};
class BridgeZmqPoller {
public:
void registerSocket(BridgeZmqSubSocket *socket);
std::vector<BridgeZmqSubSocket *> poll(int timeout);
private:
static constexpr size_t MAX_BRIDGE_ZMQ_POLLERS = 128;
std::vector<BridgeZmqSubSocket *> sockets;
zmq_pollitem_t polls[MAX_BRIDGE_ZMQ_POLLERS] = {};
size_t num_polls = 0;
};

View File

@@ -2,6 +2,7 @@
#include <cassert>
#include "cereal/services.h"
#include "common/util.h"
extern ExitHandler do_exit;
@@ -21,14 +22,14 @@ static std::string recv_zmq_msg(void *sock) {
}
void MsgqToZmq::run(const std::vector<std::string> &endpoints, const std::string &ip) {
zmq_context = std::make_unique<ZMQContext>();
msgq_context = std::make_unique<MSGQContext>();
zmq_context = std::make_unique<BridgeZmqContext>();
msgq_context = std::make_unique<Context>();
// Create ZMQPubSockets for each endpoint
for (const auto &endpoint : endpoints) {
auto &socket_pair = socket_pairs.emplace_back();
socket_pair.endpoint = endpoint;
socket_pair.pub_sock = std::make_unique<ZMQPubSocket>();
socket_pair.pub_sock = std::make_unique<BridgeZmqPubSocket>();
int ret = socket_pair.pub_sock->connect(zmq_context.get(), endpoint);
if (ret != 0) {
printf("Failed to create ZMQ publisher for [%s]: %s\n", endpoint.c_str(), zmq_strerror(zmq_errno()));
@@ -48,7 +49,7 @@ void MsgqToZmq::run(const std::vector<std::string> &endpoints, const std::string
for (auto sub_sock : msgq_poller->poll(100)) {
// Process messages for each socket
ZMQPubSocket *pub_sock = sub2pub.at(sub_sock);
BridgeZmqPubSocket *pub_sock = sub2pub.at(sub_sock);
for (int i = 0; i < MAX_MESSAGES_PER_SOCKET; ++i) {
auto msg = std::unique_ptr<Message>(sub_sock->receive(true));
if (!msg) break;
@@ -71,7 +72,7 @@ void MsgqToZmq::zmqMonitorThread() {
// Set up ZMQ monitor for each pub socket
for (int i = 0; i < socket_pairs.size(); ++i) {
std::string addr = "inproc://op-bridge-monitor-" + std::to_string(i);
zmq_socket_monitor(socket_pairs[i].pub_sock->sock, addr.c_str(), ZMQ_EVENT_ACCEPTED | ZMQ_EVENT_DISCONNECTED);
zmq_socket_monitor(socket_pairs[i].pub_sock->getRawSocket(), addr.c_str(), ZMQ_EVENT_ACCEPTED | ZMQ_EVENT_DISCONNECTED);
void *monitor_socket = zmq_socket(zmq_context->getRawContext(), ZMQ_PAIR);
zmq_connect(monitor_socket, addr.c_str());
@@ -108,7 +109,8 @@ void MsgqToZmq::zmqMonitorThread() {
if (++pair.connected_clients == 1) {
// Create new MSGQ subscriber socket and map to ZMQ publisher
pair.sub_sock = std::make_unique<MSGQSubSocket>();
pair.sub_sock->connect(msgq_context.get(), pair.endpoint, "127.0.0.1");
size_t queue_size = services.at(pair.endpoint).queue_size;
pair.sub_sock->connect(msgq_context.get(), pair.endpoint, "127.0.0.1", false, true, queue_size);
sub2pub[pair.sub_sock.get()] = pair.pub_sock.get();
registerSockets();
}
@@ -128,7 +130,7 @@ void MsgqToZmq::zmqMonitorThread() {
// Clean up monitor sockets
for (int i = 0; i < pollitems.size(); ++i) {
zmq_socket_monitor(socket_pairs[i].pub_sock->sock, nullptr, 0);
zmq_socket_monitor(socket_pairs[i].pub_sock->getRawSocket(), nullptr, 0);
zmq_close(pollitems[i].socket);
}
cv.notify_one();

View File

@@ -7,9 +7,8 @@
#include <string>
#include <vector>
#define private public
#include "msgq/impl_msgq.h"
#include "msgq/impl_zmq.h"
#include "cereal/messaging/bridge_zmq.h"
class MsgqToZmq {
public:
@@ -22,16 +21,16 @@ protected:
struct SocketPair {
std::string endpoint;
std::unique_ptr<ZMQPubSocket> pub_sock;
std::unique_ptr<BridgeZmqPubSocket> pub_sock;
std::unique_ptr<MSGQSubSocket> sub_sock;
int connected_clients = 0;
};
std::unique_ptr<MSGQContext> msgq_context;
std::unique_ptr<ZMQContext> zmq_context;
std::unique_ptr<Context> msgq_context;
std::unique_ptr<BridgeZmqContext> zmq_context;
std::mutex mutex;
std::condition_variable cv;
std::unique_ptr<MSGQPoller> msgq_poller;
std::map<SubSocket *, ZMQPubSocket *> sub2pub;
std::map<SubSocket *, BridgeZmqPubSocket *> sub2pub;
std::vector<SocketPair> socket_pairs;
};

View File

@@ -33,7 +33,7 @@ MessageContext message_context;
struct SubMaster::SubMessage {
std::string name;
SubSocket *socket = nullptr;
int freq = 0;
float freq = 0.0f;
bool updated = false, alive = false, valid = false, ignore_alive;
uint64_t rcv_time = 0, rcv_frame = 0;
void *allocated_msg_reader = nullptr;
@@ -50,7 +50,7 @@ SubMaster::SubMaster(const std::vector<const char *> &service_list, const std::v
assert(services.count(std::string(name)) > 0);
service serv = services.at(std::string(name));
SubSocket *socket = SubSocket::create(message_context.context(), name, address ? address : "127.0.0.1", true);
SubSocket *socket = SubSocket::create(message_context.context(), name, address ? address : "127.0.0.1", true, true, serv.queue_size);
assert(socket != 0);
bool is_polled = inList(poll, name) || poll.empty();
if (is_polled) poller_->registerSocket(socket);
@@ -187,7 +187,8 @@ SubMaster::~SubMaster() {
PubMaster::PubMaster(const std::vector<const char *> &service_list) {
for (auto name : service_list) {
assert(services.count(name) > 0);
PubSocket *socket = PubSocket::create(message_context.context(), name);
service serv = services.at(std::string(name));
PubSocket *socket = PubSocket::create(message_context.context(), name, true, serv.queue_size);
assert(socket);
sockets_[name] = socket;
}

View File

@@ -5,7 +5,7 @@ import numbers
import random
import threading
import time
from parameterized import parameterized
from openpilot.common.parameterized import parameterized
import pytest
from cereal import log, car
@@ -30,7 +30,7 @@ def zmq_sleep(t=1):
# TODO: this should take any capnp struct and returrn a msg with random populated data
def random_carstate():
fields = ["vEgo", "aEgo", "gas", "steeringAngleDeg"]
fields = ["vEgo", "aEgo", "brake", "steeringAngleDeg"]
msg = messaging.new_message("carState")
cs = msg.carState
for f in fields:
@@ -177,8 +177,8 @@ class TestMessaging:
# wait 5 socket timeouts before sending
msg = random_carstate()
delayed_send(sock_timeout*5, pub_sock, msg.to_bytes())
start_time = time.monotonic()
delayed_send(sock_timeout*5, pub_sock, msg.to_bytes())
recvd = messaging.recv_one_retry(sub_sock)
assert (time.monotonic() - start_time) >= sock_timeout*5
assert isinstance(recvd, capnp._DynamicStructReader)

View File

@@ -6,6 +6,7 @@ import cereal.messaging as messaging
from cereal.messaging.tests.test_messaging import events, random_sock, random_socks, \
random_bytes, random_carstate, assert_carstate, \
zmq_sleep
from cereal.services import SERVICE_LIST
class TestSubMaster:
@@ -26,7 +27,9 @@ class TestSubMaster:
sm = messaging.SubMaster(socks)
assert sm.frame == -1
assert not any(sm.updated.values())
assert not any(sm.alive.values())
assert not any(sm.seen.values())
on_demand = {s: SERVICE_LIST[s].frequency <= 1e-5 for s in sm.services}
assert all(sm.alive[s] == sm.valid[s] == sm.freq_ok[s] == on_demand[s] for s in sm.services)
assert all(t == 0. for t in sm.recv_time.values())
assert all(f == 0 for f in sm.recv_frame.values())
assert all(t == 0 for t in sm.logMonoTime.values())
@@ -83,6 +86,7 @@ class TestSubMaster:
"cameraOdometry": (20, 10),
"liveCalibration": (4, 4),
"carParams": (None, None),
"userBookmark": (None, None),
}
for service, (max_freq, min_freq) in checks.items():

View File

@@ -1,7 +1,7 @@
import os
import tempfile
from typing import Dict
from parameterized import parameterized
from openpilot.common.parameterized import parameterized
import cereal.services as services
from cereal.services import SERVICE_LIST

View File

@@ -1,47 +1,57 @@
#!/usr/bin/env python3
from enum import IntEnum
from typing import Optional
# TODO: this should be automatically determined using the capnp schema
class QueueSize(IntEnum):
BIG = 10 * 1024 * 1024 # 10MB - video frames, large AI outputs
MEDIUM = 2 * 1024 * 1024 # 2MB - high freq (CAN), livestream
SMALL = 250 * 1024 # 250KB - most services
class Service:
def __init__(self, should_log: bool, frequency: float, decimation: Optional[int] = None):
def __init__(self, should_log: bool, frequency: float, decimation: Optional[int] = None,
queue_size: QueueSize = QueueSize.SMALL):
self.should_log = should_log
self.frequency = frequency
self.decimation = decimation
self.queue_size = queue_size
_services: dict[str, tuple] = {
# service: (should_log, frequency, qlog decimation (optional))
# note: the "EncodeIdx" packets will still be in the log
"gyroscope": (True, 104., 104),
"gyroscope2": (True, 100., 100),
"accelerometer": (True, 104., 104),
"accelerometer2": (True, 100., 100),
"magnetometer": (True, 25.),
"lightSensor": (True, 100., 100),
"temperatureSensor": (True, 2., 200),
"temperatureSensor2": (True, 2., 200),
"gpsNMEA": (True, 9.),
"deviceState": (True, 2., 1),
"can": (True, 100., 2053), # decimation gives ~3 msgs in a full segment
"controlsState": (True, 100., 10),
"touch": (True, 20., 1),
"can": (True, 100., 2053, QueueSize.BIG), # decimation gives ~3 msgs in a full segment
"controlsState": (True, 100., 10, QueueSize.MEDIUM),
"selfdriveState": (True, 100., 10),
"pandaStates": (True, 10., 1),
"peripheralState": (True, 2., 1),
"radarState": (True, 20., 5),
"roadEncodeIdx": (False, 20., 1),
"liveTracks": (True, 20.),
"sendcan": (True, 100., 139),
"sendcan": (True, 100., 139, QueueSize.MEDIUM),
"logMessage": (True, 0.),
"errorLogMessage": (True, 0., 1),
"liveCalibration": (True, 4., 4),
"liveTorqueParameters": (True, 4., 1),
"liveDelay": (True, 4., 1),
"androidLog": (True, 0.),
"carState": (True, 100., 10),
"carControl": (True, 100., 10),
"carOutput": (True, 100., 10),
"longitudinalPlan": (True, 20., 10),
"lateralManeuverPlan": (True, 20.),
"driverAssistance": (True, 20., 20),
"procLog": (True, 0.5, 15),
"procLog": (True, 0.5, 15, QueueSize.BIG),
"gpsLocationExternal": (True, 10., 10),
"gpsLocation": (True, 1., 1),
"ubloxGnss": (True, 10.),
@@ -52,7 +62,7 @@ _services: dict[str, tuple] = {
"livePose": (True, 20., 4),
"liveParameters": (True, 20., 5),
"cameraOdometry": (True, 20., 10),
"thumbnail": (True, 0.2, 1),
"thumbnail": (True, 1 / 60., 1),
"onroadEvents": (True, 1., 1),
"carParams": (True, 0.02, 1),
"roadCameraState": (True, 20., 20),
@@ -63,30 +73,33 @@ _services: dict[str, tuple] = {
"wideRoadEncodeIdx": (False, 20., 1),
"wideRoadCameraState": (True, 20., 20),
"drivingModelData": (True, 20., 10),
"modelV2": (True, 20.),
"modelV2": (True, 20., None, QueueSize.BIG),
"managerState": (True, 2., 1),
"uploaderState": (True, 0., 1),
"navInstruction": (True, 1., 10),
"navRoute": (True, 0.),
"navThumbnail": (True, 0.),
"qRoadEncodeIdx": (False, 20.),
"userFlag": (True, 0., 1),
"microphone": (True, 10., 10),
"userBookmark": (True, 0., 1),
"soundPressure": (True, 10., 10),
"rawAudioData": (False, 20.),
"bookmarkButton": (True, 0., 1),
"audioFeedback": (True, 0., 1),
"roadEncodeData": (False, 20., None, QueueSize.BIG),
"driverEncodeData": (False, 20., None, QueueSize.BIG),
"wideRoadEncodeData": (False, 20., None, QueueSize.BIG),
"qRoadEncodeData": (False, 20., None, QueueSize.BIG),
# debug
"uiDebug": (True, 0., 1),
"testJoystick": (True, 0.),
"alertDebug": (True, 20., 5),
"roadEncodeData": (False, 20.),
"driverEncodeData": (False, 20.),
"wideRoadEncodeData": (False, 20.),
"qRoadEncodeData": (False, 20.),
"livestreamWideRoadEncodeIdx": (False, 20.),
"livestreamRoadEncodeIdx": (False, 20.),
"livestreamDriverEncodeIdx": (False, 20.),
"livestreamWideRoadEncodeData": (False, 20.),
"livestreamRoadEncodeData": (False, 20.),
"livestreamDriverEncodeData": (False, 20.),
"livestreamWideRoadEncodeData": (False, 20., None, QueueSize.MEDIUM),
"livestreamRoadEncodeData": (False, 20., None, QueueSize.MEDIUM),
"livestreamDriverEncodeData": (False, 20., None, QueueSize.MEDIUM),
"customReservedRawData0": (True, 0.),
"customReservedRawData1": (True, 0.),
"customReservedRawData2": (True, 0.),
@@ -104,13 +117,13 @@ def build_header():
h += "#include <map>\n"
h += "#include <string>\n"
h += "struct service { std::string name; bool should_log; int frequency; int decimation; };\n"
h += "struct service { std::string name; bool should_log; float frequency; int decimation; size_t queue_size; };\n"
h += "static std::map<std::string, service> services = {\n"
for k, v in SERVICE_LIST.items():
should_log = "true" if v.should_log else "false"
decimation = -1 if v.decimation is None else v.decimation
h += ' { "%s", {"%s", %s, %d, %d}},\n' % \
(k, k, should_log, v.frequency, decimation)
h += ' { "%s", {"%s", %s, %f, %d, %d}},\n' % \
(k, k, should_log, v.frequency, decimation, v.queue_size)
h += "};\n"
h += "#endif\n"

View File

@@ -1,13 +0,0 @@
comment: false
coverage:
status:
project:
default:
informational: true
patch: off
ignore:
- "**/test_*.py"
- "selfdrive/test/**"
- "system/version.py" # codecov changes depending on if we are in a branch or not
- "tools"

1
common/.gitignore vendored
View File

@@ -1 +0,0 @@
*.cpp

View File

@@ -1,25 +1,14 @@
Import('env', 'envCython', 'arch')
Import('env', 'envCython')
common_libs = [
'params.cc',
'swaglog.cc',
'util.cc',
'i2c.cc',
'watchdog.cc',
'ratekeeper.cc'
'ratekeeper.cc',
]
if arch != "Darwin":
common_libs.append('gpio.cc')
_common = env.Library('common', common_libs, LIBS="json11")
files = [
'clutil.cc',
]
_gpucommon = env.Library('gpucommon', files)
Export('_common', '_gpucommon')
Export('_common')
if GetOption('extras'):
env.Program('tests/test_common',
@@ -29,11 +18,6 @@ if GetOption('extras'):
# Cython bindings
params_python = envCython.Program('params_pyx.so', 'params_pyx.pyx', LIBS=envCython['LIBS'] + [_common, 'zmq', 'json11'])
SConscript([
'transformations/SConscript',
])
Import('transformations_python')
common_python = [params_python, transformations_python]
common_python = [params_python]
Export('common_python')

View File

@@ -7,11 +7,15 @@ from openpilot.system.version import get_version
API_HOST = os.getenv('API_HOST', 'https://api.commadotai.com')
# name: jwt signature algorithm
KEYS = {"id_rsa": "RS256",
"id_ecdsa": "ES256"}
class Api:
def __init__(self, dongle_id):
self.dongle_id = dongle_id
with open(Paths.persist_root()+'/comma/id_rsa') as f:
self.private_key = f.read()
self.jwt_algorithm, self.private_key, _ = get_key_pair()
def get(self, *args, **kwargs):
return self.request('GET', *args, **kwargs)
@@ -22,7 +26,7 @@ class Api:
def request(self, method, endpoint, timeout=None, access_token=None, **params):
return api_get(endpoint, method=method, timeout=timeout, access_token=access_token, **params)
def get_token(self, expiry_hours=1):
def get_token(self, payload_extra=None, expiry_hours=1):
now = datetime.now(UTC).replace(tzinfo=None)
payload = {
'identity': self.dongle_id,
@@ -30,17 +34,29 @@ class Api:
'iat': now,
'exp': now + timedelta(hours=expiry_hours)
}
token = jwt.encode(payload, self.private_key, algorithm='RS256')
if payload_extra is not None:
payload.update(payload_extra)
token = jwt.encode(payload, self.private_key, algorithm=self.jwt_algorithm)
if isinstance(token, bytes):
token = token.decode('utf8')
return token
def api_get(endpoint, method='GET', timeout=None, access_token=None, **params):
def api_get(endpoint, method='GET', timeout=None, access_token=None, session=None, **params):
headers = {}
if access_token is not None:
headers['Authorization'] = "JWT " + access_token
headers['User-Agent'] = "openpilot-" + get_version()
return requests.request(method, API_HOST + "/" + endpoint, timeout=timeout, headers=headers, params=params)
# TODO: add session to Api
req = requests if session is None else session
return req.request(method, API_HOST + "/" + endpoint, timeout=timeout, headers=headers, params=params)
def get_key_pair() -> tuple[str, str, str] | tuple[None, None, None]:
for key in KEYS:
if os.path.isfile(Paths.persist_root() + f'/comma/{key}') and os.path.isfile(Paths.persist_root() + f'/comma/{key}.pub'):
with open(Paths.persist_root() + f'/comma/{key}') as private, open(Paths.persist_root() + f'/comma/{key}.pub') as public:
return KEYS[key], private.read(), public.read()
return None, None, None

View File

@@ -1,200 +0,0 @@
#include "common/clutil.h"
#include <cassert>
#include <iostream>
#include <memory>
#include "common/util.h"
#include "common/swaglog.h"
namespace { // helper functions
template <typename Func, typename Id, typename Name>
std::string get_info(Func get_info_func, Id id, Name param_name) {
size_t size = 0;
CL_CHECK(get_info_func(id, param_name, 0, NULL, &size));
std::string info(size, '\0');
CL_CHECK(get_info_func(id, param_name, size, info.data(), NULL));
return info;
}
inline std::string get_platform_info(cl_platform_id id, cl_platform_info name) { return get_info(&clGetPlatformInfo, id, name); }
inline std::string get_device_info(cl_device_id id, cl_device_info name) { return get_info(&clGetDeviceInfo, id, name); }
void cl_print_info(cl_platform_id platform, cl_device_id device) {
size_t work_group_size = 0;
cl_device_type device_type = 0;
clGetDeviceInfo(device, CL_DEVICE_MAX_WORK_GROUP_SIZE, sizeof(work_group_size), &work_group_size, NULL);
clGetDeviceInfo(device, CL_DEVICE_TYPE, sizeof(device_type), &device_type, NULL);
const char *type_str = "Other...";
switch (device_type) {
case CL_DEVICE_TYPE_CPU: type_str ="CL_DEVICE_TYPE_CPU"; break;
case CL_DEVICE_TYPE_GPU: type_str = "CL_DEVICE_TYPE_GPU"; break;
case CL_DEVICE_TYPE_ACCELERATOR: type_str = "CL_DEVICE_TYPE_ACCELERATOR"; break;
}
LOGD("vendor: %s", get_platform_info(platform, CL_PLATFORM_VENDOR).c_str());
LOGD("platform version: %s", get_platform_info(platform, CL_PLATFORM_VERSION).c_str());
LOGD("profile: %s", get_platform_info(platform, CL_PLATFORM_PROFILE).c_str());
LOGD("extensions: %s", get_platform_info(platform, CL_PLATFORM_EXTENSIONS).c_str());
LOGD("name: %s", get_device_info(device, CL_DEVICE_NAME).c_str());
LOGD("device version: %s", get_device_info(device, CL_DEVICE_VERSION).c_str());
LOGD("max work group size: %zu", work_group_size);
LOGD("type = %d, %s", (int)device_type, type_str);
}
void cl_print_build_errors(cl_program program, cl_device_id device) {
cl_build_status status;
clGetProgramBuildInfo(program, device, CL_PROGRAM_BUILD_STATUS, sizeof(status), &status, NULL);
size_t log_size;
clGetProgramBuildInfo(program, device, CL_PROGRAM_BUILD_LOG, 0, NULL, &log_size);
std::string log(log_size, '\0');
clGetProgramBuildInfo(program, device, CL_PROGRAM_BUILD_LOG, log_size, &log[0], NULL);
LOGE("build failed; status=%d, log: %s", status, log.c_str());
}
} // namespace
cl_device_id cl_get_device_id(cl_device_type device_type) {
cl_uint num_platforms = 0;
CL_CHECK(clGetPlatformIDs(0, NULL, &num_platforms));
std::unique_ptr<cl_platform_id[]> platform_ids = std::make_unique<cl_platform_id[]>(num_platforms);
CL_CHECK(clGetPlatformIDs(num_platforms, &platform_ids[0], NULL));
for (size_t i = 0; i < num_platforms; ++i) {
LOGD("platform[%zu] CL_PLATFORM_NAME: %s", i, get_platform_info(platform_ids[i], CL_PLATFORM_NAME).c_str());
// Get first device
if (cl_device_id device_id = NULL; clGetDeviceIDs(platform_ids[i], device_type, 1, &device_id, NULL) == 0 && device_id) {
cl_print_info(platform_ids[i], device_id);
return device_id;
}
}
LOGE("No valid openCL platform found");
assert(0);
return nullptr;
}
cl_context cl_create_context(cl_device_id device_id) {
return CL_CHECK_ERR(clCreateContext(NULL, 1, &device_id, NULL, NULL, &err));
}
cl_program cl_program_from_file(cl_context ctx, cl_device_id device_id, const char* path, const char* args) {
return cl_program_from_source(ctx, device_id, util::read_file(path), args);
}
cl_program cl_program_from_source(cl_context ctx, cl_device_id device_id, const std::string& src, const char* args) {
const char *csrc = src.c_str();
cl_program prg = CL_CHECK_ERR(clCreateProgramWithSource(ctx, 1, &csrc, NULL, &err));
if (int err = clBuildProgram(prg, 1, &device_id, args, NULL, NULL); err != 0) {
cl_print_build_errors(prg, device_id);
assert(0);
}
return prg;
}
cl_program cl_program_from_binary(cl_context ctx, cl_device_id device_id, const uint8_t* binary, size_t length, const char* args) {
cl_program prg = CL_CHECK_ERR(clCreateProgramWithBinary(ctx, 1, &device_id, &length, &binary, NULL, &err));
if (int err = clBuildProgram(prg, 1, &device_id, args, NULL, NULL); err != 0) {
cl_print_build_errors(prg, device_id);
assert(0);
}
return prg;
}
// Given a cl code and return a string representation
#define CL_ERR_TO_STR(err) case err: return #err
const char* cl_get_error_string(int err) {
switch (err) {
CL_ERR_TO_STR(CL_SUCCESS);
CL_ERR_TO_STR(CL_DEVICE_NOT_FOUND);
CL_ERR_TO_STR(CL_DEVICE_NOT_AVAILABLE);
CL_ERR_TO_STR(CL_COMPILER_NOT_AVAILABLE);
CL_ERR_TO_STR(CL_MEM_OBJECT_ALLOCATION_FAILURE);
CL_ERR_TO_STR(CL_OUT_OF_RESOURCES);
CL_ERR_TO_STR(CL_OUT_OF_HOST_MEMORY);
CL_ERR_TO_STR(CL_PROFILING_INFO_NOT_AVAILABLE);
CL_ERR_TO_STR(CL_MEM_COPY_OVERLAP);
CL_ERR_TO_STR(CL_IMAGE_FORMAT_MISMATCH);
CL_ERR_TO_STR(CL_IMAGE_FORMAT_NOT_SUPPORTED);
CL_ERR_TO_STR(CL_MAP_FAILURE);
CL_ERR_TO_STR(CL_MISALIGNED_SUB_BUFFER_OFFSET);
CL_ERR_TO_STR(CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST);
CL_ERR_TO_STR(CL_COMPILE_PROGRAM_FAILURE);
CL_ERR_TO_STR(CL_LINKER_NOT_AVAILABLE);
CL_ERR_TO_STR(CL_LINK_PROGRAM_FAILURE);
CL_ERR_TO_STR(CL_DEVICE_PARTITION_FAILED);
CL_ERR_TO_STR(CL_KERNEL_ARG_INFO_NOT_AVAILABLE);
CL_ERR_TO_STR(CL_INVALID_VALUE);
CL_ERR_TO_STR(CL_INVALID_DEVICE_TYPE);
CL_ERR_TO_STR(CL_INVALID_PLATFORM);
CL_ERR_TO_STR(CL_INVALID_DEVICE);
CL_ERR_TO_STR(CL_INVALID_CONTEXT);
CL_ERR_TO_STR(CL_INVALID_QUEUE_PROPERTIES);
CL_ERR_TO_STR(CL_INVALID_COMMAND_QUEUE);
CL_ERR_TO_STR(CL_INVALID_HOST_PTR);
CL_ERR_TO_STR(CL_INVALID_MEM_OBJECT);
CL_ERR_TO_STR(CL_INVALID_IMAGE_FORMAT_DESCRIPTOR);
CL_ERR_TO_STR(CL_INVALID_IMAGE_SIZE);
CL_ERR_TO_STR(CL_INVALID_SAMPLER);
CL_ERR_TO_STR(CL_INVALID_BINARY);
CL_ERR_TO_STR(CL_INVALID_BUILD_OPTIONS);
CL_ERR_TO_STR(CL_INVALID_PROGRAM);
CL_ERR_TO_STR(CL_INVALID_PROGRAM_EXECUTABLE);
CL_ERR_TO_STR(CL_INVALID_KERNEL_NAME);
CL_ERR_TO_STR(CL_INVALID_KERNEL_DEFINITION);
CL_ERR_TO_STR(CL_INVALID_KERNEL);
CL_ERR_TO_STR(CL_INVALID_ARG_INDEX);
CL_ERR_TO_STR(CL_INVALID_ARG_VALUE);
CL_ERR_TO_STR(CL_INVALID_ARG_SIZE);
CL_ERR_TO_STR(CL_INVALID_KERNEL_ARGS);
CL_ERR_TO_STR(CL_INVALID_WORK_DIMENSION);
CL_ERR_TO_STR(CL_INVALID_WORK_GROUP_SIZE);
CL_ERR_TO_STR(CL_INVALID_WORK_ITEM_SIZE);
CL_ERR_TO_STR(CL_INVALID_GLOBAL_OFFSET);
CL_ERR_TO_STR(CL_INVALID_EVENT_WAIT_LIST);
CL_ERR_TO_STR(CL_INVALID_EVENT);
CL_ERR_TO_STR(CL_INVALID_OPERATION);
CL_ERR_TO_STR(CL_INVALID_GL_OBJECT);
CL_ERR_TO_STR(CL_INVALID_BUFFER_SIZE);
CL_ERR_TO_STR(CL_INVALID_MIP_LEVEL);
CL_ERR_TO_STR(CL_INVALID_GLOBAL_WORK_SIZE);
CL_ERR_TO_STR(CL_INVALID_PROPERTY);
CL_ERR_TO_STR(CL_INVALID_IMAGE_DESCRIPTOR);
CL_ERR_TO_STR(CL_INVALID_COMPILER_OPTIONS);
CL_ERR_TO_STR(CL_INVALID_LINKER_OPTIONS);
CL_ERR_TO_STR(CL_INVALID_DEVICE_PARTITION_COUNT);
case -69: return "CL_INVALID_PIPE_SIZE";
case -70: return "CL_INVALID_DEVICE_QUEUE";
case -71: return "CL_INVALID_SPEC_ID";
case -72: return "CL_MAX_SIZE_RESTRICTION_EXCEEDED";
case -1002: return "CL_INVALID_D3D10_DEVICE_KHR";
case -1003: return "CL_INVALID_D3D10_RESOURCE_KHR";
case -1004: return "CL_D3D10_RESOURCE_ALREADY_ACQUIRED_KHR";
case -1005: return "CL_D3D10_RESOURCE_NOT_ACQUIRED_KHR";
case -1006: return "CL_INVALID_D3D11_DEVICE_KHR";
case -1007: return "CL_INVALID_D3D11_RESOURCE_KHR";
case -1008: return "CL_D3D11_RESOURCE_ALREADY_ACQUIRED_KHR";
case -1009: return "CL_D3D11_RESOURCE_NOT_ACQUIRED_KHR";
case -1010: return "CL_INVALID_DX9_MEDIA_ADAPTER_KHR";
case -1011: return "CL_INVALID_DX9_MEDIA_SURFACE_KHR";
case -1012: return "CL_DX9_MEDIA_SURFACE_ALREADY_ACQUIRED_KHR";
case -1013: return "CL_DX9_MEDIA_SURFACE_NOT_ACQUIRED_KHR";
case -1093: return "CL_INVALID_EGL_OBJECT_KHR";
case -1092: return "CL_EGL_RESOURCE_NOT_ACQUIRED_KHR";
case -1001: return "CL_PLATFORM_NOT_FOUND_KHR";
case -1057: return "CL_DEVICE_PARTITION_FAILED_EXT";
case -1058: return "CL_INVALID_PARTITION_COUNT_EXT";
case -1059: return "CL_INVALID_PARTITION_NAME_EXT";
case -1094: return "CL_INVALID_ACCELERATOR_INTEL";
case -1095: return "CL_INVALID_ACCELERATOR_TYPE_INTEL";
case -1096: return "CL_INVALID_ACCELERATOR_DESCRIPTOR_INTEL";
case -1097: return "CL_ACCELERATOR_TYPE_NOT_SUPPORTED_INTEL";
case -1000: return "CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR";
case -1098: return "CL_INVALID_VA_API_MEDIA_ADAPTER_INTEL";
case -1099: return "CL_INVALID_VA_API_MEDIA_SURFACE_INTEL";
case -1100: return "CL_VA_API_MEDIA_SURFACE_ALREADY_ACQUIRED_INTEL";
case -1101: return "CL_VA_API_MEDIA_SURFACE_NOT_ACQUIRED_INTEL";
default: return "CL_UNKNOWN_ERROR";
}
}

View File

@@ -1,29 +0,0 @@
#pragma once
#ifdef __APPLE__
#include <OpenCL/cl.h>
#else
#include <CL/cl.h>
#endif
#include <string>
#define CL_CHECK(_expr) \
do { \
assert(CL_SUCCESS == (_expr)); \
} while (0)
#define CL_CHECK_ERR(_expr) \
({ \
cl_int err = CL_INVALID_VALUE; \
__typeof__(_expr) _ret = _expr; \
assert(_ret&& err == CL_SUCCESS); \
_ret; \
})
cl_device_id cl_get_device_id(cl_device_type device_type);
cl_context cl_create_context(cl_device_id device_id);
cl_program cl_program_from_source(cl_context ctx, cl_device_id device_id, const std::string& src, const char* args = nullptr);
cl_program cl_program_from_binary(cl_context ctx, cl_device_id device_id, const uint8_t* binary, size_t length, const char* args = nullptr);
cl_program cl_program_from_file(cl_context ctx, cl_device_id device_id, const char* path, const char* args);
const char* cl_get_error_string(int err);

View File

@@ -1,6 +1,7 @@
import numpy as np
class Conversions:
# conversions
class CV:
# Speed
MPH_TO_KPH = 1.609344
KPH_TO_MPH = 1. / MPH_TO_KPH
@@ -17,3 +18,6 @@ class Conversions:
# Mass
LB_TO_KG = 0.453592
ACCELERATION_DUE_TO_GRAVITY = 9.81 # m/s^2

View File

@@ -1,9 +0,0 @@
# remove all keys that end in DEPRECATED
def strip_deprecated_keys(d):
for k in list(d.keys()):
if isinstance(k, str):
if k.endswith('DEPRECATED'):
d.pop(k)
elif isinstance(d[k], dict):
strip_deprecated_keys(d[k])
return d

View File

@@ -1,8 +0,0 @@
import platform
def suffix():
if platform.system() == "Darwin":
return ".dylib"
else:
return ".so"

37
common/file_chunker.py Normal file
View File

@@ -0,0 +1,37 @@
import math
import os
from pathlib import Path
CHUNK_SIZE = 45 * 1024 * 1024 # 45MB, under GitHub's 50MB limit
def get_chunk_name(name, idx, num_chunks):
return f"{name}.chunk{idx+1:02d}of{num_chunks:02d}"
def get_manifest_path(name):
return f"{name}.chunkmanifest"
def get_chunk_paths(path, file_size):
num_chunks = math.ceil(file_size / CHUNK_SIZE)
return [get_manifest_path(path)] + [get_chunk_name(path, i, num_chunks) for i in range(num_chunks)]
def chunk_file(path, targets):
manifest_path, *chunk_paths = targets
with open(path, 'rb') as f:
data = f.read()
actual_num_chunks = max(1, math.ceil(len(data) / CHUNK_SIZE))
assert len(chunk_paths) >= actual_num_chunks, f"Allowed {len(chunk_paths)} chunks but needs at least {actual_num_chunks}, for path {path}"
for i, chunk_path in enumerate(chunk_paths):
with open(chunk_path, 'wb') as f:
f.write(data[i * CHUNK_SIZE:(i + 1) * CHUNK_SIZE])
Path(manifest_path).write_text(str(len(chunk_paths)))
os.remove(path)
def read_file_chunked(path):
manifest_path = get_manifest_path(path)
if os.path.isfile(manifest_path):
num_chunks = int(Path(manifest_path).read_text().strip())
return b''.join(Path(get_chunk_name(path, i, num_chunks)).read_bytes() for i in range(num_chunks))
if os.path.isfile(path):
return Path(path).read_bytes()
raise FileNotFoundError(path)

View File

@@ -1,37 +0,0 @@
import os
import tempfile
import contextlib
class CallbackReader:
"""Wraps a file, but overrides the read method to also
call a callback function with the number of bytes read so far."""
def __init__(self, f, callback, *args):
self.f = f
self.callback = callback
self.cb_args = args
self.total_read = 0
def __getattr__(self, attr):
return getattr(self.f, attr)
def read(self, *args, **kwargs):
chunk = self.f.read(*args, **kwargs)
self.total_read += len(chunk)
self.callback(*self.cb_args, self.total_read)
return chunk
@contextlib.contextmanager
def atomic_write_in_dir(path: str, mode: str = 'w', buffering: int = -1, encoding: str = None, newline: str = None,
overwrite: bool = False):
"""Write to a file atomically using a temporary file in the same directory as the destination file."""
dir_name = os.path.dirname(path)
if not overwrite and os.path.exists(path):
raise FileExistsError(f"File '{path}' already exists. To overwrite it, set 'overwrite' to True.")
with tempfile.NamedTemporaryFile(mode=mode, buffering=buffering, encoding=encoding, newline=newline, dir=dir_name, delete=False) as tmp_file:
yield tmp_file
tmp_file_name = tmp_file.name
os.replace(tmp_file_name, path)

View File

@@ -1,5 +1,4 @@
class FirstOrderFilter:
# first order filter
def __init__(self, x0, rc, dt, initialized=True):
self.x = x0
self.dt = dt
@@ -16,3 +15,20 @@ class FirstOrderFilter:
self.initialized = True
self.x = x
return self.x
class BounceFilter(FirstOrderFilter):
def __init__(self, x0, rc, dt, initialized=True, bounce=2):
self.velocity = FirstOrderFilter(0.0, 0.15, dt)
self.bounce = bounce
super().__init__(x0, rc, dt, initialized)
def update(self, x):
super().update(x)
scale = self.dt / (1.0 / 60.0) # tuned at 60 fps
self.velocity.x += (x - self.x) * self.bounce * scale * self.dt
self.velocity.update(0.0)
if abs(self.velocity.x) < 1e-3:
self.velocity.x = 0.0
self.x += self.velocity.x
return self.x

View File

@@ -1,30 +1,30 @@
from functools import cache
import subprocess
from openpilot.common.run import run_cmd, run_cmd_default
from openpilot.common.utils import run_cmd, run_cmd_default
@cache
def get_commit(cwd: str = None, branch: str = "HEAD") -> str:
def get_commit(cwd: str | None = None, branch: str = "HEAD") -> str:
return run_cmd_default(["git", "rev-parse", branch], cwd=cwd)
@cache
def get_commit_date(cwd: str = None, commit: str = "HEAD") -> str:
def get_commit_date(cwd: str | None = None, commit: str = "HEAD") -> str:
return run_cmd_default(["git", "show", "--no-patch", "--format='%ct %ci'", commit], cwd=cwd)
@cache
def get_short_branch(cwd: str = None) -> str:
def get_short_branch(cwd: str | None = None) -> str:
return run_cmd_default(["git", "rev-parse", "--abbrev-ref", "HEAD"], cwd=cwd)
@cache
def get_branch(cwd: str = None) -> str:
def get_branch(cwd: str | None = None) -> str:
return run_cmd_default(["git", "rev-parse", "--abbrev-ref", "--symbolic-full-name", "@{u}"], cwd=cwd)
@cache
def get_origin(cwd: str = None) -> str:
def get_origin(cwd: str | None = None) -> str:
try:
local_branch = run_cmd(["git", "name-rev", "--name-only", "HEAD"], cwd=cwd)
tracking_remote = run_cmd(["git", "config", "branch." + local_branch + ".remote"], cwd=cwd)
@@ -34,7 +34,7 @@ def get_origin(cwd: str = None) -> str:
@cache
def get_normalized_origin(cwd: str = None) -> str:
def get_normalized_origin(cwd: str | None = None) -> str:
return get_origin(cwd) \
.replace("git@", "", 1) \
.replace(".git", "", 1) \

View File

@@ -1,84 +0,0 @@
#include "common/gpio.h"
#include <string>
#ifdef __APPLE__
int gpio_init(int pin_nr, bool output) {
return 0;
}
int gpio_set(int pin_nr, bool high) {
return 0;
}
int gpiochip_get_ro_value_fd(const char* consumer_label, int gpiochiop_id, int pin_nr) {
return 0;
}
#else
#include <fcntl.h>
#include <unistd.h>
#include <cstring>
#include <linux/gpio.h>
#include <sys/ioctl.h>
#include "common/util.h"
#include "common/swaglog.h"
int gpio_init(int pin_nr, bool output) {
char pin_dir_path[50];
int pin_dir_path_len = snprintf(pin_dir_path, sizeof(pin_dir_path),
"/sys/class/gpio/gpio%d/direction", pin_nr);
if (pin_dir_path_len <= 0) {
return -1;
}
const char *value = output ? "out" : "in";
return util::write_file(pin_dir_path, (void*)value, strlen(value));
}
int gpio_set(int pin_nr, bool high) {
char pin_val_path[50];
int pin_val_path_len = snprintf(pin_val_path, sizeof(pin_val_path),
"/sys/class/gpio/gpio%d/value", pin_nr);
if (pin_val_path_len <= 0) {
return -1;
}
return util::write_file(pin_val_path, (void*)(high ? "1" : "0"), 1);
}
int gpiochip_get_ro_value_fd(const char* consumer_label, int gpiochiop_id, int pin_nr) {
// Assumed that all interrupt pins are unexported and rights are given to
// read from gpiochip0.
std::string gpiochip_path = "/dev/gpiochip" + std::to_string(gpiochiop_id);
int fd = open(gpiochip_path.c_str(), O_RDONLY);
if (fd < 0) {
LOGE("Error opening gpiochip0 fd");
return -1;
}
// Setup event
struct gpioevent_request rq;
rq.lineoffset = pin_nr;
rq.handleflags = GPIOHANDLE_REQUEST_INPUT;
/* Requesting both edges as the data ready pulse from the lsm6ds sensor is
very short(75us) and is mostly detected as falling edge instead of rising.
So if it is detected as rising the following falling edge is skipped. */
rq.eventflags = GPIOEVENT_REQUEST_BOTH_EDGES;
strncpy(rq.consumer_label, consumer_label, std::size(rq.consumer_label) - 1);
int ret = util::safe_ioctl(fd, GPIO_GET_LINEEVENT_IOCTL, &rq);
if (ret == -1) {
LOGE("Unable to get line event from ioctl : %s", strerror(errno));
close(fd);
return -1;
}
close(fd);
return rq.fd;
}
#endif

View File

@@ -1,33 +0,0 @@
#pragma once
// Pin definitions
#ifdef QCOM2
#define GPIO_HUB_RST_N 30
#define GPIO_UBLOX_RST_N 32
#define GPIO_UBLOX_SAFEBOOT_N 33
#define GPIO_GNSS_PWR_EN 34 /* SCHEMATIC LABEL: GPIO_UBLOX_PWR_EN */
#define GPIO_STM_RST_N 124
#define GPIO_STM_BOOT0 134
#define GPIO_BMX_ACCEL_INT 21
#define GPIO_BMX_GYRO_INT 23
#define GPIO_BMX_MAGN_INT 87
#define GPIO_LSM_INT 84
#define GPIOCHIP_INT 0
#else
#define GPIO_HUB_RST_N 0
#define GPIO_UBLOX_RST_N 0
#define GPIO_UBLOX_SAFEBOOT_N 0
#define GPIO_GNSS_PWR_EN 0 /* SCHEMATIC LABEL: GPIO_UBLOX_PWR_EN */
#define GPIO_STM_RST_N 0
#define GPIO_STM_BOOT0 0
#define GPIO_BMX_ACCEL_INT 0
#define GPIO_BMX_GYRO_INT 0
#define GPIO_BMX_MAGN_INT 0
#define GPIO_LSM_INT 0
#define GPIOCHIP_INT 0
#endif
int gpio_init(int pin_nr, bool output);
int gpio_set(int pin_nr, bool high);
int gpiochip_get_ro_value_fd(const char* consumer_label, int gpiochiop_id, int pin_nr);

View File

@@ -1,4 +1,6 @@
import os
import fcntl
import ctypes
from functools import cache
def gpio_init(pin: int, output: bool) -> None:
@@ -52,3 +54,36 @@ def get_irqs_for_action(action: str) -> list[str]:
if irq.isdigit() and action in get_irq_action(irq):
ret.append(irq)
return ret
# *** gpiochip ***
class gpioevent_data(ctypes.Structure):
_fields_ = [
("timestamp", ctypes.c_uint64),
("id", ctypes.c_uint32),
]
class gpioevent_request(ctypes.Structure):
_fields_ = [
("lineoffset", ctypes.c_uint32),
("handleflags", ctypes.c_uint32),
("eventflags", ctypes.c_uint32),
("label", ctypes.c_char * 32),
("fd", ctypes.c_int)
]
def gpiochip_get_ro_value_fd(label: str, gpiochip_id: int, pin: int) -> int:
GPIOEVENT_REQUEST_BOTH_EDGES = 0x3
GPIOHANDLE_REQUEST_INPUT = 0x1
GPIO_GET_LINEEVENT_IOCTL = 0xc030b404
rq = gpioevent_request()
rq.lineoffset = pin
rq.handleflags = GPIOHANDLE_REQUEST_INPUT
rq.eventflags = GPIOEVENT_REQUEST_BOTH_EDGES
rq.label = label.encode('utf-8')[:31] + b'\0'
fd = os.open(f"/dev/gpiochip{gpiochip_id}", os.O_RDONLY)
fcntl.ioctl(fd, GPIO_GET_LINEEVENT_IOCTL, rq)
os.close(fd)
return int(rq.fd)

View File

@@ -1,92 +0,0 @@
#include "common/i2c.h"
#include <fcntl.h>
#include <sys/ioctl.h>
#include <unistd.h>
#include <cassert>
#include <cstdio>
#include <stdexcept>
#include "common/swaglog.h"
#include "common/util.h"
#define UNUSED(x) (void)(x)
#ifdef QCOM2
// TODO: decide if we want to install libi2c-dev everywhere
extern "C" {
#include <linux/i2c-dev.h>
#include <i2c/smbus.h>
}
I2CBus::I2CBus(uint8_t bus_id) {
char bus_name[20];
snprintf(bus_name, 20, "/dev/i2c-%d", bus_id);
i2c_fd = HANDLE_EINTR(open(bus_name, O_RDWR));
if (i2c_fd < 0) {
throw std::runtime_error("Failed to open I2C bus");
}
}
I2CBus::~I2CBus() {
if (i2c_fd >= 0) {
close(i2c_fd);
}
}
int I2CBus::read_register(uint8_t device_address, uint register_address, uint8_t *buffer, uint8_t len) {
std::lock_guard lk(m);
int ret = 0;
ret = HANDLE_EINTR(ioctl(i2c_fd, I2C_SLAVE, device_address));
if (ret < 0) { goto fail; }
ret = i2c_smbus_read_i2c_block_data(i2c_fd, register_address, len, buffer);
if ((ret < 0) || (ret != len)) { goto fail; }
fail:
return ret;
}
int I2CBus::set_register(uint8_t device_address, uint register_address, uint8_t data) {
std::lock_guard lk(m);
int ret = 0;
ret = HANDLE_EINTR(ioctl(i2c_fd, I2C_SLAVE, device_address));
if (ret < 0) { goto fail; }
ret = i2c_smbus_write_byte_data(i2c_fd, register_address, data);
if (ret < 0) { goto fail; }
fail:
return ret;
}
#else
I2CBus::I2CBus(uint8_t bus_id) {
UNUSED(bus_id);
i2c_fd = -1;
}
I2CBus::~I2CBus() {}
int I2CBus::read_register(uint8_t device_address, uint register_address, uint8_t *buffer, uint8_t len) {
UNUSED(device_address);
UNUSED(register_address);
UNUSED(buffer);
UNUSED(len);
return -1;
}
int I2CBus::set_register(uint8_t device_address, uint register_address, uint8_t data) {
UNUSED(device_address);
UNUSED(register_address);
UNUSED(data);
return -1;
}
#endif

View File

@@ -1,19 +0,0 @@
#pragma once
#include <cstdint>
#include <mutex>
#include <sys/types.h>
class I2CBus {
private:
int i2c_fd;
std::mutex m;
public:
I2CBus(uint8_t bus_id);
~I2CBus();
int read_register(uint8_t device_address, uint register_address, uint8_t *buffer, uint8_t len);
int set_register(uint8_t device_address, uint register_address, uint8_t data);
};

81
common/i2c.py Normal file
View File

@@ -0,0 +1,81 @@
import os
import fcntl
import ctypes
# I2C constants from /usr/include/linux/i2c-dev.h
I2C_SLAVE = 0x0703
I2C_SLAVE_FORCE = 0x0706
I2C_SMBUS = 0x0720
# SMBus transfer types
I2C_SMBUS_READ = 1
I2C_SMBUS_WRITE = 0
I2C_SMBUS_BYTE_DATA = 2
I2C_SMBUS_I2C_BLOCK_DATA = 8
I2C_SMBUS_BLOCK_MAX = 32
class _I2cSmbusData(ctypes.Union):
_fields_ = [
("byte", ctypes.c_uint8),
("word", ctypes.c_uint16),
("block", ctypes.c_uint8 * (I2C_SMBUS_BLOCK_MAX + 2)),
]
class _I2cSmbusIoctlData(ctypes.Structure):
_fields_ = [
("read_write", ctypes.c_uint8),
("command", ctypes.c_uint8),
("size", ctypes.c_uint32),
("data", ctypes.POINTER(_I2cSmbusData)),
]
class SMBus:
def __init__(self, bus: int):
self._fd = os.open(f'/dev/i2c-{bus}', os.O_RDWR)
def __enter__(self) -> 'SMBus':
return self
def __exit__(self, *args) -> None:
self.close()
def close(self) -> None:
if hasattr(self, '_fd') and self._fd >= 0:
os.close(self._fd)
self._fd = -1
def _set_address(self, addr: int, force: bool = False) -> None:
ioctl_arg = I2C_SLAVE_FORCE if force else I2C_SLAVE
fcntl.ioctl(self._fd, ioctl_arg, addr)
def _smbus_access(self, read_write: int, command: int, size: int, data: _I2cSmbusData) -> None:
ioctl_data = _I2cSmbusIoctlData(read_write, command, size, ctypes.pointer(data))
fcntl.ioctl(self._fd, I2C_SMBUS, ioctl_data)
def read_byte_data(self, addr: int, register: int, force: bool = False) -> int:
self._set_address(addr, force)
data = _I2cSmbusData()
self._smbus_access(I2C_SMBUS_READ, register, I2C_SMBUS_BYTE_DATA, data)
return int(data.byte)
def write_byte_data(self, addr: int, register: int, value: int, force: bool = False) -> None:
self._set_address(addr, force)
data = _I2cSmbusData()
data.byte = value & 0xFF
self._smbus_access(I2C_SMBUS_WRITE, register, I2C_SMBUS_BYTE_DATA, data)
def read_i2c_block_data(self, addr: int, register: int, length: int, force: bool = False) -> list[int]:
self._set_address(addr, force)
if not (0 <= length <= I2C_SMBUS_BLOCK_MAX):
raise ValueError(f"length must be 0..{I2C_SMBUS_BLOCK_MAX}")
data = _I2cSmbusData()
data.block[0] = length
self._smbus_access(I2C_SMBUS_READ, register, I2C_SMBUS_I2C_BLOCK_DATA, data)
read_len = int(data.block[0]) or length
read_len = min(read_len, length)
return [int(b) for b in data.block[1 : read_len + 1]]

View File

@@ -8,6 +8,7 @@ import uuid
import socket
import logging
import traceback
import numpy as np
from threading import local
from collections import OrderedDict
from contextlib import contextmanager
@@ -15,6 +16,8 @@ from contextlib import contextmanager
LOG_TIMESTAMPS = "LOG_TIMESTAMPS" in os.environ
def json_handler(obj):
if isinstance(obj, np.bool_):
return bool(obj)
# if isinstance(obj, (datetime.date, datetime.time)):
# return obj.isoformat()
return repr(obj)
@@ -196,7 +199,6 @@ class SwagLogger(logging.Logger):
co = f.f_code
filename = os.path.normcase(co.co_filename)
# TODO: is this pylint exception correct?
if filename == _srcfile:
f = f.f_back
continue

View File

@@ -1,85 +0,0 @@
#pragma once
typedef struct vec3 {
float v[3];
} vec3;
typedef struct vec4 {
float v[4];
} vec4;
typedef struct mat3 {
float v[3*3];
} mat3;
typedef struct mat4 {
float v[4*4];
} mat4;
static inline mat3 matmul3(const mat3 &a, const mat3 &b) {
mat3 ret = {{0.0}};
for (int r=0; r<3; r++) {
for (int c=0; c<3; c++) {
float v = 0.0;
for (int k=0; k<3; k++) {
v += a.v[r*3+k] * b.v[k*3+c];
}
ret.v[r*3+c] = v;
}
}
return ret;
}
static inline vec3 matvecmul3(const mat3 &a, const vec3 &b) {
vec3 ret = {{0.0}};
for (int r=0; r<3; r++) {
for (int c=0; c<3; c++) {
ret.v[r] += a.v[r*3+c] * b.v[c];
}
}
return ret;
}
static inline mat4 matmul(const mat4 &a, const mat4 &b) {
mat4 ret = {{0.0}};
for (int r=0; r<4; r++) {
for (int c=0; c<4; c++) {
float v = 0.0;
for (int k=0; k<4; k++) {
v += a.v[r*4+k] * b.v[k*4+c];
}
ret.v[r*4+c] = v;
}
}
return ret;
}
static inline vec4 matvecmul(const mat4 &a, const vec4 &b) {
vec4 ret = {{0.0}};
for (int r=0; r<4; r++) {
for (int c=0; c<4; c++) {
ret.v[r] += a.v[r*4+c] * b.v[c];
}
}
return ret;
}
// scales the input and output space of a transformation matrix
// that assumes pixel-center origin.
static inline mat3 transform_scale_buffer(const mat3 &in, float s) {
// in_pt = ( transform(out_pt/s + 0.5) - 0.5) * s
mat3 transform_out = {{
1.0f/s, 0.0f, 0.5f,
0.0f, 1.0f/s, 0.5f,
0.0f, 0.0f, 1.0f,
}};
mat3 transform_in = {{
s, 0.0f, -0.5f*s,
0.0f, s, -0.5f*s,
0.0f, 0.0f, 1.0f,
}};
return matmul3(transform_in, matmul3(in, transform_out));
}

View File

@@ -1,19 +0,0 @@
def clip(x, lo, hi):
return max(lo, min(hi, x))
def interp(x, xp, fp):
N = len(xp)
def get_interp(xv):
hi = 0
while hi < N and xv > xp[hi]:
hi += 1
low = hi - 1
return fp[-1] if hi == N and xv > xp[low] else (
fp[0] if hi == 0 else
(xv - xp[low]) * (fp[hi] - fp[low]) / (xp[hi] - xp[low]) + fp[low])
return [get_interp(v) for v in x] if hasattr(x, '__iter__') else get_interp(x)
def mean(x):
return sum(x) / len(x)

47
common/parameterized.py Normal file
View File

@@ -0,0 +1,47 @@
import sys
import pytest
import inspect
class parameterized:
@staticmethod
def expand(cases):
cases = list(cases)
if not cases:
return lambda func: pytest.mark.skip("no parameterized cases")(func)
def decorator(func):
params = [p for p in inspect.signature(func).parameters if p != 'self']
normalized = [c if isinstance(c, tuple) else (c,) for c in cases]
# Infer arg count from first case so extra params (e.g. from @given) are left untouched
expand_params = params[: len(normalized[0])]
if len(expand_params) == 1:
return pytest.mark.parametrize(expand_params[0], [c[0] for c in normalized])(func)
return pytest.mark.parametrize(', '.join(expand_params), normalized)(func)
return decorator
def parameterized_class(attrs, input_list=None):
if isinstance(attrs, list) and (not attrs or isinstance(attrs[0], dict)):
params_list = attrs
else:
assert input_list is not None
attr_names = (attrs,) if isinstance(attrs, str) else tuple(attrs)
params_list = [dict(zip(attr_names, v if isinstance(v, (tuple, list)) else (v,), strict=False)) for v in input_list]
def decorator(cls):
globs = sys._getframe(1).f_globals
for i, params in enumerate(params_list):
name = f"{cls.__name__}_{i}"
new_cls = type(name, (cls,), dict(params))
new_cls.__module__ = cls.__module__
new_cls.__test__ = True # override inherited False so pytest collects this subclass
globs[name] = new_cls
# Don't collect the un-parametrised base, but return it so outer decorators
# (e.g. @pytest.mark.skip) land on it and propagate to subclasses via MRO.
cls.__test__ = False
return cls
return decorator

View File

@@ -8,6 +8,7 @@
#include <csignal>
#include <unordered_map>
#include "common/params_keys.h"
#include "common/queue.h"
#include "common/swaglog.h"
#include "common/util.h"
@@ -87,121 +88,6 @@ private:
int fd_ = -1;
};
std::unordered_map<std::string, uint32_t> keys = {
{"AccessToken", CLEAR_ON_MANAGER_START | DONT_LOG},
{"AlwaysOnDM", PERSISTENT},
{"ApiCache_Device", PERSISTENT},
{"AssistNowToken", PERSISTENT},
{"AthenadPid", PERSISTENT},
{"AthenadUploadQueue", PERSISTENT},
{"AthenadRecentlyViewedRoutes", PERSISTENT},
{"BootCount", PERSISTENT},
{"CalibrationParams", PERSISTENT},
{"CameraDebugExpGain", CLEAR_ON_MANAGER_START},
{"CameraDebugExpTime", CLEAR_ON_MANAGER_START},
{"CarBatteryCapacity", PERSISTENT},
{"CarParams", CLEAR_ON_MANAGER_START | CLEAR_ON_ONROAD_TRANSITION},
{"CarParamsCache", CLEAR_ON_MANAGER_START},
{"CarParamsPersistent", PERSISTENT},
{"CarParamsPrevRoute", PERSISTENT},
{"CompletedTrainingVersion", PERSISTENT},
{"ControlsReady", CLEAR_ON_MANAGER_START | CLEAR_ON_ONROAD_TRANSITION},
{"CurrentBootlog", PERSISTENT},
{"CurrentRoute", CLEAR_ON_MANAGER_START | CLEAR_ON_ONROAD_TRANSITION},
{"DisableLogging", CLEAR_ON_MANAGER_START | CLEAR_ON_ONROAD_TRANSITION},
{"DisablePowerDown", PERSISTENT},
{"DisableUpdates", PERSISTENT},
{"DisengageOnAccelerator", PERSISTENT},
{"DongleId", PERSISTENT},
{"DoReboot", CLEAR_ON_MANAGER_START},
{"DoShutdown", CLEAR_ON_MANAGER_START},
{"DoUninstall", CLEAR_ON_MANAGER_START},
{"ExperimentalLongitudinalEnabled", PERSISTENT | DEVELOPMENT_ONLY},
{"ExperimentalMode", PERSISTENT},
{"ExperimentalModeConfirmed", PERSISTENT},
{"FirmwareQueryDone", CLEAR_ON_MANAGER_START | CLEAR_ON_ONROAD_TRANSITION},
{"ForcePowerDown", PERSISTENT},
{"GitBranch", PERSISTENT},
{"GitCommit", PERSISTENT},
{"GitCommitDate", PERSISTENT},
{"GitDiff", PERSISTENT},
{"GithubSshKeys", PERSISTENT},
{"GithubUsername", PERSISTENT},
{"GitRemote", PERSISTENT},
{"GsmApn", PERSISTENT},
{"GsmMetered", PERSISTENT},
{"GsmRoaming", PERSISTENT},
{"HardwareSerial", PERSISTENT},
{"HasAcceptedTerms", PERSISTENT},
{"IMEI", PERSISTENT},
{"InstallDate", PERSISTENT},
{"IsDriverViewEnabled", CLEAR_ON_MANAGER_START},
{"IsEngaged", PERSISTENT},
{"IsLdwEnabled", PERSISTENT},
{"IsMetric", PERSISTENT},
{"IsOffroad", CLEAR_ON_MANAGER_START},
{"IsOnroad", PERSISTENT},
{"IsRhdDetected", PERSISTENT},
{"IsReleaseBranch", CLEAR_ON_MANAGER_START},
{"IsTakingSnapshot", CLEAR_ON_MANAGER_START},
{"IsTestedBranch", CLEAR_ON_MANAGER_START},
{"JoystickDebugMode", CLEAR_ON_MANAGER_START | CLEAR_ON_OFFROAD_TRANSITION},
{"LanguageSetting", PERSISTENT},
{"LastAthenaPingTime", CLEAR_ON_MANAGER_START},
{"LastGPSPosition", PERSISTENT},
{"LastManagerExitReason", CLEAR_ON_MANAGER_START},
{"LastOffroadStatusPacket", CLEAR_ON_MANAGER_START | CLEAR_ON_OFFROAD_TRANSITION},
{"LastPowerDropDetected", CLEAR_ON_MANAGER_START},
{"LastUpdateException", CLEAR_ON_MANAGER_START},
{"LastUpdateTime", PERSISTENT},
{"LiveParameters", PERSISTENT},
{"LiveTorqueParameters", PERSISTENT | DONT_LOG},
{"LocationFilterInitialState", PERSISTENT},
{"LongitudinalManeuverMode", CLEAR_ON_MANAGER_START | CLEAR_ON_OFFROAD_TRANSITION},
{"LongitudinalPersonality", PERSISTENT},
{"NetworkMetered", PERSISTENT},
{"ObdMultiplexingChanged", CLEAR_ON_MANAGER_START | CLEAR_ON_ONROAD_TRANSITION},
{"ObdMultiplexingEnabled", CLEAR_ON_MANAGER_START | CLEAR_ON_ONROAD_TRANSITION},
{"Offroad_BadNvme", CLEAR_ON_MANAGER_START},
{"Offroad_CarUnrecognized", CLEAR_ON_MANAGER_START | CLEAR_ON_ONROAD_TRANSITION},
{"Offroad_ConnectivityNeeded", CLEAR_ON_MANAGER_START},
{"Offroad_ConnectivityNeededPrompt", CLEAR_ON_MANAGER_START},
{"Offroad_IsTakingSnapshot", CLEAR_ON_MANAGER_START},
{"Offroad_NeosUpdate", CLEAR_ON_MANAGER_START},
{"Offroad_NoFirmware", CLEAR_ON_MANAGER_START | CLEAR_ON_ONROAD_TRANSITION},
{"Offroad_Recalibration", CLEAR_ON_MANAGER_START | CLEAR_ON_ONROAD_TRANSITION},
{"Offroad_StorageMissing", CLEAR_ON_MANAGER_START},
{"Offroad_TemperatureTooHigh", CLEAR_ON_MANAGER_START},
{"Offroad_UnofficialHardware", CLEAR_ON_MANAGER_START},
{"Offroad_UpdateFailed", CLEAR_ON_MANAGER_START},
{"OpenpilotEnabledToggle", PERSISTENT},
{"PandaHeartbeatLost", CLEAR_ON_MANAGER_START | CLEAR_ON_OFFROAD_TRANSITION},
{"PandaSomResetTriggered", CLEAR_ON_MANAGER_START | CLEAR_ON_OFFROAD_TRANSITION},
{"PandaSignatures", CLEAR_ON_MANAGER_START},
{"PrimeType", PERSISTENT},
{"RecordFront", PERSISTENT},
{"RecordFrontLock", PERSISTENT}, // for the internal fleet
{"SecOCKey", PERSISTENT | DONT_LOG},
{"RouteCount", PERSISTENT},
{"SnoozeUpdate", CLEAR_ON_MANAGER_START | CLEAR_ON_OFFROAD_TRANSITION},
{"SshEnabled", PERSISTENT},
{"TermsVersion", PERSISTENT},
{"TrainingVersion", PERSISTENT},
{"UbloxAvailable", PERSISTENT},
{"UpdateAvailable", CLEAR_ON_MANAGER_START | CLEAR_ON_ONROAD_TRANSITION},
{"UpdateFailedCount", CLEAR_ON_MANAGER_START},
{"UpdaterAvailableBranches", PERSISTENT},
{"UpdaterCurrentDescription", CLEAR_ON_MANAGER_START},
{"UpdaterCurrentReleaseNotes", CLEAR_ON_MANAGER_START},
{"UpdaterFetchAvailable", CLEAR_ON_MANAGER_START},
{"UpdaterNewDescription", CLEAR_ON_MANAGER_START},
{"UpdaterNewReleaseNotes", CLEAR_ON_MANAGER_START},
{"UpdaterState", CLEAR_ON_MANAGER_START},
{"UpdaterTargetBranch", CLEAR_ON_MANAGER_START},
{"UpdaterLastFetchTime", PERSISTENT},
{"Version", PERSISTENT},
};
} // namespace
@@ -229,8 +115,16 @@ bool Params::checkKey(const std::string &key) {
return keys.find(key) != keys.end();
}
ParamKeyFlag Params::getKeyFlag(const std::string &key) {
return static_cast<ParamKeyFlag>(keys[key].flags);
}
ParamKeyType Params::getKeyType(const std::string &key) {
return static_cast<ParamKeyType>(keys[key]);
return keys[key].type;
}
std::optional<std::string> Params::getKeyDefaultValue(const std::string &key) {
return keys[key].default_value;
}
int Params::put(const char* key, const char* value, size_t value_size) {
@@ -254,7 +148,7 @@ int Params::put(const char* key, const char* value, size_t value_size) {
}
// fsync to force persist the changes.
if ((result = fsync(tmp_fd)) < 0) break;
if ((result = HANDLE_EINTR(fsync(tmp_fd))) < 0) break;
FileLock file_lock(params_path + "/.lock");
@@ -309,17 +203,17 @@ std::map<std::string, std::string> Params::readAll() {
return util::read_files_in_dir(getParamPath());
}
void Params::clearAll(ParamKeyType key_type) {
void Params::clearAll(ParamKeyFlag key_flag) {
FileLock file_lock(params_path + "/.lock");
// 1) delete params of key_type
// 1) delete params of key_flag
// 2) delete files that are not defined in the keys.
if (DIR *d = opendir(getParamPath().c_str())) {
struct dirent *de = NULL;
while ((de = readdir(d))) {
if (de->d_type != DT_DIR) {
auto it = keys.find(de->d_name);
if (it == keys.end() || (it->second & key_type)) {
if (it == keys.end() || (it->second.flags & key_flag)) {
unlink(getParamPath(de->d_name).c_str());
}
}

View File

@@ -2,6 +2,7 @@
#include <future>
#include <map>
#include <optional>
#include <string>
#include <tuple>
#include <utility>
@@ -9,16 +10,33 @@
#include "common/queue.h"
enum ParamKeyType {
enum ParamKeyFlag {
PERSISTENT = 0x02,
CLEAR_ON_MANAGER_START = 0x04,
CLEAR_ON_ONROAD_TRANSITION = 0x08,
CLEAR_ON_OFFROAD_TRANSITION = 0x10,
DONT_LOG = 0x20,
DEVELOPMENT_ONLY = 0x40,
CLEAR_ON_IGNITION_ON = 0x80,
ALL = 0xFFFFFFFF
};
enum ParamKeyType {
STRING = 0, // must be utf-8 decodable
BOOL = 1,
INT = 2,
FLOAT = 3,
TIME = 4, // ISO 8601
JSON = 5,
BYTES = 6
};
struct ParamKeyAttributes {
uint32_t flags;
ParamKeyType type;
std::optional<std::string> default_value = std::nullopt;
};
class Params {
public:
explicit Params(const std::string &path = {});
@@ -29,14 +47,16 @@ public:
std::vector<std::string> allKeys() const;
bool checkKey(const std::string &key);
ParamKeyFlag getKeyFlag(const std::string &key);
ParamKeyType getKeyType(const std::string &key);
std::optional<std::string> getKeyDefaultValue(const std::string &key);
inline std::string getParamPath(const std::string &key = {}) {
return params_path + params_prefix + (key.empty() ? "" : "/" + key);
}
// Delete a value
int remove(const std::string &key);
void clearAll(ParamKeyType type);
void clearAll(ParamKeyFlag flag);
// helpers for reading values
std::string get(const std::string &key, bool block = false);

View File

@@ -1,5 +1,6 @@
from openpilot.common.params_pyx import Params, ParamKeyType, UnknownKeyName
from openpilot.common.params_pyx import Params, ParamKeyFlag, ParamKeyType, UnknownKeyName
assert Params
assert ParamKeyFlag
assert ParamKeyType
assert UnknownKeyName

133
common/params_keys.h Normal file
View File

@@ -0,0 +1,133 @@
#pragma once
#include <string>
#include <unordered_map>
#include "cereal/gen/cpp/log.capnp.h"
inline static std::unordered_map<std::string, ParamKeyAttributes> keys = {
{"AccessToken", {CLEAR_ON_MANAGER_START | DONT_LOG, STRING}},
{"AdbEnabled", {PERSISTENT, BOOL}},
{"AlwaysOnDM", {PERSISTENT, BOOL}},
{"ApiCache_Device", {PERSISTENT, STRING}},
{"ApiCache_FirehoseStats", {PERSISTENT, JSON}},
{"AssistNowToken", {PERSISTENT, STRING}},
{"AthenadPid", {PERSISTENT, INT}},
{"AthenadUploadQueue", {PERSISTENT, JSON}},
{"AthenadRecentlyViewedRoutes", {PERSISTENT, STRING}},
{"BootCount", {PERSISTENT, INT}},
{"CalibrationParams", {PERSISTENT, BYTES}},
{"CameraDebugExpGain", {CLEAR_ON_MANAGER_START, STRING}},
{"CameraDebugExpTime", {CLEAR_ON_MANAGER_START, STRING}},
{"CarBatteryCapacity", {PERSISTENT, INT}},
{"CarParams", {CLEAR_ON_MANAGER_START | CLEAR_ON_ONROAD_TRANSITION, BYTES}},
{"CarParamsCache", {CLEAR_ON_MANAGER_START, BYTES}},
{"CarParamsPersistent", {PERSISTENT, BYTES}},
{"CarParamsPrevRoute", {PERSISTENT, BYTES}},
{"CompletedTrainingVersion", {PERSISTENT, STRING, "0"}},
{"ControlsReady", {CLEAR_ON_MANAGER_START | CLEAR_ON_ONROAD_TRANSITION, BOOL}},
{"CurrentBootlog", {PERSISTENT, STRING}},
{"CurrentRoute", {CLEAR_ON_MANAGER_START | CLEAR_ON_ONROAD_TRANSITION, STRING}},
{"DisableLogging", {CLEAR_ON_MANAGER_START | CLEAR_ON_ONROAD_TRANSITION, BOOL}},
{"DisablePowerDown", {PERSISTENT, BOOL}},
{"DisableUpdates", {PERSISTENT, BOOL}},
{"DisengageOnAccelerator", {PERSISTENT, BOOL, "0"}},
{"DongleId", {PERSISTENT, STRING}},
{"DoReboot", {CLEAR_ON_MANAGER_START, BOOL}},
{"DoShutdown", {CLEAR_ON_MANAGER_START, BOOL}},
{"DoUninstall", {CLEAR_ON_MANAGER_START, BOOL}},
{"DriverTooDistracted", {CLEAR_ON_MANAGER_START | CLEAR_ON_IGNITION_ON, BOOL}},
{"AlphaLongitudinalEnabled", {PERSISTENT | DEVELOPMENT_ONLY, BOOL}},
{"ExperimentalMode", {PERSISTENT, BOOL}},
{"ExperimentalModeConfirmed", {PERSISTENT, BOOL}},
{"FirmwareQueryDone", {CLEAR_ON_MANAGER_START | CLEAR_ON_ONROAD_TRANSITION, BOOL}},
{"ForcePowerDown", {PERSISTENT, BOOL}},
{"GitBranch", {PERSISTENT, STRING}},
{"GitCommit", {PERSISTENT, STRING}},
{"GitCommitDate", {PERSISTENT, STRING}},
{"GitDiff", {PERSISTENT, STRING}},
{"GithubSshKeys", {PERSISTENT, STRING}},
{"GithubUsername", {PERSISTENT, STRING}},
{"GitRemote", {PERSISTENT, STRING}},
{"GsmApn", {PERSISTENT, STRING}},
{"GsmMetered", {PERSISTENT, BOOL, "1"}},
{"GsmRoaming", {PERSISTENT, BOOL}},
{"HardwareSerial", {PERSISTENT, STRING}},
{"HasAcceptedTerms", {PERSISTENT, STRING, "0"}},
{"InstallDate", {PERSISTENT, TIME}},
{"IsDriverViewEnabled", {CLEAR_ON_MANAGER_START, BOOL}},
{"IsEngaged", {PERSISTENT, BOOL}},
{"IsLdwEnabled", {PERSISTENT, BOOL}},
{"IsMetric", {PERSISTENT, BOOL}},
{"IsOffroad", {CLEAR_ON_MANAGER_START, BOOL}},
{"IsOnroad", {PERSISTENT, BOOL}},
{"IsRhdDetected", {PERSISTENT, BOOL}},
{"IsReleaseBranch", {CLEAR_ON_MANAGER_START, BOOL}},
{"IsTakingSnapshot", {CLEAR_ON_MANAGER_START, BOOL}},
{"IsTestedBranch", {CLEAR_ON_MANAGER_START, BOOL}},
{"JoystickDebugMode", {CLEAR_ON_MANAGER_START | CLEAR_ON_OFFROAD_TRANSITION, BOOL}},
{"LanguageSetting", {PERSISTENT, STRING, "en"}},
{"LastAthenaPingTime", {CLEAR_ON_MANAGER_START, INT}},
{"LastGPSPosition", {PERSISTENT, STRING}},
{"LastManagerExitReason", {CLEAR_ON_MANAGER_START, STRING}},
{"LastOffroadStatusPacket", {CLEAR_ON_MANAGER_START | CLEAR_ON_OFFROAD_TRANSITION, JSON}},
{"LastAgnosPowerMonitorShutdown", {CLEAR_ON_MANAGER_START, STRING}},
{"LastPowerDropDetected", {CLEAR_ON_MANAGER_START, STRING}},
{"LastUpdateException", {CLEAR_ON_MANAGER_START, STRING}},
{"LastUpdateRouteCount", {PERSISTENT, INT, "0"}},
{"LastUpdateTime", {PERSISTENT, TIME}},
{"LastUpdateUptimeOnroad", {PERSISTENT, FLOAT, "0.0"}},
{"LiveDelay", {PERSISTENT, BYTES}},
{"LiveParameters", {PERSISTENT, JSON}},
{"LiveParametersV2", {PERSISTENT, BYTES}},
{"LiveTorqueParameters", {PERSISTENT | DONT_LOG, BYTES}},
{"LocationFilterInitialState", {PERSISTENT, BYTES}},
{"LateralManeuverMode", {CLEAR_ON_MANAGER_START | CLEAR_ON_OFFROAD_TRANSITION, BOOL}},
{"LongitudinalManeuverMode", {CLEAR_ON_MANAGER_START | CLEAR_ON_OFFROAD_TRANSITION, BOOL}},
{"LongitudinalPersonality", {PERSISTENT, INT, std::to_string(static_cast<int>(cereal::LongitudinalPersonality::STANDARD))}},
{"NetworkMetered", {PERSISTENT, BOOL}},
{"ObdMultiplexingChanged", {CLEAR_ON_MANAGER_START | CLEAR_ON_ONROAD_TRANSITION, BOOL}},
{"ObdMultiplexingEnabled", {CLEAR_ON_MANAGER_START | CLEAR_ON_ONROAD_TRANSITION, BOOL}},
{"Offroad_CarUnrecognized", {CLEAR_ON_MANAGER_START | CLEAR_ON_ONROAD_TRANSITION, JSON}},
{"Offroad_ConnectivityNeeded", {CLEAR_ON_MANAGER_START, JSON}},
{"Offroad_ConnectivityNeededPrompt", {CLEAR_ON_MANAGER_START, JSON}},
{"Offroad_ExcessiveActuation", {PERSISTENT, JSON}},
{"Offroad_IsTakingSnapshot", {CLEAR_ON_MANAGER_START, JSON}},
{"Offroad_NeosUpdate", {CLEAR_ON_MANAGER_START, JSON}},
{"Offroad_NoFirmware", {CLEAR_ON_MANAGER_START | CLEAR_ON_ONROAD_TRANSITION, JSON}},
{"Offroad_Recalibration", {CLEAR_ON_MANAGER_START | CLEAR_ON_ONROAD_TRANSITION, JSON}},
{"Offroad_TemperatureTooHigh", {CLEAR_ON_MANAGER_START, JSON}},
{"Offroad_UnregisteredHardware", {CLEAR_ON_MANAGER_START, JSON}},
{"Offroad_UpdateFailed", {CLEAR_ON_MANAGER_START, JSON}},
{"Offroad_DriverMonitoringUncertain", {CLEAR_ON_MANAGER_START | CLEAR_ON_ONROAD_TRANSITION, JSON}},
{"OnroadCycleRequested", {CLEAR_ON_MANAGER_START, BOOL}},
{"OpenpilotEnabledToggle", {PERSISTENT, BOOL, "1"}},
{"PandaHeartbeatLost", {CLEAR_ON_MANAGER_START | CLEAR_ON_OFFROAD_TRANSITION, BOOL}},
{"PandaSomResetTriggered", {CLEAR_ON_MANAGER_START | CLEAR_ON_OFFROAD_TRANSITION, BOOL}},
{"PandaSignatures", {CLEAR_ON_MANAGER_START, BYTES}},
{"PrimeType", {PERSISTENT, INT}},
{"RecordAudio", {PERSISTENT, BOOL}},
{"RecordAudioFeedback", {PERSISTENT, BOOL, "0"}},
{"RecordFront", {PERSISTENT, BOOL}},
{"RecordFrontLock", {PERSISTENT, BOOL}}, // for the internal fleet
{"SecOCKey", {PERSISTENT | DONT_LOG, STRING}},
{"ShowDebugInfo", {PERSISTENT, BOOL}},
{"RouteCount", {PERSISTENT, INT, "0"}},
{"SnoozeUpdate", {CLEAR_ON_MANAGER_START | CLEAR_ON_OFFROAD_TRANSITION, BOOL}},
{"SshEnabled", {PERSISTENT, BOOL}},
{"UbloxAvailable", {PERSISTENT, BOOL}},
{"UpdateAvailable", {CLEAR_ON_MANAGER_START | CLEAR_ON_ONROAD_TRANSITION, BOOL}},
{"UpdateFailedCount", {CLEAR_ON_MANAGER_START, INT}},
{"UpdaterAvailableBranches", {PERSISTENT, STRING}},
{"UpdaterCurrentDescription", {CLEAR_ON_MANAGER_START, STRING}},
{"UpdaterCurrentReleaseNotes", {CLEAR_ON_MANAGER_START, BYTES}},
{"UpdaterFetchAvailable", {CLEAR_ON_MANAGER_START, BOOL}},
{"UpdaterNewDescription", {CLEAR_ON_MANAGER_START, STRING}},
{"UpdaterNewReleaseNotes", {CLEAR_ON_MANAGER_START, BYTES}},
{"UpdaterState", {CLEAR_ON_MANAGER_START, STRING}},
{"UpdaterTargetBranch", {CLEAR_ON_MANAGER_START, STRING}},
{"UpdaterLastFetchTime", {PERSISTENT, TIME}},
{"UptimeOffroad", {PERSISTENT, FLOAT, "0.0"}},
{"UptimeOnroad", {PERSISTENT, FLOAT, "0.0"}},
{"Version", {PERSISTENT, STRING}},
};

View File

@@ -1,18 +1,34 @@
# distutils: language = c++
# cython: language_level = 3
import builtins
import datetime
import json
from libcpp cimport bool
from libcpp.string cimport string
from libcpp.vector cimport vector
from libcpp.optional cimport optional
from openpilot.common.swaglog import cloudlog
cdef extern from "common/params.h":
cpdef enum ParamKeyType:
cpdef enum ParamKeyFlag:
PERSISTENT
CLEAR_ON_MANAGER_START
CLEAR_ON_ONROAD_TRANSITION
CLEAR_ON_OFFROAD_TRANSITION
DEVELOPMENT_ONLY
CLEAR_ON_IGNITION_ON
ALL
cpdef enum ParamKeyType:
STRING
BOOL
INT
FLOAT
TIME
JSON
BYTES
cdef cppclass c_Params "Params":
c_Params(string) except + nogil
string get(string, bool) nogil
@@ -23,10 +39,31 @@ cdef extern from "common/params.h":
void putBoolNonBlocking(string, bool) nogil
int putBool(string, bool) nogil
bool checkKey(string) nogil
ParamKeyType getKeyType(string) nogil
optional[string] getKeyDefaultValue(string) nogil
string getParamPath(string) nogil
void clearAll(ParamKeyType)
void clearAll(ParamKeyFlag)
vector[string] allKeys()
PYTHON_2_CPP = {
(str, STRING): lambda v: v,
(builtins.bool, BOOL): lambda v: "1" if v else "0",
(int, INT): str,
(float, FLOAT): str,
(datetime.datetime, TIME): lambda v: v.isoformat(),
(dict, JSON): json.dumps,
(list, JSON): json.dumps,
(bytes, BYTES): lambda v: v,
}
CPP_2_PYTHON = {
STRING: lambda v: v.decode("utf-8"),
BOOL: lambda v: v == b"1",
INT: int,
FLOAT: float,
TIME: lambda v: datetime.datetime.fromisoformat(v.decode("utf-8")),
JSON: json.loads,
BYTES: lambda v: v,
}
def ensure_bytes(v):
return v.encode() if isinstance(v, str) else v
@@ -50,8 +87,8 @@ cdef class Params:
def __dealloc__(self):
del self.p
def clear_all(self, tx_type=ParamKeyType.ALL):
self.p.clearAll(tx_type)
def clear_all(self, tx_flag=ParamKeyFlag.ALL):
self.p.clearAll(tx_flag)
def check_key(self, key):
key = ensure_bytes(key)
@@ -59,21 +96,38 @@ cdef class Params:
raise UnknownKeyName(key)
return key
def get(self, key, bool block=False, encoding=None):
def python2cpp(self, proposed_type, expected_type, value, key):
cast = PYTHON_2_CPP.get((proposed_type, expected_type))
if cast:
return cast(value)
raise TypeError(f"Type mismatch while writing param {key}: {proposed_type=} {expected_type=} {value=}")
def _cpp2python(self, t, value, default, key):
if value is None:
return None
try:
return CPP_2_PYTHON[t](value)
except (KeyError, TypeError, ValueError):
cloudlog.warning(f"Failed to cast param {key} with {value=} from type {t=}")
return self._cpp2python(t, default, None, key)
def get(self, key, bool block=False, bool return_default=False):
cdef string k = self.check_key(key)
cdef ParamKeyType t = self.p.getKeyType(k)
cdef optional[string] default = self.p.getKeyDefaultValue(k)
cdef string val
with nogil:
val = self.p.get(k, block)
default_val = (default.value() if default.has_value() else None) if return_default else None
if val == b"":
if block:
# If we got no value while running in blocked mode
# it means we got an interrupt while waiting
raise KeyboardInterrupt
else:
return None
return val if encoding is None else val.decode(encoding)
return self._cpp2python(t, default_val, None, key)
return self._cpp2python(t, val, default_val, key)
def get_bool(self, key, bool block=False):
cdef string k = self.check_key(key)
@@ -82,6 +136,11 @@ cdef class Params:
r = self.p.getBool(k, block)
return r
def _put_cast(self, key, dat):
cdef string k = self.check_key(key)
cdef ParamKeyType t = self.p.getKeyType(k)
return ensure_bytes(self.python2cpp(type(dat), t, dat, key))
def put(self, key, dat):
"""
Warning: This function blocks until the param is written to disk!
@@ -90,7 +149,7 @@ cdef class Params:
in general try to avoid writing params as much as possible.
"""
cdef string k = self.check_key(key)
cdef string dat_bytes = ensure_bytes(dat)
cdef string dat_bytes = self._put_cast(key, dat)
with nogil:
self.p.put(k, dat_bytes)
@@ -101,7 +160,7 @@ cdef class Params:
def put_nonblocking(self, key, dat):
cdef string k = self.check_key(key)
cdef string dat_bytes = ensure_bytes(dat)
cdef string dat_bytes = self._put_cast(key, dat)
with nogil:
self.p.putNonBlocking(k, dat_bytes)
@@ -119,5 +178,19 @@ cdef class Params:
cdef string key_bytes = ensure_bytes(key)
return self.p.getParamPath(key_bytes).decode("utf-8")
def get_type(self, key):
return self.p.getKeyType(self.check_key(key))
def all_keys(self):
return self.p.allKeys()
def get_default_value(self, key):
cdef string k = self.check_key(key)
cdef ParamKeyType t = self.p.getKeyType(k)
cdef optional[string] default = self.p.getKeyDefaultValue(k)
return self._cpp2python(t, default.value(), None, key) if default.has_value() else None
def cpp2python(self, key, value):
cdef string k = self.check_key(key)
cdef ParamKeyType t = self.p.getKeyType(k)
return self._cpp2python(t, value, None, key)

View File

@@ -1,46 +1,30 @@
import numpy as np
from numbers import Number
from openpilot.common.numpy_fast import clip, interp
class PIDController:
def __init__(self, k_p, k_i, k_f=0., k_d=0., pos_limit=1e308, neg_limit=-1e308, rate=100):
self._k_p = k_p
self._k_i = k_i
self._k_d = k_d
self.k_f = k_f # feedforward gain
if isinstance(self._k_p, Number):
self._k_p = [[0], [self._k_p]]
if isinstance(self._k_i, Number):
self._k_i = [[0], [self._k_i]]
if isinstance(self._k_d, Number):
self._k_d = [[0], [self._k_d]]
def __init__(self, k_p, k_i, k_d=0., pos_limit=1e308, neg_limit=-1e308, rate=100):
self._k_p: list[list[float]] = [[0], [k_p]] if isinstance(k_p, Number) else k_p
self._k_i: list[list[float]] = [[0], [k_i]] if isinstance(k_i, Number) else k_i
self._k_d: list[list[float]] = [[0], [k_d]] if isinstance(k_d, Number) else k_d
self.pos_limit = pos_limit
self.neg_limit = neg_limit
self.set_limits(pos_limit, neg_limit)
self.i_unwind_rate = 0.3 / rate
self.i_rate = 1.0 / rate
self.i_dt = 1.0 / rate
self.speed = 0.0
self.reset()
@property
def k_p(self):
return interp(self.speed, self._k_p[0], self._k_p[1])
return np.interp(self.speed, self._k_p[0], self._k_p[1])
@property
def k_i(self):
return interp(self.speed, self._k_i[0], self._k_i[1])
return np.interp(self.speed, self._k_i[0], self._k_i[1])
@property
def k_d(self):
return interp(self.speed, self._k_d[0], self._k_d[1])
@property
def error_integral(self):
return self.i/self.k_i
return np.interp(self.speed, self._k_d[0], self._k_d[1])
def reset(self):
self.p = 0.0
@@ -49,25 +33,25 @@ class PIDController:
self.f = 0.0
self.control = 0
def update(self, error, error_rate=0.0, speed=0.0, override=False, feedforward=0., freeze_integrator=False):
def set_limits(self, pos_limit, neg_limit):
self.pos_limit = pos_limit
self.neg_limit = neg_limit
def update(self, error, error_rate=0.0, speed=0.0, feedforward=0., freeze_integrator=False):
self.speed = speed
self.p = self.k_p * float(error)
self.d = self.k_d * error_rate
self.f = feedforward
self.p = float(error) * self.k_p
self.f = feedforward * self.k_f
self.d = error_rate * self.k_d
if not freeze_integrator:
i = self.i + self.k_i * self.i_dt * error
if override:
self.i -= self.i_unwind_rate * float(np.sign(self.i))
else:
if not freeze_integrator:
self.i = self.i + error * self.k_i * self.i_rate
# Clip i to prevent exceeding control limits
control_no_i = self.p + self.d + self.f
control_no_i = clip(control_no_i, self.neg_limit, self.pos_limit)
self.i = clip(self.i, self.neg_limit - control_no_i, self.pos_limit - control_no_i)
# Don't allow windup if already clipping
test_control = self.p + i + self.d + self.f
i_upperbound = self.i if test_control > self.pos_limit else self.pos_limit
i_lowerbound = self.i if test_control < self.neg_limit else self.neg_limit
self.i = np.clip(i, i_lowerbound, i_upperbound)
control = self.p + self.i + self.d + self.f
self.control = clip(control, self.neg_limit, self.pos_limit)
self.control = np.clip(control, self.neg_limit, self.pos_limit)
return self.control

View File

@@ -13,7 +13,11 @@ public:
if (prefix.empty()) {
prefix = util::random_string(15);
}
msgq_path = Path::shm_path() + "/" + prefix;
#ifdef __APPLE__
msgq_path = "/tmp/msgq_" + prefix;
#else
msgq_path = "/dev/shm/msgq_" + prefix;
#endif
bool ret = util::create_directories(msgq_path, 0777);
assert(ret);
setenv("OPENPILOT_PREFIX", prefix.c_str(), 1);
@@ -23,14 +27,14 @@ public:
auto param_path = Params().getParamPath();
if (util::file_exists(param_path)) {
std::string real_path = util::readlink(param_path);
system(util::string_format("rm %s -rf", real_path.c_str()).c_str());
util::check_system(util::string_format("rm %s -rf", real_path.c_str()));
unlink(param_path.c_str());
}
if (getenv("COMMA_CACHE") == nullptr) {
system(util::string_format("rm %s -rf", Path::download_cache_root().c_str()).c_str());
util::check_system(util::string_format("rm %s -rf", Path::download_cache_root().c_str()));
}
system(util::string_format("rm %s -rf", Path::comma_home().c_str()).c_str());
system(util::string_format("rm %s -rf", msgq_path.c_str()).c_str());
util::check_system(util::string_format("rm %s -rf", Path::comma_home().c_str()));
util::check_system(util::string_format("rm %s -rf", msgq_path.c_str()));
unsetenv("OPENPILOT_PREFIX");
}

View File

@@ -1,4 +1,5 @@
import os
import platform
import shutil
import uuid
@@ -9,20 +10,20 @@ from openpilot.system.hardware.hw import Paths
from openpilot.system.hardware.hw import DEFAULT_DOWNLOAD_CACHE_ROOT
class OpenpilotPrefix:
def __init__(self, prefix: str = None, clean_dirs_on_exit: bool = True, shared_download_cache: bool = False):
def __init__(self, prefix: str | None = None, create_dirs_on_enter: bool = True, clean_dirs_on_exit: bool = True, shared_download_cache: bool = False):
self.prefix = prefix if prefix else str(uuid.uuid4().hex[0:15])
self.msgq_path = os.path.join(Paths.shm_path(), self.prefix)
shm_path = "/tmp" if platform.system() == "Darwin" else "/dev/shm"
self.msgq_path = os.path.join(shm_path, "msgq_" + self.prefix)
self.create_dirs_on_enter = create_dirs_on_enter
self.clean_dirs_on_exit = clean_dirs_on_exit
self.shared_download_cache = shared_download_cache
def __enter__(self):
self.original_prefix = os.environ.get('OPENPILOT_PREFIX', None)
os.environ['OPENPILOT_PREFIX'] = self.prefix
try:
os.mkdir(self.msgq_path)
except FileExistsError:
pass
os.makedirs(Paths.log_root(), exist_ok=True)
if self.create_dirs_on_enter:
self.create_dirs()
if self.shared_download_cache:
os.environ["COMMA_CACHE"] = DEFAULT_DOWNLOAD_CACHE_ROOT
@@ -40,6 +41,13 @@ class OpenpilotPrefix:
pass
return False
def create_dirs(self):
try:
os.mkdir(self.msgq_path)
except FileExistsError:
pass
os.makedirs(Paths.log_root(), exist_ok=True)
def clean_dirs(self):
symlink_path = Params().get_param_path()
if os.path.exists(symlink_path):

View File

@@ -6,9 +6,9 @@
#include "common/timing.h"
#include "common/util.h"
RateKeeper::RateKeeper(const std::string &name, float rate, float print_delay_threshold)
: name(name),
print_delay_threshold(std::max(0.f, print_delay_threshold)) {
RateKeeper::RateKeeper(const std::string &name_, float rate, float print_delay_threshold_)
: name(name_),
print_delay_threshold(std::max(0.f, print_delay_threshold_)) {
interval = 1 / rate;
last_monitor_time = seconds_since_boot();
next_frame_time = last_monitor_time + interval;

View File

@@ -1,11 +1,12 @@
"""Utilities for reading real time clocks and keeping soft real time constraints."""
import gc
import os
import sys
import time
from collections import deque
from setproctitle import getproctitle
from openpilot.common.utils import MovingAverage
from openpilot.system.hardware import PC
@@ -27,19 +28,15 @@ class Priority:
CTRL_HIGH = 53
def set_realtime_priority(level: int) -> None:
if not PC:
os.sched_setscheduler(0, os.SCHED_FIFO, os.sched_param(level))
def set_core_affinity(cores: list[int]) -> None:
if not PC:
if sys.platform == 'linux' and not PC:
os.sched_setaffinity(0, cores)
def config_realtime_process(cores: int | list[int], priority: int) -> None:
gc.disable()
set_realtime_priority(priority)
if sys.platform == 'linux' and not PC:
os.sched_setscheduler(0, os.SCHED_FIFO, os.sched_param(priority))
c = cores if isinstance(cores, list) else [cores, ]
set_core_affinity(c)
@@ -52,10 +49,12 @@ class Ratekeeper:
self._frame = 0
self._remaining = 0.0
self._process_name = getproctitle()
self._dts = deque([self._interval], maxlen=100)
self._last_monitor_time = -1.
self._next_frame_time = -1.
self.avg_dt = MovingAverage(100)
self.avg_dt.add_value(self._interval)
@property
def frame(self) -> int:
return self._frame
@@ -66,9 +65,8 @@ class Ratekeeper:
@property
def lagging(self) -> bool:
avg_dt = sum(self._dts) / len(self._dts)
expected_dt = self._interval * (1 / 0.9)
return avg_dt > expected_dt
return self.avg_dt.get_average() > expected_dt
# Maintain loop rate by calling this at the end of each loop
def keep_time(self) -> bool:
@@ -85,7 +83,7 @@ class Ratekeeper:
prev = self._last_monitor_time
self._last_monitor_time = time.monotonic()
self._dts.append(self._last_monitor_time - prev)
self.avg_dt.add_value(self._last_monitor_time - prev)
lagged = False
remaining = self._next_frame_time - time.monotonic()

View File

@@ -1,30 +0,0 @@
import time
import functools
from openpilot.common.swaglog import cloudlog
def retry(attempts=3, delay=1.0, ignore_failure=False):
def decorator(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
for _ in range(attempts):
try:
return func(*args, **kwargs)
except Exception:
cloudlog.exception(f"{func.__name__} failed, trying again")
time.sleep(delay)
if ignore_failure:
cloudlog.error(f"{func.__name__} failed after retry")
else:
raise Exception(f"{func.__name__} failed after retry")
return wrapper
return decorator
if __name__ == "__main__":
@retry(attempts=10)
def abc():
raise ValueError("abc failed :(")
abc()

View File

@@ -1,13 +0,0 @@
import subprocess
def run_cmd(cmd: list[str], cwd=None, env=None) -> str:
return subprocess.check_output(cmd, encoding='utf8', cwd=cwd, env=env).strip()
def run_cmd_default(cmd: list[str], default: str = "", cwd=None, env=None) -> str:
try:
return run_cmd(cmd, cwd=cwd, env=env)
except subprocess.CalledProcessError:
return default

4
common/spinner.py Normal file → Executable file
View File

@@ -6,9 +6,9 @@ from openpilot.common.basedir import BASEDIR
class Spinner:
def __init__(self):
try:
self.spinner_proc = subprocess.Popen(["./spinner"],
self.spinner_proc = subprocess.Popen(["./spinner.py"],
stdin=subprocess.PIPE,
cwd=os.path.join(BASEDIR, "selfdrive", "ui"),
cwd=os.path.join(BASEDIR, "system", "ui"),
close_fds=True)
except OSError:
self.spinner_proc = None

View File

@@ -26,6 +26,9 @@ public:
zmq_setsockopt(sock, ZMQ_LINGER, &timeout, sizeof(timeout));
zmq_connect(sock, Path::swaglog_ipc().c_str());
// workaround for https://github.com/dropbox/json11/issues/38
setlocale(LC_NUMERIC, "C");
print_level = CLOUDLOG_WARNING;
if (const char* print_lvl = getenv("LOGPRINT")) {
if (strcmp(print_lvl, "debug") == 0) {

View File

@@ -1,7 +1,7 @@
import os
from uuid import uuid4
from openpilot.common.file_helpers import atomic_write_in_dir
from openpilot.common.utils import atomic_write
class TestFileHelpers:
@@ -15,5 +15,5 @@ class TestFileHelpers:
assert f.read() == "test"
os.remove(path)
def test_atomic_write_in_dir(self):
self.run_atomic_write_func(atomic_write_in_dir)
def test_atomic_write(self):
self.run_atomic_write_func(atomic_write)

View File

@@ -1,21 +0,0 @@
import numpy as np
from openpilot.common.numpy_fast import interp
class TestInterp:
def test_correctness_controls(self):
_A_CRUISE_MIN_BP = np.asarray([0., 5., 10., 20., 40.])
_A_CRUISE_MIN_V = np.asarray([-1.0, -.8, -.67, -.5, -.30])
v_ego_arr = [-1, -1e-12, 0, 4, 5, 6, 7, 10, 11, 15.2, 20, 21, 39,
39.999999, 40, 41]
expected = np.interp(v_ego_arr, _A_CRUISE_MIN_BP, _A_CRUISE_MIN_V)
actual = interp(v_ego_arr, _A_CRUISE_MIN_BP, _A_CRUISE_MIN_V)
np.testing.assert_equal(actual, expected)
for v_ego in v_ego_arr:
expected = np.interp(v_ego, _A_CRUISE_MIN_BP, _A_CRUISE_MIN_V)
actual = interp(v_ego, _A_CRUISE_MIN_BP, _A_CRUISE_MIN_V)
np.testing.assert_equal(actual, expected)

View File

@@ -1,10 +1,11 @@
import pytest
import datetime
import os
import threading
import time
import uuid
from openpilot.common.params import Params, ParamKeyType, UnknownKeyName
from openpilot.common.params import Params, ParamKeyFlag, UnknownKeyName
class TestParams:
def setup_method(self):
@@ -12,7 +13,7 @@ class TestParams:
def test_params_put_and_get(self):
self.params.put("DongleId", "cb38263377b873ee")
assert self.params.get("DongleId") == b"cb38263377b873ee"
assert self.params.get("DongleId") == "cb38263377b873ee"
def test_params_non_ascii(self):
st = b"\xe1\x90\xff"
@@ -20,7 +21,7 @@ class TestParams:
assert self.params.get("CarParams") == st
def test_params_get_cleared_manager_start(self):
self.params.put("CarParams", "test")
self.params.put("CarParams", b"test")
self.params.put("DongleId", "cb38263377b873ee")
assert self.params.get("CarParams") == b"test"
@@ -29,24 +30,24 @@ class TestParams:
f.write("test")
assert os.path.isfile(undefined_param)
self.params.clear_all(ParamKeyType.CLEAR_ON_MANAGER_START)
self.params.clear_all(ParamKeyFlag.CLEAR_ON_MANAGER_START)
assert self.params.get("CarParams") is None
assert self.params.get("DongleId") is not None
assert not os.path.isfile(undefined_param)
def test_params_two_things(self):
self.params.put("DongleId", "bob")
self.params.put("AthenadPid", "123")
assert self.params.get("DongleId") == b"bob"
assert self.params.get("AthenadPid") == b"123"
self.params.put("AthenadPid", 123)
assert self.params.get("DongleId") == "bob"
assert self.params.get("AthenadPid") == 123
def test_params_get_block(self):
def _delayed_writer():
time.sleep(0.1)
self.params.put("CarParams", "test")
self.params.put("CarParams", b"test")
threading.Thread(target=_delayed_writer).start()
assert self.params.get("CarParams") is None
assert self.params.get("CarParams", True) == b"test"
assert self.params.get("CarParams", block=True) == b"test"
def test_params_unknown_key_fails(self):
with pytest.raises(UnknownKeyName):
@@ -76,17 +77,17 @@ class TestParams:
self.params.put_bool("IsMetric", False)
assert not self.params.get_bool("IsMetric")
self.params.put("IsMetric", "1")
self.params.put("IsMetric", True)
assert self.params.get_bool("IsMetric")
self.params.put("IsMetric", "0")
self.params.put("IsMetric", False)
assert not self.params.get_bool("IsMetric")
def test_put_non_blocking_with_get_block(self):
q = Params()
def _delayed_writer():
time.sleep(0.1)
Params().put_nonblocking("CarParams", "test")
Params().put_nonblocking("CarParams", b"test")
threading.Thread(target=_delayed_writer).start()
assert q.get("CarParams") is None
assert q.get("CarParams", True) == b"test"
@@ -107,3 +108,34 @@ class TestParams:
assert len(keys) > 20
assert len(keys) == len(set(keys))
assert b"CarParams" in keys
def test_params_default_value(self):
self.params.remove("LanguageSetting")
self.params.remove("LongitudinalPersonality")
self.params.remove("LiveParameters")
assert self.params.get("LanguageSetting") is None
assert self.params.get("LanguageSetting", return_default=False) is None
assert isinstance(self.params.get("LanguageSetting", return_default=True), str)
assert isinstance(self.params.get("LongitudinalPersonality", return_default=True), int)
assert self.params.get("LiveParameters") is None
assert self.params.get("LiveParameters", return_default=True) is None
def test_params_get_type(self):
# json
self.params.put("ApiCache_FirehoseStats", {"a": 0})
assert self.params.get("ApiCache_FirehoseStats") == {"a": 0}
# int
self.params.put("BootCount", 1441)
assert self.params.get("BootCount") == 1441
# bool
self.params.put("AdbEnabled", True)
assert self.params.get("AdbEnabled")
assert isinstance(self.params.get("AdbEnabled"), bool)
# time
now = datetime.datetime.now(datetime.UTC)
self.params.put("InstallDate", now)
assert self.params.get("InstallDate") == now

Some files were not shown because too many files have changed in this diff Show More