Compare commits

..

2 Commits

Author SHA1 Message Date
eFini 58811ffdeb Update CHANGELOGS.md 2023-02-08 13:07:53 +08:00
Dragonpilot Team 811fd5086f dragonpilot v2023.02.08 for EON/C2
version: dragonpilot v2023.02.08 release for EON/C2
date: 2023-02-08T05:01:31
dp-dev(priv2) beta2 commit: f770882b7f
2023-02-08 05:04:53 +00:00
438 changed files with 106221 additions and 11675 deletions
+3 -1
View File
@@ -50,6 +50,7 @@ selfdrive/sensord/_sensord
system/camerad/camerad system/camerad/camerad
system/camerad/test/ae_gray_test system/camerad/test/ae_gray_test
selfdrive/modeld/_modeld selfdrive/modeld/_modeld
selfdrive/modeld/_navmodeld
selfdrive/modeld/_dmonitoringmodeld selfdrive/modeld/_dmonitoringmodeld
/src/ /src/
@@ -82,4 +83,5 @@ build/
!**/.gitkeep !**/.gitkeep
*.po~ poetry.toml
selfdrive/ui/_ui_nonav
+188 -9
View File
@@ -1,13 +1,64 @@
dragonpilot 2022.09.07 - EON/C2 Release dragonpilot 2023.02.08 - EON/C2 Release
======================== ========================
* NEW: Synced to openpilot master 2022.08.29 commits. * Synced with openpilot master 2022.12.14 commits.
* Nuclear Grade driving model. * TWEAK: Ability to disable build-in NAV completely. (reduced CPU/memory load)
* TWEAK: Used fused location service on mapd. * NEW: Lateral Controller Selector
* TWEAK: Used fused location service on gpxd. * Ability to select between DEFAULT / PID / LQR / Torque Controller.
* NEW: Added back auto boot on C2. * NEW: Redesigned UI to match Comma's new UI/UX style.
* NEW: TOYOTA - Door auto lock/unlock. (Thanks to @AlexandreSato and @cydia2020) * NEW: Dynamic End-to-End can be turned on when lead car is going below x km/h. (Useful for stop and go traffic.)
* NEW: Added Camera based Driver Monitor back. (This may overheat your device). * NEW: Toggle to adapt Dynamic End-to-End to Following Dist. Mode.
* NEW: Added a toggle to turn on/off Camera based Driver Monitor. * NEW: Toggle to adapt Dynamic End-to-End to Accel Mode.
* NEW: Always On Lateral v2 (For Toyota/VAG/HKG/Honda).
* NEW: VAG - vw-spam-resume (Thanks to @jyoung8607)
* FIXED: Bugs in updated.
* FIXED: Issue in C2 fan control.
* TWEAK: Bug fixes and improvement.
dragonpilot 2022.11.09 - EON/C2 Release
========================
* Synced with openpilot master 2022.10.26 commits.
* COMMA: Torque controller used on all Toyota, Lexus, Hyundai, Kia, and Genesis models.
* NEW: Mapd Database selector menu to use mapd offline located in software. When installing Database it will take some time. It is not stuck just be patience run `tmux a` for more info. DO NOT RESTART When database is being installed.
* Ability to use MapD without internet connection.
* NEW: TOYOTA - Better TSS2 Long and DF tune. @cgw1968-5779
* NEW: MAZDA - Toggle to bypass dashcam mode.
* NEW: Added lanelines mode.
* Ability to adjust camera/path offset.
* NEW: Lateral Planner option.
* Ability to select 0.8.13, 0.8.16 and the latest/current planner.
* NEW: Offline OSM map database.
* NEW: Turn and BSM indicator. (turn = blink green, turn + bsm = blink yellow, bsm = solid yellow)
* TWEAK: Better Optimization for Vision Turn Controller with laneline mode.
* FIXED: When going offroad, the screen does not turn off. (w/ CP or w/ Battery)
* bug fix and improvement.
dragonpilot 2022.10.17 - EON/C2 Release
========================
* Synced with openpilot master 2022.09.22 commits.
* Live Torque Tune (Only available to certain vehicle models with op long.)
* NEW: TOYOTA - Added a TSS2 RAV4 Special PID Tune toggle.
* NEW: TOYOTA - Added a PRIUS 2017 Special Torque Tune toggle.
* NEW: TOYOTA - PRIUS_TSS2 (2020-2022) now uses torque as default and auto learns.
* NEW: Added a toggle to force enable torque controller. (may not work on some vehicles)
* NEW: Added a toggle to force enable live torque tune. (may not work on some vehicles)
* NEW: VAG - Added auto resume fix toggle.
* NEW: refactored dynamic follow. support all car with op long.
* NEW: New blinker and BSM indicators.
* NEW: Lead Info is now displaying both speed and distance.
* FIXED: Minor bug fixes and improvement.
dragonpilot 2022.09.22 - EON/C2 Release
========================
* Synced with openpilot master 2022.09.17 commits.
* e2e longitudinal toggle. (Extremely alpha feature)
* Deprecated SNPE lib and switched to tinygrad.
* NEW: Added back nav support on EON/C2.
* WARNING: DUE TO THE INTRODUCTION OF END TO END LONGITUDINAL FEATURE, FOLLOWING FEATURES HAS BEEN CHANGED:
* WIP: Dynamic Follow has been temporary removed for refactoring.
* WIP: Vision Turn Control has been temporary removed for refactoring.
* REMOVED: Camera offset has been removed permanently due to new e2e implementation.
* EON/C2 WILL NO LONGER RECEIVE ANY DRIVING/DRIVER MONITORING MODEL UPDATES.
dragonpilot 2022.08.29 - EON/C2 Release dragonpilot 2022.08.29 - EON/C2 Release
======================== ========================
@@ -38,6 +89,134 @@ dragonpilot 2022.07.29 - EON/C2 Release
* FIXED: Fixed Panda Flash/Recovery buttons. * FIXED: Fixed Panda Flash/Recovery buttons.
* FIXED: Included dp_patcher.py execution. * FIXED: Included dp_patcher.py execution.
dragonpilot 2023.02.08
=======================
* Synced with openpilot master 2022.12.13 commits.
* COMMA: New model, Toyota users can now configure SWAY settings.
* ADDED: Dashcam for comma 3. Store in /data/media/0/video/ (@neokii)
* ADDED: Better TSS2 Long and DF tune. @cgw1968-5779
* NEW: Toggle to adapt Dynamic End-to-End to Following Dist. Mode.
* NEW: Toggle to adapt Dynamic End-to-End to Accel Mode.
* Improvement: Dynamic end to end is much more reliable and smoother experience
* Bug fixes and improvement.
* Happy Holiday / New Years! Safe Travel, cya in 2023!
dragonpilot [2022.11.25]
=======================
* Synced with openpilot master 2022.11.25 commits.
* ADDED: Lateral Controller Selector.
- Ability to select between DEFAULT / PID / LQR / Torque Controller.
* ADDED: Redesigned UI to match Comma's new UI/UX style.
* ADDED: Dynamic End-to-End can be turned on when lead car is going below x km/h. (Useful for stop and go traffic.)
* ADDED: Toggle to adapt Dynamic End-to-End to Following Dist. Mode.
* ADDED: Toggle to adapt Dynamic End-to-End to Accel Mode.
* bug fix and improvement.
dragonpilot [2022.11.14]
=======================
* Synced with openpilot master 2022.11.14 commits.
* COMMA: New Model.
* COMMA: RAV4 TSS2 now uses PID.
* REFACTORED: Turning off nav will free up some system resource. QR for nav has been move to home button / sidebar.
* ADDED: 2 new toggle to turn on or off laneline / path and chevron.
* ADDED: When reversing it will now show DM cam.
dragonpilot [2022.11.01]
=======================
* Synced with openpilot master 2022.11.01 commits.
* COMMA: New Model.
* ADDED: Multi Lateral Planner: Ability to choose different Lateral Planner (0 = LATEST, 1 = 0.8.13, 2 = 0.8.16).
* READD: Toyota Prius ZSS support.
* Improvement: Better User experience for installing mapd database.
* Improvement: Turning on Lane Line will automatically will use DLP (Dynamic Lane Profile).
* bug fix and improvement
dragonpilot [2022.10.26]
=======================
* Synced with openpilot master 2022.10.26 commits.
* COMMA: Torque controller used on all Toyota, Lexus, Hyundai, Kia, and Genesis models.
* COMMA: New Model with much improved e2e long.
* ADDED: Mapd Database selector menu to use mapd offline located in software. When installing Database it will take some time. It is not stuck just be patience run `tmux a` for more info. DO NOT RESTART When database is being installed.
* ADDED: Better TSS2 Long and DF tune. @cgw1968-5779
* ADDED: Toggle to bypass dashcam mode for Mazda.
* Improvement: Dynamic End to End tune.
* Improvement: Better Optimization for Vision Turn Controller with laneline mode.
* bug fix and improvement
dragonpilot [2022.10.18]
=======================
* Synced with openpilot master 2022.10.18 commits.
* ADDED: Laneline toggle.
* ADDED: Turn and BSM indicator. (turn = green, turn + bsm = yellow, bsm = red)
* Improvement: Dynamic End to End tune.
* bug fix and improvement
dragonpilot [2022.10.04]
=======================
* Synced with openpilot master 2022.10.04 commits.
* ADDED: Dynamic End to End long. For more detail read the setting description.
* ADDED: Mpad now support's Stop Sign, Yield, Speed Bump, Sharp Curve. (For best experience map you area. https://www.openstreetmap.org/)
* ADDED: Chevron can display either distance or speed.
* ADDED: Toggles to force enabling torque control / torque tune for some vehicles
* Improvement: Dynamic Follow, Toyota Longitudinal and Decel tune.
* bug fix and improvement
dragonpilot [2022.09.27]
=======================
* Synced with openpilot master 2022.09.27 commits.
* ADDED: Always On Lateral toggle under dp-controls!
* ADDED: Live torque fix pr#25868
* ADDED: RAV4 and HIGHLANDER with sdsu can use follow distance button on the wheel.
* bug fix and improvement
dragonpilot [2022.09.19]
========================
* Synced with openpilot master 2022.09.19 commits.
* READD: refactored dyanmaic follow. support all car with op long.
* ADDED: PRIUS_TSS2 (2020-2022) now uses torque as default and auto learns.
* ADDED: Added a TSS2 RAV4 Special PID Tune toggle.
* ADDED: Added a PRIUS 2017 Special Torque Tune toggle.
* ADDED: Toggle to turn on and off Torque controller.
* ADDED: Toggle to turn on and off auto tune torque controller.
* ADDED: Vision Turn Controller.
* bug fix and improvement
dragonpilot [2022.09.09]
========================
* Synced with openpilot master 2022.09.09 commits.
* ADDED: us-west coast can now use mapd without data. See toggle description for more detail.
* READD: Temp check toggl e, max speed toggle and couple other UI toggles.
* bug fix and improvement
dragonpilot [2022.09.04]
========================
* Synced with openpilot master 2022.09.01 commits.
* Refactor: Dynamic Follow has been removerd temporary. Needs a refactor. (wip)
* ADDED: Auto Toyota door lock/unlock **only works on some car**
* READDED: Camera offset toggle.
* Improvement: gpxd now uses liveLocationKalman better performance.
* bug fix and improvement.
dragonpilot [2022.08.07]
========================
Synced to openpilot master 2022.08.07 commits.
NEW: Added back auto shutdown toggle.
NEW: Added back LQR tune toggle.
NEW: MAZDA - Ability to enable/disable below steer speed alert. (Thanks to @TheCrowd)
TWEAKED: Panda Recovery should kill boardd process first.
FIXED: Fixed stop working issue when mapd crashed.
dragonpilot 2022.07.27
========================
NEW: Synced to openpilot 2022.07.27 commits.
NEW: Included Mazda vehicles.
TWEAK: Only show road name bar when it's not empty.
TWEAK: Enlarged lead car distance text.
TWEAK: TOYOTA - Updated lowest speed override feature.
FIXED: Fixed Panda Flash/Recovery buttons.
FIXED: Included dp_patcher.py execution.
dragonpilot 2022.07.20 - EON/C2 Release dragonpilot 2022.07.20 - EON/C2 Release
======================== ========================
* FIXED: Included correct camera/path offset values for EON/C2. * FIXED: Included correct camera/path offset values for EON/C2.
+2 -2
View File
@@ -50,7 +50,7 @@ We have detailed instructions for [how to mount the device in a car](https://com
Running on PC Running on PC
------ ------
All of openpilot's services can run as normal on a PC, even without special hardware or a car. To develop or experiment with openpilot you can run openpilot on recorded or simulated data. All openpilot services can run as usual on a PC without requiring special hardware or a car. You can also run openpilot on recorded or simulated data to develop or experiment with openpilot.
With openpilot's tools, you can plot logs, replay drives, and watch the full-res camera streams. See [the tools README](tools/README.md) for more information. With openpilot's tools, you can plot logs, replay drives, and watch the full-res camera streams. See [the tools README](tools/README.md) for more information.
@@ -119,7 +119,7 @@ Directory Structure
├── debug # Tools to help you debug and do car ports ├── debug # Tools to help you debug and do car ports
├── locationd # Precise localization and vehicle parameter estimation ├── locationd # Precise localization and vehicle parameter estimation
├── loggerd # Logger and uploader of car data ├── loggerd # Logger and uploader of car data
├── manager # Deamon that starts/stops all other daemons as needed ├── manager # Daemon that starts/stops all other daemons as needed
├── modeld # Driving and monitoring model runners ├── modeld # Driving and monitoring model runners
├── monitoring # Daemon to determine driver attention ├── monitoring # Daemon to determine driver attention
├── navd # Turn-by-turn navigation ├── navd # Turn-by-turn navigation
+42 -5
View File
@@ -1,7 +1,44 @@
Version 0.8.17 (2022-XX-XX) Version 0.9.1 (2022-12-XX)
========================
* Adjust alert volume using ambient noise level
* Removed driver monitoring timer resetting on interaction if face detected and distracted
* Chevrolet Bolt EV 2022-23 support thanks to JasonJShuler!
* Genesis GV60 2023 support thanks to sunnyhaibin!
* Hyundai Tucson 2022-23 support
* Kia Sorento Plug-in Hybrid 2022 support thanks to sunnyhaibin!
Version 0.9.0 (2022-11-21)
======================== ========================
* New driving model * New driving model
* Internal feature space accuracy increased tenfold during training, this makes the model dramatically more accurate. * Internal feature space information content increased tenfold during training to ~700 bits, which makes the model dramatically more accurate
* Less reliance on previous frames makes model more reactive and snappy
* Trained in new reprojective simulator
* Trained in 36 hours from scratch, compared to one week for previous releases
* Training now simulates both lateral and longitudinal behavior, which allows openpilot to slow down for turns, stop at traffic lights, and more in experimental mode
* Experimental driving mode
* End-to-end longitudinal control
* Stops for traffic lights and stop signs
* Slows down for turns
* openpilot defaults to chill mode, enable experimental mode in settings
* Driver monitoring updates
* New bigger model with added end-to-end distracted trigger
* Reduced false positives during driver calibration
* Self-tuning torque controller: learns parameters live for each car
* Torque controller used on all Toyota, Lexus, Hyundai, Kia, and Genesis models
* UI updates
* Matched speeds shown on car's dash
* Multi-language in navigation
* Improved update experience
* Border turns grey while overriding steering
* Bookmark events while driving; view them in comma connect
* New onroad visualization for experimental mode
* tools: new and improved cabana thanks to deanlee!
* Experimental longitudinal support for Volkswagen, CAN-FD Hyundai, and new GM models
* Genesis GV70 2022-23 support thanks to zunichky and sunnyhaibin!
* Hyundai Santa Cruz 2021-22 support thanks to sunnyhaibin!
* Kia Sportage 2023 support thanks to sunnyhaibin!
* Kia Sportage Hybrid 2023 support thanks to sunnyhaibin!
* Kia Stinger 2022 support thanks to sunnyhaibin!
Version 0.8.16 (2022-08-26) Version 0.8.16 (2022-08-26)
======================== ========================
@@ -78,7 +115,7 @@ Version 0.8.14 (2022-06-01)
Version 0.8.13 (2022-02-18) Version 0.8.13 (2022-02-18)
======================== ========================
* Improved driver monitoring * Improved driver monitoring
* Retuned driver pose learner for relaxed driving positions * Re-tuned driver pose learner for relaxed driving positions
* Added reliance on driving model to be more scene adaptive * Added reliance on driving model to be more scene adaptive
* Matched strictness between comma two and comma three * Matched strictness between comma two and comma three
* Improved performance in turns by compensating for the road bank angle * Improved performance in turns by compensating for the road bank angle
@@ -224,7 +261,7 @@ Version 0.8.4 (2021-05-17)
* Delay controls start until system is ready * Delay controls start until system is ready
* Fuzzy car identification, enabled with Community Features toggle * Fuzzy car identification, enabled with Community Features toggle
* Localizer optimized for increased precision and less CPU usage * Localizer optimized for increased precision and less CPU usage
* Retuned lateral control to be more aggressive when model is confident * Re-tuned lateral control to be more aggressive when model is confident
* Toyota Mirai 2021 support * Toyota Mirai 2021 support
* Lexus NX 300 2020 support thanks to goesreallyfast! * Lexus NX 300 2020 support thanks to goesreallyfast!
* Volkswagen Atlas 2018-19 support thanks to jyoung8607! * Volkswagen Atlas 2018-19 support thanks to jyoung8607!
@@ -389,7 +426,7 @@ Version 0.7 (2019-12-13)
* Improve GM longitudinal control: proper computations for 15Hz radar * Improve GM longitudinal control: proper computations for 15Hz radar
* Move GM port, Toyota with DSU removed, comma pedal in community features; toggle switch required * Move GM port, Toyota with DSU removed, comma pedal in community features; toggle switch required
* Remove upload over cellular toggle: only upload qlog and qcamera files if not on wifi * Remove upload over cellular toggle: only upload qlog and qcamera files if not on wifi
* Refactor Panda code towards ISO26262 and SIL2 compliancy * Refactor Panda code towards ISO26262 and SIL2 compliance
* Forward stock FCW for Honda Nidec * Forward stock FCW for Honda Nidec
* Volkswagen port now standard: comma Harness intercepts stock camera * Volkswagen port now standard: comma Harness intercepts stock camera
+52 -27
View File
@@ -17,7 +17,8 @@ struct CarEvent @0x9b1657f34caf3ad3 {
immediateDisable @6 :Bool; immediateDisable @6 :Bool;
preEnable @7 :Bool; preEnable @7 :Bool;
permanent @8 :Bool; # alerts presented regardless of openpilot state permanent @8 :Bool; # alerts presented regardless of openpilot state
override @9 :Bool; overrideLateral @10 :Bool;
overrideLongitudinal @9 :Bool;
enum EventName @0xbaa8c5d505f727de { enum EventName @0xbaa8c5d505f727de {
canError @0; canError @0;
@@ -33,8 +34,9 @@ struct CarEvent @0x9b1657f34caf3ad3 {
buttonCancel @11; buttonCancel @11;
buttonEnable @12; buttonEnable @12;
pedalPressed @13; # exits active state pedalPressed @13; # exits active state
pedalPressedPreEnable @73; # added during pre-enable state for either pedal preEnableStandstill @73; # added during pre-enable state with brake
gasPressedOverride @108; # added when user is pressing gas with no disengage on gas gasPressedOverride @108; # added when user is pressing gas with no disengage on gas
steerOverride @114;
cruiseDisabled @14; cruiseDisabled @14;
speedTooLow @17; speedTooLow @17;
outOfSpace @18; outOfSpace @18;
@@ -44,7 +46,6 @@ struct CarEvent @0x9b1657f34caf3ad3 {
controlsMismatch @22; controlsMismatch @22;
pcmEnable @23; pcmEnable @23;
pcmDisable @24; pcmDisable @24;
noTarget @25;
radarFault @26; radarFault @26;
brakeHold @28; brakeHold @28;
parkBrake @29; parkBrake @29;
@@ -64,6 +65,7 @@ struct CarEvent @0x9b1657f34caf3ad3 {
lowBattery @48; lowBattery @48;
vehicleModelInvalid @50; vehicleModelInvalid @50;
accFaulted @51; accFaulted @51;
accFaultedTemp @115;
sensorDataInvalid @52; sensorDataInvalid @52;
commIssue @53; commIssue @53;
commIssueAvgFreq @109; commIssueAvgFreq @109;
@@ -114,8 +116,8 @@ struct CarEvent @0x9b1657f34caf3ad3 {
resumeBlocked @113; resumeBlocked @113;
#dp #dp
speedLimitActive @114; speedLimitActive @116;
speedLimitValueChange @115; speedLimitValueChange @117;
radarCanErrorDEPRECATED @15; radarCanErrorDEPRECATED @15;
communityFeatureDisallowedDEPRECATED @62; communityFeatureDisallowedDEPRECATED @62;
@@ -139,6 +141,7 @@ struct CarEvent @0x9b1657f34caf3ad3 {
modelLagWarningDEPRECATED @93; modelLagWarningDEPRECATED @93;
startupOneplusDEPRECATED @82; startupOneplusDEPRECATED @82;
startupFuzzyFingerprintDEPRECATED @97; startupFuzzyFingerprintDEPRECATED @97;
noTargetDEPRECATED @25;
} }
} }
@@ -169,6 +172,7 @@ struct CarState {
# brake pedal, 0.0-1.0 # brake pedal, 0.0-1.0
brake @5 :Float32; # this is user pedal only brake @5 :Float32; # this is user pedal only
brakePressed @6 :Bool; # this is user pedal only brakePressed @6 :Bool; # this is user pedal only
regenBraking @45 :Bool; # this is user pedal only
parkingBrake @39 :Bool; parkingBrake @39 :Bool;
brakeHoldActive @38 :Bool; brakeHoldActive @38 :Bool;
@@ -216,9 +220,9 @@ struct CarState {
charging @43 :Bool; charging @43 :Bool;
# dp # dp
cruiseActualEnabled @45 :Bool; cruiseActualEnabled @46 :Bool;
engineRPM @46 :Float32; engineRPM @47 :Float32;
distanceLines @47:UInt8; distanceLines @48:UInt8;
struct WheelSpeeds { struct WheelSpeeds {
# optional wheel speeds # optional wheel speeds
@@ -323,6 +327,9 @@ struct CarControl {
# Actuator commands as computed by controlsd # Actuator commands as computed by controlsd
actuators @6 :Actuators; actuators @6 :Actuators;
leftBlinker @15: Bool;
rightBlinker @16: Bool;
# Any car specific rate limits or quirks applied by # Any car specific rate limits or quirks applied by
# the CarController are reflected in actuatorsOutput # the CarController are reflected in actuatorsOutput
# and matches what is sent to the car # and matches what is sent to the car
@@ -340,8 +347,12 @@ struct CarControl {
brake @1: Float32; brake @1: Float32;
# range from -1.0 - 1.0 # range from -1.0 - 1.0
steer @2: Float32; steer @2: Float32;
# value sent over can to the car
steerOutputCan @8: Float32;
steeringAngleDeg @3: Float32; steeringAngleDeg @3: Float32;
curvature @7: Float32;
speed @6: Float32; # m/s speed @6: Float32; # m/s
accel @4: Float32; # m/s^2 accel @4: Float32; # m/s^2
longControlState @5: LongControlState; longControlState @5: LongControlState;
@@ -350,15 +361,14 @@ struct CarControl {
off @0; off @0;
pid @1; pid @1;
stopping @2; stopping @2;
starting @3;
startingDEPRECATED @3;
} }
} }
struct CruiseControl { struct CruiseControl {
cancel @0: Bool; cancel @0: Bool;
resume @1: Bool; resume @1: Bool;
override @4: Bool;
speedOverrideDEPRECATED @2: Float32; speedOverrideDEPRECATED @2: Float32;
accelOverrideDEPRECATED @3: Float32; accelOverrideDEPRECATED @3: Float32;
} }
@@ -424,23 +434,18 @@ struct CarParams {
enableGasInterceptor @2 :Bool; enableGasInterceptor @2 :Bool;
pcmCruise @3 :Bool; # is openpilot's state tied to the PCM's cruise state? pcmCruise @3 :Bool; # is openpilot's state tied to the PCM's cruise state?
enableDsu @5 :Bool; # driving support unit enableDsu @5 :Bool; # driving support unit
enableApgs @6 :Bool; # advanced parking guidance system
enableBsm @56 :Bool; # blind spot monitoring enableBsm @56 :Bool; # blind spot monitoring
flags @64 :UInt32; # flags for car specific quirks flags @64 :UInt32; # flags for car specific quirks
experimentalLongitudinalAvailable @71 :Bool;
minEnableSpeed @7 :Float32; minEnableSpeed @7 :Float32;
minSteerSpeed @8 :Float32; minSteerSpeed @8 :Float32;
maxSteeringAngleDeg @54 :Float32;
safetyConfigs @62 :List(SafetyConfig); safetyConfigs @62 :List(SafetyConfig);
alternativeExperience @65 :Int16; # panda flag for features like no disengage on gas alternativeExperience @65 :Int16; # panda flag for features like no disengage on gas
maxLateralAccel @68 :Float32;
steerMaxBPDEPRECATED @11 :List(Float32); # Car docs fields
steerMaxVDEPRECATED @12 :List(Float32); maxLateralAccel @68 :Float32;
gasMaxBPDEPRECATED @13 :List(Float32); autoResumeSng @69 :Bool; # describes whether car can resume from a stop automatically
gasMaxVDEPRECATED @14 :List(Float32);
brakeMaxBPDEPRECATED @15 :List(Float32);
brakeMaxVDEPRECATED @16 :List(Float32);
# things about the car in the manual # things about the car in the manual
mass @17 :Float32; # [kg] curb weight: all fluids no cargo mass @17 :Float32; # [kg] curb weight: all fluids no cargo
@@ -468,12 +473,13 @@ struct CarParams {
vEgoStopping @29 :Float32; # Speed at which the car goes into stopping state vEgoStopping @29 :Float32; # Speed at which the car goes into stopping state
vEgoStarting @59 :Float32; # Speed at which the car goes into starting state vEgoStarting @59 :Float32; # Speed at which the car goes into starting state
directAccelControl @30 :Bool; # Does the car have direct accel control or just gas/brake stoppingControl @31 :Bool; # Does the car allow full control even at lows speeds when stopping
stoppingControl @31 :Bool; # Does the car allows full control even at lows speeds when stopping
stopAccel @60 :Float32; # Required acceleration to keep vehicle stationary
steerControlType @34 :SteerControlType; steerControlType @34 :SteerControlType;
radarOffCan @35 :Bool; # True when radar objects aren't visible on CAN radarOffCan @35 :Bool; # True when radar objects aren't visible on CAN
stopAccel @60 :Float32; # Required acceleration to keep vehicle stationary
stoppingDecelRate @52 :Float32; # m/s^2/s while trying to stop stoppingDecelRate @52 :Float32; # m/s^2/s while trying to stop
startAccel @32 :Float32; # Required acceleration to get car moving
startingState @70 :Bool; # Does this car make use of special starting state
steerActuatorDelay @36 :Float32; # Steering wheel actuator delay in seconds steerActuatorDelay @36 :Float32; # Steering wheel actuator delay in seconds
longitudinalActuatorDelayLowerBound @61 :Float32; # Gas/Brake actuator delay in seconds, lower bound longitudinalActuatorDelayLowerBound @61 :Float32; # Gas/Brake actuator delay in seconds, lower bound
@@ -517,6 +523,8 @@ struct CarParams {
friction @3 :Float32; friction @3 :Float32;
kf @4 :Float32; kf @4 :Float32;
steeringAngleDeadzoneDeg @5 :Float32; steeringAngleDeadzoneDeg @5 :Float32;
latAccelFactor @6 :Float32;
latAccelOffset @7 :Float32;
} }
struct LongitudinalPIDTuning { struct LongitudinalPIDTuning {
@@ -594,6 +602,7 @@ struct CarParams {
enum SteerControlType { enum SteerControlType {
torque @0; torque @0;
angle @1; angle @1;
curvature @2;
} }
enum TransmissionType { enum TransmissionType {
@@ -617,7 +626,7 @@ struct CarParams {
enum Ecu { enum Ecu {
eps @0; eps @0;
esp @1; abs @1;
fwdRadar @2; fwdRadar @2;
fwdCamera @3; fwdCamera @3;
engine @4; engine @4;
@@ -627,6 +636,10 @@ struct CarParams {
gateway @10; # can gateway gateway @10; # can gateway
hud @11; # heads up display hud @11; # heads up display
combinationMeter @12; # instrument cluster combinationMeter @12; # instrument cluster
electricBrakeBooster @15;
shiftByWire @16;
adas @19;
cornerRadar @21;
# Toyota only # Toyota only
dsu @6; dsu @6;
@@ -635,8 +648,12 @@ struct CarParams {
# Honda only # Honda only
vsa @13; # Vehicle Stability Assist vsa @13; # Vehicle Stability Assist
programmedFuelInjection @14; programmedFuelInjection @14;
electricBrakeBooster @15;
shiftByWire @16; # Chrysler only
hcp @18; # Hybrid Control Processor
# Hyundai only
vcu @20; # Vehicle (Motor) Control Unit
debug @17; debug @17;
} }
@@ -653,6 +670,7 @@ struct CarParams {
} }
enableCameraDEPRECATED @4 :Bool; enableCameraDEPRECATED @4 :Bool;
enableApgsDEPRECATED @6 :Bool;
steerRateCostDEPRECATED @33 :Float32; steerRateCostDEPRECATED @33 :Float32;
isPandaBlackDEPRECATED @39 :Bool; isPandaBlackDEPRECATED @39 :Bool;
hasStockCameraDEPRECATED @57 :Bool; hasStockCameraDEPRECATED @57 :Bool;
@@ -660,7 +678,14 @@ struct CarParams {
safetyModelDEPRECATED @9 :SafetyModel; safetyModelDEPRECATED @9 :SafetyModel;
safetyModelPassiveDEPRECATED @42 :SafetyModel = silent; safetyModelPassiveDEPRECATED @42 :SafetyModel = silent;
minSpeedCanDEPRECATED @51 :Float32; minSpeedCanDEPRECATED @51 :Float32;
startAccelDEPRECATED @32 :Float32;
communityFeatureDEPRECATED @46: Bool; communityFeatureDEPRECATED @46: Bool;
startingAccelRateDEPRECATED @53 :Float32; startingAccelRateDEPRECATED @53 :Float32;
steerMaxBPDEPRECATED @11 :List(Float32);
steerMaxVDEPRECATED @12 :List(Float32);
gasMaxBPDEPRECATED @13 :List(Float32);
gasMaxVDEPRECATED @14 :List(Float32);
brakeMaxBPDEPRECATED @15 :List(Float32);
brakeMaxVDEPRECATED @16 :List(Float32);
directAccelControlDEPRECATED @30 :Bool;
maxSteeringAngleDegDEPRECATED @54 :Float32;
} }
+36 -21
View File
@@ -11,25 +11,40 @@ struct DragonConf {
dpLcMinMph @3 :UInt8; dpLcMinMph @3 :UInt8;
dpLcAutoMinMph @4 :UInt8; dpLcAutoMinMph @4 :UInt8;
dpLcAutoDelay @5 :Float32; dpLcAutoDelay @5 :Float32;
dpIpAddr @6 :Text; dpLateralLanelines @6 :Bool;
dpUiTop @7 :Bool; dpLateralCameraOffset @7 :Int8;
dpUiSide @8 :Bool; dpLateralPathOffset @8 :Int8;
dpUiVolume @9 :Int8; dpIpAddr @9 :Text;
dpUiBrightness @10 :UInt8; dpUiTop @10 :Bool;
dpUiDisplayMode @11 :UInt8; dpUiSide @11 :Bool;
dpUiSpeed @12 :Bool; dpUiVolume @12 :Int8;
dpUiEvent @13 :Bool; dpUiBrightness @13 :UInt8;
dpUiFace @14 :Bool; dpUiDisplayMode @14 :UInt8;
dpToyotaSng @15 :Bool; dpUiSpeed @15 :Bool;
dpAccelProfileCtrl @16 :Bool; dpUiEvent @16 :Bool;
dpAccelProfile @17 :UInt8; dpUiFace @17 :Bool;
dpToyotaCruiseOverride @18 :Bool; dpUiLeadInfo @18 :Bool;
dpToyotaCruiseOverrideSpeed @19 :UInt8; dpUiLaneline @19 :Bool;
dpToyotaAutoLock @20 :Bool; dpUiChevron @20 :Bool;
dpToyotaAutoUnlock @21 :Bool; dpUiDmCam @21 :Bool;
dpUseLanelines @22 :Bool; dpToyotaSng @22 :Bool;
dpMapd @23 :Bool; dpAccelProfileCtrl @23 :Bool;
dpDashcamd @24 :Bool; dpAccelProfile @24 :UInt8;
dpMazdaSteerAlert @25 :Bool; dpToyotaCruiseOverride @25 :Bool;
dpCameraOffset @26 :Int8; dpToyotaCruiseOverrideSpeed @26 :UInt8;
dpToyotaAutoLock @27 :Bool;
dpToyotaAutoUnlock @28 :Bool;
dpMapd @29 :Bool;
dpLocalDb @30 :Bool;
dpDashcamd @31 :Bool;
dpMazdaSteerAlert @32 :Bool;
dpSpeedCheck @33 :Bool;
dpFollowingProfileCtrl @34 :Bool;
dpFollowingProfile @35 :UInt8;
dpE2EConditional @36 :Bool;
dpE2EConditionalAtSpeed @37 :UInt8;
dpE2EConditionalAtSpeedLead @38 :UInt8;
dpE2EConditionalAdaptFp @39 :Bool;
dpE2EConditionalAdaptAp @40 :Bool;
dpE2EConditionalVoacc @41 :Bool;
} }
Binary file not shown.
+187 -33
View File
@@ -138,6 +138,7 @@ struct FrameData {
gain @15 :Float32; # This includes highConversionGain if enabled gain @15 :Float32; # This includes highConversionGain if enabled
measuredGreyFraction @21 :Float32; measuredGreyFraction @21 :Float32;
targetGreyFraction @22 :Float32; targetGreyFraction @22 :Float32;
exposureValPercent @27 :Float32;
# Focus # Focus
lensPos @11 :Int32; lensPos @11 :Int32;
@@ -151,10 +152,7 @@ struct FrameData {
transform @10 :List(Float32); transform @10 :List(Float32);
androidCaptureResult @9 :AndroidCaptureResult;
image @6 :Data; image @6 :Data;
globalGainDEPRECATED @5 :Int32;
temperaturesC @24 :List(Float32); temperaturesC @24 :List(Float32);
@@ -165,6 +163,15 @@ struct FrameData {
front @3; front @3;
} }
sensor @26 :ImageSensor;
enum ImageSensor {
unknown @0;
ar0321 @1;
ox03c10 @2;
}
globalGainDEPRECATED @5 :Int32;
androidCaptureResultDEPRECATED @9 :AndroidCaptureResult;
struct AndroidCaptureResult { struct AndroidCaptureResult {
sensitivity @0 :Int32; sensitivity @0 :Int32;
frameDuration @1 :Int64; frameDuration @1 :Int64;
@@ -221,9 +228,9 @@ struct SensorEventData {
fiber @2; fiber @2;
velodyne @3; # Velodyne IMU velodyne @3; # Velodyne IMU
bno055 @4; # Bosch accelerometer bno055 @4; # Bosch accelerometer
lsm6ds3 @5; # accelerometer (c2) lsm6ds3 @5; # includes LSM6DS3 and LSM6DS3TR, TR = tape reel
bmp280 @6; # barometer (c2) bmp280 @6; # barometer
mmc3416x @7; # magnetometer (c2) mmc3416x @7; # magnetometer
bmx055 @8; bmx055 @8;
rpr0521 @9; rpr0521 @9;
lsm6ds3trc @10; lsm6ds3trc @10;
@@ -291,7 +298,6 @@ struct CanData {
} }
struct DeviceState @0xa4d8b5af2aa492eb { struct DeviceState @0xa4d8b5af2aa492eb {
usbOnline @12 :Bool;
networkType @22 :NetworkType; networkType @22 :NetworkType;
networkInfo @31 :NetworkInfo; networkInfo @31 :NetworkInfo;
networkStrength @24 :NetworkStrength; networkStrength @24 :NetworkStrength;
@@ -309,10 +315,6 @@ struct DeviceState @0xa4d8b5af2aa492eb {
cpuUsagePercent @34 :List(Int8); # per-core cpu usage cpuUsagePercent @34 :List(Int8); # per-core cpu usage
# power # power
batteryPercent @8 :Int16;
batteryCurrent @15 :Int32;
chargingError @17 :Bool;
chargingDisabled @18 :Bool;
offroadPowerUsageUwh @23 :UInt32; offroadPowerUsageUwh @23 :UInt32;
carBatteryCapacityUwh @25 :UInt32; carBatteryCapacityUwh @25 :UInt32;
powerDrawW @40 :Float32; powerDrawW @40 :Float32;
@@ -389,31 +391,44 @@ struct DeviceState @0xa4d8b5af2aa492eb {
batteryStatusDEPRECATED @9 :Text; batteryStatusDEPRECATED @9 :Text;
batteryVoltageDEPRECATED @16 :Int32; batteryVoltageDEPRECATED @16 :Int32;
batteryTempCDEPRECATED @29 :Float32; batteryTempCDEPRECATED @29 :Float32;
batteryPercent @8 :Int16;
batteryCurrent @15 :Int32;
chargingError @17 :Bool;
chargingDisabled @18 :Bool;
usbOnline @12 :Bool;
} }
struct PandaState @0xa7649e2575e4591e { struct PandaState @0xa7649e2575e4591e {
ignitionLine @2 :Bool; ignitionLine @2 :Bool;
controlsAllowed @3 :Bool;
gasInterceptorDetected @4 :Bool; gasInterceptorDetected @4 :Bool;
canSendErrs @7 :UInt32; rxBufferOverflow @7 :UInt32;
canFwdErrs @8 :UInt32; txBufferOverflow @8 :UInt32;
canRxErrs @19 :UInt32;
gmlanSendErrs @9 :UInt32; gmlanSendErrs @9 :UInt32;
pandaType @10 :PandaType; pandaType @10 :PandaType;
ignitionCan @13 :Bool; ignitionCan @13 :Bool;
safetyModel @14 :Car.CarParams.SafetyModel;
safetyParam @27 :UInt16;
alternativeExperience @23 :Int16;
faultStatus @15 :FaultStatus; faultStatus @15 :FaultStatus;
powerSaveEnabled @16 :Bool; powerSaveEnabled @16 :Bool;
uptime @17 :UInt32; uptime @17 :UInt32;
faults @18 :List(FaultType); faults @18 :List(FaultType);
harnessStatus @21 :HarnessStatus; harnessStatus @21 :HarnessStatus;
heartbeatLost @22 :Bool; heartbeatLost @22 :Bool;
blockedCnt @24 :UInt32;
interruptLoad @25 :Float32; interruptLoad @25 :Float32;
fanPower @28 :UInt8; fanPower @28 :UInt8;
# can health
canState0 @29 :PandaCanState;
canState1 @30 :PandaCanState;
canState2 @31 :PandaCanState;
# safety stuff
controlsAllowed @3 :Bool;
safetyRxInvalid @19 :UInt32;
safetyTxBlocked @24 :UInt32;
safetyModel @14 :Car.CarParams.SafetyModel;
safetyParam @27 :UInt16;
alternativeExperience @23 :Int16;
safetyRxChecksInvalid @32 :Bool;
enum FaultStatus { enum FaultStatus {
none @0; none @0;
faultTemp @1; faultTemp @1;
@@ -444,6 +459,8 @@ struct PandaState @0xa7649e2575e4591e {
interruptRateClockSource @20; interruptRateClockSource @20;
interruptRateTick @21; interruptRateTick @21;
interruptRateExti @22; interruptRateExti @22;
interruptRateSpi @23;
interruptRateUart7 @24;
# Update max fault type in boardd when adding faults # Update max fault type in boardd when adding faults
} }
@@ -456,6 +473,8 @@ struct PandaState @0xa7649e2575e4591e {
uno @5; uno @5;
dos @6; dos @6;
redPanda @7; redPanda @7;
redPandaV2 @8;
tres @9;
} }
enum HarnessStatus { enum HarnessStatus {
@@ -469,9 +488,44 @@ struct PandaState @0xa7649e2575e4591e {
currentDEPRECATED @1 :UInt32; currentDEPRECATED @1 :UInt32;
hasGpsDEPRECATED @6 :Bool; hasGpsDEPRECATED @6 :Bool;
fanSpeedRpmDEPRECATED @11 :UInt16; fanSpeedRpmDEPRECATED @11 :UInt16;
usbPowerModeDEPRECATED @12 :PeripheralState.UsbPowerMode; usbPowerMode @12 :PeripheralState.UsbPowerMode;
safetyParamDEPRECATED @20 :Int16; safetyParamDEPRECATED @20 :Int16;
safetyParam2DEPRECATED @26 :UInt32; safetyParam2DEPRECATED @26 :UInt32;
struct PandaCanState {
busOff @0 :Bool;
busOffCnt @1 :UInt32;
errorWarning @2 :Bool;
errorPassive @3 :Bool;
lastError @4 :LecErrorCode;
lastStoredError @5 :LecErrorCode;
lastDataError @6 :LecErrorCode;
lastDataStoredError @7 :LecErrorCode;
receiveErrorCnt @8 :UInt8;
transmitErrorCnt @9 :UInt8;
totalErrorCnt @10 :UInt32;
totalTxLostCnt @11 :UInt32;
totalRxLostCnt @12 :UInt32;
totalTxCnt @13 :UInt32;
totalRxCnt @14 :UInt32;
totalFwdCnt @15 :UInt32;
canSpeed @16 :UInt16;
canDataSpeed @17 :UInt16;
canfdEnabled @18 :Bool;
brsEnabled @19 :Bool;
canfdNonIso @20 :Bool;
enum LecErrorCode {
noError @0;
stuffError @1;
formError @2;
ackError @3;
bit1Error @4;
bit0Error @5;
crcError @6;
noChange @7;
}
}
} }
struct PeripheralState { struct PeripheralState {
@@ -479,8 +533,8 @@ struct PeripheralState {
voltage @1 :UInt32; voltage @1 :UInt32;
current @2 :UInt32; current @2 :UInt32;
fanSpeedRpm @3 :UInt16; fanSpeedRpm @3 :UInt16;
usbPowerMode @4 :UsbPowerMode;
usbPowerMode @4 :UsbPowerMode;
enum UsbPowerMode @0xa8883583b32c9877 { enum UsbPowerMode @0xa8883583b32c9877 {
none @0; none @0;
client @1; client @1;
@@ -539,6 +593,7 @@ struct LiveCalibrationData {
# the direction of travel vector in device frame # the direction of travel vector in device frame
rpyCalib @7 :List(Float32); rpyCalib @7 :List(Float32);
rpyCalibSpread @8 :List(Float32); rpyCalibSpread @8 :List(Float32);
wideFromDeviceEuler @10 :List(Float32);
warpMatrixDEPRECATED @0 :List(Float32); warpMatrixDEPRECATED @0 :List(Float32);
warpMatrix2DEPRECATED @5 :List(Float32); warpMatrix2DEPRECATED @5 :List(Float32);
@@ -568,6 +623,8 @@ struct ControlsState @0x97ff69c53601abf1 {
enabled @19 :Bool; enabled @19 :Bool;
active @36 :Bool; active @36 :Bool;
experimentalMode @64 :Bool;
longControlState @30 :Car.CarControl.Actuators.LongControlState; longControlState @30 :Car.CarControl.Actuators.LongControlState;
vPid @2 :Float32; vPid @2 :Float32;
vTargetLead @3 :Float32; vTargetLead @3 :Float32;
@@ -598,10 +655,13 @@ struct ControlsState @0x97ff69c53601abf1 {
lateralControlState :union { lateralControlState :union {
indiState @52 :LateralINDIState; indiState @52 :LateralINDIState;
pidState @53 :LateralPIDState; pidState @53 :LateralPIDState;
lqrState @55 :LateralLQRState;
angleState @58 :LateralAngleState; angleState @58 :LateralAngleState;
debugState @59 :LateralDebugState; debugState @59 :LateralDebugState;
torqueState @60 :LateralTorqueState; torqueState @60 :LateralTorqueState;
curvatureState @65 :LateralCurvatureState;
#dp
lqrState @55 :LateralLQRState;
} }
enum OpenpilotState @0xdbe58b96d2d1ac61 { enum OpenpilotState @0xdbe58b96d2d1ac61 {
@@ -609,7 +669,7 @@ struct ControlsState @0x97ff69c53601abf1 {
preEnabled @1; preEnabled @1;
enabled @2; enabled @2;
softDisabling @3; softDisabling @3;
overriding @4; overriding @4; # superset of overriding with steering or accelerator
} }
enum AlertStatus { enum AlertStatus {
@@ -686,6 +746,18 @@ struct ControlsState @0x97ff69c53601abf1 {
steeringAngleDesiredDeg @4 :Float32; steeringAngleDesiredDeg @4 :Float32;
} }
struct LateralCurvatureState {
active @0 :Bool;
actualCurvature @1 :Float32;
desiredCurvature @2 :Float32;
error @3 :Float32;
p @4 :Float32;
i @5 :Float32;
f @6 :Float32;
output @7 :Float32;
saturated @8 :Bool;
}
struct LateralDebugState { struct LateralDebugState {
active @0 :Bool; active @0 :Bool;
steeringAngleDeg @1 :Float32; steeringAngleDeg @1 :Float32;
@@ -754,6 +826,9 @@ struct ModelDataV2 {
meta @12 :MetaData; meta @12 :MetaData;
# Model perceived motion
temporalPose @21 :Pose;
# All SI units and in device frame # All SI units and in device frame
struct XYZTData { struct XYZTData {
x @0 :List(Float32); x @0 :List(Float32);
@@ -817,6 +892,13 @@ struct ModelDataV2 {
brake4MetersPerSecondSquaredProbs @5 :List(Float32); brake4MetersPerSecondSquaredProbs @5 :List(Float32);
brake5MetersPerSecondSquaredProbs @6 :List(Float32); brake5MetersPerSecondSquaredProbs @6 :List(Float32);
} }
struct Pose {
trans @0 :List(Float32); # m/s in device frame
rot @1 :List(Float32); # rad/s in device frame
transStd @2 :List(Float32); # std m/s in device frame
rotStd @3 :List(Float32); # std rad/s in device frame
}
} }
struct EncodeIndex { struct EncodeIndex {
@@ -889,6 +971,8 @@ struct LongitudinalPlan @0xe00b5b3eba12876c {
turnSpeedControlState @45 :SpeedLimitControlState; turnSpeedControlState @45 :SpeedLimitControlState;
turnSign @46 :Int16; turnSign @46 :Int16;
dpE2EIsBlended @49 :Bool;
enum LongitudinalPlanSource { enum LongitudinalPlanSource {
cruise @0; cruise @0;
lead0 @1; lead0 @1;
@@ -953,11 +1037,11 @@ struct LongitudinalPlan @0xe00b5b3eba12876c {
struct LateralPlan @0xe1e9318e2ae8b51e { struct LateralPlan @0xe1e9318e2ae8b51e {
modelMonoTime @31 :UInt64; modelMonoTime @31 :UInt64;
laneWidth @0 :Float32; laneWidthDEPRECATED @0 :Float32;
lProb @5 :Float32; lProbDEPRECATED @5 :Float32;
rProb @7 :Float32; rProbDEPRECATED @7 :Float32;
dPathPoints @20 :List(Float32); dPathPoints @20 :List(Float32);
dProb @21 :Float32; dProbDEPRECATED @21 :Float32;
#dp #dp
dPathWLinesX @32 :List(Float32); dPathWLinesX @32 :List(Float32);
@@ -1176,6 +1260,7 @@ struct GnssMeasurements {
# Different ultra-rapid files: # Different ultra-rapid files:
nasaUltraRapid @1; nasaUltraRapid @1;
glonassIacUltraRapid @2; glonassIacUltraRapid @2;
qcompoly @3;
} }
} }
@@ -1369,7 +1454,7 @@ struct QcomGnss @0xde94674b07ae51c1 {
unknown3 @3; unknown3 @3;
unknown4 @4; unknown4 @4;
unknown5 @5; unknown5 @5;
unknown6 @6; sbas @6;
} }
enum SVObservationState @0xe81e829a0d6c83e9 { enum SVObservationState @0xe81e829a0d6c83e9 {
@@ -1792,6 +1877,22 @@ struct LiveParametersData {
roll @14 :Float32; roll @14 :Float32;
} }
struct LiveTorqueParametersData {
liveValid @0 :Bool;
latAccelFactorRaw @1 :Float32;
latAccelOffsetRaw @2 :Float32;
frictionCoefficientRaw @3 :Float32;
latAccelFactorFiltered @4 :Float32;
latAccelOffsetFiltered @5 :Float32;
frictionCoefficientFiltered @6 :Float32;
totalBucketPoints @7 :Float32;
decay @8 :Float32;
maxResets @9 :Float32;
points @10 :List(List(Float32));
version @11 :Int32;
useParams @12 :Bool;
}
struct LiveMapDataDEPRECATED { struct LiveMapDataDEPRECATED {
speedLimitValid @0 :Bool; speedLimitValid @0 :Bool;
speedLimit @1 :Float32; speedLimit @1 :Float32;
@@ -1819,6 +1920,8 @@ struct CameraOdometry {
rot @1 :List(Float32); # rad/s in device frame rot @1 :List(Float32); # rad/s in device frame
transStd @2 :List(Float32); # std m/s in device frame transStd @2 :List(Float32); # std m/s in device frame
rotStd @3 :List(Float32); # std rad/s in device frame rotStd @3 :List(Float32); # std rad/s in device frame
wideFromDeviceEuler @6 :List(Float32);
wideFromDeviceEulerStd @7 :List(Float32);
} }
struct LiveMapData { struct LiveMapData {
@@ -1855,6 +1958,10 @@ struct Sentinel {
signal @1 :Int32; signal @1 :Int32;
} }
struct UIDebug {
drawTimeMillis @0 :Float32;
}
struct ManagerState { struct ManagerState {
processes @0 :List(ProcessState); processes @0 :List(ProcessState);
@@ -1924,6 +2031,30 @@ struct NavRoute {
} }
} }
struct MapRenderState {
locationMonoTime @0 :UInt64;
renderTime @1 :Float32;
frameId @2: UInt32;
}
struct NavModelData {
frameId @0 :UInt32;
modelExecutionTime @1 :Float32;
dspExecutionTime @2 :Float32;
features @3 :List(Float32);
# predicted future position
position @4 :XYData;
desirePrediction @5 :List(Float32);
# All SI units and in device frame
struct XYData {
x @0 :List(Float32);
y @1 :List(Float32);
xStd @2 :List(Float32);
yStd @3 :List(Float32);
}
}
struct EncodeData { struct EncodeData {
idx @0 :EncodeIndex; idx @0 :EncodeIndex;
data @1 :Data; data @1 :Data;
@@ -1934,6 +2065,15 @@ struct EncodeData {
struct UserFlag { struct UserFlag {
} }
struct Microphone {
soundPressure @0 :Float32;
# uncalibrated, A-weighted
soundPressureWeighted @3 :Float32;
soundPressureWeightedDb @1 :Float32;
filteredSoundPressureWeightedDb @2 :Float32;
}
struct Event { struct Event {
logMonoTime @0 :UInt64; # nanoseconds logMonoTime @0 :UInt64; # nanoseconds
valid @67 :Bool = true; valid @67 :Bool = true;
@@ -1950,7 +2090,13 @@ struct Event {
gpsNMEA @3 :GPSNMEAData; gpsNMEA @3 :GPSNMEAData;
can @5 :List(CanData); can @5 :List(CanData);
controlsState @7 :ControlsState; controlsState @7 :ControlsState;
sensorEvents @11 :List(SensorEventData); gyroscope @99 :SensorEventData;
gyroscope2 @100 :SensorEventData;
accelerometer @98 :SensorEventData;
accelerometer2 @101 :SensorEventData;
magnetometer @95 :SensorEventData;
lightSensor @96 :SensorEventData;
temperatureSensor @97 :SensorEventData;
pandaStates @81 :List(PandaState); pandaStates @81 :List(PandaState);
peripheralState @80 :PeripheralState; peripheralState @80 :PeripheralState;
radarState @13 :RadarState; radarState @13 :RadarState;
@@ -1968,6 +2114,7 @@ struct Event {
gpsLocation @21 :GpsLocationData; gpsLocation @21 :GpsLocationData;
gnssMeasurements @91 :GnssMeasurements; gnssMeasurements @91 :GnssMeasurements;
liveParameters @61 :LiveParametersData; liveParameters @61 :LiveParametersData;
liveTorqueParameters @94 :LiveTorqueParametersData;
cameraOdometry @63 :CameraOdometry; cameraOdometry @63 :CameraOdometry;
thumbnail @66: Thumbnail; thumbnail @66: Thumbnail;
carEvents @68: List(Car.CarEvent); carEvents @68: List(Car.CarEvent);
@@ -1976,6 +2123,7 @@ struct Event {
liveLocationKalman @72 :LiveLocationKalman; liveLocationKalman @72 :LiveLocationKalman;
modelV2 @75 :ModelDataV2; modelV2 @75 :ModelDataV2;
driverStateV2 @92 :DriverStateV2; driverStateV2 @92 :DriverStateV2;
navModel @104 :NavModelData;
# camera stuff, each camera state has a matching encode idx # camera stuff, each camera state has a matching encode idx
roadCameraState @2 :FrameData; roadCameraState @2 :FrameData;
@@ -1986,6 +2134,9 @@ struct Event {
wideRoadEncodeIdx @77 :EncodeIndex; wideRoadEncodeIdx @77 :EncodeIndex;
qRoadEncodeIdx @90 :EncodeIndex; qRoadEncodeIdx @90 :EncodeIndex;
# microphone data
microphone @103 :Microphone;
# systems stuff # systems stuff
androidLog @20 :AndroidLogEntry; androidLog @20 :AndroidLogEntry;
managerState @78 :ManagerState; managerState @78 :ManagerState;
@@ -2000,10 +2151,12 @@ struct Event {
navInstruction @82 :NavInstruction; navInstruction @82 :NavInstruction;
navRoute @83 :NavRoute; navRoute @83 :NavRoute;
navThumbnail @84: Thumbnail; navThumbnail @84: Thumbnail;
mapRenderState @105: MapRenderState;
# user flags # UI services
userFlag @93 :UserFlag; userFlag @93 :UserFlag;
uiDebug @102 :UIDebug;
# dp reserve 105,106
# *********** debug *********** # *********** debug ***********
testJoystick @52 :Joystick; testJoystick @52 :Joystick;
roadEncodeData @86 :EncodeData; roadEncodeData @86 :EncodeData;
@@ -2011,8 +2164,8 @@ struct Event {
wideRoadEncodeData @88 :EncodeData; wideRoadEncodeData @88 :EncodeData;
qRoadEncodeData @89 :EncodeData; qRoadEncodeData @89 :EncodeData;
dragonConf @94 :Dp.DragonConf; dragonConf @106 :Dp.DragonConf;
liveMapData @95: LiveMapData; liveMapData @107: LiveMapData;
# *********** legacy + deprecated *********** # *********** legacy + deprecated ***********
model @9 :Legacy.ModelData; # TODO: rename modelV2 and mark this as deprecated model @9 :Legacy.ModelData; # TODO: rename modelV2 and mark this as deprecated
@@ -2051,5 +2204,6 @@ struct Event {
uiLayoutStateDEPRECATED @57 :Legacy.UiLayoutState; uiLayoutStateDEPRECATED @57 :Legacy.UiLayoutState;
pandaStateDEPRECATED @12 :PandaState; pandaStateDEPRECATED @12 :PandaState;
driverState @59 :DriverState; driverState @59 :DriverState;
sensorEvents @11 :List(SensorEventData);
} }
} }
Binary file not shown.
+23 -122
View File
@@ -1,4 +1,4 @@
/* Generated by Cython 0.29.26 */ /* Generated by Cython 0.29.24 */
/* BEGIN: Cython Metadata /* BEGIN: Cython Metadata
{ {
@@ -28,8 +28,8 @@ END: Cython Metadata */
#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
#error Cython requires Python 2.6+ or Python 3.3+. #error Cython requires Python 2.6+ or Python 3.3+.
#else #else
#define CYTHON_ABI "0_29_26" #define CYTHON_ABI "0_29_24"
#define CYTHON_HEX_VERSION 0x001D1AF0 #define CYTHON_HEX_VERSION 0x001D18F0
#define CYTHON_FUTURE_DIVISION 1 #define CYTHON_FUTURE_DIVISION 1
#include <stddef.h> #include <stddef.h>
#ifndef offsetof #ifndef offsetof
@@ -176,7 +176,7 @@ END: Cython Metadata */
#ifndef CYTHON_USE_UNICODE_INTERNALS #ifndef CYTHON_USE_UNICODE_INTERNALS
#define CYTHON_USE_UNICODE_INTERNALS 1 #define CYTHON_USE_UNICODE_INTERNALS 1
#endif #endif
#if PY_VERSION_HEX < 0x030300F0 || PY_VERSION_HEX >= 0x030B00A2 #if PY_VERSION_HEX < 0x030300F0
#undef CYTHON_USE_UNICODE_WRITER #undef CYTHON_USE_UNICODE_WRITER
#define CYTHON_USE_UNICODE_WRITER 0 #define CYTHON_USE_UNICODE_WRITER 0
#elif !defined(CYTHON_USE_UNICODE_WRITER) #elif !defined(CYTHON_USE_UNICODE_WRITER)
@@ -195,7 +195,7 @@ END: Cython Metadata */
#define CYTHON_FAST_THREAD_STATE 1 #define CYTHON_FAST_THREAD_STATE 1
#endif #endif
#ifndef CYTHON_FAST_PYCALL #ifndef CYTHON_FAST_PYCALL
#define CYTHON_FAST_PYCALL (PY_VERSION_HEX < 0x030B00A1) #define CYTHON_FAST_PYCALL 1
#endif #endif
#ifndef CYTHON_PEP489_MULTI_PHASE_INIT #ifndef CYTHON_PEP489_MULTI_PHASE_INIT
#define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000) #define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000)
@@ -214,9 +214,7 @@ END: Cython Metadata */
#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) #define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1)
#endif #endif
#if CYTHON_USE_PYLONG_INTERNALS #if CYTHON_USE_PYLONG_INTERNALS
#if PY_MAJOR_VERSION < 3 #include "longintrepr.h"
#include "longintrepr.h"
#endif
#undef SHIFT #undef SHIFT
#undef BASE #undef BASE
#undef MASK #undef MASK
@@ -347,68 +345,9 @@ class __Pyx_FakeReference {
#define __Pyx_DefaultClassType PyClass_Type #define __Pyx_DefaultClassType PyClass_Type
#else #else
#define __Pyx_BUILTIN_MODULE_NAME "builtins" #define __Pyx_BUILTIN_MODULE_NAME "builtins"
#define __Pyx_DefaultClassType PyType_Type #if PY_VERSION_HEX >= 0x030800A4 && PY_VERSION_HEX < 0x030800B2
#if PY_VERSION_HEX >= 0x030B00A1 #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
static CYTHON_INLINE PyCodeObject* __Pyx_PyCode_New(int a, int k, int l, int s, int f, PyCode_New(a, 0, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
PyObject *code, PyObject *c, PyObject* n, PyObject *v,
PyObject *fv, PyObject *cell, PyObject* fn,
PyObject *name, int fline, PyObject *lnos) {
PyObject *kwds=NULL, *argcount=NULL, *posonlyargcount=NULL, *kwonlyargcount=NULL;
PyObject *nlocals=NULL, *stacksize=NULL, *flags=NULL, *replace=NULL, *call_result=NULL, *empty=NULL;
const char *fn_cstr=NULL;
const char *name_cstr=NULL;
PyCodeObject* co=NULL;
PyObject *type, *value, *traceback;
PyErr_Fetch(&type, &value, &traceback);
if (!(kwds=PyDict_New())) goto end;
if (!(argcount=PyLong_FromLong(a))) goto end;
if (PyDict_SetItemString(kwds, "co_argcount", argcount) != 0) goto end;
if (!(posonlyargcount=PyLong_FromLong(0))) goto end;
if (PyDict_SetItemString(kwds, "co_posonlyargcount", posonlyargcount) != 0) goto end;
if (!(kwonlyargcount=PyLong_FromLong(k))) goto end;
if (PyDict_SetItemString(kwds, "co_kwonlyargcount", kwonlyargcount) != 0) goto end;
if (!(nlocals=PyLong_FromLong(l))) goto end;
if (PyDict_SetItemString(kwds, "co_nlocals", nlocals) != 0) goto end;
if (!(stacksize=PyLong_FromLong(s))) goto end;
if (PyDict_SetItemString(kwds, "co_stacksize", stacksize) != 0) goto end;
if (!(flags=PyLong_FromLong(f))) goto end;
if (PyDict_SetItemString(kwds, "co_flags", flags) != 0) goto end;
if (PyDict_SetItemString(kwds, "co_code", code) != 0) goto end;
if (PyDict_SetItemString(kwds, "co_consts", c) != 0) goto end;
if (PyDict_SetItemString(kwds, "co_names", n) != 0) goto end;
if (PyDict_SetItemString(kwds, "co_varnames", v) != 0) goto end;
if (PyDict_SetItemString(kwds, "co_freevars", fv) != 0) goto end;
if (PyDict_SetItemString(kwds, "co_cellvars", cell) != 0) goto end;
if (PyDict_SetItemString(kwds, "co_linetable", lnos) != 0) goto end;
if (!(fn_cstr=PyUnicode_AsUTF8AndSize(fn, NULL))) goto end;
if (!(name_cstr=PyUnicode_AsUTF8AndSize(name, NULL))) goto end;
if (!(co = PyCode_NewEmpty(fn_cstr, name_cstr, fline))) goto end;
if (!(replace = PyObject_GetAttrString((PyObject*)co, "replace"))) goto cleanup_code_too;
if (!(empty = PyTuple_New(0))) goto cleanup_code_too; // unfortunately __pyx_empty_tuple isn't available here
if (!(call_result = PyObject_Call(replace, empty, kwds))) goto cleanup_code_too;
Py_XDECREF((PyObject*)co);
co = (PyCodeObject*)call_result;
call_result = NULL;
if (0) {
cleanup_code_too:
Py_XDECREF((PyObject*)co);
co = NULL;
}
end:
Py_XDECREF(kwds);
Py_XDECREF(argcount);
Py_XDECREF(posonlyargcount);
Py_XDECREF(kwonlyargcount);
Py_XDECREF(nlocals);
Py_XDECREF(stacksize);
Py_XDECREF(replace);
Py_XDECREF(call_result);
Py_XDECREF(empty);
if (type) {
PyErr_Restore(type, value, traceback);
}
return co;
}
#else #else
#define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
@@ -646,10 +585,10 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
#if PY_VERSION_HEX < 0x030200A4 #if PY_VERSION_HEX < 0x030200A4
typedef long Py_hash_t; typedef long Py_hash_t;
#define __Pyx_PyInt_FromHash_t PyInt_FromLong #define __Pyx_PyInt_FromHash_t PyInt_FromLong
#define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsHash_t #define __Pyx_PyInt_AsHash_t PyInt_AsLong
#else #else
#define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
#define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsSsize_t #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t
#endif #endif
#if PY_MAJOR_VERSION >= 3 #if PY_MAJOR_VERSION >= 3
#define __Pyx_PyMethod_New(func, self, klass) ((self) ? ((void)(klass), PyMethod_New(func, self)) : __Pyx_NewRef(func)) #define __Pyx_PyMethod_New(func, self, klass) ((self) ? ((void)(klass), PyMethod_New(func, self)) : __Pyx_NewRef(func))
@@ -814,7 +753,6 @@ static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x);
(likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj))
static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject*);
#if CYTHON_ASSUME_SAFE_MACROS #if CYTHON_ASSUME_SAFE_MACROS
#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) #define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
#else #else
@@ -1182,7 +1120,6 @@ static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args,
#ifndef Py_MEMBER_SIZE #ifndef Py_MEMBER_SIZE
#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member) #define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member)
#endif #endif
#if CYTHON_FAST_PYCALL
static size_t __pyx_pyframe_localsplus_offset = 0; static size_t __pyx_pyframe_localsplus_offset = 0;
#include "frameobject.h" #include "frameobject.h"
#define __Pxy_PyFrame_Initialize_Offsets()\ #define __Pxy_PyFrame_Initialize_Offsets()\
@@ -1190,7 +1127,6 @@ static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args,
(void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus))) (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus)))
#define __Pyx_PyFrame_GetLocalsplus(frame)\ #define __Pyx_PyFrame_GetLocalsplus(frame)\
(assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset)) (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset))
#endif // CYTHON_FAST_PYCALL
#endif #endif
/* PyObjectCallMethO.proto */ /* PyObjectCallMethO.proto */
@@ -3986,9 +3922,6 @@ static PyTypeObject __pyx_type_6cereal_9messaging_13messaging_pyx_Context = {
#if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
0, /*tp_print*/ 0, /*tp_print*/
#endif #endif
#if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
0, /*tp_pypy_flags*/
#endif
}; };
static PyObject *__pyx_tp_new_6cereal_9messaging_13messaging_pyx_Poller(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { static PyObject *__pyx_tp_new_6cereal_9messaging_13messaging_pyx_Poller(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
@@ -4122,9 +4055,6 @@ static PyTypeObject __pyx_type_6cereal_9messaging_13messaging_pyx_Poller = {
#if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
0, /*tp_print*/ 0, /*tp_print*/
#endif #endif
#if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
0, /*tp_pypy_flags*/
#endif
}; };
static struct __pyx_vtabstruct_6cereal_9messaging_13messaging_pyx_SubSocket __pyx_vtable_6cereal_9messaging_13messaging_pyx_SubSocket; static struct __pyx_vtabstruct_6cereal_9messaging_13messaging_pyx_SubSocket __pyx_vtable_6cereal_9messaging_13messaging_pyx_SubSocket;
@@ -4239,9 +4169,6 @@ static PyTypeObject __pyx_type_6cereal_9messaging_13messaging_pyx_SubSocket = {
#if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
0, /*tp_print*/ 0, /*tp_print*/
#endif #endif
#if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
0, /*tp_pypy_flags*/
#endif
}; };
static PyObject *__pyx_tp_new_6cereal_9messaging_13messaging_pyx_PubSocket(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { static PyObject *__pyx_tp_new_6cereal_9messaging_13messaging_pyx_PubSocket(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
@@ -4352,9 +4279,6 @@ static PyTypeObject __pyx_type_6cereal_9messaging_13messaging_pyx_PubSocket = {
#if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
0, /*tp_print*/ 0, /*tp_print*/
#endif #endif
#if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
0, /*tp_pypy_flags*/
#endif
}; };
static PyMethodDef __pyx_methods[] = { static PyMethodDef __pyx_methods[] = {
@@ -6156,7 +6080,7 @@ static int __Pyx_CLineForTraceback(CYTHON_NCP_UNUSED PyThreadState *tstate, int
} }
if (!use_cline) { if (!use_cline) {
c_line = 0; c_line = 0;
(void) PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False);
} }
else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) { else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) {
c_line = 0; c_line = 0;
@@ -6253,31 +6177,30 @@ static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
const char *funcname, int c_line, const char *funcname, int c_line,
int py_line, const char *filename) { int py_line, const char *filename) {
PyCodeObject *py_code = NULL; PyCodeObject *py_code = 0;
PyObject *py_funcname = NULL; PyObject *py_srcfile = 0;
PyObject *py_funcname = 0;
#if PY_MAJOR_VERSION < 3 #if PY_MAJOR_VERSION < 3
PyObject *py_srcfile = NULL;
py_srcfile = PyString_FromString(filename); py_srcfile = PyString_FromString(filename);
if (!py_srcfile) goto bad; #else
py_srcfile = PyUnicode_FromString(filename);
#endif #endif
if (!py_srcfile) goto bad;
if (c_line) { if (c_line) {
#if PY_MAJOR_VERSION < 3 #if PY_MAJOR_VERSION < 3
py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
if (!py_funcname) goto bad;
#else #else
py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
if (!py_funcname) goto bad;
funcname = PyUnicode_AsUTF8(py_funcname);
if (!funcname) goto bad;
#endif #endif
} }
else { else {
#if PY_MAJOR_VERSION < 3 #if PY_MAJOR_VERSION < 3
py_funcname = PyString_FromString(funcname); py_funcname = PyString_FromString(funcname);
if (!py_funcname) goto bad; #else
py_funcname = PyUnicode_FromString(funcname);
#endif #endif
} }
#if PY_MAJOR_VERSION < 3 if (!py_funcname) goto bad;
py_code = __Pyx_PyCode_New( py_code = __Pyx_PyCode_New(
0, 0,
0, 0,
@@ -6296,16 +6219,11 @@ static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
__pyx_empty_bytes /*PyObject *lnotab*/ __pyx_empty_bytes /*PyObject *lnotab*/
); );
Py_DECREF(py_srcfile); Py_DECREF(py_srcfile);
#else Py_DECREF(py_funcname);
py_code = PyCode_NewEmpty(filename, funcname, py_line);
#endif
Py_XDECREF(py_funcname); // XDECREF since it's only set on Py3 if cline
return py_code; return py_code;
bad: bad:
Py_XDECREF(py_funcname);
#if PY_MAJOR_VERSION < 3
Py_XDECREF(py_srcfile); Py_XDECREF(py_srcfile);
#endif Py_XDECREF(py_funcname);
return NULL; return NULL;
} }
static void __Pyx_AddTraceback(const char *funcname, int c_line, static void __Pyx_AddTraceback(const char *funcname, int c_line,
@@ -7153,23 +7071,6 @@ static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
Py_DECREF(x); Py_DECREF(x);
return ival; return ival;
} }
static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject* o) {
if (sizeof(Py_hash_t) == sizeof(Py_ssize_t)) {
return (Py_hash_t) __Pyx_PyIndex_AsSsize_t(o);
#if PY_MAJOR_VERSION < 3
} else if (likely(PyInt_CheckExact(o))) {
return PyInt_AS_LONG(o);
#endif
} else {
Py_ssize_t ival;
PyObject *x;
x = PyNumber_Index(o);
if (!x) return -1;
ival = PyInt_AsLong(x);
Py_DECREF(x);
return ival;
}
}
static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) {
return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False);
} }
Binary file not shown.
+1 -1
View File
@@ -5,7 +5,7 @@
#include <atomic> #include <atomic>
#define DEFAULT_SEGMENT_SIZE (10 * 1024 * 1024) #define DEFAULT_SEGMENT_SIZE (10 * 1024 * 1024)
#define NUM_READERS 10 #define NUM_READERS 13 //default comma is 12
#define ALIGN(n) ((n + (8 - 1)) & -8) #define ALIGN(n) ((n + (8 - 1)) & -8)
#define UNPACK64(higher, lower, input) do {uint64_t tmp = input; higher = tmp >> 32; lower = tmp & 0xFFFFFFFF;} while (0) #define UNPACK64(higher, lower, input) do {uint64_t tmp = input; higher = tmp >> 32; lower = tmp & 0xFFFFFFFF;} while (0)
+68 -56
View File
@@ -3,62 +3,74 @@
#define __SERVICES_H #define __SERVICES_H
struct service { char name[0x100]; int port; bool should_log; int frequency; int decimation; }; struct service { char name[0x100]; int port; bool should_log; int frequency; int decimation; };
static struct service services[] = { static struct service services[] = {
{ "sensorEvents", 8001, true, 100, 100 }, { "gyroscope", 8001, true, 104, 104 },
{ "gpsNMEA", 8002, true, 9, -1 }, { "gyroscope2", 8002, true, 100, 100 },
{ "deviceState", 8003, true, 2, 1 }, { "accelerometer", 8003, true, 104, 104 },
{ "can", 8004, true, 100, -1 }, { "accelerometer2", 8004, true, 100, 100 },
{ "controlsState", 8005, true, 100, 10 }, { "magnetometer", 8005, true, 100, 100 },
{ "pandaStates", 8006, true, 2, 1 }, { "lightSensor", 8006, true, 100, 100 },
{ "peripheralState", 8007, true, 2, 1 }, { "temperatureSensor", 8007, true, 100, 100 },
{ "radarState", 8008, true, 20, 5 }, { "gpsNMEA", 8008, true, 9, -1 },
{ "roadEncodeIdx", 8009, false, 20, 1 }, { "deviceState", 8009, true, 2, 1 },
{ "liveTracks", 8010, true, 20, -1 }, { "can", 8010, true, 100, -1 },
{ "sendcan", 8011, true, 100, 139 }, { "controlsState", 8011, true, 100, 10 },
{ "logMessage", 8012, true, 0, -1 }, { "pandaStates", 8012, true, 2, 1 },
{ "errorLogMessage", 8013, true, 0, 1 }, { "peripheralState", 8013, true, 2, 1 },
{ "liveCalibration", 8014, true, 4, 4 }, { "radarState", 8014, true, 20, 5 },
{ "androidLog", 8015, true, 0, -1 }, { "roadEncodeIdx", 8015, false, 20, 1 },
{ "carState", 8016, true, 100, 10 }, { "liveTracks", 8016, true, 20, -1 },
{ "carControl", 8017, true, 100, 10 }, { "sendcan", 8017, true, 100, 139 },
{ "longitudinalPlan", 8018, true, 20, 5 }, { "logMessage", 8018, true, 0, -1 },
{ "procLog", 8019, true, 0, -1 }, { "errorLogMessage", 8019, true, 0, 1 },
{ "gpsLocationExternal", 8020, true, 10, 10 }, { "liveCalibration", 8020, true, 4, 4 },
{ "gpsLocation", 8021, true, 1, 1 }, { "liveTorqueParameters", 8021, true, 4, 1 },
{ "ubloxGnss", 8023, true, 10, -1 }, { "androidLog", 8023, true, 0, -1 },
{ "qcomGnss", 8024, true, 2, -1 }, { "carState", 8024, true, 100, 10 },
{ "gnssMeasurements", 8025, true, 10, 10 }, { "carControl", 8025, true, 100, 10 },
{ "clocks", 8026, true, 1, 1 }, { "longitudinalPlan", 8026, true, 20, 5 },
{ "ubloxRaw", 8027, true, 20, -1 }, { "procLog", 8027, true, 0, -1 },
{ "liveLocationKalman", 8028, true, 20, 5 }, { "gpsLocationExternal", 8028, true, 10, 10 },
{ "liveParameters", 8029, true, 20, 5 }, { "gpsLocation", 8029, true, 1, 1 },
{ "cameraOdometry", 8030, true, 20, 5 }, { "ubloxGnss", 8030, true, 10, -1 },
{ "lateralPlan", 8031, true, 20, 5 }, { "qcomGnss", 8031, true, 2, -1 },
{ "thumbnail", 8032, true, 0, 1 }, { "gnssMeasurements", 8032, true, 10, 10 },
{ "carEvents", 8033, true, 1, 1 }, { "clocks", 8033, true, 1, 1 },
{ "carParams", 8034, true, 0, 1 }, { "ubloxRaw", 8034, true, 20, -1 },
{ "roadCameraState", 8035, true, 20, 20 }, { "liveLocationKalman", 8035, true, 20, 5 },
{ "driverCameraState", 8036, true, 10, 10 }, { "liveParameters", 8036, true, 20, 5 },
{ "driverEncodeIdx", 8037, false, 10, 1 }, { "cameraOdometry", 8037, true, 20, 5 },
{ "driverStateV2", 8038, true, 20, 10 }, { "lateralPlan", 8038, true, 20, 5 },
{ "driverState", 8039, true, 10, 5 }, { "thumbnail", 8039, true, 0, 1 },
{ "driverMonitoringState", 8040, true, 10, 5 }, { "carEvents", 8040, true, 1, 1 },
{ "wideRoadEncodeIdx", 8041, false, 20, 1 }, { "carParams", 8041, true, 0, 1 },
{ "wideRoadCameraState", 8042, true, 20, 20 }, { "roadCameraState", 8042, true, 20, 20 },
{ "modelV2", 8043, true, 20, 40 }, { "driverCameraState", 8043, true, 10, 10 },
{ "managerState", 8044, true, 2, 1 }, { "driverEncodeIdx", 8044, false, 10, 1 },
{ "uploaderState", 8045, true, 0, 1 }, { "driverStateV2", 8045, true, 20, 10 },
{ "navInstruction", 8046, true, 1, 10 }, { "driverState", 8046, true, 10, 5 },
{ "navRoute", 8047, true, 0, -1 }, { "driverMonitoringState", 8047, true, 10, 5 },
{ "navThumbnail", 8048, true, 0, -1 }, { "wideRoadEncodeIdx", 8048, false, 20, 1 },
{ "qRoadEncodeIdx", 8049, false, 20, -1 }, { "wideRoadCameraState", 8049, true, 20, 20 },
{ "userFlag", 8050, true, 0, 1 }, { "modelV2", 8050, true, 20, 40 },
{ "testJoystick", 8051, true, 0, -1 }, { "managerState", 8051, true, 2, 1 },
{ "roadEncodeData", 8052, false, 20, -1 }, { "uploaderState", 8052, true, 0, 1 },
{ "driverEncodeData", 8053, false, 20, -1 }, { "navInstruction", 8053, true, 1, 10 },
{ "wideRoadEncodeData", 8054, false, 20, -1 }, { "navRoute", 8054, true, 0, -1 },
{ "qRoadEncodeData", 8055, false, 20, -1 }, { "navThumbnail", 8055, true, 0, -1 },
{ "dragonConf", 8056, false, 1, -1 }, { "navModel", 8056, true, 2, 4 },
{ "liveMapData", 8057, true, 0, -1 }, { "mapRenderState", 8057, true, 2, 1 },
{ "qRoadEncodeIdx", 8058, false, 20, -1 },
{ "userFlag", 8059, true, 0, 1 },
{ "microphone", 8060, true, 10, 10 },
{ "uiDebug", 8061, true, 0, 1 },
{ "testJoystick", 8062, true, 0, -1 },
{ "roadEncodeData", 8063, false, 20, -1 },
{ "driverEncodeData", 8064, false, 20, -1 },
{ "wideRoadEncodeData", 8065, false, 20, -1 },
{ "qRoadEncodeData", 8066, false, 20, -1 },
{ "dragonConf", 8067, false, 1, -1 },
{ "liveMapData", 8068, true, 0, -1 },
{ "sensorEvents", 8069, true, 100, 100 },
}; };
#endif #endif
+13 -1
View File
@@ -21,7 +21,13 @@ class Service:
services = { services = {
# service: (should_log, frequency, qlog decimation (optional)) # service: (should_log, frequency, qlog decimation (optional))
# note: the "EncodeIdx" packets will still be in the log # note: the "EncodeIdx" packets will still be in the log
"sensorEvents": (True, 100., 100), "gyroscope": (True, 104., 104),
"gyroscope2": (True, 100., 100),
"accelerometer": (True, 104., 104),
"accelerometer2": (True, 100., 100),
"magnetometer": (True, 100., 100),
"lightSensor": (True, 100., 100),
"temperatureSensor": (True, 100., 100),
"gpsNMEA": (True, 9.), "gpsNMEA": (True, 9.),
"deviceState": (True, 2., 1), "deviceState": (True, 2., 1),
"can": (True, 100.), "can": (True, 100.),
@@ -35,6 +41,7 @@ services = {
"logMessage": (True, 0.), "logMessage": (True, 0.),
"errorLogMessage": (True, 0., 1), "errorLogMessage": (True, 0., 1),
"liveCalibration": (True, 4., 4), "liveCalibration": (True, 4., 4),
"liveTorqueParameters": (True, 4., 1),
"androidLog": (True, 0.), "androidLog": (True, 0.),
"carState": (True, 100., 10), "carState": (True, 100., 10),
"carControl": (True, 100., 10), "carControl": (True, 100., 10),
@@ -68,10 +75,14 @@ services = {
"navInstruction": (True, 1., 10), "navInstruction": (True, 1., 10),
"navRoute": (True, 0.), "navRoute": (True, 0.),
"navThumbnail": (True, 0.), "navThumbnail": (True, 0.),
"navModel": (True, 2., 4.),
"mapRenderState": (True, 2., 1.),
"qRoadEncodeIdx": (False, 20.), "qRoadEncodeIdx": (False, 20.),
"userFlag": (True, 0., 1), "userFlag": (True, 0., 1),
"microphone": (True, 10., 10),
# debug # debug
"uiDebug": (True, 0., 1),
"testJoystick": (True, 0.), "testJoystick": (True, 0.),
"roadEncodeData": (False, 20.), "roadEncodeData": (False, 20.),
"driverEncodeData": (False, 20.), "driverEncodeData": (False, 20.),
@@ -81,6 +92,7 @@ services = {
# dp # dp
"dragonConf": (False, 1.), "dragonConf": (False, 1.),
"liveMapData": (True, 0.), "liveMapData": (True, 0.),
"sensorEvents": (True, 100., 100),
} }
service_list = {name: Service(new_port(idx), *vals) for # type: ignore service_list = {name: Service(new_port(idx), *vals) for # type: ignore
idx, (name, vals) in enumerate(services.items())} idx, (name, vals) in enumerate(services.items())}
Binary file not shown.
+23 -108
View File
@@ -1,4 +1,4 @@
/* Generated by Cython 0.29.26 */ /* Generated by Cython 0.29.24 */
/* BEGIN: Cython Metadata /* BEGIN: Cython Metadata
{ {
@@ -23,8 +23,8 @@ END: Cython Metadata */
#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
#error Cython requires Python 2.6+ or Python 3.3+. #error Cython requires Python 2.6+ or Python 3.3+.
#else #else
#define CYTHON_ABI "0_29_26" #define CYTHON_ABI "0_29_24"
#define CYTHON_HEX_VERSION 0x001D1AF0 #define CYTHON_HEX_VERSION 0x001D18F0
#define CYTHON_FUTURE_DIVISION 1 #define CYTHON_FUTURE_DIVISION 1
#include <stddef.h> #include <stddef.h>
#ifndef offsetof #ifndef offsetof
@@ -171,7 +171,7 @@ END: Cython Metadata */
#ifndef CYTHON_USE_UNICODE_INTERNALS #ifndef CYTHON_USE_UNICODE_INTERNALS
#define CYTHON_USE_UNICODE_INTERNALS 1 #define CYTHON_USE_UNICODE_INTERNALS 1
#endif #endif
#if PY_VERSION_HEX < 0x030300F0 || PY_VERSION_HEX >= 0x030B00A2 #if PY_VERSION_HEX < 0x030300F0
#undef CYTHON_USE_UNICODE_WRITER #undef CYTHON_USE_UNICODE_WRITER
#define CYTHON_USE_UNICODE_WRITER 0 #define CYTHON_USE_UNICODE_WRITER 0
#elif !defined(CYTHON_USE_UNICODE_WRITER) #elif !defined(CYTHON_USE_UNICODE_WRITER)
@@ -190,7 +190,7 @@ END: Cython Metadata */
#define CYTHON_FAST_THREAD_STATE 1 #define CYTHON_FAST_THREAD_STATE 1
#endif #endif
#ifndef CYTHON_FAST_PYCALL #ifndef CYTHON_FAST_PYCALL
#define CYTHON_FAST_PYCALL (PY_VERSION_HEX < 0x030B00A1) #define CYTHON_FAST_PYCALL 1
#endif #endif
#ifndef CYTHON_PEP489_MULTI_PHASE_INIT #ifndef CYTHON_PEP489_MULTI_PHASE_INIT
#define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000) #define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000)
@@ -209,9 +209,7 @@ END: Cython Metadata */
#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) #define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1)
#endif #endif
#if CYTHON_USE_PYLONG_INTERNALS #if CYTHON_USE_PYLONG_INTERNALS
#if PY_MAJOR_VERSION < 3 #include "longintrepr.h"
#include "longintrepr.h"
#endif
#undef SHIFT #undef SHIFT
#undef BASE #undef BASE
#undef MASK #undef MASK
@@ -342,68 +340,9 @@ class __Pyx_FakeReference {
#define __Pyx_DefaultClassType PyClass_Type #define __Pyx_DefaultClassType PyClass_Type
#else #else
#define __Pyx_BUILTIN_MODULE_NAME "builtins" #define __Pyx_BUILTIN_MODULE_NAME "builtins"
#define __Pyx_DefaultClassType PyType_Type #if PY_VERSION_HEX >= 0x030800A4 && PY_VERSION_HEX < 0x030800B2
#if PY_VERSION_HEX >= 0x030B00A1 #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
static CYTHON_INLINE PyCodeObject* __Pyx_PyCode_New(int a, int k, int l, int s, int f, PyCode_New(a, 0, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
PyObject *code, PyObject *c, PyObject* n, PyObject *v,
PyObject *fv, PyObject *cell, PyObject* fn,
PyObject *name, int fline, PyObject *lnos) {
PyObject *kwds=NULL, *argcount=NULL, *posonlyargcount=NULL, *kwonlyargcount=NULL;
PyObject *nlocals=NULL, *stacksize=NULL, *flags=NULL, *replace=NULL, *call_result=NULL, *empty=NULL;
const char *fn_cstr=NULL;
const char *name_cstr=NULL;
PyCodeObject* co=NULL;
PyObject *type, *value, *traceback;
PyErr_Fetch(&type, &value, &traceback);
if (!(kwds=PyDict_New())) goto end;
if (!(argcount=PyLong_FromLong(a))) goto end;
if (PyDict_SetItemString(kwds, "co_argcount", argcount) != 0) goto end;
if (!(posonlyargcount=PyLong_FromLong(0))) goto end;
if (PyDict_SetItemString(kwds, "co_posonlyargcount", posonlyargcount) != 0) goto end;
if (!(kwonlyargcount=PyLong_FromLong(k))) goto end;
if (PyDict_SetItemString(kwds, "co_kwonlyargcount", kwonlyargcount) != 0) goto end;
if (!(nlocals=PyLong_FromLong(l))) goto end;
if (PyDict_SetItemString(kwds, "co_nlocals", nlocals) != 0) goto end;
if (!(stacksize=PyLong_FromLong(s))) goto end;
if (PyDict_SetItemString(kwds, "co_stacksize", stacksize) != 0) goto end;
if (!(flags=PyLong_FromLong(f))) goto end;
if (PyDict_SetItemString(kwds, "co_flags", flags) != 0) goto end;
if (PyDict_SetItemString(kwds, "co_code", code) != 0) goto end;
if (PyDict_SetItemString(kwds, "co_consts", c) != 0) goto end;
if (PyDict_SetItemString(kwds, "co_names", n) != 0) goto end;
if (PyDict_SetItemString(kwds, "co_varnames", v) != 0) goto end;
if (PyDict_SetItemString(kwds, "co_freevars", fv) != 0) goto end;
if (PyDict_SetItemString(kwds, "co_cellvars", cell) != 0) goto end;
if (PyDict_SetItemString(kwds, "co_linetable", lnos) != 0) goto end;
if (!(fn_cstr=PyUnicode_AsUTF8AndSize(fn, NULL))) goto end;
if (!(name_cstr=PyUnicode_AsUTF8AndSize(name, NULL))) goto end;
if (!(co = PyCode_NewEmpty(fn_cstr, name_cstr, fline))) goto end;
if (!(replace = PyObject_GetAttrString((PyObject*)co, "replace"))) goto cleanup_code_too;
if (!(empty = PyTuple_New(0))) goto cleanup_code_too; // unfortunately __pyx_empty_tuple isn't available here
if (!(call_result = PyObject_Call(replace, empty, kwds))) goto cleanup_code_too;
Py_XDECREF((PyObject*)co);
co = (PyCodeObject*)call_result;
call_result = NULL;
if (0) {
cleanup_code_too:
Py_XDECREF((PyObject*)co);
co = NULL;
}
end:
Py_XDECREF(kwds);
Py_XDECREF(argcount);
Py_XDECREF(posonlyargcount);
Py_XDECREF(kwonlyargcount);
Py_XDECREF(nlocals);
Py_XDECREF(stacksize);
Py_XDECREF(replace);
Py_XDECREF(call_result);
Py_XDECREF(empty);
if (type) {
PyErr_Restore(type, value, traceback);
}
return co;
}
#else #else
#define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
@@ -641,10 +580,10 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
#if PY_VERSION_HEX < 0x030200A4 #if PY_VERSION_HEX < 0x030200A4
typedef long Py_hash_t; typedef long Py_hash_t;
#define __Pyx_PyInt_FromHash_t PyInt_FromLong #define __Pyx_PyInt_FromHash_t PyInt_FromLong
#define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsHash_t #define __Pyx_PyInt_AsHash_t PyInt_AsLong
#else #else
#define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
#define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsSsize_t #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t
#endif #endif
#if PY_MAJOR_VERSION >= 3 #if PY_MAJOR_VERSION >= 3
#define __Pyx_PyMethod_New(func, self, klass) ((self) ? ((void)(klass), PyMethod_New(func, self)) : __Pyx_NewRef(func)) #define __Pyx_PyMethod_New(func, self, klass) ((self) ? ((void)(klass), PyMethod_New(func, self)) : __Pyx_NewRef(func))
@@ -803,7 +742,6 @@ static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x);
(likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj))
static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject*);
#if CYTHON_ASSUME_SAFE_MACROS #if CYTHON_ASSUME_SAFE_MACROS
#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) #define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
#else #else
@@ -1864,7 +1802,7 @@ static int __Pyx_CLineForTraceback(CYTHON_NCP_UNUSED PyThreadState *tstate, int
} }
if (!use_cline) { if (!use_cline) {
c_line = 0; c_line = 0;
(void) PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False);
} }
else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) { else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) {
c_line = 0; c_line = 0;
@@ -1961,31 +1899,30 @@ static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
const char *funcname, int c_line, const char *funcname, int c_line,
int py_line, const char *filename) { int py_line, const char *filename) {
PyCodeObject *py_code = NULL; PyCodeObject *py_code = 0;
PyObject *py_funcname = NULL; PyObject *py_srcfile = 0;
PyObject *py_funcname = 0;
#if PY_MAJOR_VERSION < 3 #if PY_MAJOR_VERSION < 3
PyObject *py_srcfile = NULL;
py_srcfile = PyString_FromString(filename); py_srcfile = PyString_FromString(filename);
if (!py_srcfile) goto bad; #else
py_srcfile = PyUnicode_FromString(filename);
#endif #endif
if (!py_srcfile) goto bad;
if (c_line) { if (c_line) {
#if PY_MAJOR_VERSION < 3 #if PY_MAJOR_VERSION < 3
py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
if (!py_funcname) goto bad;
#else #else
py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
if (!py_funcname) goto bad;
funcname = PyUnicode_AsUTF8(py_funcname);
if (!funcname) goto bad;
#endif #endif
} }
else { else {
#if PY_MAJOR_VERSION < 3 #if PY_MAJOR_VERSION < 3
py_funcname = PyString_FromString(funcname); py_funcname = PyString_FromString(funcname);
if (!py_funcname) goto bad; #else
py_funcname = PyUnicode_FromString(funcname);
#endif #endif
} }
#if PY_MAJOR_VERSION < 3 if (!py_funcname) goto bad;
py_code = __Pyx_PyCode_New( py_code = __Pyx_PyCode_New(
0, 0,
0, 0,
@@ -2004,16 +1941,11 @@ static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
__pyx_empty_bytes /*PyObject *lnotab*/ __pyx_empty_bytes /*PyObject *lnotab*/
); );
Py_DECREF(py_srcfile); Py_DECREF(py_srcfile);
#else Py_DECREF(py_funcname);
py_code = PyCode_NewEmpty(filename, funcname, py_line);
#endif
Py_XDECREF(py_funcname); // XDECREF since it's only set on Py3 if cline
return py_code; return py_code;
bad: bad:
Py_XDECREF(py_funcname);
#if PY_MAJOR_VERSION < 3
Py_XDECREF(py_srcfile); Py_XDECREF(py_srcfile);
#endif Py_XDECREF(py_funcname);
return NULL; return NULL;
} }
static void __Pyx_AddTraceback(const char *funcname, int c_line, static void __Pyx_AddTraceback(const char *funcname, int c_line,
@@ -2861,23 +2793,6 @@ static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
Py_DECREF(x); Py_DECREF(x);
return ival; return ival;
} }
static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject* o) {
if (sizeof(Py_hash_t) == sizeof(Py_ssize_t)) {
return (Py_hash_t) __Pyx_PyIndex_AsSsize_t(o);
#if PY_MAJOR_VERSION < 3
} else if (likely(PyInt_CheckExact(o))) {
return PyInt_AS_LONG(o);
#endif
} else {
Py_ssize_t ival;
PyObject *x;
x = PyNumber_Index(o);
if (!x) return -1;
ival = PyInt_AsLong(x);
Py_DECREF(x);
return ival;
}
}
static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) {
return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False);
} }
BIN
View File
Binary file not shown.
+37 -15
View File
@@ -5,7 +5,7 @@ import sys
import json import json
import time import time
from math import floor from math import floor
from selfdrive.controls.lib.lane_planner import CAMERA_OFFSET from system.hardware import TICI
''' '''
* type: Bool, Int8, UInt8, UInt16, Float32 * type: Bool, Int8, UInt8, UInt16, Float32
@@ -24,6 +24,7 @@ confs = [
{'name': 'dp_jetson', 'default': False, 'type': 'Bool', 'conf_type': ['param']}, {'name': 'dp_jetson', 'default': False, 'type': 'Bool', 'conf_type': ['param']},
# nav service # nav service
{'name': 'dp_nav', 'default': True, 'type': 'Bool', 'conf_type': ['param']},
{'name': 'dp_otisserv', 'default': False, 'type': 'Bool', 'conf_type': ['param']}, {'name': 'dp_otisserv', 'default': False, 'type': 'Bool', 'conf_type': ['param']},
{'name': 'dp_nav_mapbox_token_pk', 'default': '', 'type': 'Text', 'conf_type': ['param']}, {'name': 'dp_nav_mapbox_token_pk', 'default': '', 'type': 'Text', 'conf_type': ['param']},
{'name': 'dp_nav_mapbox_token_sk', 'default': '', 'type': 'Text', 'conf_type': ['param']}, {'name': 'dp_nav_mapbox_token_sk', 'default': '', 'type': 'Text', 'conf_type': ['param']},
@@ -49,9 +50,12 @@ confs = [
# lateral - alc # lateral - alc
{'name': 'dp_lateral_mode', 'default': 1, 'type': 'UInt8', 'min': 0, 'max': 2, 'conf_type': ['param', 'struct']}, {'name': 'dp_lateral_mode', 'default': 1, 'type': 'UInt8', 'min': 0, 'max': 2, 'conf_type': ['param', 'struct']},
# {'name': 'dp_signal_off_delay', 'default': 3., 'type': 'Float32', 'min': 0., 'max': 10., 'depends': [{'name': 'dp_lateral_mode', 'vals': [0]}], 'conf_type': ['param', 'struct']}, # {'name': 'dp_signal_off_delay', 'default': 3., 'type': 'Float32', 'min': 0., 'max': 10., 'depends': [{'name': 'dp_lateral_mode', 'vals': [0]}], 'conf_type': ['param', 'struct']},
{'name': 'dp_lc_min_mph', 'default': 30, 'type': 'UInt8', 'min': 0, 'max': 255, 'depends': [{'name': 'dp_lateral_mode', 'vals': [1, 2]}], 'conf_type': ['param', 'struct']}, {'name': 'dp_lc_min_mph', 'default': 15, 'type': 'UInt8', 'min': 0, 'max': 255, 'depends': [{'name': 'dp_lateral_mode', 'vals': [1, 2]}], 'conf_type': ['param', 'struct']},
{'name': 'dp_lc_auto_min_mph', 'default': 40, 'type': 'UInt8', 'min': 0, 'max': 255, 'depends': [{'name': 'dp_lateral_mode', 'vals': [2]}], 'conf_type': ['param', 'struct']}, {'name': 'dp_lc_auto_min_mph', 'default': 40, 'type': 'UInt8', 'min': 0, 'max': 255, 'depends': [{'name': 'dp_lateral_mode', 'vals': [2]}], 'conf_type': ['param', 'struct']},
{'name': 'dp_lc_auto_delay', 'default': 3., 'type': 'Float32', 'min': 0., 'max': 10., 'depends': [{'name': 'dp_lateral_mode', 'vals': [2]}], 'conf_type': ['param', 'struct']}, {'name': 'dp_lc_auto_delay', 'default': 3., 'type': 'Float32', 'min': 0., 'max': 10., 'depends': [{'name': 'dp_lateral_mode', 'vals': [2]}], 'conf_type': ['param', 'struct']},
{'name': 'dp_lateral_lanelines', 'default': False, 'type': 'Bool', 'conf_type': ['param', 'struct']},
{'name': 'dp_lateral_camera_offset', 'default': 4 if TICI else -6, 'type': 'Int8', 'min': -100, 'max': 100, 'depends': [{'name': 'dp_lateral_lanelines', 'vals': [True]}], 'conf_type': ['param', 'struct']},
{'name': 'dp_lateral_path_offset', 'default': 4 if TICI else 0, 'type': 'Int8', 'min': -100, 'max': 100, 'depends': [{'name': 'dp_lateral_lanelines', 'vals': [True]}], 'conf_type': ['param', 'struct']},
#ui #ui
{'name': 'dp_ip_addr', 'default': '', 'type': 'Text', 'conf_type': ['struct']}, {'name': 'dp_ip_addr', 'default': '', 'type': 'Text', 'conf_type': ['struct']},
@@ -64,6 +68,10 @@ confs = [
{'name': 'dp_ui_speed', 'default': True, 'type': 'Bool', 'conf_type': ['param', 'struct']}, {'name': 'dp_ui_speed', 'default': True, 'type': 'Bool', 'conf_type': ['param', 'struct']},
{'name': 'dp_ui_event', 'default': True, 'type': 'Bool', 'conf_type': ['param', 'struct']}, {'name': 'dp_ui_event', 'default': True, 'type': 'Bool', 'conf_type': ['param', 'struct']},
{'name': 'dp_ui_face', 'default': True, 'type': 'Bool', 'conf_type': ['param', 'struct']}, {'name': 'dp_ui_face', 'default': True, 'type': 'Bool', 'conf_type': ['param', 'struct']},
{'name': 'dp_ui_lead_info', 'default': True, 'type': 'Bool', 'conf_type': ['param', 'struct']},
{'name': 'dp_ui_laneline', 'default': True, 'type': 'Bool', 'conf_type': ['param', 'struct']},
{'name': 'dp_ui_chevron', 'default': True, 'type': 'Bool', 'conf_type': ['param', 'struct']},
{'name': 'dp_ui_dm_cam', 'default': True, 'type': 'Bool', 'conf_type': ['param', 'struct']},
#toyota #toyota
{'name': 'dp_toyota_sng', 'default': False, 'type': 'Bool', 'conf_type': ['param', 'struct']}, {'name': 'dp_toyota_sng', 'default': False, 'type': 'Bool', 'conf_type': ['param', 'struct']},
@@ -74,19 +82,20 @@ confs = [
{'name': 'dp_toyota_cruise_override_speed', 'default': 30, 'type': 'UInt8', 'min': 5, 'max': 60, 'depends': [{'name': 'dp_accel_profile_ctrl', 'vals': [True]}], 'conf_type': ['param', 'struct']}, {'name': 'dp_toyota_cruise_override_speed', 'default': 30, 'type': 'UInt8', 'min': 5, 'max': 60, 'depends': [{'name': 'dp_accel_profile_ctrl', 'vals': [True]}], 'conf_type': ['param', 'struct']},
{'name': 'dp_toyota_auto_lock', 'default': False, 'type': 'Bool', 'conf_type': ['param', 'struct']}, {'name': 'dp_toyota_auto_lock', 'default': False, 'type': 'Bool', 'conf_type': ['param', 'struct']},
{'name': 'dp_toyota_auto_unlock', 'default': False, 'type': 'Bool', 'conf_type': ['param', 'struct']}, {'name': 'dp_toyota_auto_unlock', 'default': False, 'type': 'Bool', 'conf_type': ['param', 'struct']},
{'name': 'dp_toyota_fp_btn_link', 'default': False, 'type': 'Bool', 'conf_type': ['param']},
{'name': 'dp_use_lanelines', 'default': False, 'type': 'Bool', 'conf_type': ['param', 'struct']},
{'name': 'dp_mapd', 'default': False, 'type': 'Bool', 'conf_type': ['param', 'struct']}, {'name': 'dp_mapd', 'default': False, 'type': 'Bool', 'conf_type': ['param', 'struct']},
{'name': 'dp_local_db', 'default': False, 'type': 'Bool', 'conf_type': ['param', 'struct']},
{'name': 'dp_lateral_lqr', 'default': False, 'type': 'Bool', 'conf_type': ['param']},
# dashcam related # dashcam related
{'name': 'dp_dashcamd', 'default': False, 'type': 'Bool', 'conf_type': ['param', 'struct']}, {'name': 'dp_dashcamd', 'default': False, 'type': 'Bool', 'conf_type': ['param', 'struct']},
# # auto shutdown # # auto shutdown
{'name': 'dp_auto_shutdown', 'default': False, 'type': 'Bool', 'conf_type': ['param']}, {'name': 'dp_auto_shutdown', 'default': True, 'type': 'Bool', 'conf_type': ['param']},
{'name': 'dp_auto_shutdown_in', 'default': 90, 'type': 'UInt16', 'min': 0, 'max': 600, 'depends': [{'name': 'dp_auto_shutdown', 'vals': [True]}], 'conf_type': ['param']}, {'name': 'dp_auto_shutdown_in', 'default': 60, 'type': 'UInt16', 'min': 0, 'max': 600, 'depends': [{'name': 'dp_auto_shutdown', 'vals': [True]}], 'conf_type': ['param']},
{'name': 'dp_mazda_steer_alert', 'default': True, 'type': 'Bool', 'conf_type': ['param', 'struct']}, {'name': 'dp_mazda_steer_alert', 'default': False, 'type': 'Bool', 'conf_type': ['param', 'struct']},
{'name': 'dp_mazda_dashcam_bypass', 'default': False, 'type': 'Bool', 'conf_type': ['param']},
# # service # # service
# {'name': 'dp_updated', 'default': False, 'type': 'Bool', 'conf_type': ['param']}, # {'name': 'dp_updated', 'default': False, 'type': 'Bool', 'conf_type': ['param']},
# {'name': 'dp_logger', 'default': False, 'type': 'Bool', 'conf_type': ['param']}, # {'name': 'dp_logger', 'default': False, 'type': 'Bool', 'conf_type': ['param']},
@@ -94,19 +103,24 @@ confs = [
# {'name': 'dp_uploader', 'default': False, 'type': 'Bool', 'depends': [{'name': 'dp_atl', 'vals': [False]}], 'conf_type': ['param', 'struct'], 'update_once': True}, # {'name': 'dp_uploader', 'default': False, 'type': 'Bool', 'depends': [{'name': 'dp_atl', 'vals': [False]}], 'conf_type': ['param', 'struct'], 'update_once': True},
# # {'name': 'dp_gpxd', 'default': False, 'type': 'Bool', 'conf_type': ['param']}, # # {'name': 'dp_gpxd', 'default': False, 'type': 'Bool', 'conf_type': ['param']},
{'name': 'dp_hotspot_on_boot', 'default': False, 'type': 'Bool', 'conf_type': ['param']}, {'name': 'dp_hotspot_on_boot', 'default': False, 'type': 'Bool', 'conf_type': ['param']},
{'name': 'dp_honda_eps_mod', 'default': False, 'type': 'Bool', 'conf_type': ['param']},
{'name': 'dp_dm', 'default': False, 'type': 'Bool', 'conf_type': ['param']},
{'name': 'dp_speed_check', 'default': True, 'type': 'Bool', 'conf_type': ['param', 'struct']},
{'name': 'dp_temp_check', 'default': True, 'type': 'Bool', 'conf_type': ['param']},
# {'name': 'dp_vag_resume_fix', 'default': False, 'type': 'Bool', 'conf_type': ['param']},
# # lat ctrl # # lat ctrl
# {'name': 'dp_lane_less_mode_ctrl', 'default': False, 'type': 'Bool', 'conf_type': ['param', 'struct']}, # {'name': 'dp_lane_less_mode_ctrl', 'default': False, 'type': 'Bool', 'conf_type': ['param', 'struct']},
# {'name': 'dp_lane_less_mode', 'default': 2, 'type': 'UInt8', 'min': 0, 'max': 2, 'depends': [{'name': 'dp_lane_less_mode_ctrl', 'vals': [True]}], 'conf_type': ['param', 'struct']}, # {'name': 'dp_lane_less_mode', 'default': 2, 'type': 'UInt8', 'min': 0, 'max': 2, 'depends': [{'name': 'dp_lane_less_mode_ctrl', 'vals': [True]}], 'conf_type': ['param', 'struct']},
# # long ctrl # # long ctrl
# {'name': 'dp_allow_gas', 'default': False, 'type': 'Bool', 'depends': [{'name': 'dp_atl', 'vals': [False]}], 'conf_type': ['param', 'struct']}, # {'name': 'dp_allow_gas', 'default': False, 'type': 'Bool', 'depends': [{'name': 'dp_atl', 'vals': [False]}], 'conf_type': ['param', 'struct']},
# #{'name': 'dp_following_profile_ctrl', 'default': False, 'type': 'Bool', 'conf_type': ['param', 'struct']}, {'name': 'dp_following_profile_ctrl', 'default': False, 'type': 'Bool', 'conf_type': ['param', 'struct']},
# #{'name': 'dp_following_profile', 'default': 0, 'type': 'UInt8', 'min': 0, 'max': 3, 'depends': [{'name': 'dp_following_profile_ctrl', 'vals': [True]}], 'conf_type': ['param', 'struct']}, {'name': 'dp_following_profile', 'default': 0, 'type': 'UInt8', 'min': 0, 'max': 2, 'depends': [{'name': 'dp_following_profile_ctrl', 'vals': [True]}], 'conf_type': ['param', 'struct']},
{'name': 'dp_lateral_tune', 'default': 0, 'type': 'UInt8', 'conf_type': ['param']},
{'name': 'dp_lateral_torque_live_tune', 'default': False, 'type': 'Bool', 'conf_type': ['param']},
# {'name': 'dp_accel_profile_ctrl', 'default': False, 'type': 'Bool', 'conf_type': ['param', 'struct']}, # {'name': 'dp_accel_profile_ctrl', 'default': False, 'type': 'Bool', 'conf_type': ['param', 'struct']},
# {'name': 'dp_accel_profile', 'default': 0, 'type': 'UInt8', 'min': 0, 'max': 2, 'depends': [{'name': 'dp_accel_profile_ctrl', 'vals': [True]}], 'conf_type': ['param', 'struct']}, # {'name': 'dp_accel_profile', 'default': 0, 'type': 'UInt8', 'min': 0, 'max': 2, 'depends': [{'name': 'dp_accel_profile_ctrl', 'vals': [True]}], 'conf_type': ['param', 'struct']},
# # safety # # safety
# {'name': 'dp_gear_check', 'default': True, 'type': 'Bool', 'depends': [{'name': 'dp_atl', 'vals': [False]}], 'conf_type': ['param', 'struct']}, # {'name': 'dp_gear_check', 'default': True, 'type': 'Bool', 'depends': [{'name': 'dp_atl', 'vals': [False]}], 'conf_type': ['param', 'struct']},
# {'name': 'dp_speed_check', 'default': True, 'type': 'Bool', 'conf_type': ['param', 'struct']},
# {'name': 'dp_temp_monitor', 'default': True, 'type': 'Bool', 'conf_type': ['param']},
# # UIs # # UIs
# {'name': 'dp_ui_display_mode', 'default': 0, 'type': 'UInt8', 'min': 0, 'max': 1, 'conf_type': ['param', 'struct']}, # {'name': 'dp_ui_display_mode', 'default': 0, 'type': 'UInt8', 'min': 0, 'max': 1, 'conf_type': ['param', 'struct']},
# {'name': 'dp_ui_speed', 'default': True, 'type': 'Bool', 'conf_type': ['param', 'struct']}, # {'name': 'dp_ui_speed', 'default': True, 'type': 'Bool', 'conf_type': ['param', 'struct']},
@@ -121,9 +135,17 @@ confs = [
# {'name': 'dp_ui_brightness', 'default': 0, 'type': 'UInt8', 'min': 0, 'max': 100, 'conf_type': ['param', 'struct']}, # {'name': 'dp_ui_brightness', 'default': 0, 'type': 'UInt8', 'min': 0, 'max': 100, 'conf_type': ['param', 'struct']},
# {'name': 'dp_ui_volume', 'default': -5, 'type': 'Int8', 'min': -5, 'max': 100, 'conf_type': ['param', 'struct']}, # {'name': 'dp_ui_volume', 'default': -5, 'type': 'Int8', 'min': -5, 'max': 100, 'conf_type': ['param', 'struct']},
# # toyota # # toyota
{'name': 'dp_toyota_rav4_tss2_tune', 'default': False, 'type': 'Bool', 'conf_type': ['param']},
{'name': 'dp_toyota_prius_bad_angle_tune', 'default': False, 'type': 'Bool', 'conf_type': ['param']},
{'name': 'dp_e2e_conditional', 'default': False, 'type': 'Bool', 'conf_type': ['param', 'struct']},
{'name': 'dp_e2e_conditional_at_speed', 'default': 60, 'type': 'UInt8', 'min': 30, 'max': 80, 'depends': [{'name': 'dp_e2e_conditional', 'vals': [True]}], 'conf_type': ['param', 'struct']},
{'name': 'dp_e2e_conditional_at_speed_lead', 'default': 40, 'type': 'UInt8', 'min': 0, 'max': 80, 'depends': [{'name': 'dp_e2e_conditional', 'vals': [True]}], 'conf_type': ['param', 'struct']},
{'name': 'dp_e2e_conditional_adapt_fp', 'default': False, 'type': 'Bool', 'depends': [{'name': 'dp_e2e_conditional', 'vals': [True]}], 'conf_type': ['param', 'struct']},
{'name': 'dp_e2e_conditional_adapt_ap', 'default': False, 'type': 'Bool', 'depends': [{'name': 'dp_e2e_conditional', 'vals': [True]}], 'conf_type': ['param', 'struct']},
{'name': 'dp_e2e_conditional_voacc', 'default': False, 'type': 'Bool', 'depends': [{'name': 'dp_e2e_conditional', 'vals': [True]}], 'conf_type': ['param', 'struct']},
# {'name': 'dp_toyota_no_min_acc_limit', 'default': False, 'type': 'Bool', 'conf_type': ['param']}, # {'name': 'dp_toyota_no_min_acc_limit', 'default': False, 'type': 'Bool', 'conf_type': ['param']},
# {'name': 'dp_toyota_ldw', 'default': True, 'type': 'Bool', 'conf_type': ['param', 'struct']}, # {'name': 'dp_toyota_ldw', 'default': True, 'type': 'Bool', 'conf_type': ['param', 'struct']},
# {'name': 'dp_toyota_zss', 'default': False, 'type': 'Bool', 'conf_type': ['param']}, {'name': 'dp_toyota_zss', 'default': False, 'type': 'Bool', 'conf_type': ['param']},
# {'name': 'dp_toyota_fp_btn_link', 'default': False, 'type': 'Bool', 'conf_type': ['param']}, # {'name': 'dp_toyota_fp_btn_link', 'default': False, 'type': 'Bool', 'conf_type': ['param']},
# {'name': 'dp_toyota_ap_btn_link', 'default': False, 'type': 'Bool', 'conf_type': ['param']}, # {'name': 'dp_toyota_ap_btn_link', 'default': False, 'type': 'Bool', 'conf_type': ['param']},
# {'name': 'dp_toyota_disable_relay', 'default': False, 'type': 'Bool', 'conf_type': ['param']}, # {'name': 'dp_toyota_disable_relay', 'default': False, 'type': 'Bool', 'conf_type': ['param']},
@@ -134,7 +156,6 @@ confs = [
# # hyundai # # hyundai
# {'name': 'dp_hkg_smart_mdps', 'default': False, 'type': 'Bool', 'conf_type': ['param']}, # {'name': 'dp_hkg_smart_mdps', 'default': False, 'type': 'Bool', 'conf_type': ['param']},
# # honda # # honda
{'name': 'dp_honda_eps_mod', 'default': False, 'type': 'Bool', 'conf_type': ['param']},
# {'name': 'dp_honda_kmh_display', 'default': False, 'type': 'Bool', 'conf_type': ['param']}, # {'name': 'dp_honda_kmh_display', 'default': False, 'type': 'Bool', 'conf_type': ['param']},
# # volkswagen # # volkswagen
# # {'name': 'dp_vw_panda', 'default': False, 'type': 'Bool', 'conf_type': ['param']}, # # {'name': 'dp_vw_panda', 'default': False, 'type': 'Bool', 'conf_type': ['param']},
@@ -142,7 +163,7 @@ confs = [
# {'name': 'dp_ip_addr', 'default': '', 'type': 'Text', 'conf_type': ['struct']}, # {'name': 'dp_ip_addr', 'default': '', 'type': 'Text', 'conf_type': ['struct']},
# {'name': 'dp_fan_mode', 'default': 0, 'type': 'UInt8', 'min': 0, 'max': 2, 'conf_type': ['param']}, # {'name': 'dp_fan_mode', 'default': 0, 'type': 'UInt8', 'min': 0, 'max': 2, 'conf_type': ['param']},
# {'name': 'dp_last_modified', 'default': str(floor(time.time())), 'type': 'Text', 'conf_type': ['param']}, # {'name': 'dp_last_modified', 'default': str(floor(time.time())), 'type': 'Text', 'conf_type': ['param']},
{'name': 'dp_camera_offset', 'default': CAMERA_OFFSET, 'type': 'Int8', 'min': -100, 'max': 100, 'conf_type': ['param', 'struct']}, # {'name': 'dp_camera_offset', 'default': CAMERA_OFFSET, 'type': 'Int8', 'min': -100, 'max': 100, 'conf_type': ['param', 'struct']},
# {'name': 'dp_path_offset', 'default': 0 if EON else -4 if TICI else 0, 'type': 'Int8', 'min': -100, 'max': 100, 'conf_type': ['param', 'struct']}, # {'name': 'dp_path_offset', 'default': 0 if EON else -4 if TICI else 0, 'type': 'Int8', 'min': -100, 'max': 100, 'conf_type': ['param', 'struct']},
# #
# {'name': 'dp_reg', 'default': False, 'type': 'Bool', 'conf_type': ['param']}, # {'name': 'dp_reg', 'default': False, 'type': 'Bool', 'conf_type': ['param']},
@@ -165,7 +186,8 @@ confs = [
# #
# {'name': 'dp_no_offroad_fix', 'default': False, 'type': 'Bool', 'conf_type': ['param']}, # {'name': 'dp_no_offroad_fix', 'default': False, 'type': 'Bool', 'conf_type': ['param']},
# {'name': 'dp_ftpd', 'default': False, 'type': 'Bool', 'conf_type': ['param']}, # {'name': 'dp_ftpd', 'default': False, 'type': 'Bool', 'conf_type': ['param']},
{'name': 'dp_dm', 'default': False, 'type': 'Bool', 'conf_type': ['param']}, {'name': 'dp_lateral_version', 'default': 0, 'min': 0, 'max': 2, 'type': 'UInt8', 'conf_type': ['param']},
{'name': 'dp_lateral_steer_rate_cost', 'default': 1.0, 'min': 0.5, 'max': 2.0, 'type': 'Float32', 'conf_type': ['param']},
] ]
def get_definition(name): def get_definition(name):
+12
View File
@@ -8,6 +8,11 @@
#define GPIO_UBLOX_PWR_EN 34 #define GPIO_UBLOX_PWR_EN 34
#define GPIO_STM_RST_N 124 #define GPIO_STM_RST_N 124
#define GPIO_STM_BOOT0 134 #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 #else
#define GPIO_HUB_RST_N 0 #define GPIO_HUB_RST_N 0
#define GPIO_UBLOX_RST_N 0 #define GPIO_UBLOX_RST_N 0
@@ -15,7 +20,14 @@
#define GPIO_UBLOX_PWR_EN 0 #define GPIO_UBLOX_PWR_EN 0
#define GPIO_STM_RST_N 0 #define GPIO_STM_RST_N 0
#define GPIO_STM_BOOT0 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 #endif
int gpio_init(int pin_nr, bool output); int gpio_init(int pin_nr, bool output);
int gpio_set(int pin_nr, bool high); int gpio_set(int pin_nr, bool high);
int gpiochip_get_ro_value_fd(const char* consumer_label, int gpiochiop_id, int pin_nr);
+12 -1
View File
@@ -1,3 +1,5 @@
from typing import Optional
def gpio_init(pin: int, output: bool) -> None: def gpio_init(pin: int, output: bool) -> None:
try: try:
with open(f"/sys/class/gpio/gpio{pin}/direction", 'wb') as f: with open(f"/sys/class/gpio/gpio{pin}/direction", 'wb') as f:
@@ -5,10 +7,19 @@ def gpio_init(pin: int, output: bool) -> None:
except Exception as e: except Exception as e:
print(f"Failed to set gpio {pin} direction: {e}") print(f"Failed to set gpio {pin} direction: {e}")
def gpio_set(pin: int, high: bool) -> None: def gpio_set(pin: int, high: bool) -> None:
try: try:
with open(f"/sys/class/gpio/gpio{pin}/value", 'wb') as f: with open(f"/sys/class/gpio/gpio{pin}/value", 'wb') as f:
f.write(b"1" if high else b"0") f.write(b"1" if high else b"0")
except Exception as e: except Exception as e:
print(f"Failed to set gpio {pin} value: {e}") print(f"Failed to set gpio {pin} value: {e}")
def gpio_read(pin: int) -> Optional[bool]:
val = None
try:
with open(f"/sys/class/gpio/gpio{pin}/value", 'rb') as f:
val = bool(int(f.read().strip()))
except Exception as e:
print(f"Failed to set gpio {pin} value: {e}")
return val
+6 -3
View File
@@ -15,9 +15,12 @@ supported_languages = {
def events(): def events():
locale = Params().get("LanguageSetting", encoding='utf8') locale = Params().get("LanguageSetting", encoding='utf8')
if locale is not None: try:
locale = supported_languages[locale.strip()] if locale is not None:
else: locale = supported_languages[locale.strip()]
else:
locale = "en-US"
except KeyError:
locale = "en-US" locale = "en-US"
i18n = gettext.translation("events", localedir=locale_dir, fallback=True, languages=[locale]) i18n = gettext.translation("events", localedir=locale_dir, fallback=True, languages=[locale])
i18n.install() i18n.install()
+23 -113
View File
@@ -1,4 +1,4 @@
/* Generated by Cython 0.29.26 */ /* Generated by Cython 0.29.24 */
/* BEGIN: Cython Metadata /* BEGIN: Cython Metadata
{ {
@@ -22,8 +22,8 @@ END: Cython Metadata */
#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
#error Cython requires Python 2.6+ or Python 3.3+. #error Cython requires Python 2.6+ or Python 3.3+.
#else #else
#define CYTHON_ABI "0_29_26" #define CYTHON_ABI "0_29_24"
#define CYTHON_HEX_VERSION 0x001D1AF0 #define CYTHON_HEX_VERSION 0x001D18F0
#define CYTHON_FUTURE_DIVISION 1 #define CYTHON_FUTURE_DIVISION 1
#include <stddef.h> #include <stddef.h>
#ifndef offsetof #ifndef offsetof
@@ -170,7 +170,7 @@ END: Cython Metadata */
#ifndef CYTHON_USE_UNICODE_INTERNALS #ifndef CYTHON_USE_UNICODE_INTERNALS
#define CYTHON_USE_UNICODE_INTERNALS 1 #define CYTHON_USE_UNICODE_INTERNALS 1
#endif #endif
#if PY_VERSION_HEX < 0x030300F0 || PY_VERSION_HEX >= 0x030B00A2 #if PY_VERSION_HEX < 0x030300F0
#undef CYTHON_USE_UNICODE_WRITER #undef CYTHON_USE_UNICODE_WRITER
#define CYTHON_USE_UNICODE_WRITER 0 #define CYTHON_USE_UNICODE_WRITER 0
#elif !defined(CYTHON_USE_UNICODE_WRITER) #elif !defined(CYTHON_USE_UNICODE_WRITER)
@@ -189,7 +189,7 @@ END: Cython Metadata */
#define CYTHON_FAST_THREAD_STATE 1 #define CYTHON_FAST_THREAD_STATE 1
#endif #endif
#ifndef CYTHON_FAST_PYCALL #ifndef CYTHON_FAST_PYCALL
#define CYTHON_FAST_PYCALL (PY_VERSION_HEX < 0x030B00A1) #define CYTHON_FAST_PYCALL 1
#endif #endif
#ifndef CYTHON_PEP489_MULTI_PHASE_INIT #ifndef CYTHON_PEP489_MULTI_PHASE_INIT
#define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000) #define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000)
@@ -208,9 +208,7 @@ END: Cython Metadata */
#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) #define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1)
#endif #endif
#if CYTHON_USE_PYLONG_INTERNALS #if CYTHON_USE_PYLONG_INTERNALS
#if PY_MAJOR_VERSION < 3 #include "longintrepr.h"
#include "longintrepr.h"
#endif
#undef SHIFT #undef SHIFT
#undef BASE #undef BASE
#undef MASK #undef MASK
@@ -341,68 +339,9 @@ class __Pyx_FakeReference {
#define __Pyx_DefaultClassType PyClass_Type #define __Pyx_DefaultClassType PyClass_Type
#else #else
#define __Pyx_BUILTIN_MODULE_NAME "builtins" #define __Pyx_BUILTIN_MODULE_NAME "builtins"
#define __Pyx_DefaultClassType PyType_Type #if PY_VERSION_HEX >= 0x030800A4 && PY_VERSION_HEX < 0x030800B2
#if PY_VERSION_HEX >= 0x030B00A1 #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
static CYTHON_INLINE PyCodeObject* __Pyx_PyCode_New(int a, int k, int l, int s, int f, PyCode_New(a, 0, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
PyObject *code, PyObject *c, PyObject* n, PyObject *v,
PyObject *fv, PyObject *cell, PyObject* fn,
PyObject *name, int fline, PyObject *lnos) {
PyObject *kwds=NULL, *argcount=NULL, *posonlyargcount=NULL, *kwonlyargcount=NULL;
PyObject *nlocals=NULL, *stacksize=NULL, *flags=NULL, *replace=NULL, *call_result=NULL, *empty=NULL;
const char *fn_cstr=NULL;
const char *name_cstr=NULL;
PyCodeObject* co=NULL;
PyObject *type, *value, *traceback;
PyErr_Fetch(&type, &value, &traceback);
if (!(kwds=PyDict_New())) goto end;
if (!(argcount=PyLong_FromLong(a))) goto end;
if (PyDict_SetItemString(kwds, "co_argcount", argcount) != 0) goto end;
if (!(posonlyargcount=PyLong_FromLong(0))) goto end;
if (PyDict_SetItemString(kwds, "co_posonlyargcount", posonlyargcount) != 0) goto end;
if (!(kwonlyargcount=PyLong_FromLong(k))) goto end;
if (PyDict_SetItemString(kwds, "co_kwonlyargcount", kwonlyargcount) != 0) goto end;
if (!(nlocals=PyLong_FromLong(l))) goto end;
if (PyDict_SetItemString(kwds, "co_nlocals", nlocals) != 0) goto end;
if (!(stacksize=PyLong_FromLong(s))) goto end;
if (PyDict_SetItemString(kwds, "co_stacksize", stacksize) != 0) goto end;
if (!(flags=PyLong_FromLong(f))) goto end;
if (PyDict_SetItemString(kwds, "co_flags", flags) != 0) goto end;
if (PyDict_SetItemString(kwds, "co_code", code) != 0) goto end;
if (PyDict_SetItemString(kwds, "co_consts", c) != 0) goto end;
if (PyDict_SetItemString(kwds, "co_names", n) != 0) goto end;
if (PyDict_SetItemString(kwds, "co_varnames", v) != 0) goto end;
if (PyDict_SetItemString(kwds, "co_freevars", fv) != 0) goto end;
if (PyDict_SetItemString(kwds, "co_cellvars", cell) != 0) goto end;
if (PyDict_SetItemString(kwds, "co_linetable", lnos) != 0) goto end;
if (!(fn_cstr=PyUnicode_AsUTF8AndSize(fn, NULL))) goto end;
if (!(name_cstr=PyUnicode_AsUTF8AndSize(name, NULL))) goto end;
if (!(co = PyCode_NewEmpty(fn_cstr, name_cstr, fline))) goto end;
if (!(replace = PyObject_GetAttrString((PyObject*)co, "replace"))) goto cleanup_code_too;
if (!(empty = PyTuple_New(0))) goto cleanup_code_too; // unfortunately __pyx_empty_tuple isn't available here
if (!(call_result = PyObject_Call(replace, empty, kwds))) goto cleanup_code_too;
Py_XDECREF((PyObject*)co);
co = (PyCodeObject*)call_result;
call_result = NULL;
if (0) {
cleanup_code_too:
Py_XDECREF((PyObject*)co);
co = NULL;
}
end:
Py_XDECREF(kwds);
Py_XDECREF(argcount);
Py_XDECREF(posonlyargcount);
Py_XDECREF(kwonlyargcount);
Py_XDECREF(nlocals);
Py_XDECREF(stacksize);
Py_XDECREF(replace);
Py_XDECREF(call_result);
Py_XDECREF(empty);
if (type) {
PyErr_Restore(type, value, traceback);
}
return co;
}
#else #else
#define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
@@ -640,10 +579,10 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
#if PY_VERSION_HEX < 0x030200A4 #if PY_VERSION_HEX < 0x030200A4
typedef long Py_hash_t; typedef long Py_hash_t;
#define __Pyx_PyInt_FromHash_t PyInt_FromLong #define __Pyx_PyInt_FromHash_t PyInt_FromLong
#define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsHash_t #define __Pyx_PyInt_AsHash_t PyInt_AsLong
#else #else
#define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
#define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsSsize_t #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t
#endif #endif
#if PY_MAJOR_VERSION >= 3 #if PY_MAJOR_VERSION >= 3
#define __Pyx_PyMethod_New(func, self, klass) ((self) ? ((void)(klass), PyMethod_New(func, self)) : __Pyx_NewRef(func)) #define __Pyx_PyMethod_New(func, self, klass) ((self) ? ((void)(klass), PyMethod_New(func, self)) : __Pyx_NewRef(func))
@@ -799,7 +738,6 @@ static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x);
(likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj))
static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject*);
#if CYTHON_ASSUME_SAFE_MACROS #if CYTHON_ASSUME_SAFE_MACROS
#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) #define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
#else #else
@@ -1178,7 +1116,6 @@ static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args,
#ifndef Py_MEMBER_SIZE #ifndef Py_MEMBER_SIZE
#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member) #define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member)
#endif #endif
#if CYTHON_FAST_PYCALL
static size_t __pyx_pyframe_localsplus_offset = 0; static size_t __pyx_pyframe_localsplus_offset = 0;
#include "frameobject.h" #include "frameobject.h"
#define __Pxy_PyFrame_Initialize_Offsets()\ #define __Pxy_PyFrame_Initialize_Offsets()\
@@ -1186,7 +1123,6 @@ static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args,
(void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus))) (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus)))
#define __Pyx_PyFrame_GetLocalsplus(frame)\ #define __Pyx_PyFrame_GetLocalsplus(frame)\
(assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset)) (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset))
#endif // CYTHON_FAST_PYCALL
#endif #endif
/* PyObjectCall.proto */ /* PyObjectCall.proto */
@@ -4393,9 +4329,6 @@ static PyTypeObject __pyx_type_6common_6kalman_18simple_kalman_impl_KF1D = {
#if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
0, /*tp_print*/ 0, /*tp_print*/
#endif #endif
#if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
0, /*tp_pypy_flags*/
#endif
}; };
static PyMethodDef __pyx_methods[] = { static PyMethodDef __pyx_methods[] = {
@@ -5940,7 +5873,7 @@ static int __Pyx_CLineForTraceback(CYTHON_NCP_UNUSED PyThreadState *tstate, int
} }
if (!use_cline) { if (!use_cline) {
c_line = 0; c_line = 0;
(void) PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False);
} }
else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) { else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) {
c_line = 0; c_line = 0;
@@ -6037,31 +5970,30 @@ static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
const char *funcname, int c_line, const char *funcname, int c_line,
int py_line, const char *filename) { int py_line, const char *filename) {
PyCodeObject *py_code = NULL; PyCodeObject *py_code = 0;
PyObject *py_funcname = NULL; PyObject *py_srcfile = 0;
PyObject *py_funcname = 0;
#if PY_MAJOR_VERSION < 3 #if PY_MAJOR_VERSION < 3
PyObject *py_srcfile = NULL;
py_srcfile = PyString_FromString(filename); py_srcfile = PyString_FromString(filename);
if (!py_srcfile) goto bad; #else
py_srcfile = PyUnicode_FromString(filename);
#endif #endif
if (!py_srcfile) goto bad;
if (c_line) { if (c_line) {
#if PY_MAJOR_VERSION < 3 #if PY_MAJOR_VERSION < 3
py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
if (!py_funcname) goto bad;
#else #else
py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
if (!py_funcname) goto bad;
funcname = PyUnicode_AsUTF8(py_funcname);
if (!funcname) goto bad;
#endif #endif
} }
else { else {
#if PY_MAJOR_VERSION < 3 #if PY_MAJOR_VERSION < 3
py_funcname = PyString_FromString(funcname); py_funcname = PyString_FromString(funcname);
if (!py_funcname) goto bad; #else
py_funcname = PyUnicode_FromString(funcname);
#endif #endif
} }
#if PY_MAJOR_VERSION < 3 if (!py_funcname) goto bad;
py_code = __Pyx_PyCode_New( py_code = __Pyx_PyCode_New(
0, 0,
0, 0,
@@ -6080,16 +6012,11 @@ static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
__pyx_empty_bytes /*PyObject *lnotab*/ __pyx_empty_bytes /*PyObject *lnotab*/
); );
Py_DECREF(py_srcfile); Py_DECREF(py_srcfile);
#else Py_DECREF(py_funcname);
py_code = PyCode_NewEmpty(filename, funcname, py_line);
#endif
Py_XDECREF(py_funcname); // XDECREF since it's only set on Py3 if cline
return py_code; return py_code;
bad: bad:
Py_XDECREF(py_funcname);
#if PY_MAJOR_VERSION < 3
Py_XDECREF(py_srcfile); Py_XDECREF(py_srcfile);
#endif Py_XDECREF(py_funcname);
return NULL; return NULL;
} }
static void __Pyx_AddTraceback(const char *funcname, int c_line, static void __Pyx_AddTraceback(const char *funcname, int c_line,
@@ -6937,23 +6864,6 @@ static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
Py_DECREF(x); Py_DECREF(x);
return ival; return ival;
} }
static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject* o) {
if (sizeof(Py_hash_t) == sizeof(Py_ssize_t)) {
return (Py_hash_t) __Pyx_PyIndex_AsSsize_t(o);
#if PY_MAJOR_VERSION < 3
} else if (likely(PyInt_CheckExact(o))) {
return PyInt_AS_LONG(o);
#endif
} else {
Py_ssize_t ival;
PyObject *x;
x = PyNumber_Index(o);
if (!x) return -1;
ival = PyInt_AsLong(x);
Py_DECREF(x);
return ival;
}
}
static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) {
return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False);
} }
Binary file not shown.
+1 -1
View File
@@ -4,7 +4,7 @@
#include "common/mat.h" #include "common/mat.h"
#include "system/hardware/hw.h" #include "system/hardware/hw.h"
const int TRAJECTORY_SIZE = 33; const int TRAJECTORY_SIZE = 33;
const int LAT_MPC_N = 16; const int LAT_MPC_N = 16;
const int LON_MPC_N = 32; const int LON_MPC_N = 32;
const float MIN_DRAW_DISTANCE = 10.0; const float MIN_DRAW_DISTANCE = 10.0;
+4 -2
View File
@@ -2,6 +2,7 @@
#include <map> #include <map>
#include <string> #include <string>
#include <vector>
enum ParamKeyType { enum ParamKeyType {
PERSISTENT = 0x02, PERSISTENT = 0x02,
@@ -15,6 +16,7 @@ enum ParamKeyType {
class Params { class Params {
public: public:
Params(const std::string &path = {}); Params(const std::string &path = {});
std::vector<std::string> allKeys() const;
bool checkKey(const std::string &key); bool checkKey(const std::string &key);
ParamKeyType getKeyType(const std::string &key); ParamKeyType getKeyType(const std::string &key);
inline std::string getParamPath(const std::string &key = {}) { inline std::string getParamPath(const std::string &key = {}) {
@@ -27,8 +29,8 @@ public:
// helpers for reading values // helpers for reading values
std::string get(const std::string &key, bool block = false); std::string get(const std::string &key, bool block = false);
inline bool getBool(const std::string &key) { inline bool getBool(const std::string &key, bool block = false) {
return get(key) == "1"; return get(key, block) == "1";
} }
std::map<std::string, std::string> readAll(); std::map<std::string, std::string> readAll();
+660 -247
View File
File diff suppressed because it is too large Load Diff
+8 -3
View File
@@ -2,6 +2,7 @@
# cython: language_level = 3 # cython: language_level = 3
from libcpp cimport bool from libcpp cimport bool
from libcpp.string cimport string from libcpp.string cimport string
from libcpp.vector cimport vector
import threading import threading
cdef extern from "common/params.h": cdef extern from "common/params.h":
@@ -15,13 +16,14 @@ cdef extern from "common/params.h":
cdef cppclass c_Params "Params": cdef cppclass c_Params "Params":
c_Params(string) nogil c_Params(string) nogil
string get(string, bool) nogil string get(string, bool) nogil
bool getBool(string) nogil bool getBool(string, bool) nogil
int remove(string) nogil int remove(string) nogil
int put(string, string) nogil int put(string, string) nogil
int putBool(string, bool) nogil int putBool(string, bool) nogil
bool checkKey(string) nogil bool checkKey(string) nogil
string getParamPath(string) nogil string getParamPath(string) nogil
void clearAll(ParamKeyType) void clearAll(ParamKeyType)
vector[string] allKeys()
def ensure_bytes(v): def ensure_bytes(v):
@@ -66,11 +68,11 @@ cdef class Params:
return val if encoding is None else val.decode(encoding) return val if encoding is None else val.decode(encoding)
def get_bool(self, key): def get_bool(self, key, bool block=False):
cdef string k = self.check_key(key) cdef string k = self.check_key(key)
cdef bool r cdef bool r
with nogil: with nogil:
r = self.p.getBool(k) r = self.p.getBool(k, block)
return r return r
def put(self, key, dat): def put(self, key, dat):
@@ -99,6 +101,9 @@ cdef class Params:
cdef string key_bytes = ensure_bytes(key) cdef string key_bytes = ensure_bytes(key)
return self.p.getParamPath(key_bytes).decode("utf-8") return self.p.getParamPath(key_bytes).decode("utf-8")
def all_keys(self):
return self.p.allKeys()
def put_nonblocking(key, val, d=""): def put_nonblocking(key, val, d=""):
threading.Thread(target=lambda: Params(d).put(key, val)).start() threading.Thread(target=lambda: Params(d).put(key, val)).start()
Binary file not shown.
+34
View File
@@ -0,0 +1,34 @@
#pragma once
#include <cassert>
#include <string>
#include "common/params.h"
#include "common/util.h"
class OpenpilotPrefix {
public:
OpenpilotPrefix(std::string prefix = {}) {
if (prefix.empty()) {
prefix = util::random_string(15);
}
msgq_path = "/dev/shm/" + prefix;
bool ret = util::create_directories(msgq_path, 0777);
assert(ret);
setenv("OPENPILOT_PREFIX", prefix.c_str(), 1);
}
~OpenpilotPrefix() {
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());
unlink(param_path.c_str());
}
system(util::string_format("rm %s -rf", msgq_path.c_str()).c_str());
unsetenv("OPENPILOT_PREFIX");
}
private:
std::string msgq_path;
};
+1 -1
View File
@@ -31,7 +31,7 @@ class Priority:
def set_realtime_priority(level: int) -> None: def set_realtime_priority(level: int) -> None:
if not PC: if not PC:
os.sched_setscheduler(0, os.SCHED_FIFO, os.sched_param(level)) # type: ignore[attr-defined] # pylint: disable=no-member os.sched_setscheduler(0, os.SCHED_FIFO, os.sched_param(level)) # pylint: disable=no-member
def set_core_affinity(cores: List[int]) -> None: def set_core_affinity(cores: List[int]) -> None:
+23 -113
View File
@@ -1,4 +1,4 @@
/* Generated by Cython 0.29.26 */ /* Generated by Cython 0.29.24 */
/* BEGIN: Cython Metadata /* BEGIN: Cython Metadata
{ {
@@ -32,8 +32,8 @@ END: Cython Metadata */
#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
#error Cython requires Python 2.6+ or Python 3.3+. #error Cython requires Python 2.6+ or Python 3.3+.
#else #else
#define CYTHON_ABI "0_29_26" #define CYTHON_ABI "0_29_24"
#define CYTHON_HEX_VERSION 0x001D1AF0 #define CYTHON_HEX_VERSION 0x001D18F0
#define CYTHON_FUTURE_DIVISION 1 #define CYTHON_FUTURE_DIVISION 1
#include <stddef.h> #include <stddef.h>
#ifndef offsetof #ifndef offsetof
@@ -180,7 +180,7 @@ END: Cython Metadata */
#ifndef CYTHON_USE_UNICODE_INTERNALS #ifndef CYTHON_USE_UNICODE_INTERNALS
#define CYTHON_USE_UNICODE_INTERNALS 1 #define CYTHON_USE_UNICODE_INTERNALS 1
#endif #endif
#if PY_VERSION_HEX < 0x030300F0 || PY_VERSION_HEX >= 0x030B00A2 #if PY_VERSION_HEX < 0x030300F0
#undef CYTHON_USE_UNICODE_WRITER #undef CYTHON_USE_UNICODE_WRITER
#define CYTHON_USE_UNICODE_WRITER 0 #define CYTHON_USE_UNICODE_WRITER 0
#elif !defined(CYTHON_USE_UNICODE_WRITER) #elif !defined(CYTHON_USE_UNICODE_WRITER)
@@ -199,7 +199,7 @@ END: Cython Metadata */
#define CYTHON_FAST_THREAD_STATE 1 #define CYTHON_FAST_THREAD_STATE 1
#endif #endif
#ifndef CYTHON_FAST_PYCALL #ifndef CYTHON_FAST_PYCALL
#define CYTHON_FAST_PYCALL (PY_VERSION_HEX < 0x030B00A1) #define CYTHON_FAST_PYCALL 1
#endif #endif
#ifndef CYTHON_PEP489_MULTI_PHASE_INIT #ifndef CYTHON_PEP489_MULTI_PHASE_INIT
#define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000) #define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000)
@@ -218,9 +218,7 @@ END: Cython Metadata */
#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) #define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1)
#endif #endif
#if CYTHON_USE_PYLONG_INTERNALS #if CYTHON_USE_PYLONG_INTERNALS
#if PY_MAJOR_VERSION < 3 #include "longintrepr.h"
#include "longintrepr.h"
#endif
#undef SHIFT #undef SHIFT
#undef BASE #undef BASE
#undef MASK #undef MASK
@@ -351,68 +349,9 @@ class __Pyx_FakeReference {
#define __Pyx_DefaultClassType PyClass_Type #define __Pyx_DefaultClassType PyClass_Type
#else #else
#define __Pyx_BUILTIN_MODULE_NAME "builtins" #define __Pyx_BUILTIN_MODULE_NAME "builtins"
#define __Pyx_DefaultClassType PyType_Type #if PY_VERSION_HEX >= 0x030800A4 && PY_VERSION_HEX < 0x030800B2
#if PY_VERSION_HEX >= 0x030B00A1 #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
static CYTHON_INLINE PyCodeObject* __Pyx_PyCode_New(int a, int k, int l, int s, int f, PyCode_New(a, 0, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
PyObject *code, PyObject *c, PyObject* n, PyObject *v,
PyObject *fv, PyObject *cell, PyObject* fn,
PyObject *name, int fline, PyObject *lnos) {
PyObject *kwds=NULL, *argcount=NULL, *posonlyargcount=NULL, *kwonlyargcount=NULL;
PyObject *nlocals=NULL, *stacksize=NULL, *flags=NULL, *replace=NULL, *call_result=NULL, *empty=NULL;
const char *fn_cstr=NULL;
const char *name_cstr=NULL;
PyCodeObject* co=NULL;
PyObject *type, *value, *traceback;
PyErr_Fetch(&type, &value, &traceback);
if (!(kwds=PyDict_New())) goto end;
if (!(argcount=PyLong_FromLong(a))) goto end;
if (PyDict_SetItemString(kwds, "co_argcount", argcount) != 0) goto end;
if (!(posonlyargcount=PyLong_FromLong(0))) goto end;
if (PyDict_SetItemString(kwds, "co_posonlyargcount", posonlyargcount) != 0) goto end;
if (!(kwonlyargcount=PyLong_FromLong(k))) goto end;
if (PyDict_SetItemString(kwds, "co_kwonlyargcount", kwonlyargcount) != 0) goto end;
if (!(nlocals=PyLong_FromLong(l))) goto end;
if (PyDict_SetItemString(kwds, "co_nlocals", nlocals) != 0) goto end;
if (!(stacksize=PyLong_FromLong(s))) goto end;
if (PyDict_SetItemString(kwds, "co_stacksize", stacksize) != 0) goto end;
if (!(flags=PyLong_FromLong(f))) goto end;
if (PyDict_SetItemString(kwds, "co_flags", flags) != 0) goto end;
if (PyDict_SetItemString(kwds, "co_code", code) != 0) goto end;
if (PyDict_SetItemString(kwds, "co_consts", c) != 0) goto end;
if (PyDict_SetItemString(kwds, "co_names", n) != 0) goto end;
if (PyDict_SetItemString(kwds, "co_varnames", v) != 0) goto end;
if (PyDict_SetItemString(kwds, "co_freevars", fv) != 0) goto end;
if (PyDict_SetItemString(kwds, "co_cellvars", cell) != 0) goto end;
if (PyDict_SetItemString(kwds, "co_linetable", lnos) != 0) goto end;
if (!(fn_cstr=PyUnicode_AsUTF8AndSize(fn, NULL))) goto end;
if (!(name_cstr=PyUnicode_AsUTF8AndSize(name, NULL))) goto end;
if (!(co = PyCode_NewEmpty(fn_cstr, name_cstr, fline))) goto end;
if (!(replace = PyObject_GetAttrString((PyObject*)co, "replace"))) goto cleanup_code_too;
if (!(empty = PyTuple_New(0))) goto cleanup_code_too; // unfortunately __pyx_empty_tuple isn't available here
if (!(call_result = PyObject_Call(replace, empty, kwds))) goto cleanup_code_too;
Py_XDECREF((PyObject*)co);
co = (PyCodeObject*)call_result;
call_result = NULL;
if (0) {
cleanup_code_too:
Py_XDECREF((PyObject*)co);
co = NULL;
}
end:
Py_XDECREF(kwds);
Py_XDECREF(argcount);
Py_XDECREF(posonlyargcount);
Py_XDECREF(kwonlyargcount);
Py_XDECREF(nlocals);
Py_XDECREF(stacksize);
Py_XDECREF(replace);
Py_XDECREF(call_result);
Py_XDECREF(empty);
if (type) {
PyErr_Restore(type, value, traceback);
}
return co;
}
#else #else
#define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
@@ -650,10 +589,10 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
#if PY_VERSION_HEX < 0x030200A4 #if PY_VERSION_HEX < 0x030200A4
typedef long Py_hash_t; typedef long Py_hash_t;
#define __Pyx_PyInt_FromHash_t PyInt_FromLong #define __Pyx_PyInt_FromHash_t PyInt_FromLong
#define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsHash_t #define __Pyx_PyInt_AsHash_t PyInt_AsLong
#else #else
#define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
#define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsSsize_t #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t
#endif #endif
#if PY_MAJOR_VERSION >= 3 #if PY_MAJOR_VERSION >= 3
#define __Pyx_PyMethod_New(func, self, klass) ((self) ? ((void)(klass), PyMethod_New(func, self)) : __Pyx_NewRef(func)) #define __Pyx_PyMethod_New(func, self, klass) ((self) ? ((void)(klass), PyMethod_New(func, self)) : __Pyx_NewRef(func))
@@ -823,7 +762,6 @@ static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x);
(likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj))
static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject*);
#if CYTHON_ASSUME_SAFE_MACROS #if CYTHON_ASSUME_SAFE_MACROS
#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) #define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
#else #else
@@ -1407,7 +1345,6 @@ static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args,
#ifndef Py_MEMBER_SIZE #ifndef Py_MEMBER_SIZE
#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member) #define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member)
#endif #endif
#if CYTHON_FAST_PYCALL
static size_t __pyx_pyframe_localsplus_offset = 0; static size_t __pyx_pyframe_localsplus_offset = 0;
#include "frameobject.h" #include "frameobject.h"
#define __Pxy_PyFrame_Initialize_Offsets()\ #define __Pxy_PyFrame_Initialize_Offsets()\
@@ -1415,7 +1352,6 @@ static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args,
(void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus))) (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus)))
#define __Pyx_PyFrame_GetLocalsplus(frame)\ #define __Pyx_PyFrame_GetLocalsplus(frame)\
(assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset)) (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset))
#endif // CYTHON_FAST_PYCALL
#endif #endif
/* PyObjectCall.proto */ /* PyObjectCall.proto */
@@ -6342,9 +6278,6 @@ static PyTypeObject __pyx_type_6common_15transformations_15transformations_Local
#if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
0, /*tp_print*/ 0, /*tp_print*/
#endif #endif
#if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
0, /*tp_pypy_flags*/
#endif
}; };
static PyMethodDef __pyx_methods[] = { static PyMethodDef __pyx_methods[] = {
@@ -9109,7 +9042,7 @@ static int __Pyx_CLineForTraceback(CYTHON_NCP_UNUSED PyThreadState *tstate, int
} }
if (!use_cline) { if (!use_cline) {
c_line = 0; c_line = 0;
(void) PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False);
} }
else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) { else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) {
c_line = 0; c_line = 0;
@@ -9206,31 +9139,30 @@ static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
const char *funcname, int c_line, const char *funcname, int c_line,
int py_line, const char *filename) { int py_line, const char *filename) {
PyCodeObject *py_code = NULL; PyCodeObject *py_code = 0;
PyObject *py_funcname = NULL; PyObject *py_srcfile = 0;
PyObject *py_funcname = 0;
#if PY_MAJOR_VERSION < 3 #if PY_MAJOR_VERSION < 3
PyObject *py_srcfile = NULL;
py_srcfile = PyString_FromString(filename); py_srcfile = PyString_FromString(filename);
if (!py_srcfile) goto bad; #else
py_srcfile = PyUnicode_FromString(filename);
#endif #endif
if (!py_srcfile) goto bad;
if (c_line) { if (c_line) {
#if PY_MAJOR_VERSION < 3 #if PY_MAJOR_VERSION < 3
py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
if (!py_funcname) goto bad;
#else #else
py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
if (!py_funcname) goto bad;
funcname = PyUnicode_AsUTF8(py_funcname);
if (!funcname) goto bad;
#endif #endif
} }
else { else {
#if PY_MAJOR_VERSION < 3 #if PY_MAJOR_VERSION < 3
py_funcname = PyString_FromString(funcname); py_funcname = PyString_FromString(funcname);
if (!py_funcname) goto bad; #else
py_funcname = PyUnicode_FromString(funcname);
#endif #endif
} }
#if PY_MAJOR_VERSION < 3 if (!py_funcname) goto bad;
py_code = __Pyx_PyCode_New( py_code = __Pyx_PyCode_New(
0, 0,
0, 0,
@@ -9249,16 +9181,11 @@ static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
__pyx_empty_bytes /*PyObject *lnotab*/ __pyx_empty_bytes /*PyObject *lnotab*/
); );
Py_DECREF(py_srcfile); Py_DECREF(py_srcfile);
#else Py_DECREF(py_funcname);
py_code = PyCode_NewEmpty(filename, funcname, py_line);
#endif
Py_XDECREF(py_funcname); // XDECREF since it's only set on Py3 if cline
return py_code; return py_code;
bad: bad:
Py_XDECREF(py_funcname);
#if PY_MAJOR_VERSION < 3
Py_XDECREF(py_srcfile); Py_XDECREF(py_srcfile);
#endif Py_XDECREF(py_funcname);
return NULL; return NULL;
} }
static void __Pyx_AddTraceback(const char *funcname, int c_line, static void __Pyx_AddTraceback(const char *funcname, int c_line,
@@ -10434,23 +10361,6 @@ static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
Py_DECREF(x); Py_DECREF(x);
return ival; return ival;
} }
static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject* o) {
if (sizeof(Py_hash_t) == sizeof(Py_ssize_t)) {
return (Py_hash_t) __Pyx_PyIndex_AsSsize_t(o);
#if PY_MAJOR_VERSION < 3
} else if (likely(PyInt_CheckExact(o))) {
return PyInt_AS_LONG(o);
#endif
} else {
Py_ssize_t ival;
PyObject *x;
x = PyNumber_Index(o);
if (!x) return -1;
ival = PyInt_AsLong(x);
Py_DECREF(x);
return ival;
}
}
static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) {
return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False);
} }
Binary file not shown.
+3
View File
@@ -75,16 +75,19 @@ int getenv(const char* key, int default_val);
float getenv(const char* key, float default_val); float getenv(const char* key, float default_val);
std::string hexdump(const uint8_t* in, const size_t size); std::string hexdump(const uint8_t* in, const size_t size);
std::string random_string(std::string::size_type length);
std::string dir_name(std::string const& path); std::string dir_name(std::string const& path);
// **** file fhelpers ***** // **** file fhelpers *****
std::string read_file(const std::string& fn); std::string read_file(const std::string& fn);
std::map<std::string, std::string> read_files_in_dir(const std::string& path); std::map<std::string, std::string> read_files_in_dir(const std::string& path);
void remove_files_in_dir(const std::string& path);
int write_file(const char* path, const void* data, size_t size, int flags = O_WRONLY, mode_t mode = 0664); int write_file(const char* path, const void* data, size_t size, int flags = O_WRONLY, mode_t mode = 0664);
FILE* safe_fopen(const char* filename, const char* mode); FILE* safe_fopen(const char* filename, const char* mode);
size_t safe_fwrite(const void * ptr, size_t size, size_t count, FILE * stream); size_t safe_fwrite(const void * ptr, size_t size, size_t count, FILE * stream);
int safe_fflush(FILE *stream); int safe_fflush(FILE *stream);
int safe_ioctl(int fd, unsigned long request, void *argp);
std::string readlink(const std::string& path); std::string readlink(const std::string& path);
bool file_exists(const std::string& fn); bool file_exists(const std::string& fn);
+1 -1
View File
@@ -1 +1 @@
#define COMMA_VERSION "2022.09.07" #define COMMA_VERSION "2023.02.08"
+233 -216
View File
@@ -4,225 +4,242 @@
A supported vehicle is one that just works when you install a comma three. All supported cars provide a better experience than any stock system. A supported vehicle is one that just works when you install a comma three. All supported cars provide a better experience than any stock system.
# 205 Supported Cars # 220 Supported Cars
|Make|Model|Supported Package|ACC|No ACC accel below|No ALC below|Steering Torque|Harness| |Make|Model|Supported Package|ACC|No ACC accel below|No ALC below|Steering Torque|Resume from stop|Harness|
|---|---|---|:---:|:---:|:---:|:---:|:---:| |---|---|---|:---:|:---:|:---:|:---:|:---:|:---:|
|Acura|ILX 2016-19|AcuraWatch Plus|openpilot|25 mph|25 mph|[![star](assets/icon-star-empty.svg)](##)|Honda Nidec| |Acura|ILX 2016-19|AcuraWatch Plus|openpilot|25 mph|25 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Honda Nidec|
|Acura|RDX 2016-18|AcuraWatch Plus|openpilot|25 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|Honda Nidec| |Acura|RDX 2016-18|AcuraWatch Plus|openpilot|25 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Honda Nidec|
|Acura|RDX 2019-22|All|Stock|0 mph|3 mph|[![star](assets/icon-star-empty.svg)](##)|Honda Bosch A| |Acura|RDX 2019-22|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|3 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Honda Bosch A|
|Audi|A3 2014-19|ACC + Lane Assist|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|VW| |Audi|A3 2014-19|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,9</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|J533|
|Audi|A3 Sportback e-tron 2017-18|ACC + Lane Assist|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|VW| |Audi|A3 Sportback e-tron 2017-18|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,9</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|J533|
|Audi|Q2 2018|ACC + Lane Assist|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|VW| |Audi|Q2 2018|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,9</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|J533|
|Audi|Q3 2020-21|ACC + Lane Assist|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|VW| |Audi|Q3 2019-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,9</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|J533|
|Audi|RS3 2018|ACC + Lane Assist|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|VW| |Audi|RS3 2018|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,9</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|J533|
|Audi|S3 2015-17|ACC + Lane Assist|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|VW| |Audi|S3 2015-17|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,9</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|J533|
|Cadillac|Escalade ESV 2016[<sup>1</sup>](#footnotes)|Adaptive Cruise Control (ACC) & LKAS|openpilot|0 mph|7 mph|[![star](assets/icon-star-full.svg)](##)|OBD-II| |Cadillac|Escalade ESV 2016[<sup>3</sup>](#footnotes)|Adaptive Cruise Control (ACC) & LKAS|openpilot|0 mph|6 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|OBD-II|
|Chevrolet|Bolt EUV 2022-23|Premier or Premier Redline Trim without Super Cruise Package|Stock|0 mph|7 mph|[![star](assets/icon-star-full.svg)](##)|GM| |Chevrolet|Bolt EUV 2022-23|Premier or Premier Redline Trim without Super Cruise Package|openpilot available[<sup>1</sup>](#footnotes)|3 mph|6 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|GM|
|Chevrolet|Silverado 1500 2020-21|Safety Package II|Stock|0 mph|7 mph|[![star](assets/icon-star-full.svg)](##)|GM| |Chevrolet|Bolt EV 2022-23|2LT Trim with Adaptive Cruise Control Package|openpilot available[<sup>1</sup>](#footnotes)|3 mph|6 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|GM|
|Chevrolet|Volt 2017-18[<sup>1</sup>](#footnotes)|Adaptive Cruise Control|openpilot|0 mph|7 mph|[![star](assets/icon-star-full.svg)](##)|OBD-II| |Chevrolet|Silverado 1500 2020-21|Safety Package II|openpilot available[<sup>1</sup>](#footnotes)|3 mph|6 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|GM|
|Chrysler|Pacifica 2017-18|Adaptive Cruise Control|Stock|0 mph|9 mph|[![star](assets/icon-star-full.svg)](##)|FCA| |Chevrolet|Volt 2017-18[<sup>3</sup>](#footnotes)|Adaptive Cruise Control (ACC)|openpilot|0 mph|6 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|OBD-II|
|Chrysler|Pacifica 2019-20|Adaptive Cruise Control|Stock|0 mph|39 mph|[![star](assets/icon-star-full.svg)](##)|FCA| |Chrysler|Pacifica 2017-18|Adaptive Cruise Control (ACC)|Stock|0 mph|9 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|FCA|
|Chrysler|Pacifica 2021|All|Stock|0 mph|39 mph|[![star](assets/icon-star-full.svg)](##)|FCA| |Chrysler|Pacifica 2019-20|Adaptive Cruise Control (ACC)|Stock|0 mph|39 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|FCA|
|Chrysler|Pacifica Hybrid 2017-18|Adaptive Cruise Control|Stock|0 mph|9 mph|[![star](assets/icon-star-full.svg)](##)|FCA| |Chrysler|Pacifica 2021|All|Stock|0 mph|39 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|FCA|
|Chrysler|Pacifica Hybrid 2019-22|Adaptive Cruise Control|Stock|0 mph|39 mph|[![star](assets/icon-star-full.svg)](##)|FCA| |Chrysler|Pacifica Hybrid 2017-18|Adaptive Cruise Control (ACC)|Stock|0 mph|9 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|FCA|
|comma|body|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|None| |Chrysler|Pacifica Hybrid 2019-22|Adaptive Cruise Control (ACC)|Stock|0 mph|39 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|FCA|
|Genesis|G70 2018-19|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai F| |comma|body|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|None|
|Genesis|G70 2020|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai F| |Genesis|G70 2018-19|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai F|
|Genesis|G80 2017-19|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai H| |Genesis|G70 2020|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai F|
|Genesis|G90 2017-18|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai C| |Genesis|G80 2017-19|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai H|
|GMC|Acadia 2018[<sup>1</sup>](#footnotes)|Adaptive Cruise Control|openpilot|0 mph|7 mph|[![star](assets/icon-star-full.svg)](##)|OBD-II| |Genesis|G90 2017-18|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai C|
|GMC|Sierra 1500 2020-21|Driver Alert Package II|Stock|0 mph|7 mph|[![star](assets/icon-star-full.svg)](##)|GM| |Genesis|GV60 2023[<sup>5</sup>](#footnotes)|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai K|
|Honda|Accord 2018-22|All|Stock|0 mph|3 mph|[![star](assets/icon-star-empty.svg)](##)|Honda Bosch A| |Genesis|GV70 2022-23[<sup>5</sup>](#footnotes)|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai L|
|Honda|Accord Hybrid 2018-22|All|Stock|0 mph|3 mph|[![star](assets/icon-star-empty.svg)](##)|Honda Bosch A| |GMC|Acadia 2018[<sup>3</sup>](#footnotes)|Adaptive Cruise Control (ACC)|openpilot|0 mph|6 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|OBD-II|
|Honda|Civic 2016-18|Honda Sensing|openpilot|0 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|Honda Nidec| |GMC|Sierra 1500 2020-21|Driver Alert Package II|openpilot available[<sup>1</sup>](#footnotes)|3 mph|6 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|GM|
|Honda|Civic 2019-21|All|Stock|0 mph|2 mph[<sup>2</sup>](#footnotes)|[![star](assets/icon-star-empty.svg)](##)|Honda Bosch A| |Honda|Accord 2018-22|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|3 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Honda Bosch A|
|Honda|Civic 2022|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Honda Bosch B| |Honda|Accord Hybrid 2018-22|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|3 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Honda Bosch A|
|Honda|Civic Hatchback 2017-21|Honda Sensing|Stock|0 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|Honda Bosch A| |Honda|Civic 2016-18|Honda Sensing|openpilot|0 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Honda Nidec|
|Honda|Civic Hatchback 2022|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Honda Bosch B| |Honda|Civic 2019-21|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|2 mph[<sup>4</sup>](#footnotes)|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Honda Bosch A|
|Honda|CR-V 2015-16|Touring Trim|openpilot|25 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|Honda Nidec| |Honda|Civic 2022|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Honda Bosch B|
|Honda|CR-V 2017-22|Honda Sensing|Stock|0 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|Honda Bosch A| |Honda|Civic Hatchback 2017-21|Honda Sensing|openpilot available[<sup>1</sup>](#footnotes)|0 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Honda Bosch A|
|Honda|CR-V Hybrid 2017-19|Honda Sensing|Stock|0 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|Honda Bosch A| |Honda|Civic Hatchback 2022|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Honda Bosch B|
|Honda|e 2020|All|Stock|0 mph|3 mph|[![star](assets/icon-star-empty.svg)](##)|Honda Bosch A| |Honda|CR-V 2015-16|Touring Trim|openpilot|25 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Honda Nidec|
|Honda|Fit 2018-20|Honda Sensing|openpilot|25 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|Honda Nidec| |Honda|CR-V 2017-22|Honda Sensing|openpilot available[<sup>1</sup>](#footnotes)|0 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Honda Bosch A|
|Honda|Freed 2020|Honda Sensing|openpilot|25 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|Honda Nidec| |Honda|CR-V Hybrid 2017-19|Honda Sensing|openpilot available[<sup>1</sup>](#footnotes)|0 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Honda Bosch A|
|Honda|HR-V 2019-22|Honda Sensing|openpilot|25 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|Honda Nidec| |Honda|e 2020|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|3 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Honda Bosch A|
|Honda|Insight 2019-22|All|Stock|0 mph|3 mph|[![star](assets/icon-star-empty.svg)](##)|Honda Bosch A| |Honda|Fit 2018-20|Honda Sensing|openpilot|25 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Honda Nidec|
|Honda|Inspire 2018|All|Stock|0 mph|3 mph|[![star](assets/icon-star-empty.svg)](##)|Honda Bosch A| |Honda|Freed 2020|Honda Sensing|openpilot|25 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Honda Nidec|
|Honda|Odyssey 2018-20|Honda Sensing|openpilot|25 mph|0 mph|[![star](assets/icon-star-empty.svg)](##)|Honda Nidec| |Honda|HR-V 2019-22|Honda Sensing|openpilot|25 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Honda Nidec|
|Honda|Passport 2019-21|All|openpilot|25 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|Honda Nidec| |Honda|Insight 2019-22|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|3 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Honda Bosch A|
|Honda|Pilot 2016-22|Honda Sensing|openpilot|25 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|Honda Nidec| |Honda|Inspire 2018|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|3 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Honda Bosch A|
|Honda|Ridgeline 2017-22|Honda Sensing|openpilot|25 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|Honda Nidec| |Honda|Odyssey 2018-20|Honda Sensing|openpilot|25 mph|0 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Honda Nidec|
|Hyundai|Elantra 2017-19|Smart Cruise Control (SCC) & LKAS|Stock|19 mph|32 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai B| |Honda|Passport 2019-21|All|openpilot|25 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Honda Nidec|
|Hyundai|Elantra 2021-22|Smart Cruise Control (SCC) & LKAS|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai K| |Honda|Pilot 2016-22|Honda Sensing|openpilot|25 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Honda Nidec|
|Hyundai|Elantra Hybrid 2021-22|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai K| |Honda|Ridgeline 2017-22|Honda Sensing|openpilot|25 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Honda Nidec|
|Hyundai|Genesis 2015-16|Smart Cruise Control (SCC) & LKAS|Stock|19 mph|37 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai J| |Hyundai|Elantra 2017-19|Smart Cruise Control (SCC)|Stock|19 mph|32 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai B|
|Hyundai|Ioniq 5 2022|Highway Driving Assist II|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai Q| |Hyundai|Elantra 2021-22|Smart Cruise Control (SCC)|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai K|
|Hyundai|Ioniq Electric 2019|Smart Cruise Control (SCC) & LKAS|Stock|0 mph|32 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai C| |Hyundai|Elantra GT 2017-19|Smart Cruise Control (SCC)|Stock|0 mph|32 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai E|
|Hyundai|Ioniq Electric 2020|Smart Cruise Control (SCC) & LKAS|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai H| |Hyundai|Elantra Hybrid 2021-23|Smart Cruise Control (SCC)|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai K|
|Hyundai|Ioniq Hybrid 2017-19|Smart Cruise Control (SCC) & LKAS|Stock|0 mph|32 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai C| |Hyundai|Genesis 2015-16|Smart Cruise Control (SCC)|Stock|19 mph|37 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai J|
|Hyundai|Ioniq Hybrid 2020-22|Smart Cruise Control (SCC) & LFA|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai H| |Hyundai|i30 2017-19|Smart Cruise Control (SCC)|Stock|0 mph|32 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai E|
|Hyundai|Ioniq Plug-in Hybrid 2019|Smart Cruise Control (SCC) & LKAS|Stock|0 mph|32 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai C| |Hyundai|Ioniq 5 (with HDA II) 2022-23[<sup>5</sup>](#footnotes)|Highway Driving Assist II|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai Q|
|Hyundai|Ioniq Plug-in Hybrid 2020-21|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai H| |Hyundai|Ioniq 5 (without HDA II) 2022-23[<sup>5</sup>](#footnotes)|Highway Driving Assist|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai K|
|Hyundai|Kona 2020|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai B| |Hyundai|Ioniq Electric 2019|Smart Cruise Control (SCC)|Stock|0 mph|32 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai C|
|Hyundai|Kona Electric 2018-21|Smart Cruise Control (SCC) & LKAS|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai G| |Hyundai|Ioniq Electric 2020|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai H|
|Hyundai|Kona Electric 2022|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai O| |Hyundai|Ioniq Hybrid 2017-19|Smart Cruise Control (SCC)|Stock|0 mph|32 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai C|
|Hyundai|Kona Hybrid 2020|Smart Cruise Control (SCC) & LKAS|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai I| |Hyundai|Ioniq Hybrid 2020-22|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai H|
|Hyundai|Palisade 2020-22|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai H| |Hyundai|Ioniq Plug-in Hybrid 2019|Smart Cruise Control (SCC)|openpilot available[<sup>1</sup>](#footnotes)|0 mph|32 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai C|
|Hyundai|Santa Fe 2019-20|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai D| |Hyundai|Ioniq Plug-in Hybrid 2020-21|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai H|
|Hyundai|Santa Fe 2021-22|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai L| |Hyundai|Kona 2020|Smart Cruise Control (SCC)|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai B|
|Hyundai|Santa Fe Hybrid 2022|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai L| |Hyundai|Kona Electric 2018-21|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai G|
|Hyundai|Santa Fe Plug-in Hybrid 2022|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai L| |Hyundai|Kona Electric 2022|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai O|
|Hyundai|Sonata 2018-19|Smart Cruise Control (SCC) & LKAS|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai E| |Hyundai|Kona Hybrid 2020|Smart Cruise Control (SCC)|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai I|
|Hyundai|Sonata 2020-22|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai A| |Hyundai|Palisade 2020-22|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai H|
|Hyundai|Sonata Hybrid 2020-22|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai A| |Hyundai|Santa Cruz 2021-22[<sup>5</sup>](#footnotes)|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai N|
|Hyundai|Tucson 2021|Smart Cruise Control (SCC)|Stock|19 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai L| |Hyundai|Santa Fe 2019-20|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai D|
|Hyundai|Tucson Diesel 2019|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai L| |Hyundai|Santa Fe 2021-22|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai L|
|Hyundai|Tucson Hybrid 2022|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai N| |Hyundai|Santa Fe Hybrid 2022|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai L|
|Hyundai|Veloster 2019-20|Smart Cruise Control (SCC)|Stock|5 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai E| |Hyundai|Santa Fe Plug-in Hybrid 2022|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai L|
|Jeep|Grand Cherokee 2016-18|Adaptive Cruise Control|Stock|0 mph|9 mph|[![star](assets/icon-star-full.svg)](##)|FCA| |Hyundai|Sonata 2018-19|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai E|
|Jeep|Grand Cherokee 2019-21|Adaptive Cruise Control|Stock|0 mph|39 mph|[![star](assets/icon-star-full.svg)](##)|FCA| |Hyundai|Sonata 2020-22|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai A|
|Kia|Ceed 2019|Smart Cruise Control (SCC) & LKAS|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai E| |Hyundai|Sonata Hybrid 2020-22|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai A|
|Kia|EV6 2022|Highway Driving Assist II|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai P| |Hyundai|Tucson 2021|Smart Cruise Control (SCC)|openpilot available[<sup>1</sup>](#footnotes)|19 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai L|
|Kia|Forte 2018|Smart Cruise Control (SCC) & LKAS|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai B| |Hyundai|Tucson 2022[<sup>5</sup>](#footnotes)|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai N|
|Kia|Forte 2019-21|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai G| |Hyundai|Tucson 2023[<sup>5</sup>](#footnotes)|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai N|
|Kia|K5 2021-22|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai A| |Hyundai|Tucson Diesel 2019|Smart Cruise Control (SCC)|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai L|
|Kia|Niro Electric 2019|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai H| |Hyundai|Tucson Hybrid 2022[<sup>5</sup>](#footnotes)|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai N|
|Kia|Niro Electric 2020|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai F| |Hyundai|Veloster 2019-20|Smart Cruise Control (SCC)|Stock|5 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai E|
|Kia|Niro Electric 2021|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai C| |Jeep|Grand Cherokee 2016-18|Adaptive Cruise Control (ACC)|Stock|0 mph|9 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|FCA|
|Kia|Niro Electric 2022|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai H| |Jeep|Grand Cherokee 2019-21|Adaptive Cruise Control (ACC)|Stock|0 mph|39 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|FCA|
|Kia|Niro Hybrid 2021|Smart Cruise Control (SCC) & LKAS|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai F| |Kia|Ceed 2019|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai E|
|Kia|Niro Hybrid 2022|Smart Cruise Control (SCC) & LKAS|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai H| |Kia|EV6 (with HDA II) 2022[<sup>5</sup>](#footnotes)|Highway Driving Assist II|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai P|
|Kia|Niro Plug-in Hybrid 2018-19|Smart Cruise Control (SCC) & LKAS|openpilot|10 mph|32 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai C| |Kia|EV6 (without HDA II) 2022[<sup>5</sup>](#footnotes)|Highway Driving Assist|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai L|
|Kia|Optima 2017|Smart Cruise Control (SCC) & LKAS|Stock|0 mph|32 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai B| |Kia|Forte 2019-21|Smart Cruise Control (SCC)|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai G|
|Kia|Optima 2019|Smart Cruise Control (SCC) & LKAS|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai G| |Kia|K5 2021-22|Smart Cruise Control (SCC)|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai A|
|Kia|Seltos 2021|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai A| |Kia|Niro EV 2019|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai H|
|Kia|Sorento 2018|Smart Cruise Control (SCC) & LKAS|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai C| |Kia|Niro EV 2020|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai F|
|Kia|Sorento 2019|Smart Cruise Control (SCC) & LKAS|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai E| |Kia|Niro EV 2021|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai C|
|Kia|Stinger 2018-20|Smart Cruise Control (SCC) & LKAS|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai C| |Kia|Niro EV 2022|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai H|
|Kia|Telluride 2020|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Hyundai H| |Kia|Niro Hybrid 2021|Smart Cruise Control (SCC)|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai F|
|Lexus|CT Hybrid 2017-18|Lexus Safety System+|Stock[<sup>3</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Kia|Niro Hybrid 2022|Smart Cruise Control (SCC)|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai H|
|Lexus|ES 2019-22|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Kia|Niro Plug-in Hybrid 2018-19|All|openpilot available[<sup>1</sup>](#footnotes)|10 mph|32 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai C|
|Lexus|ES Hybrid 2017-18|Lexus Safety System+|Stock[<sup>3</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Kia|Optima 2017|Advanced Smart Cruise Control|Stock|0 mph|32 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai B|
|Lexus|ES Hybrid 2019-22|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Kia|Optima 2019-20|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai G|
|Lexus|IS 2017-19|All|Stock|19 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Kia|Seltos 2021|Smart Cruise Control (SCC)|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai A|
|Lexus|NX 2018-19|All|Stock[<sup>3</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Kia|Sorento 2018|Advanced Smart Cruise Control|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai C|
|Lexus|NX 2020-21|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Kia|Sorento 2019|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai E|
|Lexus|NX Hybrid 2018-19|All|Stock[<sup>3</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Kia|Sorento Plug-in Hybrid 2022-23[<sup>5</sup>](#footnotes)|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai A|
|Lexus|NX Hybrid 2020-21|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Kia|Sportage 2023[<sup>5</sup>](#footnotes)|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai N|
|Lexus|RC 2017-20|All|Stock|19 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Kia|Sportage Hybrid 2023[<sup>5</sup>](#footnotes)|Smart Cruise Control (SCC)|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai N|
|Lexus|RX 2016-19|All|Stock[<sup>3</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Kia|Stinger 2018-20|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai C|
|Lexus|RX 2020-22|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Kia|Stinger 2022|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai K|
|Lexus|RX Hybrid 2016-19|All|Stock[<sup>3</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Kia|Telluride 2020-22|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Hyundai H|
|Lexus|RX Hybrid 2020-21|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Lexus|CT Hybrid 2017-18|Lexus Safety System+|openpilot available[<sup>2</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|Toyota|
|Lexus|UX Hybrid 2019-22|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Lexus|ES 2019-22|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Toyota|
|Mazda|CX-5 2022|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Mazda| |Lexus|ES Hybrid 2017-18|Lexus Safety System+|openpilot available[<sup>2</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Toyota|
|Mazda|CX-9 2021-22|All|Stock|0 mph|28 mph|[![star](assets/icon-star-full.svg)](##)|Mazda| |Lexus|ES Hybrid 2019-22|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Toyota|
|Nissan|Altima 2019-20|ProPILOT Assist|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Nissan B| |Lexus|IS 2017-19|All|Stock|19 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|Toyota|
|Nissan|Leaf 2018-22|ProPILOT Assist|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Nissan A| |Lexus|NX 2018-19|All|openpilot available[<sup>2</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|Toyota|
|Nissan|Rogue 2018-20|ProPILOT Assist|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Nissan A| |Lexus|NX 2020-21|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Toyota|
|Nissan|X-Trail 2017|ProPILOT Assist|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Nissan A| |Lexus|NX Hybrid 2018-19|All|openpilot available[<sup>2</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|Toyota|
|Ram|1500 2019-22|Adaptive Cruise Control|Stock|0 mph|32 mph|[![star](assets/icon-star-full.svg)](##)|Ram| |Lexus|NX Hybrid 2020-21|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Toyota|
|SEAT|Ateca 2018|Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|VW| |Lexus|RC 2017-20|All|Stock|19 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|Toyota|
|SEAT|Leon 2014-20|Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|VW| |Lexus|RX 2016|Lexus Safety System+|openpilot available[<sup>2</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|Toyota|
|Subaru|Ascent 2019-21|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Subaru A| |Lexus|RX 2017-19|All|openpilot available[<sup>2</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|Toyota|
|Subaru|Crosstrek 2018-19|EyeSight Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-empty.svg)](##)|Subaru A| |Lexus|RX 2020-22|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Toyota|
|Subaru|Crosstrek 2020-21|EyeSight Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Subaru A| |Lexus|RX Hybrid 2016|Lexus Safety System+|openpilot available[<sup>2</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|Toyota|
|Subaru|Forester 2019-21|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Subaru A| |Lexus|RX Hybrid 2017-19|All|openpilot available[<sup>2</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|Toyota|
|Subaru|Impreza 2017-19|EyeSight Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-empty.svg)](##)|Subaru A| |Lexus|RX Hybrid 2020-21|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Toyota|
|Subaru|Impreza 2020-22|EyeSight Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Subaru A| |Lexus|UX Hybrid 2019-22|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Toyota|
|Subaru|Legacy 2020-22|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Subaru B| |Mazda|CX-5 2022-23|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Mazda|
|Subaru|Outback 2020-22|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Subaru B| |Mazda|CX-9 2021-23|All|Stock|0 mph|28 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Mazda|
|Subaru|XV 2018-19|EyeSight Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-empty.svg)](##)|Subaru A| |Nissan|Altima 2019-20|ProPILOT Assist|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|Nissan B|
|Subaru|XV 2020-21|EyeSight Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Subaru A| |Nissan|Leaf 2018-22|ProPILOT Assist|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|Nissan A|
|Škoda|Kamiq 2021[<sup>5</sup>](#footnotes)|Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|VW| |Nissan|Rogue 2018-20|ProPILOT Assist|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|Nissan A|
|Škoda|Karoq 2019-21[<sup>7</sup>](#footnotes)|Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|VW| |Nissan|X-Trail 2017|ProPILOT Assist|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|Nissan A|
|Škoda|Kodiaq 2018-19|Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|VW| |Ram|1500 2019-22|Adaptive Cruise Control (ACC)|Stock|0 mph|32 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Ram|
|Škoda|Octavia 2015, 2018-19|Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|VW| |SEAT|Ateca 2018|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,9</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|J533|
|Škoda|Octavia RS 2016|Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|VW| |SEAT|Leon 2014-20|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,9</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|J533|
|Škoda|Scala 2020|Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|VW| |Subaru|Ascent 2019-21|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|Subaru A|
|Škoda|Superb 2015-18|Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|VW| |Subaru|Crosstrek 2018-19|EyeSight Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|Subaru A|
|Toyota|Alphard 2019-20|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Subaru|Crosstrek 2020-23|EyeSight Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|Subaru A|
|Toyota|Alphard Hybrid 2021|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Subaru|Forester 2019-21|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|Subaru A|
|Toyota|Avalon 2016|Toyota Safety Sense P|Stock[<sup>3</sup>](#footnotes)|19 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Subaru|Impreza 2017-19|EyeSight Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|Subaru A|
|Toyota|Avalon 2017-18|All|Stock[<sup>3</sup>](#footnotes)|19 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Subaru|Impreza 2020-22|EyeSight Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|Subaru A|
|Toyota|Avalon 2019-21|All|Stock[<sup>3</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Subaru|Legacy 2020-22|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|Subaru B|
|Toyota|Avalon 2022|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Subaru|Outback 2020-22|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|Subaru B|
|Toyota|Avalon Hybrid 2019-21|All|Stock[<sup>3</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Subaru|XV 2018-19|EyeSight Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|Subaru A|
|Toyota|Avalon Hybrid 2022|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Subaru|XV 2020-21|EyeSight Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|Subaru A|
|Toyota|C-HR 2017-21|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Škoda|Kamiq 2021[<sup>7</sup>](#footnotes)|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,9</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|J533[<sup>10</sup>](#footnotes)|
|Toyota|C-HR Hybrid 2017-19|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Škoda|Karoq 2019-21|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,9</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|J533|
|Toyota|Camry 2018-20|All|Stock|0 mph[<sup>4</sup>](#footnotes)|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Škoda|Kodiaq 2018-19|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,9</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|J533|
|Toyota|Camry 2021-22|All|openpilot|0 mph[<sup>4</sup>](#footnotes)|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Škoda|Octavia 2015, 2018-19|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,9</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|J533|
|Toyota|Camry Hybrid 2018-20|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Škoda|Octavia RS 2016|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,9</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|J533|
|Toyota|Camry Hybrid 2021-22|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Škoda|Scala 2020|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,9</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|J533[<sup>10</sup>](#footnotes)|
|Toyota|Corolla 2017-19|All|Stock[<sup>3</sup>](#footnotes)|19 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Škoda|Superb 2015-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,9</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|J533|
|Toyota|Corolla 2020-22|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Toyota|Alphard 2019-20|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Toyota|
|Toyota|Corolla Cross (Non-US only) 2020-21|All|openpilot|17 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Toyota|Alphard Hybrid 2021|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Toyota|
|Toyota|Corolla Cross Hybrid (Non-US only) 2020-22|All|openpilot|17 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Toyota|Avalon 2016|Toyota Safety Sense P|openpilot available[<sup>2</sup>](#footnotes)|19 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|Toyota|
|Toyota|Corolla Hatchback 2019-22|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Toyota|Avalon 2017-18|All|openpilot available[<sup>2</sup>](#footnotes)|19 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|Toyota|
|Toyota|Corolla Hybrid 2020-22|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Toyota|Avalon 2019-21|All|openpilot available[<sup>2</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|Toyota|
|Toyota|Highlander 2017-19|All|Stock[<sup>3</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Toyota|Avalon 2022|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Toyota|
|Toyota|Highlander 2020-22|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Toyota|Avalon Hybrid 2019-21|All|openpilot available[<sup>2</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|Toyota|
|Toyota|Highlander Hybrid 2017-19|All|Stock[<sup>3</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Toyota|Avalon Hybrid 2022|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Toyota|
|Toyota|Highlander Hybrid 2020-22|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Toyota|C-HR 2017-21|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|Toyota|
|Toyota|Mirai 2021|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Toyota|C-HR Hybrid 2017-19|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|Toyota|
|Toyota|Prius 2016|Toyota Safety Sense P|Stock[<sup>3</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Toyota|Camry 2018-20|All|Stock|0 mph[<sup>6</sup>](#footnotes)|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|Toyota|
|Toyota|Prius 2017-20|All|Stock[<sup>3</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Toyota|Camry 2021-22|All|openpilot|0 mph[<sup>6</sup>](#footnotes)|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Toyota|
|Toyota|Prius 2021-22|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Toyota|Camry Hybrid 2018-20|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|Toyota|
|Toyota|Prius Prime 2017-20|All|Stock[<sup>3</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Toyota|Camry Hybrid 2021-23|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Toyota|
|Toyota|Prius Prime 2021-22|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Toyota|Corolla 2017-19|All|openpilot available[<sup>2</sup>](#footnotes)|19 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|Toyota|
|Toyota|Prius v 2017|Toyota Safety Sense P|Stock[<sup>3</sup>](#footnotes)|19 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Toyota|Corolla 2020-22|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Toyota|
|Toyota|RAV4 2016|Toyota Safety Sense P|Stock[<sup>3</sup>](#footnotes)|19 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Toyota|Corolla Cross (Non-US only) 2020-23|All|openpilot|17 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Toyota|
|Toyota|RAV4 2017-18|All|Stock[<sup>3</sup>](#footnotes)|19 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Toyota|Corolla Cross Hybrid (Non-US only) 2020-22|All|openpilot|17 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Toyota|
|Toyota|RAV4 2019-21|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Toyota|Corolla Hatchback 2019-22|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Toyota|
|Toyota|RAV4 2022|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Toyota|Corolla Hybrid 2020-22|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Toyota|
|Toyota|RAV4 Hybrid 2016|Toyota Safety Sense P|Stock[<sup>3</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Toyota|Highlander 2017-19|All|openpilot available[<sup>2</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Toyota|
|Toyota|RAV4 Hybrid 2017-18|All|Stock[<sup>3</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Toyota|Highlander 2020-22|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Toyota|
|Toyota|RAV4 Hybrid 2019-21|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Toyota|Highlander Hybrid 2017-19|All|openpilot available[<sup>2</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Toyota|
|Toyota|RAV4 Hybrid 2022|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Toyota|Highlander Hybrid 2020-22|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Toyota|
|Toyota|Sienna 2018-20|All|Stock[<sup>3</sup>](#footnotes)|19 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|Toyota| |Toyota|Mirai 2021|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Toyota|
|Volkswagen|Arteon 2018-22[<sup>7,8</sup>](#footnotes)|Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|J533| |Toyota|Prius 2016|Toyota Safety Sense P|openpilot available[<sup>2</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|Toyota|
|Volkswagen|Arteon eHybrid 2020-22[<sup>7,8</sup>](#footnotes)|Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|J533| |Toyota|Prius 2017-20|All|openpilot available[<sup>2</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|Toyota|
|Volkswagen|Arteon R 2020-22[<sup>7,8</sup>](#footnotes)|Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|J533| |Toyota|Prius 2021-22|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Toyota|
|Volkswagen|Atlas 2018-22[<sup>7</sup>](#footnotes)|Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|J533| |Toyota|Prius Prime 2017-20|All|openpilot available[<sup>2</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|Toyota|
|Volkswagen|Atlas Cross Sport 2021-22[<sup>7</sup>](#footnotes)|Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|J533| |Toyota|Prius Prime 2021-22|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Toyota|
|Volkswagen|California 2021[<sup>7</sup>](#footnotes)|Driver Assistance|Stock|0 mph|31 mph|[![star](assets/icon-star-full.svg)](##)|J533| |Toyota|Prius v 2017|Toyota Safety Sense P|openpilot available[<sup>2</sup>](#footnotes)|19 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Toyota|
|Volkswagen|Caravelle 2020[<sup>7</sup>](#footnotes)|Driver Assistance|Stock|0 mph|31 mph|[![star](assets/icon-star-full.svg)](##)|J533| |Toyota|RAV4 2016|Toyota Safety Sense P|openpilot available[<sup>2</sup>](#footnotes)|19 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|Toyota|
|Volkswagen|CC 2018-22[<sup>7,8</sup>](#footnotes)|Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|J533| |Toyota|RAV4 2017-18|All|openpilot available[<sup>2</sup>](#footnotes)|19 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|Toyota|
|Volkswagen|e-Golf 2014-20|Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|VW| |Toyota|RAV4 2019-21|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Toyota|
|Volkswagen|Golf 2015-20[<sup>8</sup>](#footnotes)|Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|VW| |Toyota|RAV4 2022|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|Toyota|
|Volkswagen|Golf Alltrack 2015-19|Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|VW| |Toyota|RAV4 Hybrid 2016|Toyota Safety Sense P|openpilot available[<sup>2</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Toyota|
|Volkswagen|Golf GTD 2015-20|Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|VW| |Toyota|RAV4 Hybrid 2017-18|All|openpilot available[<sup>2</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Toyota|
|Volkswagen|Golf GTE 2015-20|Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|VW| |Toyota|RAV4 Hybrid 2019-21|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Toyota|
|Volkswagen|Golf GTI 2015-21|Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|VW| |Toyota|RAV4 Hybrid 2022|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|Toyota|
|Volkswagen|Golf R 2015-19[<sup>8</sup>](#footnotes)|Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|VW| |Toyota|Sienna 2018-20|All|openpilot available[<sup>2</sup>](#footnotes)|19 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|Toyota|
|Volkswagen|Golf SportsVan 2015-20|Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|VW| |Volkswagen|Arteon 2018-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,9</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|J533|
|Volkswagen|Jetta 2018-22[<sup>7</sup>](#footnotes)|Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|J533| |Volkswagen|Arteon eHybrid 2020-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,9</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|J533|
|Volkswagen|Jetta GLI 2021-22[<sup>7</sup>](#footnotes)|Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|J533| |Volkswagen|Arteon R 2020-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,9</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|J533|
|Volkswagen|Passat 2015-22[<sup>6,7,8</sup>](#footnotes)|Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|J533| |Volkswagen|Atlas 2018-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,9</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|J533|
|Volkswagen|Passat Alltrack 2015-22[<sup>7</sup>](#footnotes)|Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|J533| |Volkswagen|Atlas Cross Sport 2021-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,9</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|J533|
|Volkswagen|Passat GTE 2015-22[<sup>7,8</sup>](#footnotes)|Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|J533| |Volkswagen|California 2021|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,9</sup>](#footnotes)|0 mph|31 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|J533|
|Volkswagen|Polo 2020-22[<sup>7</sup>](#footnotes)|Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|J533| |Volkswagen|Caravelle 2020|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,9</sup>](#footnotes)|0 mph|31 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|J533|
|Volkswagen|Polo GTI 2020-22[<sup>7</sup>](#footnotes)|Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|J533| |Volkswagen|CC 2018-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,9</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|J533|
|Volkswagen|T-Cross 2021[<sup>7</sup>](#footnotes)|Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|J533| |Volkswagen|e-Golf 2014-20|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,9</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|J533|
|Volkswagen|T-Roc 2021[<sup>7</sup>](#footnotes)|Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|J533| |Volkswagen|Golf 2015-20|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,9</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|J533|
|Volkswagen|Taos 2022[<sup>7</sup>](#footnotes)|Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|J533| |Volkswagen|Golf Alltrack 2015-19|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,9</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|J533|
|Volkswagen|Teramont 2018-22[<sup>7</sup>](#footnotes)|Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|J533| |Volkswagen|Golf GTD 2015-20|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,9</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|J533|
|Volkswagen|Teramont Cross Sport 2021-22[<sup>7</sup>](#footnotes)|Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|J533| |Volkswagen|Golf GTE 2015-20|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,9</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|J533|
|Volkswagen|Teramont X 2021-22[<sup>7</sup>](#footnotes)|Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|J533| |Volkswagen|Golf GTI 2015-21|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,9</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|J533|
|Volkswagen|Tiguan 2019-22[<sup>7</sup>](#footnotes)|Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|J533| |Volkswagen|Golf R 2015-19|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,9</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|J533|
|Volkswagen|Touran 2017|Driver Assistance|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|VW| |Volkswagen|Golf SportsVan 2015-20|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,9</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|J533|
|Volkswagen|Jetta 2018-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,9</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|J533|
|Volkswagen|Jetta GLI 2021-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,9</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|J533|
|Volkswagen|Passat 2015-22[<sup>8</sup>](#footnotes)|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,9</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|J533|
|Volkswagen|Passat Alltrack 2015-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,9</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|J533|
|Volkswagen|Passat GTE 2015-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,9</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|J533|
|Volkswagen|Polo 2020-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,9</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|J533[<sup>10</sup>](#footnotes)|
|Volkswagen|Polo GTI 2020-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,9</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|J533[<sup>10</sup>](#footnotes)|
|Volkswagen|T-Cross 2021|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,9</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|J533[<sup>10</sup>](#footnotes)|
|Volkswagen|T-Roc 2021|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,9</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|J533[<sup>10</sup>](#footnotes)|
|Volkswagen|Taos 2022|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,9</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|J533|
|Volkswagen|Teramont 2018-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,9</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|J533|
|Volkswagen|Teramont Cross Sport 2021-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,9</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|J533|
|Volkswagen|Teramont X 2021-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,9</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|J533|
|Volkswagen|Tiguan 2019-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,9</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|J533|
|Volkswagen|Touran 2017|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,9</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|J533|
<a id="footnotes"></a> <a id="footnotes"></a>
<sup>1</sup>Requires a <a href="https://github.com/commaai/openpilot/wiki/GM#hardware">community built ASCM harness</a>. <b><i>NOTE: disconnecting the ASCM disables Automatic Emergency Braking (AEB).</i></b> <br /> <sup>1</sup>Experimental openpilot longitudinal control is available behind a toggle; the toggle is only available in non-release branches such as `devel` or `master-ci`. <br />
<sup>2</sup>2019 Honda Civic 1.6L Diesel Sedan does not have ALC below 12mph. <br /> <sup>2</sup>By default, this car will use the stock Adaptive Cruise Control (ACC) for longitudinal control. If the Driver Support Unit (DSU) is disconnected, openpilot ACC will replace stock ACC. <b><i>NOTE: disconnecting the DSU disables Automatic Emergency Braking (AEB).</i></b> <br />
<sup>3</sup>When the Driver Support Unit (DSU) is disconnected, openpilot Adaptive Cruise Control (ACC) will replace stock Adaptive Cruise Control (ACC). <b><i>NOTE: disconnecting the DSU disables Automatic Emergency Braking (AEB).</i></b> <br /> <sup>3</sup>Requires a <a href="https://github.com/commaai/openpilot/wiki/GM#hardware">community built ASCM harness</a>. <b><i>NOTE: disconnecting the ASCM disables Automatic Emergency Braking (AEB).</i></b> <br />
<sup>4</sup>openpilot operates above 28mph for Camry 4CYL L, 4CYL LE and 4CYL SE which don't have Full-Speed Range Dynamic Radar Cruise Control. <br /> <sup>4</sup>2019 Honda Civic 1.6L Diesel Sedan does not have ALC below 12mph. <br />
<sup>5</sup>Not including the China market Kamiq, which is based on the (currently) unsupported PQ34 platform. <br /> <sup>5</sup>Requires a <a href="https://comma.ai/shop/panda" target="_blank">red panda</a>, additional <a href="https://comma.ai/shop/harness-box" target="_blank">harness box</a>, additional <a href="https://comma.ai/shop/obd-c-cable" target="_blank">OBD-C cable</a>, USB-A to USB-A cable, and a USB-A to USB-C OTG dongle. <br />
<sup>6</sup>Refers only to the MQB-based European B8 Passat, not the NMS Passat in the USA/China/Mideast markets. <br /> <sup>6</sup>openpilot operates above 28mph for Camry 4CYL L, 4CYL LE and 4CYL SE which don't have Full-Speed Range Dynamic Radar Cruise Control. <br />
<sup>7</sup>Model-years 2021 and beyond may have a new camera harness design, which isn't yet available from the comma store. Before ordering, remove the Lane Assist camera cover and check to see if the connector is black (older design) or light brown (newer design). In the interim, if your car has a J533 connector CAN gateway inside the dashboard, choose "VW J533 Development" from the vehicle drop-down for a suitable harness. (Some newer models are also observed to not have a J533 connector.) <br /> <sup>7</sup>Not including the China market Kamiq, which is based on the (currently) unsupported PQ34 platform. <br />
<sup>8</sup>Includes versions with extra rear cargo space (may be called Variant, Estate, SportWagen, Shooting Brake, etc.) <br /> <sup>8</sup>Refers only to the MQB-based European B8 Passat, not the NMS Passat in the USA/China/Mideast markets. <br />
<sup>9</sup>Only available for vehicles using a gateway (J533) harness. At this time, vehicles using a camera harness are limited to using stock ACC. <br />
<sup>10</sup>Model-years 2022 and beyond may have a combined CAN gateway and BCM, which is supported by openpilot in software, but doesn't yet have a harness available from the comma store. <br />
## Community Maintained Cars ## Community Maintained Cars
Although they're not upstream, the community has openpilot running on other makes and models. See the 'Community Supported Models' section of each make [on our wiki](https://wiki.comma.ai/). Although they're not upstream, the community has openpilot running on other makes and models. See the 'Community Supported Models' section of each make [on our wiki](https://wiki.comma.ai/).
+1 -1
View File
@@ -8,4 +8,4 @@ Additionally, on specific supported cars (see ACC column in [supported cars](CAR
* Stock ACC is replaced by openpilot ACC. * Stock ACC is replaced by openpilot ACC.
* openpilot FCW operates in addition to stock FCW. * openpilot FCW operates in addition to stock FCW.
openpilot should preserve all other vehicle's stock features, including, but are not limited to: FCW, Automatic Emergency Braking (AEB), auto high-beam, blind spot warning, and side collision warning. openpilot should preserve all other vehicle's stock features, including, but not limited to: FCW, Automatic Emergency Braking (AEB), auto high-beam, blind spot warning, and side collision warning.
+39
View File
@@ -0,0 +1,39 @@
# OSM Installation instructions:
# https://wiki.openstreetmap.org/wiki/Overpass_API/Installation
# Install expat. All other needed libraries are already installed.
# g++ make expat libexpat1-dev zlib1g-dev
#sudo apt-get update
#sudo apt-get install expat
# Add required path variables to environment
export OSM_ROOT=/data/media/0/osm
if [ -f /TICI ]; then
export OSM_VERSION=0.7.57
else
export OSM_VERSION=0.7.56
fi
export GZ_FILE=osm-3s_v${OSM_VERSION}.tar.xz
export OSM_DIR=${OSM_ROOT}/${OSM_VERSION}
# export DB_DIR=/data/osm/db/
# Download and extract overpass library
if [ ! -d ${OSM_ROOT} ]; then
mkdir -p ${OSM_ROOT}
fi
tar -vxf /data/openpilot/selfdrive/mapd/assets/${GZ_FILE} -C ${OSM_ROOT}
# Configure and install overpass
#cd $(ls | grep $SOURCE_FILE_ROOT\.[0-9]*)
#cd osm-3s_v0.7.56
#./configure CXXFLAGS="-O2" --prefix=$EXEC_DIR
#make install
# Remove source files after installation
#cd ..
if [ -d ${OSM_DIR} ]; then
rm -fr ${OSM_DIR}
fi
mv ${OSM_ROOT}/osm-3s_v${OSM_VERSION} ${OSM_ROOT}/v${OSM_VERSION}
+34
View File
@@ -0,0 +1,34 @@
export OSM_DIR=/data/media/0/osm
export OSM_LOCATION=$(cat /data/params/d/OsmLocationUrl)
export OSM_LOCATION_TEXT=$(cat /data/params/d/OsmLocationName)
export XZ_MAP_FILE_NAME=${OSM_LOCATION_TEXT}.tar.xz
export XZ_MAP_FILE=${OSM_DIR}/${XZ_MAP_FILE_NAME}
# WD
cd $OSM_DIR
# Remove legacy compressed map file if existing
rm -rf $XZ_MAP_FILE
# Download map file
wget -O ${XZ_MAP_FILE_NAME} ${OSM_LOCATION}
if [[ "$?" != 0 ]]; then
echo "Error downloading map file"
else
echo "Successfully downloaded map file"
# Remove current db dir if existing
rm -rf ${DB_DIR}/db
if [ -d ${OSM_DIR}/${OSM_LOCATION_TEXT} ]; then
rm -rf ${OSM_DIR}/${OSM_LOCATION_TEXT}
fi
# Decompressing
tar -vxf ${XZ_MAP_FILE_NAME}
mv ${OSM_LOCATION_TEXT} db
# Remove compressed map files after expanding
rm -rf $XZ_MAP_FILE
fi
+27 -28
View File
@@ -11,8 +11,9 @@ from datetime import datetime
from math import sin, cos, sqrt, fabs, atan2 from math import sin, cos, sqrt, fabs, atan2
from .gps_time import GPSTime, utc_to_gpst from .gps_time import GPSTime, utc_to_gpst
from .constants import SPEED_OF_LIGHT, SECS_IN_MIN, SECS_IN_HR, SECS_IN_DAY, EARTH_ROTATION_RATE, EARTH_GM from .constants import SPEED_OF_LIGHT, SECS_IN_MIN, SECS_IN_HR, SECS_IN_DAY, \
from .helpers import get_constellation SECS_IN_WEEK, EARTH_ROTATION_RATE, EARTH_GM
from .helpers import get_constellation, get_prn_from_nmea_id
def read4(f, rinex_ver): def read4(f, rinex_ver):
@@ -74,7 +75,7 @@ class EphemerisType(IntEnum):
FINAL_ORBIT = 1 FINAL_ORBIT = 1
RAPID_ORBIT = 2 RAPID_ORBIT = 2
ULTRA_RAPID_ORBIT = 3 ULTRA_RAPID_ORBIT = 3
QCOM_POLY = 4 # Currently not supported QCOM_POLY = 4
@staticmethod @staticmethod
def all_orbits(): def all_orbits():
@@ -225,7 +226,8 @@ class GLONASSEphemeris(Ephemeris):
class PolyEphemeris(Ephemeris): class PolyEphemeris(Ephemeris):
def __init__(self, prn: str, data, epoch: GPSTime, ephem_type: EphemerisType, file_epoch: GPSTime, file_name: str, healthy=True, tgd=0): def __init__(self, prn: str, data, epoch: GPSTime, ephem_type: EphemerisType,
file_epoch: GPSTime=None, file_name: str=None, healthy=True, tgd=0):
super().__init__(prn, data, epoch, ephem_type, healthy, max_time_diff=SECS_IN_HR, file_epoch=file_epoch, file_name=file_name) super().__init__(prn, data, epoch, ephem_type, healthy, max_time_diff=SECS_IN_HR, file_epoch=file_epoch, file_name=file_name)
self.tgd = tgd self.tgd = tgd
self.to_json() self.to_json()
@@ -530,28 +532,25 @@ def parse_rinex_nav_msg_glonass(file_name):
return ephems return ephems
''' def parse_qcom_ephem(qcom_poly, current_week):
svId = qcom_poly.svId
data = qcom_poly
t0 = data.t0
# fix glonass time
prn = get_prn_from_nmea_id(svId)
if prn == 'GLONASS':
# TODO should handle leap seconds better
epoch = GPSTime(current_week, (t0 + 3*SECS_IN_WEEK) % (SECS_IN_WEEK) + 18)
else:
epoch = GPSTime(current_week, t0)
poly_data = {}
poly_data['t0'] = epoch
poly_data['xyz'] = np.array([
[data.xyz0[0], data.xyzN[0], data.xyzN[1], data.xyzN[2]],
[data.xyz0[1], data.xyzN[3], data.xyzN[4], data.xyzN[5]],
[data.xyz0[2], data.xyzN[6], data.xyzN[7], data.xyzN[8]] ]).T
def parse_qcom_ephems(qcom_polys, current_week): poly_data['clock'] = [1e-3*data.other[3], 1e-3*data.other[2], 1e-3*data.other[1], 1e-3*data.other[0]]
ephems = [] poly_data['deg'] = 3
for qcom_poly in qcom_polys: poly_data['deg_t'] = 3
svId = qcom_poly.qcomGnss.drSvPoly.svId return PolyEphemeris(prn, poly_data, epoch, ephem_type=EphemerisType.QCOM_POLY)
data = qcom_poly.qcomGnss.drSvPoly
t0 = data.t0
# fix glonass time
if get_constellation(svId) == 'GLONASS':
# TODO should handle leap seconds better
epoch = GPSTime(current_week, (t0 + 3*SECS_IN_WEEK) % (SECS_IN_WEEK) + 18)
else:
epoch = GPSTime(current_week, t0)
poly_data = {}
poly_data['t0'] = epoch
poly_data['x'] = [data.xyzN[2], data.xyzN[1], data.xyzN[0], data.xyz0[0]]
poly_data['y'] = [data.xyzN[5], data.xyzN[4], data.xyzN[3], data.xyz0[1]]
poly_data['z'] = [data.xyzN[8], data.xyzN[7], data.xyzN[6], data.xyz0[2]]
poly_data['clock'] = [1e-3*data.other[3], 1e-3*data.other[2], 1e-3*data.other[1], 1e-3*data.other[0]]
poly_data['deg'] = 3
poly_data['deg_t'] = 3
ephems.append(PolyEphemeris(svId, poly_data, epoch, eph_type=EphemerisType.QCOM_POLY))
return ephems
'''
+5 -3
View File
@@ -32,11 +32,13 @@ class ConstellationId(IntEnum):
def from_qcom_source(cls, report_source: int): def from_qcom_source(cls, report_source: int):
if report_source == 0: if report_source == 0:
return ConstellationId.GPS return ConstellationId.GPS
if report_source == 1:
return ConstellationId.GLONASS
if report_source == 2:
return ConstellationId.BEIDOU
if report_source == 6: if report_source == 6:
return ConstellationId.SBAS return ConstellationId.SBAS
elif report_source == 1: raise NotImplementedError('Only GPS (0), GLONASS (1), BEIDOU (2) and SBAS (6) are supported from qcom, not:', {report_source})
return ConstellationId.GLONASS
raise NotImplementedError('Only GPS (0), SBAS (1) and GLONASS (6) are supported from qcom, not:', {report_source})
# From https://gpsd.gitlab.io/gpsd/NMEA.html#_satellite_ids # From https://gpsd.gitlab.io/gpsd/NMEA.html#_satellite_ids
+27 -2
View File
@@ -166,6 +166,11 @@ function two_init {
echo "Installing $MODULE..." echo "Installing $MODULE..."
tar -zxvf "$LIB_PATH/$MODULE.tar.gz" -C "$PY_LIB_DEST/" tar -zxvf "$LIB_PATH/$MODULE.tar.gz" -C "$PY_LIB_DEST/"
fi fi
# panda
if [ ! -f "$PY_LIB_DEST/spidev.cpython-38.so" ]; then
echo "Installing spidev.cpython-38.so..."
cp -f "$LIB_PATH/spidev.cpython-38.so" "$PY_LIB_DEST/"
fi
mount -o remount,r /system mount -o remount,r /system
# Check for NEOS update # Check for NEOS update
@@ -216,7 +221,18 @@ function agnos_init {
fi fi
$DIR/system/hardware/tici/updater $AGNOS_PY $MANIFEST $DIR/system/hardware/tici/updater $AGNOS_PY $MANIFEST
fi fi
./custom_dep.py
#dp: change splash logo
if [ -f "/usr/comma/.dp_splash" ]; then
echo "DP splash exists."
else
echo "DP splash not deployed yet"
sudo mount -o rw,remount /
sudo cp /data/openpilot/selfdrive/dragonpilot/bg.jpg /usr/comma/bg.jpg
sudo touch /usr/comma/.dp_splash
sudo mount -o ro,remount /
sudo reboot
fi
} }
function launch { function launch {
@@ -280,7 +296,16 @@ function launch {
# start manager # start manager
cd selfdrive/manager cd selfdrive/manager
./build.py && ./manager.py if [ -f /data/params/d/OsmLocal ]; then
OSM_LOCAL=`cat /data/params/d/OsmLocal`
else
OSM_LOCAL="0"
fi
if [ $OSM_LOCAL = "1" ]; then
./build.py && ./local_osm_install.py && ./manager.py
else
./build.py && ./manager.py
fi
# if broken, keep on screen error # if broken, keep on screen error
while true; do sleep 1; done while true; do sleep 1; done
+1 -1
View File
@@ -11,7 +11,7 @@ if [ -z "$NEOS_VERSION" ]; then
fi fi
if [ -z "$AGNOS_VERSION" ]; then if [ -z "$AGNOS_VERSION" ]; then
export AGNOS_VERSION="5.2" export AGNOS_VERSION="6.2"
fi fi
if [ -z "$PASSIVE" ]; then if [ -z "$PASSIVE" ]; then
+2 -1
View File
@@ -52,5 +52,6 @@ COPY SConstruct .
COPY ./site_scons /project/site_scons COPY ./site_scons /project/site_scons
COPY . /project/opendbc COPY . /project/opendbc
RUN rm -rf /project/opendbc/.git RUN rm -rf /project/opendbc/.git && \
rm -rf /project/cereal/.git
RUN scons -c && scons -j$(nproc) RUN scons -c && scons -j$(nproc)
+1 -1
View File
@@ -5,7 +5,7 @@ Wondering what's the DBC file format? [Here](http://www.socialledge.com/sjsu/ind
## How to start reverse engineering cars ## How to start reverse engineering cars
[opendbc](https://github.com/commaai/opendbc) is integrated with [cabana](https://community.comma.ai/cabana/). [opendbc](https://github.com/commaai/opendbc) is integrated with [cabana](https://github.com/commaai/openpilot/tree/master/tools/cabana).
Use [panda](https://github.com/commaai/panda) to connect your car to a computer. Use [panda](https://github.com/commaai/panda) to connect your car to a computer.
+11
View File
@@ -71,8 +71,19 @@ struct DBC {
std::vector<Msg> msgs; std::vector<Msg> msgs;
std::vector<Val> vals; std::vector<Val> vals;
}; };
typedef struct ChecksumState {
int checksum_size;
int counter_size;
int checksum_start_bit;
int counter_start_bit;
bool little_endian;
SignalType checksum_type;
unsigned int (*calc_checksum)(uint32_t address, const Signal &sig, const std::vector<uint8_t> &d);
} ChecksumState;
#ifndef QCOM #ifndef QCOM
DBC* dbc_parse(const std::string& dbc_path); DBC* dbc_parse(const std::string& dbc_path);
DBC* dbc_parse_from_stream(const std::string &dbc_name, std::istream &stream, ChecksumState *checksum = nullptr);
const DBC* dbc_lookup(const std::string& dbc_name); const DBC* dbc_lookup(const std::string& dbc_name);
std::vector<std::string> get_dbc_names(); std::vector<std::string> get_dbc_names();
#else #else
Binary file not shown.
Binary file not shown.
+254 -253
View File
@@ -1126,7 +1126,8 @@ BO_ 984 IPMA_Data: 8 IPMA_ADAS
SG_ DasStats_D_Dsply : 47|2@0+ (1,0) [0|3] "SED" GWM SG_ DasStats_D_Dsply : 47|2@0+ (1,0) [0|3] "SED" GWM
SG_ DasWarn_D_Dsply : 44|2@0+ (1,0) [0|3] "SED" GWM SG_ DasWarn_D_Dsply : 44|2@0+ (1,0) [0|3] "SED" GWM
SG_ AhbHiBeam_D_Rq : 59|2@0+ (1,0) [0|3] "SED" GWM SG_ AhbHiBeam_D_Rq : 59|2@0+ (1,0) [0|3] "SED" GWM
SG_ Set_Me_X1 : 63|4@0+ (1,0) [0|15] "" XXX SG_ Passthru_63 : 63|4@0+ (1,0) [0|15] "" XXX
SG_ Passthru_48 : 48|1@0+ (1,0) [0|1] "" XXX
BO_ 985 IPMA_Data2: 8 IPMA_ADAS BO_ 985 IPMA_Data2: 8 IPMA_ADAS
SG_ LdwChime_B_Rq : 34|1@0+ (1,0) [0|1] "SED" GWM SG_ LdwChime_B_Rq : 34|1@0+ (1,0) [0|1] "SED" GWM
@@ -3645,6 +3646,258 @@ BO_TX_BU_ 357 : ECM_Diesel,PCM,PCM_HEV;
BO_TX_BU_ 342 : ECM_Diesel,PCM,PCM_HEV; BO_TX_BU_ 342 : ECM_Diesel,PCM,PCM_HEV;
BO_TX_BU_ 71 : ECM_Diesel,PCM,PCM_HEV; BO_TX_BU_ 71 : ECM_Diesel,PCM,PCM_HEV;
CM_ "New CAN FD network";
CM_ BU_ CMR_DSMC "Driver Status Monitor Camera";
CM_ BU_ IPMA_ADAS "Assist Driving Alert System";
CM_ BU_ PSCM "Passenger Front Climate Control Seat Module";
CM_ BU_ ABS_ESC "Anti-lock Brake / Traction Control Module";
CM_ BU_ TCCM "Transfer Case Control Module, 4x4 Control Module";
CM_ BU_ TCM_DSL "Transmission Control Module";
CM_ BU_ PCM "Powertrain Control Module";
CM_ BU_ ECM_Diesel "Diesel";
CM_ BU_ GWM "Gateway Module CGEA1.3(Star Architecture)";
CM_ BU_ TSTR "Diagnostic Tester";
CM_ SG_ 524 PrplWhlTotTqRqMxAwd_No_Cs "Signal not transmitted on gas variants.";
CM_ SG_ 524 PrplWhlTotTqRqMxAwd_No_Cnt "Signal not transmitted on gas variants.";
CM_ SG_ 1150 LocationServices_1 "Tx by HS3 APIM";
CM_ SG_ 542 LocationServices_3 "Tx by HS3 APIM";
CM_ SG_ 810 NtfyDrvTrgtDist_L_Rq "Object.SetTripRangeAlert_Rq This signal is meant to provide the customer settings for the target distance remote notification";
CM_ SG_ 810 NtfyDrvSocLvl1_Pc_Rq "Object.SetCustomerLevelAlert_Rq This signal is meant to provide the customer settings for the SOC remote notification.";
CM_ SG_ 810 PtRmtRprt_D_Stat "Object.RemoteDataReport_St";
CM_ SG_ 550 PtWakeupActv1_B_Rq "ECG Application signal";
CM_ SG_ 982 LatCtlPath_No_Cnt "Signal not transmitted on gas variants.";
CM_ SG_ 982 LatCtlPath_No_Cs "Signal not transmitted on gas variants.";
CM_ SG_ 1104 DrvEngageLevel_No_Cs "Signal not transmitted on gas variants.";
CM_ SG_ 1104 DrvEngageLevel_No_Cnt "Signal not transmitted on gas variants.";
CM_ SG_ 1085 ULoRgenTestMde_B_Stat "Signal not transmitted on HEV variants.";
CM_ SG_ 1085 PwSrcULoComm_B_Falt "Signal not transmitted on HEV variants.";
CM_ SG_ 1445 SOBDMC_AutoSarNMReserved4 "Signal not transmitted on gas and diesel variants.";
CM_ SG_ 1445 SOBDMC_AutoSarNMReserved3 "Signal not transmitted on gas and diesel variants.";
CM_ SG_ 1445 SOBDMC_AutoSarNMReserved2 "Signal not transmitted on gas and diesel variants.";
CM_ SG_ 1445 SOBDMC_AutoSarNMReserved1 "Signal not transmitted on gas and diesel variants.";
CM_ SG_ 1445 SOBDMC_AutoSarNMNodeId "Signal not transmitted on gas and diesel variants.";
CM_ SG_ 1445 SOBDMC_AutoSarNMControl "Signal not transmitted on gas and diesel variants.";
CM_ SG_ 1088 HvacPrecondMode2_D_Rq "Signal not transmitted on vehicles that do not have the Fuel operated heater feature.";
CM_ SG_ 1088 HvacPrecondBlwr2_D_Rq "Signal not transmitted on vehicles that do not have the Fuel operated heater feature.";
CM_ SG_ 786 ChrgStat_D_Dsply "Signal not transmitted by PCM_HEV";
CM_ SG_ 66 immoControlData_T2 "Not transmitted on all vehicle variants";
CM_ SG_ 66 immoControlCmd_T2 "Not transmitted on all vehicle variants";
CM_ SG_ 549 BeltminderAudioMute "Object.MyKey.BeltMinderAudioMute.St";
CM_ SG_ 549 Power_Up_Chime_Modules "Object.AlertMethod.IPC _Infotainment";
CM_ SG_ 549 Chime_Source "Object.AlertMethod.IPC_infotainment";
CM_ SG_ 611 AwdStat_D_RqDsply "Signal not transmitted on programs that do not have AWD.";
CM_ SG_ 611 AwdSrvcRqd_B_Rq "Signal not transmitted on programs that do not have AWD.";
CM_ SG_ 611 AwdLck_Tq_Rq "Signal not transmitted on programs that do not have AWD.";
CM_ SG_ 130 VehVTrlrAid_B_Rq "VR session start- req. limit blower speed no more than X volts. CC restriction on time msg. will be honored.Double Event msg1st event to request limit, 2nd event to release limit, No msg. CC Grammar v7.xls";
CM_ SG_ 130 SteMdule_U_Meas "DCR 1745 to update Tx from GWM to EP100ms. SteMdule_I_Est & SteMdule_U_Meas are used by BMS system & filtered. The filter uses standard periodic rate & changing to EP would adversely affect the filter.(jweinfur)";
CM_ SG_ 130 SteMdule_I_Est "DCR 1745 to update Tx from GWM to EP100ms. SteMdule_I_Est & SteMdule_U_Meas are used by BMS system & filtered. The filter uses standard periodic rate & changing to EP would adversely affect the filter.(jweinfur)";
CM_ SG_ 126 StePinRelInit_An_Sns "SASM will transmit these signals on vehicles with SASM and without PSCM. SCCM will not Tx this signal when SASM is present.";
CM_ SG_ 126 StePinAn_No_Cs "Signal not transmitted on gas variants.";
CM_ SG_ 1200 BrkTot_Tq_RqDrv "DCR 1836 to update Tx from GWM to EP100ms rejected due MPS6 TCM requires BrkTot_Tq_RqDrv at 20ms (bshu1).";
CM_ SG_ 1046 TCMode "Signal data set to 0x0 for ABS only vehicle option content";
CM_ SG_ 1046 DrvAntiLckLamp_D_Rq "update value table v8.34, not align w/GSDB, need etracker. ABS & IPC implemented as updated.";
CM_ SG_ 1046 BpedMove_D_Actl "CCMGenSigTimeoutTime=1000";
CM_ SG_ 1044 StePinOffst_An_Est "SASM will transmit these signals on vehicles with SASM and without PSCM. SCCM will not Tx this signal when SASM is present.";
CM_ SG_ 1044 StePinOffst_No_Cs "Signal not transmitted on gas variants.";
CM_ SG_ 534 BrkObdData_No_Actl "Signal not transmitted on gas, diesel and HEV. Only supported on PHEV.";
CM_ SG_ 534 BrkObdIndex_No_Actl "Signal not transmitted on gas, diesel and HEV. Only supported on PHEV.";
CM_ SG_ 534 WhlRotatRr_No_Cnt "DCR 1833 to update Tx from GWM to EP100ms. Wheel Count signals are used by complex algorithm to determine Tire Pressure by Location & can't change from 20msec. (jweinfur)";
CM_ SG_ 534 WhlRotatRl_No_Cnt "DCR 1833 to update Tx from GWM to EP100ms. Wheel Count signals are used by complex algorithm to determine Tire Pressure by Location & can't change from 20msec. (jweinfur)";
CM_ SG_ 534 WhlRotatFr_No_Cnt "DCR 1833 to update Tx from GWM to EP100ms. Wheel Count signals are used by complex algorithm to determine Tire Pressure by Location & can't change from 20msec. (jweinfur)";
CM_ SG_ 534 WhlRotatFl_No_Cnt "DCR 1833 to update Tx from GWM to EP100ms. Wheel Count signals are used by complex algorithm to determine Tire Pressure by Location & can't change from 20msec. (jweinfur)";
CM_ SG_ 531 VehLongOvrGnd_A_Est "CCMGenSigTimeoutTime=1000";
CM_ SG_ 1034 VehicleGGCCData "RCMGenSigTimeout=6000";
CM_ SG_ 1090 Mtr2State_D_ActlMntr "Signal Not transmitted on PCM_HEV variant";
CM_ SG_ 1090 Inv1Ain_I_ActlMntr "Signal Not transmitted on PCM_HEV variant";
CM_ SG_ 1090 VehElRnge_L_Dsply "Signal Not transmitted on HPCM variant";
CM_ SG_ 374 TrnRng_D_Rq "Powersplit HEVs with HF45, HPCM will Tx this message. For all other programs it will be Tx by PCM or TCM. ";
CM_ SG_ 374 TrnPrkSys_D_Actl "Powersplit HEVs with HF45, HPCM will Tx this message. For all other programs it will be Tx by PCM or TCM. ";
CM_ SG_ 374 GearLvr_D_ActlDrv "Powersplit HEVs with HF45, HPCM will Tx this message. For all other programs it will be Tx by PCM or TCM. ";
CM_ SG_ 374 GearPos_No_Cs "Powersplit HEVs with HF45, HPCM will Tx this message. For all other programs it will be Tx by PCM or TCM. ";
CM_ SG_ 374 GearPos_D_Trg "Powersplit HEVs with HF45, HPCM will Tx this message. For all other programs it will be Tx by PCM or TCM. ";
CM_ SG_ 374 GearPos_No_Cnt "Powersplit HEVs with HF45, HPCM will Tx this message. For all other programs it will be Tx by PCM or TCM. ";
CM_ SG_ 374 GearPos_D_Actl "Powersplit HEVs with HF45, HPCM will Tx this message. For all other programs it will be Tx by PCM or TCM. ";
CM_ SG_ 603 WhlDirAvgDrv_D_Actl "48V mHEV: ECM_HEVDSL is Tx, MHT HEV: PCM_HEV is Tx, Powersplit HEV: SOBDMC_HPCM is Tx";
CM_ SG_ 603 PrplTqMnRgen_B_Actl "48V mHEV: ECM_HEVDSL is Tx, MHT HEV: PCM_HEV is Tx, Powersplit HEV: SOBDMC_HPCM is Tx";
CM_ SG_ 603 BattTracCnnct_D_Rq "48V mHEV: ECM_HEVDSL is Tx, MHT HEV: PCM_HEV is Tx, Powersplit HEV: SOBDMC_HPCM is Tx";
CM_ SG_ 872 HybMdeStat_D_Dsply "Signal not transmitted by HPCM";
CM_ SG_ 560 SelDrvMdeSwtch_D_Stat3 "ECM_HEV, PCM & PCM_HEV do not support or Transmit signal.";
CM_ SG_ 560 TrnSrvcRqd_B_Rq "Signal not transmitted on Diesel & HEV variants. MHT(U611/625) HPCM Rx 0x230 from PCM_HEV. Powersplit FWD HEVs(Cx482/3 430) HPCM Tx 0x230.";
CM_ SG_ 560 TrnShifActv_B_Actl "Signal not transmitted on HEV variants. MHT(U611/625) HPCM Rx 0x230 from PCM_HEV. Powersplit FWD HEVs(Cx482/3 430) HPCM Tx 0x230.";
CM_ SG_ 560 GboxOil_Te_Actl "Signal not transmitted on HEV variants. MHT(U611/625) HPCM Rx 0x230 from PCM_HEV. Powersplit FWD HEVs(Cx482/3 430) HPCM Tx 0x230.";
CM_ SG_ 369 SeatWorkSrfc_B_Falt "Signal Not transmitted by TCM_DSL";
CM_ SG_ 369 TrnIpcDsplyRng2_D_Actl "Signal not transmitted on HEV variants.";
CM_ SG_ 369 TrnIpcDsplyRng_D_Stat "Signal not transmitted on HEV variants.";
CM_ SG_ 92 TrnLvrV_D_Rq "Signal not transmitted on vehicles with PCM_HEV";
CM_ SG_ 92 TrnSbwSysHlth_D_Actl "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 92 TrnGearNtmAllow_B_Stat "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 92 TrnDtpCmd_D_Actl "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 92 TrnGearCmd_No_Cs "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 92 TrnValidGear_D_Cnfm "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 92 TrnNtrlTowCmd_D_Actl "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 92 TrnGearCmd_Pc_ActlPt "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 92 TrnGear_D_RqPt "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 92 TrnCmdState_B_Actl "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 92 TrnCmdCnt_B_Actl "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 92 PrkBrkActv_D_RqTrnGear "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 92 TrnGearMsgTxt_D_Rq "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 92 TrnGearCmd_No_Cnt "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 1087 BattRgenLoChrg_D_RqEng "Signal not transmitted on diesel variant";
CM_ SG_ 1087 BattRgenLoDChrg_D_RqEng "Signal not transmitted on diesel variant";
CM_ SG_ 1087 FapLcInhbt_B_Rq "Signal not transmitted on diesel variant";
CM_ SG_ 1100 EngExhMdeQuiet_D2_Stat "Signal not transmitted on HEV & Diesel programs";
CM_ SG_ 1100 HvacCmprLim_D_Stat "Signal not transmitted on Diesel variants";
CM_ SG_ 1100 WakeAlarm1_T_Rq "Signal not transmitted on Gas variants";
CM_ SG_ 1100 WakeAlarm1_B_Typ "Signal not transmitted on Gas variants";
CM_ SG_ 1100 Veh_V_DsplyTrailCtlSet "Signal not transmitted on HEV & Diesel programs";
CM_ SG_ 1100 TrailCtlPt_B_Falt "Signal not transmitted on HEV & Diesel programs";
CM_ SG_ 1100 AutoTowAllw_D_StatMnu "Signal not transmitted on Gas & Diesel variants";
CM_ SG_ 1100 AutoTowActv_B_Stat "Signal not transmitted on Gas & Diesel variants";
CM_ SG_ 1086 EngMnfld_P_Actl "Signal not transmitted on HEV & Diesel programs";
CM_ SG_ 1086 ElLoadCtl_D_Rq "Signal not transmitted on HEV variants.";
CM_ SG_ 1071 CluPdl_PcRate_Actl "Signal not transmitted on HEV and Gas variants.";
CM_ SG_ 1071 CluPdlPosPcMeas_D_Qf "Signal not transmitted on HEV and Gas variants.";
CM_ SG_ 1071 CluPdlPos_Pc_Meas "Signal not transmitted on HEV and Gas variants.";
CM_ SG_ 1071 EngAoutIdl_N_Ntrl "Signal not transmitted on HEV variants and diesel.";
CM_ SG_ 1069 SlMde_D_Stat "IPC and HUD_ADV Receve from HS3 FGW 0x42D, not HS3 0x38A, MSG DCR 506. Signal not transmitted on Gas & HEV variants";
CM_ SG_ 1069 SlMde_D_RqDsply "IPC and HUD_ADV Receve from HS3 FGW 0x42D, not HS3 0x38A, MSG DCR 506. Signal not transmitted on Gas & HEV variants";
CM_ SG_ 1069 IsaOffst_D_Stat "Signal not transmitted on Gas & HEV variants";
CM_ SG_ 1069 ObdWarmUp_B_Complt "Signal not transmitted on diesel variants.";
CM_ SG_ 1069 EngMsgTxt_D_Rq "Signal not transmitted on diesel variants.";
CM_ SG_ 1069 EngClnt_Te_ActlDiag "Signal not transmitted on gas variants.";
CM_ SG_ 1069 EngLoad_Pc_CalcDiag "Signal not transmitted on gas variants.";
CM_ SG_ 1069 ApedPos_Pc_ActlDiag "Signal not transmitted on gas variants.";
CM_ SG_ 1060 RearDiffOilTeWarn_B_Rq "Signal not transmitted on HEV & Diesel programs";
CM_ SG_ 1060 RearDiffOil_Te_Actl "Signal not transmitted on HEV & Diesel programs";
CM_ SG_ 1057 FohEng_D_Rq "Signal not transmitted on vehicles that do not have the fuel operated heater feature. Signal not transmitted on HEV programs";
CM_ SG_ 1057 EngIdlShutDown_D_Stat "Signal not transmitted on diesel variants.";
CM_ SG_ 1057 FUEL_ALCOHOL_PERCNT "signal not transmitted on diesel and HEV variants.";
CM_ SG_ 1057 TrnTotTq_Rt_Est "Signal not transmitted on gas and HEV variants.";
CM_ SG_ 1057 TrnTotLss_Tq_Est "Signal not transmitted on gas and HEV variants.";
CM_ SG_ 1057 VehVLimStat_D_Actl "Signal not transmitted on gas and HEV variants.";
CM_ SG_ 1057 VehVLimActv_B_Actl "Signal not transmitted on gas and HEV variants.";
CM_ SG_ 562 GearNtrl_No_Cs "Powersplit HEVs with HF45, HPCM will Tx this message. For all other programs it will be Tx by PCM or TCM. ";
CM_ SG_ 562 GearNtrl_No_Cnt "Powersplit HEVs with HF45, HPCM will Tx this message. For all other programs it will be Tx by PCM or TCM. ";
CM_ SG_ 516 EngAoutNActl_D_QF "Signal not transmitted on Gas & HEV variants";
CM_ SG_ 516 EngAout3_N_Actl "Signal not transmitted on gas and diesel variants.";
CM_ SG_ 516 ApedPos_Pc_ActlArb "ABSGenSigTimeoutTime=1000";
CM_ SG_ 516 ApedPosPcActl_No_Cnt "Signal not transmitted on gas and diesel variants.";
CM_ SG_ 516 ApedPosPcActl_No_Cs "Signal not transmitted on gas and diesel variants.";
CM_ SG_ 514 VehVTrlrAid_B_Avail "Signal not transmitted on HEV variants.";
CM_ SG_ 514 GearRvrse_D_Actl "Do not implement GearRvrse_D_Actl until eTracker 8804151 is approved, 11/24/09";
CM_ SG_ 512 PrplWhlTotTqRq_No_Cs "Signal not transmitted on gas & Diesel variants.";
CM_ SG_ 512 PrplWhlTotTqRq_No_Cnt "Signal not transmitted on gas & Diesel variants.";
CM_ SG_ 512 PtDrvMde_D_Stat "Signal not transmitted on Gas & HEV variants.";
CM_ SG_ 380 EngExhBrkOnLamp_B_Rq "Signal not transmitted on Gas variants";
CM_ SG_ 380 EngExhBrkAutoLamp_B_Rq "Signal not transmitted on Gas variants";
CM_ SG_ 380 EngAout_N_MxAllw "Signal not transmitted on Gas variants";
CM_ SG_ 380 EngExhBrkMde_D_Actl "Signal not transmitted on Gas variants";
CM_ SG_ 377 HvacAirFullOut_B_Rq "Signal not transmitted on diesel variant";
CM_ SG_ 377 FuelFlw_Vl_Dsply "Signal not transmitted on diesel variants.";
CM_ SG_ 377 FuelFillInlet_B_Dsply "Signal not transmitted on diesel variants.";
CM_ SG_ 377 OdoCount "Signal not transmitted on diesel variants.";
CM_ SG_ 377 EngOilLife_Pc_Actl "Signal not transmitted on diesel variants.";
CM_ SG_ 377 FuelFilterLamp_B_Dsply "Signal not transmitted on Gas & HEV variants";
CM_ SG_ 377 AirCondRec_B_Rq "Signal not transmitted on diesel variants.";
CM_ SG_ 377 AirCondClutch_B_Stats "Signal not transmitted on diesel variants.";
CM_ SG_ 376 GasPrtc_D_RqDsply "Signal not transmitted on HEV & Diesel variants.";
CM_ SG_ 376 EngAout_Aa_Actl "Signal not transmitted on HEV variants.";
CM_ SG_ 376 AslIconDsply_D_Rq "Signal not transmitted on HEV variants.";
CM_ SG_ 376 AslChime_B_Rq "Signal not transmitted on HEV variants.";
CM_ SG_ 376 HvacHtrCore2_Te_Actl "Signal not transmitted on Gas & Diesel variants";
CM_ SG_ 376 EcssLamp_D_RqDsply "Signal not transmitted on Gas & HEV variants";
CM_ SG_ 376 AirAmb_Te_Actl "Signal not transmitted on Gas variants";
CM_ SG_ 359 PrplWhlRgenMn_Tq_Actl "Signal not transmitted on Gas & Diesel variants";
CM_ SG_ 359 ElPw_D_StatStrtStop "Signal not transmitted on HEV variants.";
CM_ SG_ 359 TrnAin_Tq_Actl "Signal not transmitted on HEV variances.";
CM_ SG_ 359 PlgActvArb_B_Actl "Only supported on PHEV programs. PlgActvArb_B_Actl HPCM will Tx on Powersplit PHEVs, On MHT PHEVs the PCM_HEV will Tx and HPCM will Rx.";
CM_ SG_ 359 TrnAinTq_D_Qf "Signal not transmitted on HEV variances.";
CM_ SG_ 358 StopStrtStdby_D_Indic "Signal not transmitted on HEV variants.";
CM_ SG_ 358 StopStrtIODTxt_D_Rq "Signal not transmitted on HEV variants.";
CM_ SG_ 358 StopStrtDrvMde_D_Indic "Signal not transmitted on HEV variants.";
CM_ SG_ 358 StopStrtMsgTxt_D_Rq "Signal not transmitted on HEV variants.";
CM_ SG_ 358 HiElPwInhbt_B_Stat "Signal not transmitted on HEV programs";
CM_ SG_ 358 AutoStopPtDelta_I_Est "Signal not transmitted on HEV variants. ";
CM_ SG_ 357 BpedDrvAppl_D_Actl "CCMGenSigTimeoutTime=1000";
CM_ SG_ 357 CcStat_D_Actl "ABSGenSigTimeoutTime=1000";
CM_ SG_ 357 EngAout_N_MnAllw "Signal not transmitted on Gas & Diesel variants.";
CM_ SG_ 357 AccStopMde_D_Rq "ABSGenSigTimeoutTime=1000";
CM_ SG_ 342 EngOvrhtMitgActv_D_Ind "Signal not transmitted on diesel.";
CM_ SG_ 342 EngGoutLss_Tq_Est "Signal not transmitted on gas and diesel variants.";
CM_ SG_ 342 EngOil_Te_Actl "Signal not transmitted on Gas & HEV variants. ";
CM_ SG_ 954 GenericSwtch2_No_Actl "U625 Police Wig Wag feature";
CM_ SG_ 935 SodRight_D_Stat "IPCGenSigTimeoutTime=1600";
CM_ SG_ 935 Side_Detect_R_Illum "DDMGenSigTimeoutTime=2000";
CM_ SG_ 935 SodSnsRight_D_Stat "IPCGenSigTimeoutTime=1600";
CM_ SG_ 935 SodAlrtRight_D_Stat "DDMGenSigTimeoutTime=2000";
CM_ SG_ 1112 BattTracClntPmp_D_Stat "48V mHEV: ECM_HEVDSL is Tx, MHT HEV: PCM_HEV is Tx, Powersplit HEV: SOBDMC_HPCM is Tx";
CM_ SG_ 1050 Outside_Air_Temp_Stat "Filtered value, i.e. same as disply for customer";
CM_ SG_ 1009 CenterStackRing_D_Actl "The Center Stack sends the CPLR a signal to turn On or Off the light Ring, This is a customer selectable preference switch";
CM_ SG_ 1009 APIM_NumberofTracks_St "Object NumberofTracks";
CM_ SG_ 1009 APIM_ActiveTrackNum_St "Object.ActiveTrackNum";
CM_ SG_ 360 GsmSrvcRqd_B_Rq "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 360 TrnGearPwmFalt_B_Actl "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 360 GearButtnStuck_B_Actl "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 TrnGsmNtmState_D_Actl "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 DrQltyDrv_D_StatGsm "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 TrnBtsiOvrrd_B_Stat "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 TrnValidGearRq_D_Stat "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 TrnGearRqCnt_B_Actl "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 TrnGearButtn_U_Actl "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 TrnGearButtn_B_ActlR2 "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 TrnGearButtn_B_ActlR1 "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 TrnGearButtn_B_ActlR0 "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 TrnGearButtn_B_ActlP2 "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 TrnGearButtn_B_ActlP1 "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 TrnGearButtn_B_ActlP0 "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 TrnGearButtn_B_ActlN2 "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 TrnGearButtn_B_ActlN1 "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 TrnGearButtn_B_ActlN0 "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 TrnGearButtn_B_ActlM2 "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 TrnGearButtn_B_ActlM1 "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 TrnGearButtn_B_ActlM0 "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 TrnGearButtn_B_ActlD2 "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 TrnGearButtn_B_ActlD1 "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 TrnGearButtn_B_ActlD0 "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 TrnGear_No_Cs "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 TrnGear_No_Cnt "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 TrnGear_D_RqDrv "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 BrkSwtchPos_B_ActlGsm "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 138 SteWhlRelCalib_An_Sns "Signal is not transmitted on vehicles where PSCM is transmitting the message that contains this signal. Signal data set to 0x0 for ABS only vehicle option content";
CM_ SG_ 1093 StopLamp_B_RqTrlrBrk "Signal not transmitted on all variants.";
CM_ SG_ 792 ElTrip_L_Dsply "Key cycle trip distance driven with the engine off (Trip EV Miles)";
CM_ SG_ 792 ElLongTerm_L_Dsply "Long term distance distance driven with the engine off since the last long term reset (Long Term EV Miles).";
CM_ SG_ 765 Mc_VehTimeFrmtUsrSel_St "Object.BodyInterface.Settings.VehicleTimeFormatUserSelection";
CM_ SG_ 765 Mc_VehUntTrpCoUsrSel_St "Object.VehicleSettings.Disp_Miles_Kilometers.Rq";
CM_ SG_ 765 Mc_VehUnitTempUsrSel_St "Object.VehicleSettings.Disp_Temperature.Rq";
CM_ SG_ 765 Mc_VehLangUsrSel_St "Object.BodyInterface.Settings.VehicleLanguageUserSelection Object Vehicle Settings.Disp_LangSel";
CM_ SG_ 934 Side_Detect_L_Illum "DDMGenSigTimeoutTime=2000";
CM_ SG_ 934 SodLeft_D_Stat "IPCGenSigTimeoutTime=1600";
CM_ SG_ 934 SodSnsLeft_D_Stat "IPCGenSigTimeoutTime=1600";
CM_ SG_ 934 SodAlrtLeft_D_Stat "DDMGenSigTimeoutTime=2000";
CM_ SG_ 1072 MetricActv_B_Actl "0 =Inactive(English), 1=Active(Metric)";
CM_ SG_ 145 VehYaw_W_Actl "CCMGenSigTimeoutTime=1000";
CM_ SG_ 931 CrnkInhbt_No_Cs "Signal not transmitted on gas and HEV variants.";
CM_ SG_ 931 CrnkInhbt_No_Cnt "Signal not transmitted on gas and HEV variants.";
CM_ SG_ 947 Dimming_Lvl "Refer to Vehicle Interior Illum Dimming Ctrl Sys Eng Spec, Table 2";
CM_ SG_ 947 PrkBrkActv_B_Actl "Signal not transmitted on vehicles with electric park brake. ";
CM_ SG_ 394 HaDsply_No_Cs "Signal not transmitted on gas variants.";
CM_ SG_ 394 HaDsply_No_Cnt "Signal not transmitted on gas variants.";
CM_ SG_ 391 CmbbBrkDecel_A_Rq "ABSGenSigTimeoutTime=1000";
CM_ SG_ 391 CmbbBrkPrchg_D_Rq "ABSGenSigTimeoutTime=1000";
CM_ SG_ 391 CmbbBrkDecel_B_Rq "ABSGenSigTimeoutTime=1000";
CM_ SG_ 391 CmbbBaSens_D_Rq "ABSGenSigTimeoutTime=1000";
CM_ SG_ 390 AccBrkTot_A_Rq "ABSGenSigTimeoutTime=1000";
CM_ SG_ 390 AccBrkPrkEl_B_Rq "ABSGenSigTimeoutTime=1000";
CM_ SG_ 390 AccPrpl_A_Rq "PCMGenSigTimeoutTime=1000";
CM_ SG_ 390 AccBrkPrchg_B_Rq "ABSGenSigTimeoutTime=1000";
CM_ SG_ 390 AccBrkDecel_B_Rq "ABSGenSigTimeoutTime=1000";
CM_ SG_ 390 AccStopStat_B_Rq "ABSGenSigTimeoutTime=1000";
CM_ SG_ 942 PrkAidRdiusRight_L_Dsply "MSGDCR 679, set all signals to OnChange";
CM_ SG_ 942 PrkAidRdiusLeft_L_Dsply "MSGDCR 679, set all signals to OnChange";
CM_ SG_ 942 PrkAidDrvDir_D_Stat "MSGDCR 679, set all signals to OnChange";
BA_DEF_ BO_ "OvtpPushApplication" ENUM "FALSE","TRUE"; BA_DEF_ BO_ "OvtpPushApplication" ENUM "FALSE","TRUE";
BA_DEF_ BU_ "OvtpOperationMode" ENUM "SERVER","CLIENT"; BA_DEF_ BU_ "OvtpOperationMode" ENUM "SERVER","CLIENT";
BA_DEF_ BU_ "OvtpEcuAddress" INT 0 1022; BA_DEF_ BU_ "OvtpEcuAddress" INT 0 1022;
@@ -12440,255 +12693,3 @@ VAL_ 922 DcacRdy_D_Stat 7 "NotUsed_2" 6 "NotUsed_1" 5 "Faulted" 4 "ProtectionTem
VAL_ 922 DcacPlugPrsnt_B_Stat 1 "Yes" 0 "No"; VAL_ 922 DcacPlugPrsnt_B_Stat 1 "Yes" 0 "No";
VAL_ 922 DcacClntFlw_D_Rq 3 "High" 2 "Medium" 1 "Low" 0 "Off"; VAL_ 922 DcacClntFlw_D_Rq 3 "High" 2 "Medium" 1 "Low" 0 "Off";
VAL_ 922 CoolFanDcac_D_Rq 3 "High" 2 "Medium" 1 "Low" 0 "Off"; VAL_ 922 CoolFanDcac_D_Rq 3 "High" 2 "Medium" 1 "Low" 0 "Off";
CM_ "New CAN FD network";
CM_ BU_ CMR_DSMC "Driver Status Monitor Camera";
CM_ BU_ IPMA_ADAS "Assist Driving Alert System";
CM_ BU_ PSCM "Passenger Front Climate Control Seat Module";
CM_ BU_ ABS_ESC "Anti-lock Brake / Traction Control Module";
CM_ BU_ TCCM "Transfer Case Control Module, 4x4 Control Module";
CM_ BU_ TCM_DSL "Transmission Control Module";
CM_ BU_ PCM "Powertrain Control Module";
CM_ BU_ ECM_Diesel "Diesel";
CM_ BU_ GWM "Gateway Module CGEA1.3(Star Architecture)";
CM_ BU_ TSTR "Diagnostic Tester";
CM_ SG_ 524 PrplWhlTotTqRqMxAwd_No_Cs "Signal not transmitted on gas variants.";
CM_ SG_ 524 PrplWhlTotTqRqMxAwd_No_Cnt "Signal not transmitted on gas variants.";
CM_ SG_ 1150 LocationServices_1 "Tx by HS3 APIM";
CM_ SG_ 542 LocationServices_3 "Tx by HS3 APIM";
CM_ SG_ 810 NtfyDrvTrgtDist_L_Rq "Object.SetTripRangeAlert_Rq This signal is meant to provide the customer settings for the target distance remote notification";
CM_ SG_ 810 NtfyDrvSocLvl1_Pc_Rq "Object.SetCustomerLevelAlert_Rq This signal is meant to provide the customer settings for the SOC remote notification.";
CM_ SG_ 810 PtRmtRprt_D_Stat "Object.RemoteDataReport_St";
CM_ SG_ 550 PtWakeupActv1_B_Rq "ECG Application signal";
CM_ SG_ 982 LatCtlPath_No_Cnt "Signal not transmitted on gas variants.";
CM_ SG_ 982 LatCtlPath_No_Cs "Signal not transmitted on gas variants.";
CM_ SG_ 1104 DrvEngageLevel_No_Cs "Signal not transmitted on gas variants.";
CM_ SG_ 1104 DrvEngageLevel_No_Cnt "Signal not transmitted on gas variants.";
CM_ SG_ 1085 ULoRgenTestMde_B_Stat "Signal not transmitted on HEV variants.";
CM_ SG_ 1085 PwSrcULoComm_B_Falt "Signal not transmitted on HEV variants.";
CM_ SG_ 1445 SOBDMC_AutoSarNMReserved4 "Signal not transmitted on gas and diesel variants.";
CM_ SG_ 1445 SOBDMC_AutoSarNMReserved3 "Signal not transmitted on gas and diesel variants.";
CM_ SG_ 1445 SOBDMC_AutoSarNMReserved2 "Signal not transmitted on gas and diesel variants.";
CM_ SG_ 1445 SOBDMC_AutoSarNMReserved1 "Signal not transmitted on gas and diesel variants.";
CM_ SG_ 1445 SOBDMC_AutoSarNMNodeId "Signal not transmitted on gas and diesel variants.";
CM_ SG_ 1445 SOBDMC_AutoSarNMControl "Signal not transmitted on gas and diesel variants.";
CM_ SG_ 1088 HvacPrecondMode2_D_Rq "Signal not transmitted on vehicles that do not have the Fuel operated heater feature.";
CM_ SG_ 1088 HvacPrecondBlwr2_D_Rq "Signal not transmitted on vehicles that do not have the Fuel operated heater feature.";
CM_ SG_ 786 ChrgStat_D_Dsply "Signal not transmitted by PCM_HEV";
CM_ SG_ 66 immoControlData_T2 "Not transmitted on all vehicle variants";
CM_ SG_ 66 immoControlCmd_T2 "Not transmitted on all vehicle variants";
CM_ SG_ 549 BeltminderAudioMute "Object.MyKey.BeltMinderAudioMute.St";
CM_ SG_ 549 Power_Up_Chime_Modules "Object.AlertMethod.IPC _Infotainment";
CM_ SG_ 549 Chime_Source "Object.AlertMethod.IPC_infotainment";
CM_ SG_ 611 AwdStat_D_RqDsply "Signal not transmitted on programs that do not have AWD.";
CM_ SG_ 611 AwdSrvcRqd_B_Rq "Signal not transmitted on programs that do not have AWD.";
CM_ SG_ 611 AwdLck_Tq_Rq "Signal not transmitted on programs that do not have AWD.";
CM_ SG_ 130 VehVTrlrAid_B_Rq "VR session start- req. limit blower speed no more than X volts. CC restriction on time msg. will be honored.Double Event msg1st event to request limit, 2nd event to release limit, No msg. CC Grammar v7.xls";
CM_ SG_ 130 SteMdule_U_Meas "DCR 1745 to update Tx from GWM to EP100ms. SteMdule_I_Est & SteMdule_U_Meas are used by BMS system & filtered. The filter uses standard periodic rate & changing to EP would adversely affect the filter.(jweinfur)";
CM_ SG_ 130 SteMdule_I_Est "DCR 1745 to update Tx from GWM to EP100ms. SteMdule_I_Est & SteMdule_U_Meas are used by BMS system & filtered. The filter uses standard periodic rate & changing to EP would adversely affect the filter.(jweinfur)";
CM_ SG_ 126 StePinRelInit_An_Sns "SASM will transmit these signals on vehicles with SASM and without PSCM. SCCM will not Tx this signal when SASM is present.";
CM_ SG_ 126 StePinAn_No_Cs "Signal not transmitted on gas variants.";
CM_ SG_ 1200 BrkTot_Tq_RqDrv "DCR 1836 to update Tx from GWM to EP100ms rejected due MPS6 TCM requires BrkTot_Tq_RqDrv at 20ms (bshu1).";
CM_ SG_ 1046 TCMode "Signal data set to 0x0 for ABS only vehicle option content";
CM_ SG_ 1046 DrvAntiLckLamp_D_Rq "update value table v8.34, not align w/GSDB, need etracker. ABS & IPC implemented as updated.";
CM_ SG_ 1046 BpedMove_D_Actl "CCMGenSigTimeoutTime=1000";
CM_ SG_ 1044 StePinOffst_An_Est "SASM will transmit these signals on vehicles with SASM and without PSCM. SCCM will not Tx this signal when SASM is present.";
CM_ SG_ 1044 StePinOffst_No_Cs "Signal not transmitted on gas variants.";
CM_ SG_ 534 BrkObdData_No_Actl "Signal not transmitted on gas, diesel and HEV. Only supported on PHEV.";
CM_ SG_ 534 BrkObdIndex_No_Actl "Signal not transmitted on gas, diesel and HEV. Only supported on PHEV.";
CM_ SG_ 534 WhlRotatRr_No_Cnt "DCR 1833 to update Tx from GWM to EP100ms. Wheel Count signals are used by complex algorithm to determine Tire Pressure by Location & can't change from 20msec. (jweinfur)";
CM_ SG_ 534 WhlRotatRl_No_Cnt "DCR 1833 to update Tx from GWM to EP100ms. Wheel Count signals are used by complex algorithm to determine Tire Pressure by Location & can't change from 20msec. (jweinfur)";
CM_ SG_ 534 WhlRotatFr_No_Cnt "DCR 1833 to update Tx from GWM to EP100ms. Wheel Count signals are used by complex algorithm to determine Tire Pressure by Location & can't change from 20msec. (jweinfur)";
CM_ SG_ 534 WhlRotatFl_No_Cnt "DCR 1833 to update Tx from GWM to EP100ms. Wheel Count signals are used by complex algorithm to determine Tire Pressure by Location & can't change from 20msec. (jweinfur)";
CM_ SG_ 531 VehLongOvrGnd_A_Est "CCMGenSigTimeoutTime=1000";
CM_ SG_ 1034 VehicleGGCCData "RCMGenSigTimeout=6000";
CM_ SG_ 1090 Mtr2State_D_ActlMntr "Signal Not transmitted on PCM_HEV variant";
CM_ SG_ 1090 Inv1Ain_I_ActlMntr "Signal Not transmitted on PCM_HEV variant";
CM_ SG_ 1090 VehElRnge_L_Dsply "Signal Not transmitted on HPCM variant";
CM_ SG_ 374 TrnRng_D_Rq "Powersplit HEVs with HF45, HPCM will Tx this message. For all other programs it will be Tx by PCM or TCM. ";
CM_ SG_ 374 TrnPrkSys_D_Actl "Powersplit HEVs with HF45, HPCM will Tx this message. For all other programs it will be Tx by PCM or TCM. ";
CM_ SG_ 374 GearLvr_D_ActlDrv "Powersplit HEVs with HF45, HPCM will Tx this message. For all other programs it will be Tx by PCM or TCM. ";
CM_ SG_ 374 GearPos_No_Cs "Powersplit HEVs with HF45, HPCM will Tx this message. For all other programs it will be Tx by PCM or TCM. ";
CM_ SG_ 374 GearPos_D_Trg "Powersplit HEVs with HF45, HPCM will Tx this message. For all other programs it will be Tx by PCM or TCM. ";
CM_ SG_ 374 GearPos_No_Cnt "Powersplit HEVs with HF45, HPCM will Tx this message. For all other programs it will be Tx by PCM or TCM. ";
CM_ SG_ 374 GearPos_D_Actl "Powersplit HEVs with HF45, HPCM will Tx this message. For all other programs it will be Tx by PCM or TCM. ";
CM_ SG_ 603 WhlDirAvgDrv_D_Actl "48V mHEV: ECM_HEVDSL is Tx, MHT HEV: PCM_HEV is Tx, Powersplit HEV: SOBDMC_HPCM is Tx";
CM_ SG_ 603 PrplTqMnRgen_B_Actl "48V mHEV: ECM_HEVDSL is Tx, MHT HEV: PCM_HEV is Tx, Powersplit HEV: SOBDMC_HPCM is Tx";
CM_ SG_ 603 BattTracCnnct_D_Rq "48V mHEV: ECM_HEVDSL is Tx, MHT HEV: PCM_HEV is Tx, Powersplit HEV: SOBDMC_HPCM is Tx";
CM_ SG_ 872 HybMdeStat_D_Dsply "Signal not transmitted by HPCM";
CM_ SG_ 560 SelDrvMdeSwtch_D_Stat3 "ECM_HEV, PCM & PCM_HEV do not support or Transmit signal.";
CM_ SG_ 560 TrnSrvcRqd_B_Rq "Signal not transmitted on Diesel & HEV variants. MHT(U611/625) HPCM Rx 0x230 from PCM_HEV. Powersplit FWD HEVs(Cx482/3 430) HPCM Tx 0x230.";
CM_ SG_ 560 TrnShifActv_B_Actl "Signal not transmitted on HEV variants. MHT(U611/625) HPCM Rx 0x230 from PCM_HEV. Powersplit FWD HEVs(Cx482/3 430) HPCM Tx 0x230.";
CM_ SG_ 560 GboxOil_Te_Actl "Signal not transmitted on HEV variants. MHT(U611/625) HPCM Rx 0x230 from PCM_HEV. Powersplit FWD HEVs(Cx482/3 430) HPCM Tx 0x230.";
CM_ SG_ 369 SeatWorkSrfc_B_Falt "Signal Not transmitted by TCM_DSL";
CM_ SG_ 369 TrnIpcDsplyRng2_D_Actl "Signal not transmitted on HEV variants.";
CM_ SG_ 369 TrnIpcDsplyRng_D_Stat "Signal not transmitted on HEV variants.";
CM_ SG_ 92 TrnLvrV_D_Rq "Signal not transmitted on vehicles with PCM_HEV";
CM_ SG_ 92 TrnSbwSysHlth_D_Actl "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 92 TrnGearNtmAllow_B_Stat "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 92 TrnDtpCmd_D_Actl "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 92 TrnGearCmd_No_Cs "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 92 TrnValidGear_D_Cnfm "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 92 TrnNtrlTowCmd_D_Actl "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 92 TrnGearCmd_Pc_ActlPt "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 92 TrnGear_D_RqPt "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 92 TrnCmdState_B_Actl "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 92 TrnCmdCnt_B_Actl "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 92 PrkBrkActv_D_RqTrnGear "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 92 TrnGearMsgTxt_D_Rq "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 92 TrnGearCmd_No_Cnt "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 1087 BattRgenLoChrg_D_RqEng "Signal not transmitted on diesel variant";
CM_ SG_ 1087 BattRgenLoDChrg_D_RqEng "Signal not transmitted on diesel variant";
CM_ SG_ 1087 FapLcInhbt_B_Rq "Signal not transmitted on diesel variant";
CM_ SG_ 1100 EngExhMdeQuiet_D2_Stat "Signal not transmitted on HEV & Diesel programs";
CM_ SG_ 1100 HvacCmprLim_D_Stat "Signal not transmitted on Diesel variants";
CM_ SG_ 1100 WakeAlarm1_T_Rq "Signal not transmitted on Gas variants";
CM_ SG_ 1100 WakeAlarm1_B_Typ "Signal not transmitted on Gas variants";
CM_ SG_ 1100 Veh_V_DsplyTrailCtlSet "Signal not transmitted on HEV & Diesel programs";
CM_ SG_ 1100 TrailCtlPt_B_Falt "Signal not transmitted on HEV & Diesel programs";
CM_ SG_ 1100 AutoTowAllw_D_StatMnu "Signal not transmitted on Gas & Diesel variants";
CM_ SG_ 1100 AutoTowActv_B_Stat "Signal not transmitted on Gas & Diesel variants";
CM_ SG_ 1086 EngMnfld_P_Actl "Signal not transmitted on HEV & Diesel programs";
CM_ SG_ 1086 ElLoadCtl_D_Rq "Signal not transmitted on HEV variants.";
CM_ SG_ 1071 CluPdl_PcRate_Actl "Signal not transmitted on HEV and Gas variants.";
CM_ SG_ 1071 CluPdlPosPcMeas_D_Qf "Signal not transmitted on HEV and Gas variants.";
CM_ SG_ 1071 CluPdlPos_Pc_Meas "Signal not transmitted on HEV and Gas variants.";
CM_ SG_ 1071 EngAoutIdl_N_Ntrl "Signal not transmitted on HEV variants and diesel.";
CM_ SG_ 1069 SlMde_D_Stat "IPC and HUD_ADV Receve from HS3 FGW 0x42D, not HS3 0x38A, MSG DCR 506. Signal not transmitted on Gas & HEV variants";
CM_ SG_ 1069 SlMde_D_RqDsply "IPC and HUD_ADV Receve from HS3 FGW 0x42D, not HS3 0x38A, MSG DCR 506. Signal not transmitted on Gas & HEV variants";
CM_ SG_ 1069 IsaOffst_D_Stat "Signal not transmitted on Gas & HEV variants";
CM_ SG_ 1069 ObdWarmUp_B_Complt "Signal not transmitted on diesel variants.";
CM_ SG_ 1069 EngMsgTxt_D_Rq "Signal not transmitted on diesel variants.";
CM_ SG_ 1069 EngClnt_Te_ActlDiag "Signal not transmitted on gas variants.";
CM_ SG_ 1069 EngLoad_Pc_CalcDiag "Signal not transmitted on gas variants.";
CM_ SG_ 1069 ApedPos_Pc_ActlDiag "Signal not transmitted on gas variants.";
CM_ SG_ 1060 RearDiffOilTeWarn_B_Rq "Signal not transmitted on HEV & Diesel programs";
CM_ SG_ 1060 RearDiffOil_Te_Actl "Signal not transmitted on HEV & Diesel programs";
CM_ SG_ 1057 FohEng_D_Rq "Signal not transmitted on vehicles that do not have the fuel operated heater feature. Signal not transmitted on HEV programs";
CM_ SG_ 1057 EngIdlShutDown_D_Stat "Signal not transmitted on diesel variants.";
CM_ SG_ 1057 FUEL_ALCOHOL_PERCNT "signal not transmitted on diesel and HEV variants.";
CM_ SG_ 1057 TrnTotTq_Rt_Est "Signal not transmitted on gas and HEV variants.";
CM_ SG_ 1057 TrnTotLss_Tq_Est "Signal not transmitted on gas and HEV variants.";
CM_ SG_ 1057 VehVLimStat_D_Actl "Signal not transmitted on gas and HEV variants.";
CM_ SG_ 1057 VehVLimActv_B_Actl "Signal not transmitted on gas and HEV variants.";
CM_ SG_ 562 GearNtrl_No_Cs "Powersplit HEVs with HF45, HPCM will Tx this message. For all other programs it will be Tx by PCM or TCM. ";
CM_ SG_ 562 GearNtrl_No_Cnt "Powersplit HEVs with HF45, HPCM will Tx this message. For all other programs it will be Tx by PCM or TCM. ";
CM_ SG_ 516 EngAoutNActl_D_QF "Signal not transmitted on Gas & HEV variants";
CM_ SG_ 516 EngAout3_N_Actl "Signal not transmitted on gas and diesel variants.";
CM_ SG_ 516 ApedPos_Pc_ActlArb "ABSGenSigTimeoutTime=1000";
CM_ SG_ 516 ApedPosPcActl_No_Cnt "Signal not transmitted on gas and diesel variants.";
CM_ SG_ 516 ApedPosPcActl_No_Cs "Signal not transmitted on gas and diesel variants.";
CM_ SG_ 514 VehVTrlrAid_B_Avail "Signal not transmitted on HEV variants.";
CM_ SG_ 514 GearRvrse_D_Actl "Do not implement GearRvrse_D_Actl until eTracker 8804151 is approved, 11/24/09";
CM_ SG_ 512 PrplWhlTotTqRq_No_Cs "Signal not transmitted on gas & Diesel variants.";
CM_ SG_ 512 PrplWhlTotTqRq_No_Cnt "Signal not transmitted on gas & Diesel variants.";
CM_ SG_ 512 PtDrvMde_D_Stat "Signal not transmitted on Gas & HEV variants.";
CM_ SG_ 380 EngExhBrkOnLamp_B_Rq "Signal not transmitted on Gas variants";
CM_ SG_ 380 EngExhBrkAutoLamp_B_Rq "Signal not transmitted on Gas variants";
CM_ SG_ 380 EngAout_N_MxAllw "Signal not transmitted on Gas variants";
CM_ SG_ 380 EngExhBrkMde_D_Actl "Signal not transmitted on Gas variants";
CM_ SG_ 377 HvacAirFullOut_B_Rq "Signal not transmitted on diesel variant";
CM_ SG_ 377 FuelFlw_Vl_Dsply "Signal not transmitted on diesel variants.";
CM_ SG_ 377 FuelFillInlet_B_Dsply "Signal not transmitted on diesel variants.";
CM_ SG_ 377 OdoCount "Signal not transmitted on diesel variants.";
CM_ SG_ 377 EngOilLife_Pc_Actl "Signal not transmitted on diesel variants.";
CM_ SG_ 377 FuelFilterLamp_B_Dsply "Signal not transmitted on Gas & HEV variants";
CM_ SG_ 377 AirCondRec_B_Rq "Signal not transmitted on diesel variants.";
CM_ SG_ 377 AirCondClutch_B_Stats "Signal not transmitted on diesel variants.";
CM_ SG_ 376 GasPrtc_D_RqDsply "Signal not transmitted on HEV & Diesel variants.";
CM_ SG_ 376 EngAout_Aa_Actl "Signal not transmitted on HEV variants.";
CM_ SG_ 376 AslIconDsply_D_Rq "Signal not transmitted on HEV variants.";
CM_ SG_ 376 AslChime_B_Rq "Signal not transmitted on HEV variants.";
CM_ SG_ 376 HvacHtrCore2_Te_Actl "Signal not transmitted on Gas & Diesel variants";
CM_ SG_ 376 EcssLamp_D_RqDsply "Signal not transmitted on Gas & HEV variants";
CM_ SG_ 376 AirAmb_Te_Actl "Signal not transmitted on Gas variants";
CM_ SG_ 359 PrplWhlRgenMn_Tq_Actl "Signal not transmitted on Gas & Diesel variants";
CM_ SG_ 359 ElPw_D_StatStrtStop "Signal not transmitted on HEV variants.";
CM_ SG_ 359 TrnAin_Tq_Actl "Signal not transmitted on HEV variances.";
CM_ SG_ 359 PlgActvArb_B_Actl "Only supported on PHEV programs. PlgActvArb_B_Actl HPCM will Tx on Powersplit PHEVs, On MHT PHEVs the PCM_HEV will Tx and HPCM will Rx.";
CM_ SG_ 359 TrnAinTq_D_Qf "Signal not transmitted on HEV variances.";
CM_ SG_ 358 StopStrtStdby_D_Indic "Signal not transmitted on HEV variants.";
CM_ SG_ 358 StopStrtIODTxt_D_Rq "Signal not transmitted on HEV variants.";
CM_ SG_ 358 StopStrtDrvMde_D_Indic "Signal not transmitted on HEV variants.";
CM_ SG_ 358 StopStrtMsgTxt_D_Rq "Signal not transmitted on HEV variants.";
CM_ SG_ 358 HiElPwInhbt_B_Stat "Signal not transmitted on HEV programs";
CM_ SG_ 358 AutoStopPtDelta_I_Est "Signal not transmitted on HEV variants. ";
CM_ SG_ 357 BpedDrvAppl_D_Actl "CCMGenSigTimeoutTime=1000";
CM_ SG_ 357 CcStat_D_Actl "ABSGenSigTimeoutTime=1000";
CM_ SG_ 357 EngAout_N_MnAllw "Signal not transmitted on Gas & Diesel variants.";
CM_ SG_ 357 AccStopMde_D_Rq "ABSGenSigTimeoutTime=1000";
CM_ SG_ 342 EngOvrhtMitgActv_D_Ind "Signal not transmitted on diesel.";
CM_ SG_ 342 EngGoutLss_Tq_Est "Signal not transmitted on gas and diesel variants.";
CM_ SG_ 342 EngOil_Te_Actl "Signal not transmitted on Gas & HEV variants. ";
CM_ SG_ 954 GenericSwtch2_No_Actl "U625 Police Wig Wag feature";
CM_ SG_ 935 SodRight_D_Stat "IPCGenSigTimeoutTime=1600";
CM_ SG_ 935 Side_Detect_R_Illum "DDMGenSigTimeoutTime=2000";
CM_ SG_ 935 SodSnsRight_D_Stat "IPCGenSigTimeoutTime=1600";
CM_ SG_ 935 SodAlrtRight_D_Stat "DDMGenSigTimeoutTime=2000";
CM_ SG_ 1112 BattTracClntPmp_D_Stat "48V mHEV: ECM_HEVDSL is Tx, MHT HEV: PCM_HEV is Tx, Powersplit HEV: SOBDMC_HPCM is Tx";
CM_ SG_ 1050 Outside_Air_Temp_Stat "Filtered value, i.e. same as disply for customer";
CM_ SG_ 1009 CenterStackRing_D_Actl "The Center Stack sends the CPLR a signal to turn On or Off the light Ring, This is a customer selectable preference switch";
CM_ SG_ 1009 APIM_NumberofTracks_St "Object NumberofTracks";
CM_ SG_ 1009 APIM_ActiveTrackNum_St "Object.ActiveTrackNum";
CM_ SG_ 360 GsmSrvcRqd_B_Rq "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 360 TrnGearPwmFalt_B_Actl "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 360 GearButtnStuck_B_Actl "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 TrnGsmNtmState_D_Actl "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 DrQltyDrv_D_StatGsm "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 TrnBtsiOvrrd_B_Stat "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 TrnValidGearRq_D_Stat "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 TrnGearRqCnt_B_Actl "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 TrnGearButtn_U_Actl "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 TrnGearButtn_B_ActlR2 "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 TrnGearButtn_B_ActlR1 "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 TrnGearButtn_B_ActlR0 "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 TrnGearButtn_B_ActlP2 "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 TrnGearButtn_B_ActlP1 "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 TrnGearButtn_B_ActlP0 "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 TrnGearButtn_B_ActlN2 "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 TrnGearButtn_B_ActlN1 "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 TrnGearButtn_B_ActlN0 "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 TrnGearButtn_B_ActlM2 "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 TrnGearButtn_B_ActlM1 "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 TrnGearButtn_B_ActlM0 "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 TrnGearButtn_B_ActlD2 "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 TrnGearButtn_B_ActlD1 "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 TrnGearButtn_B_ActlD0 "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 TrnGear_No_Cs "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 TrnGear_No_Cnt "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 TrnGear_D_RqDrv "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 90 BrkSwtchPos_B_ActlGsm "Signal not transmitted on vehicles that do not have shift by wire.";
CM_ SG_ 138 SteWhlRelCalib_An_Sns "Signal is not transmitted on vehicles where PSCM is transmitting the message that contains this signal. Signal data set to 0x0 for ABS only vehicle option content";
CM_ SG_ 1093 StopLamp_B_RqTrlrBrk "Signal not transmitted on all variants.";
CM_ SG_ 792 ElTrip_L_Dsply "Key cycle trip distance driven with the engine off (Trip EV Miles)";
CM_ SG_ 792 ElLongTerm_L_Dsply "Long term distance distance driven with the engine off since the last long term reset (Long Term EV Miles).";
CM_ SG_ 765 Mc_VehTimeFrmtUsrSel_St "Object.BodyInterface.Settings.VehicleTimeFormatUserSelection";
CM_ SG_ 765 Mc_VehUntTrpCoUsrSel_St "Object.VehicleSettings.Disp_Miles_Kilometers.Rq";
CM_ SG_ 765 Mc_VehUnitTempUsrSel_St "Object.VehicleSettings.Disp_Temperature.Rq";
CM_ SG_ 765 Mc_VehLangUsrSel_St "Object.BodyInterface.Settings.VehicleLanguageUserSelection Object Vehicle Settings.Disp_LangSel";
CM_ SG_ 934 Side_Detect_L_Illum "DDMGenSigTimeoutTime=2000";
CM_ SG_ 934 SodLeft_D_Stat "IPCGenSigTimeoutTime=1600";
CM_ SG_ 934 SodSnsLeft_D_Stat "IPCGenSigTimeoutTime=1600";
CM_ SG_ 934 SodAlrtLeft_D_Stat "DDMGenSigTimeoutTime=2000";
CM_ SG_ 1072 MetricActv_B_Actl "0 =Inactive(English), 1=Active(Metric)";
CM_ SG_ 145 VehYaw_W_Actl "CCMGenSigTimeoutTime=1000";
CM_ SG_ 931 CrnkInhbt_No_Cs "Signal not transmitted on gas and HEV variants.";
CM_ SG_ 931 CrnkInhbt_No_Cnt "Signal not transmitted on gas and HEV variants.";
CM_ SG_ 947 Dimming_Lvl "Refer to Vehicle Interior Illum Dimming Ctrl Sys Eng Spec, Table 2";
CM_ SG_ 947 PrkBrkActv_B_Actl "Signal not transmitted on vehicles with electric park brake. ";
CM_ SG_ 394 HaDsply_No_Cs "Signal not transmitted on gas variants.";
CM_ SG_ 394 HaDsply_No_Cnt "Signal not transmitted on gas variants.";
CM_ SG_ 391 CmbbBrkDecel_A_Rq "ABSGenSigTimeoutTime=1000";
CM_ SG_ 391 CmbbBrkPrchg_D_Rq "ABSGenSigTimeoutTime=1000";
CM_ SG_ 391 CmbbBrkDecel_B_Rq "ABSGenSigTimeoutTime=1000";
CM_ SG_ 391 CmbbBaSens_D_Rq "ABSGenSigTimeoutTime=1000";
CM_ SG_ 390 AccBrkTot_A_Rq "ABSGenSigTimeoutTime=1000";
CM_ SG_ 390 AccBrkPrkEl_B_Rq "ABSGenSigTimeoutTime=1000";
CM_ SG_ 390 AccPrpl_A_Rq "PCMGenSigTimeoutTime=1000";
CM_ SG_ 390 AccBrkPrchg_B_Rq "ABSGenSigTimeoutTime=1000";
CM_ SG_ 390 AccBrkDecel_B_Rq "ABSGenSigTimeoutTime=1000";
CM_ SG_ 390 AccStopStat_B_Rq "ABSGenSigTimeoutTime=1000";
CM_ SG_ 942 PrkAidRdiusRight_L_Dsply "MSGDCR 679, set all signals to OnChange";
CM_ SG_ 942 PrkAidRdiusLeft_L_Dsply "MSGDCR 679, set all signals to OnChange";
CM_ SG_ 942 PrkAidDrvDir_D_Stat "MSGDCR 679, set all signals to OnChange";
@@ -71,7 +71,7 @@ BO_ 201 ECMEngineStatus: 8 K20_ECM
SG_ EngineTPS : 39|8@0+ (0.392156863,0) [0|100.000000065] "%" NEO SG_ EngineTPS : 39|8@0+ (0.392156863,0) [0|100.000000065] "%" NEO
SG_ EngineRPM : 15|16@0+ (0.25,0) [0|0] "RPM" NEO SG_ EngineRPM : 15|16@0+ (0.25,0) [0|0] "RPM" NEO
SG_ CruiseMainOn : 29|1@0+ (1,0) [0|1] "" NEO SG_ CruiseMainOn : 29|1@0+ (1,0) [0|1] "" NEO
SG_ Brake_Pressed : 40|1@0+ (1,0) [0|1] "" NEO SG_ BrakePressed : 40|1@0+ (1,0) [0|1] "" NEO
SG_ Standstill : 2|1@0+ (1,0) [0|1] "" NEO SG_ Standstill : 2|1@0+ (1,0) [0|1] "" NEO
SG_ CruiseActive : 31|2@0+ (1,0) [0|3] "" NEO SG_ CruiseActive : 31|2@0+ (1,0) [0|3] "" NEO
@@ -84,6 +84,7 @@ BO_ 209 EBCMBrakePedalSensors: 7 K17_EBCM
SG_ BrakeNormalized2 : 47|8@0- (-1,0) [0|255] "" XXX SG_ BrakeNormalized2 : 47|8@0- (-1,0) [0|255] "" XXX
BO_ 241 EBCMBrakePedalPosition: 6 K17_EBCM BO_ 241 EBCMBrakePedalPosition: 6 K17_EBCM
SG_ BrakePressed : 1|1@0+ (1,0) [0|1] "" XXX
SG_ BrakePedalPosition : 15|8@0+ (1,0) [0|255] "" NEO SG_ BrakePedalPosition : 15|8@0+ (1,0) [0|255] "" NEO
BO_ 298 BCMDoorBeltStatus: 8 K9_BCM BO_ 298 BCMDoorBeltStatus: 8 K9_BCM
@@ -123,6 +124,8 @@ BO_ 388 PSCMStatus: 8 K43_PSCM
SG_ LKADriverAppldTrq : 50|11@0- (0.01,0) [-10.24|10.23] "Nm" NEO SG_ LKADriverAppldTrq : 50|11@0- (0.01,0) [-10.24|10.23] "Nm" NEO
SG_ LKATorqueDelivered : 18|11@0- (0.01,0) [0|1] "" NEO SG_ LKATorqueDelivered : 18|11@0- (0.01,0) [0|1] "" NEO
SG_ LKATotalTorqueDelivered : 2|11@0- (0.01,0) [-10.24|10.23] "Nm" NEO SG_ LKATotalTorqueDelivered : 2|11@0- (0.01,0) [-10.24|10.23] "Nm" NEO
SG_ RollingCounter : 38|4@0+ (1,0) [0|15] "" XXX
SG_ PSCMStatusChecksum : 33|10@0+ (1,0) [0|1023] "" XXX
BO_ 417 AcceleratorPedal: 7 XXX BO_ 417 AcceleratorPedal: 7 XXX
SG_ AcceleratorPedal : 55|8@0+ (1,0) [0|0] "" NEO SG_ AcceleratorPedal : 55|8@0+ (1,0) [0|0] "" NEO
@@ -137,6 +140,7 @@ BO_ 452 AcceleratorPedal2: 8 XXX
BO_ 481 ASCMSteeringButton: 7 K124_ASCM BO_ 481 ASCMSteeringButton: 7 K124_ASCM
SG_ DistanceButton : 22|1@0+ (1,0) [0|0] "" NEO SG_ DistanceButton : 22|1@0+ (1,0) [0|0] "" NEO
SG_ LKAButton : 23|1@0+ (1,0) [0|0] "" NEO SG_ LKAButton : 23|1@0+ (1,0) [0|0] "" NEO
SG_ ACCAlwaysOne : 24|1@0+ (1,0) [0|1] "" XXX
SG_ ACCButtons : 46|3@0+ (1,0) [0|0] "" NEO SG_ ACCButtons : 46|3@0+ (1,0) [0|0] "" NEO
SG_ DriveModeButton : 39|1@0+ (1,0) [0|1] "" XXX SG_ DriveModeButton : 39|1@0+ (1,0) [0|1] "" XXX
SG_ RollingCounter : 33|2@0+ (1,0) [0|3] "" NEO SG_ RollingCounter : 33|2@0+ (1,0) [0|3] "" NEO
@@ -164,6 +168,9 @@ BO_ 501 ECMPRDNL2: 8 K20_ECM
SG_ PRNDL2 : 27|4@0+ (1,0) [0|255] "" NEO SG_ PRNDL2 : 27|4@0+ (1,0) [0|255] "" NEO
SG_ ManualMode : 41|1@0+ (1,0) [0|1] "" NEO SG_ ManualMode : 41|1@0+ (1,0) [0|1] "" NEO
BO_ 532 BRAKE_RELATED: 6 XXX
SG_ UserBrakePressure : 0|9@0+ (1,0) [0|511] "" XXX
BO_ 560 EPBStatus: 8 EPB BO_ 560 EPBStatus: 8 EPB
SG_ EPBClosed : 12|1@0+ (1,0) [0|1] "" NEO SG_ EPBClosed : 12|1@0+ (1,0) [0|1] "" NEO
@@ -184,6 +191,9 @@ BO_ 715 ASCMGasRegenCmd: 8 K124_ASCM
BO_ 717 ASCM_2CD: 5 K124_ASCM BO_ 717 ASCM_2CD: 5 K124_ASCM
BO_ 761 BRAKE_RELATED_2: 7 XXX
SG_ UserBrakePressure2 : 47|9@0+ (1,0) [0|511] "" XXX
BO_ 789 EBCMFrictionBrakeCmd: 5 K124_ASCM BO_ 789 EBCMFrictionBrakeCmd: 5 K124_ASCM
SG_ RollingCounter : 33|2@0+ (1,0) [0|0] "" NEO SG_ RollingCounter : 33|2@0+ (1,0) [0|0] "" NEO
SG_ FrictionBrakeMode : 7|4@0+ (1,0) [0|0] "" NEO SG_ FrictionBrakeMode : 7|4@0+ (1,0) [0|0] "" NEO
@@ -201,17 +211,22 @@ BO_ 810 TCICOnStarGPSPosition: 8 K73_TCIC
SG_ GPSLongitude : 39|32@0+ (1,-2147483648) [0|0] "milliarcsecond" NEO SG_ GPSLongitude : 39|32@0+ (1,-2147483648) [0|0] "milliarcsecond" NEO
SG_ GPSLatitude : 7|32@0+ (1,0) [0|0] "milliarcsecond" NEO SG_ GPSLatitude : 7|32@0+ (1,0) [0|0] "milliarcsecond" NEO
BO_ 840 EBCMWheelSpdFront: 4 K17_EBCM BO_ 840 EBCMWheelSpdFront: 5 K17_EBCM
SG_ FLWheelSpd : 7|16@0+ (0.0311,0) [0|255] "km/h" NEO SG_ FLWheelSpd : 7|16@0+ (0.0311,0) [0|255] "km/h" NEO
SG_ FRWheelSpd : 23|16@0+ (0.0311,0) [0|255] "km/h" NEO SG_ FRWheelSpd : 23|16@0+ (0.0311,0) [0|255] "km/h" NEO
BO_ 842 EBCMWheelSpdRear: 5 K17_EBCM BO_ 842 EBCMWheelSpdRear: 5 K17_EBCM
SG_ RLWheelSpd : 7|16@0+ (0.0311,0) [0|255] "km/h" NEO SG_ RLWheelSpd : 7|16@0+ (0.0311,0) [0|255] "km/h" NEO
SG_ RRWheelSpd : 23|16@0+ (0.0311,0) [0|255] "km/h" NEO SG_ RRWheelSpd : 23|16@0+ (0.0311,0) [0|255] "km/h" NEO
SG_ MovingForward : 32|1@0+ (1,0) [0|1] "" XXX
SG_ MovingBackward : 33|1@0+ (1,0) [0|1] "" XXX
SG_ MovingForward2 : 35|1@1+ (1,0) [0|1] "" XXX
SG_ MovingBackward2 : 36|1@0+ (1,0) [0|1] "" XXX
BO_ 869 ASCM_365: 4 K124_ASCM BO_ 869 ASCM_365: 4 K124_ASCM
BO_ 880 ASCMActiveCruiseControlStatus: 6 K124_ASCM BO_ 880 ASCMActiveCruiseControlStatus: 6 K124_ASCM
SG_ ACCCruiseState : 8|3@1+ (1,0) [0|7] "" XXX
SG_ ACCLeadCar : 44|1@0+ (1,0) [0|0] "" Vector__XXX SG_ ACCLeadCar : 44|1@0+ (1,0) [0|0] "" Vector__XXX
SG_ ACCAlwaysOne2 : 32|1@0+ (1,0) [0|0] "" Vector__XXX SG_ ACCAlwaysOne2 : 32|1@0+ (1,0) [0|0] "" Vector__XXX
SG_ ACCAlwaysOne : 0|1@0+ (1,0) [0|0] "" Vector__XXX SG_ ACCAlwaysOne : 0|1@0+ (1,0) [0|0] "" Vector__XXX
@@ -267,11 +282,15 @@ CM_ BU_ K114B_HPCM "Hybrid Powertrain Control Module";
CM_ BU_ NEO "Comma NEO"; CM_ BU_ NEO "Comma NEO";
CM_ BU_ K124_ASCM "Active Safety Control Module"; CM_ BU_ K124_ASCM "Active Safety Control Module";
CM_ SG_ 381 MSG17D_AccPower "Need to investigate"; CM_ SG_ 381 MSG17D_AccPower "Need to investigate";
CM_ BO_ 190 "Length varies from 6 to 8 bytes by car";
CM_ SG_ 190 GasPedalAndAcc "ACC baseline is 62"; CM_ SG_ 190 GasPedalAndAcc "ACC baseline is 62";
CM_ SG_ 352 Ignition "Non-zero when ignition is on"; CM_ SG_ 352 Ignition "Non-zero when ignition is on";
CM_ SG_ 451 GasPedalAndAcc2 "ACC baseline is 62"; CM_ SG_ 451 GasPedalAndAcc2 "ACC baseline is 62";
CM_ SG_ 481 ACCAlwaysOne "Usually 1 if the car is equipped with ACC";
CM_ SG_ 497 Ignition "Describes ignition + preconditioning mode, noisy"; CM_ SG_ 497 Ignition "Describes ignition + preconditioning mode, noisy";
CM_ SG_ 501 PRNDL2 "When ManualMode is Active, Value is 13=L1 12=L2 11=L3 ... 4=L10"; CM_ SG_ 501 PRNDL2 "When ManualMode is Active, Value is 13=L1 12=L2 11=L3 ... 4=L10";
CM_ SG_ 532 UserBrakePressure "can be lower than other brake position signals when the brakes are pre-filled from ACC braking and the user presses on the brakes. user-only pressure?";
CM_ SG_ 761 UserBrakePressure2 "Similar to BRAKE_RELATED->UserBrakePressure";
CM_ SG_ 1001 VehicleSpeed "Spinouts show here on 2wd. Speed derived from right front wheel (drive tire)"; CM_ SG_ 1001 VehicleSpeed "Spinouts show here on 2wd. Speed derived from right front wheel (drive tire)";
BA_DEF_ "UseGMParameterIDs" INT 0 0; BA_DEF_ "UseGMParameterIDs" INT 0 0;
BA_DEF_ "ProtocolType" STRING ; BA_DEF_ "ProtocolType" STRING ;
@@ -290,6 +309,7 @@ VAL_ 452 CruiseState 4 "Standstill" 3 "Faulted" 1 "Active" 0 "Off" ;
VAL_ 309 PRNDL 3 "R" 2 "D" 1 "N" 0 "P" ; VAL_ 309 PRNDL 3 "R" 2 "D" 1 "N" 0 "P" ;
VAL_ 309 ESPButton 1 "Active" 0 "Inactive" ; VAL_ 309 ESPButton 1 "Active" 0 "Inactive" ;
VAL_ 384 LKASteeringCmdActive 1 "Active" 0 "Inactive" ; VAL_ 384 LKASteeringCmdActive 1 "Active" 0 "Inactive" ;
VAL_ 880 ACCCruiseState 2 "Adaptive" 3 "Adaptive" 4 "Non-adaptive" 5 "Non-adaptive" ;
VAL_ 880 ACCLeadCar 1 "Present" 0 "Not Present" ; VAL_ 880 ACCLeadCar 1 "Present" 0 "Not Present" ;
VAL_ 880 ACCGapLevel 3 "Far" 2 "Med" 1 "Near" 0 "Inactive" ; VAL_ 880 ACCGapLevel 3 "Far" 2 "Med" 1 "Near" 0 "Inactive" ;
VAL_ 880 ACCResumeButton 1 "Pressed" 0 "Depressed" ; VAL_ 880 ACCResumeButton 1 "Pressed" 0 "Depressed" ;
@@ -22,6 +22,7 @@ BO_ 432 STANDSTILL: 7 VSA
BO_ 456 ACC_CONTROL: 8 XXX BO_ 456 ACC_CONTROL: 8 XXX
SG_ ACCEL_COMMAND : 7|12@0- (0.01,0) [0|0] "m/s^2" XXX SG_ ACCEL_COMMAND : 7|12@0- (0.01,0) [0|0] "m/s^2" XXX
SG_ CONTROL_OFF : 8|1@0+ (1,0) [0|1] "" XXX SG_ CONTROL_OFF : 8|1@0+ (1,0) [0|1] "" XXX
SG_ STANDSTILL : 9|1@0+ (1,0) [0|1] "" XXX
SG_ CONTROL_ON : 10|1@0+ (1,0) [0|1] "" XXX SG_ CONTROL_ON : 10|1@0+ (1,0) [0|1] "" XXX
SG_ BOH : 23|1@0+ (1,0) [0|1] "" XXX SG_ BOH : 23|1@0+ (1,0) [0|1] "" XXX
SG_ AEB_STATUS : 33|1@1+ (1,0) [0|7] "" XXX SG_ AEB_STATUS : 33|1@1+ (1,0) [0|7] "" XXX
@@ -69,9 +70,8 @@ BO_ 254913108 LKAS_HUD_2: 8 ADAS
SG_ COUNTER : 61|2@0+ (1,0) [0|3] "" XXX SG_ COUNTER : 61|2@0+ (1,0) [0|3] "" XXX
SG_ CHECKSUM : 59|4@0+ (1,0) [0|15] "" XXX SG_ CHECKSUM : 59|4@0+ (1,0) [0|15] "" XXX
CM_ BO 456 "not sure which bit enables cruise"; CM_ BO_ 456 "not sure which bit enables cruise";
CM_ SG_ 456 ACCEL_COMMAND "seems to be m/s^2? need to verify"; CM_ SG_ 456 STANDSTILL "set to 1 when camera requests -4.0 m/s^2";
CM_ SG_ 456 BOH "could be cruise standstill?";
VAL_ 401 GEAR_SHIFTER 32 "L" 16 "S" 8 "D" 4 "N" 2 "R" 1 "P"; VAL_ 401 GEAR_SHIFTER 32 "L" 16 "S" 8 "D" 4 "N" 2 "R" 1 "P";
VAL_ 401 GEAR 7 "L" 10 "S" 4 "D" 3 "N" 2 "R" 1 "P"; VAL_ 401 GEAR 7 "L" 10 "S" 4 "D" 3 "N" 2 "R" 1 "P";
+2
View File
@@ -0,0 +1,2 @@
hyundai_kia_mando_front_radar.dbc
hyundai_kia_mando_corner_radar.dbc
+170
View File
@@ -0,0 +1,170 @@
#!/usr/bin/env python3
from collections import namedtuple
import os
if __name__ == "__main__":
dbc_name = os.path.basename(__file__).replace(".py", ".dbc")
hyundai_path = os.path.dirname(os.path.realpath(__file__))
with open(os.path.join(hyundai_path, dbc_name), "w") as f:
f.write("""
VERSION ""
NS_ :
NS_DESC_
CM_
BA_DEF_
BA_
VAL_
CAT_DEF_
CAT_
FILTER
BA_DEF_DEF_
EV_DATA_
ENVVAR_DATA_
SGTYPE_
SGTYPE_VAL_
BA_DEF_SGTYPE_
BA_SGTYPE_
SIG_TYPE_REF_
VAL_TABLE_
SIG_GROUP_
SIG_VALTYPE_
SIGTYPE_VALTYPE_
BO_TX_BU_
BA_DEF_REL_
BA_REL_
BA_DEF_DEF_REL_
BU_SG_REL_
BU_EV_REL_
BU_BO_REL_
SG_MUL_VAL_
BS_:
BU_: XXX
""")
for a in [0x100, 0x200]:
f.write(f"""
BO_ {a} RADAR_POINTS_METADATA_0x{a:x}: 64 RADAR
SG_ SIGNAL_1 : 0|32@1+ (1,0) [0|255] "" XXX
SG_ SIGNAL_2 : 32|32@1+ (1,0) [0|65535] "" XXX
SG_ SIGNAL_3 : 64|4@1+ (1,0) [0|15] "" XXX
SG_ SIGNAL_4 : 68|4@1+ (1,0) [0|15] "" XXX
SG_ RADAR_POINT_COUNT : 72|8@1+ (1,0) [0|255] "" XXX
SG_ SIGNAL_6 : 80|7@1+ (0.015625,0) [0|3] "" XXX
SG_ SIGNAL_7 : 87|1@1+ (1,0) [0|1] "" XXX
SG_ SIGNAL_8 : 88|3@1+ (1,0) [0|7] "" XXX
SG_ SIGNAL_9 : 91|5@1+ (0.0625,0) [0|31] "" XXX
SG_ SIGNAL_10 : 96|8@1+ (1,0) [0|255] "" XXX
SG_ SIGNAL_11 : 104|7@1+ (0.015625,0) [0|127] "" XXX
SG_ SIGNAL_12 : 111|2@1+ (1,0) [0|65535] "" XXX
SG_ SIGNAL_13 : 113|7@1+ (0.015625,0) [0|127] "" XXX
SG_ SIGNAL_14 : 120|7@1+ (0.015625,0) [0|127] "" XXX
SG_ SIGNAL_15 : 127|3@1+ (1,0) [0|3] "" XXX
SG_ SIGNAL_16 : 130|2@1+ (1,0) [0|3] "" XXX
SG_ SIGNAL_17 : 133|2@0+ (1,0) [0|3] "" XXX
SG_ SIGNAL_18 : 134|1@0+ (1,0) [0|3] "" XXX
SG_ SIGNAL_19 : 135|3@1+ (1,0) [0|3] "" XXX
SG_ SIGNAL_20 : 138|8@1+ (1,0) [0|63] "" XXX
SG_ SIGNAL_21 : 146|2@1+ (1,0) [0|3] "" XXX
SG_ SIGNAL_22 : 148|1@1+ (1,0) [0|3] "" XXX
SG_ SIGNAL_23 : 149|4@1+ (1,0) [0|7] "" XXX
SG_ SIGNAL_24 : 153|1@1+ (1,0) [0|3] "" XXX
SG_ SIGNAL_25 : 154|2@1+ (1,0) [0|3] "" XXX
SG_ SIGNAL_26 : 157|2@0+ (1,0) [0|3] "" XXX
SG_ SIGNAL_27 : 158|7@1+ (0.125,0) [0|3] "" XXX
SG_ SIGNAL_28 : 165|7@1+ (0.015625,0) [0|31] "" XXX
SG_ SIGNAL_29 : 172|7@1+ (0.125,0) [0|3] "" XXX
SG_ SIGNAL_30 : 179|7@1+ (0.015625,0) [0|1] "" XXX
SG_ SIGNAL_31 : 186|4@1+ (1,0) [0|7] "" XXX
SG_ SIGNAL_32 : 190|14@1+ (0.015625,0) [0|15] "" XXX
SG_ SIGNAL_33 : 204|11@1+ (0.03125,0) [0|8191] "" XXX
SG_ SIGNAL_34 : 215|2@1+ (1,0) [0|3] "" XXX
SG_ SIGNAL_35 : 217|7@1+ (1,0) [0|127] "" XXX
SG_ SIGNAL_36 : 224|6@1+ (1,0) [0|63] "" XXX
SG_ SIGNAL_37 : 230|6@1+ (0.2,0) [0|31] "" XXX
SG_ SIGNAL_38 : 236|6@1+ (0.2,0) [0|7] "" XXX
SG_ SIGNAL_39 : 242|8@1+ (1,-90) [0|255] "" XXX
SG_ SIGNAL_40 : 250|6@1+ (1,0) [0|63] "" XXX
SG_ SIGNAL_41 : 256|8@1+ (0.25,0) [0|255] "" XXX
SG_ SIGNAL_42 : 264|3@1+ (1,0) [0|3] "" XXX
SG_ SIGNAL_43 : 267|12@1+ (0.01,0) [0|31] "" XXX
SG_ SIGNAL_44 : 279|32@1+ (1,0) [0|63] "" XXX
SG_ SIGNAL_45 : 311|1@1+ (1,0) [0|1] "" XXX
SG_ SIGNAL_46 : 312|2@1+ (1,0) [0|3] "" XXX
SG_ SIGNAL_47 : 314|32@1+ (1,0) [0|255] "" XXX
SG_ SIGNAL_48 : 346|6@1+ (1,0) [0|63] "" XXX
SG_ SIGNAL_49 : 352|7@1+ (0.25,0) [0|127] "" XXX
SG_ SIGNAL_50 : 359|6@1+ (0.03125,0) [0|31] "" XXX
SG_ SIGNAL_51 : 365|10@1+ (0.125,0) [0|3] "" XXX
SG_ SIGNAL_52 : 375|10@1+ (0.125,0) [0|63] "" XXX
SG_ SIGNAL_53 : 385|7@1+ (1,0) [0|127] "" XXX
SG_ SIGNAL_54 : 392|7@1+ (1,0) [0|127] "" XXX
SG_ SIGNAL_55 : 399|8@1+ (0.00390625,0) [0|31] "" XXX
SG_ SIGNAL_56 : 407|10@1+ (0.125,0) [0|63] "" XXX
SG_ SIGNAL_57 : 417|1@1+ (1,0) [0|3] "" XXX
SG_ SIGNAL_58 : 418|1@1+ (1,0) [0|3] "" XXX
""")
# radar points are sent at 20 Hz in groups of 1 to 13 messages
# each message has 5 radar points for a total of 65 points max
# each radar point is 101 bits so the alignment is not consistent
RadarPointSignal = namedtuple("RadarPointSignal", ["name", "start", "length", "scale", "offset"])
radar_point_signals = (
RadarPointSignal("DISTANCE", 7, 14, 1/64, 0),
RadarPointSignal("", 21, 2, 1, 0),
RadarPointSignal("", 23, 8, 1/512, -127/512),
RadarPointSignal("REL_VELOCITY", 31, 13, 1/32, -66),
RadarPointSignal("", 44, 2, 1, 0),
RadarPointSignal("", 46, 2, 1, 0),
RadarPointSignal("AZIMUTH", 48, 12, 1/512, -2047/512),
RadarPointSignal("", 60, 2, 1, 0),
RadarPointSignal("", 62, 1, 1, 0),
RadarPointSignal("", 63, 7, 1, 0),
RadarPointSignal("", 70, 1, 1, 0),
RadarPointSignal("", 71, 6, 1, 0),
RadarPointSignal("", 77, 2, 1, 0),
RadarPointSignal("", 79, 8, 1/512, -127/512),
RadarPointSignal("", 87, 1, 1, 0),
RadarPointSignal("", 88, 2, 1, 0),
RadarPointSignal("", 90, 3, 1, 0),
# last 15 bits are controlled by LAYOUT_ID (seems to always zero, so below is layout 0)
RadarPointSignal("", 93, 6, 1, 0),
RadarPointSignal("", 99, 8, 1, 0),
RadarPointSignal("", 107, 1, 1, 0),
)
radar_point_bit_count = sum([s.length for s in radar_point_signals])
for a in [0x101, 0x201]:
f.write(f"""
BO_ {a} RADAR_POINTS_0x{a:x}: 64 RADAR
SG_ MESSAGE_ID : 0|5@1+ (1,0) [0|31] "" XXX
SG_ LAYOUT_ID : 5|2@1+ (1,0) [0|3] "" XXX
""")
bit_idx = radar_point_signals[0].start
for i in range(5):
signal_idx = 1
for sig in radar_point_signals:
if sig.name:
sig_name = f"POINT_{i+1}_{sig.name}"
else:
sig_name = f"POINT_{i+1}_SIGNAL_{signal_idx}"
signal_idx += 1
sig_start_idx = i * radar_point_bit_count + sig.start
assert bit_idx == sig_start_idx, f"signal overlap or gap!!! {bit_idx} != {sig_start_idx}"
min_val = round(sig.offset, 10)
max_val = round((2**sig.length - 1) * sig.scale + sig.offset, 10)
f.write(f" SG_ {sig_name} : {sig_start_idx}|{sig.length}@1+ ({sig.scale},{sig.offset}) [{min_val}|{max_val}] \"\" XXX\n")
bit_idx += sig.length
# checksum is across a group of 0x100/200 and 0x101/201 messages (no checksums inside the other messages)
# ccitt_crc16 = mkCrcFun(0x11021, initCrc=0xffff, xorOut=0x0000, rev=False)
for a in [0x104, 0x204]:
f.write(f"""
BO_ {a} RADAR_POINTS_CHECKSUM_0x{a:x}: 3 RADAR
SG_ CRC16 : 0|16@1+ (1,0) [0|65535] "" XXX
""")
+61
View File
@@ -0,0 +1,61 @@
#!/usr/bin/env python3
import os
if __name__ == "__main__":
dbc_name = os.path.basename(__file__).replace(".py", ".dbc")
hyundai_path = os.path.dirname(os.path.realpath(__file__))
with open(os.path.join(hyundai_path, dbc_name), "w") as f:
f.write("""
VERSION ""
NS_ :
NS_DESC_
CM_
BA_DEF_
BA_
VAL_
CAT_DEF_
CAT_
FILTER
BA_DEF_DEF_
EV_DATA_
ENVVAR_DATA_
SGTYPE_
SGTYPE_VAL_
BA_DEF_SGTYPE_
BA_SGTYPE_
SIG_TYPE_REF_
VAL_TABLE_
SIG_GROUP_
SIG_VALTYPE_
SIGTYPE_VALTYPE_
BO_TX_BU_
BA_DEF_REL_
BA_REL_
BA_DEF_DEF_REL_
BU_SG_REL_
BU_EV_REL_
BU_BO_REL_
SG_MUL_VAL_
BS_:
BU_: XXX
""")
# note: 0x501/0x502 seem to be special in 0x5XX range
for a in range(0x500, 0x500 + 32):
f.write(f"""
BO_ {a} RADAR_TRACK_{a:x}: 8 RADAR
SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX
SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX
SG_ STATE : 15|3@0+ (1,0) [0|7] "" XXX
SG_ LONG_DIST : 18|11@0+ (0.1,0) [0|204.7] "" XXX
SG_ REL_ACCEL : 33|10@0- (0.02,0) [-10.24|10.22] "" XXX
SG_ ZEROS : 37|4@0+ (1,0) [0|255] "" XXX
SG_ COUNTER : 38|1@0+ (1,0) [0|1] "" XXX
SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX
SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX
SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX
""")
+13 -5
View File
@@ -83,9 +83,10 @@ BO_ 466 PCM_CRUISE: 8 XXX
BO_ 467 PCM_CRUISE_2: 8 XXX BO_ 467 PCM_CRUISE_2: 8 XXX
SG_ PCM_FOLLOW_DISTANCE : 12|2@0+ (1,0) [0|3] "" XXX SG_ PCM_FOLLOW_DISTANCE : 12|2@0+ (1,0) [0|3] "" XXX
SG_ MAIN_ON : 15|1@0+ (1,0) [0|1] "" XXX
SG_ LOW_SPEED_LOCKOUT : 14|2@0+ (1,0) [0|3] "" XXX SG_ LOW_SPEED_LOCKOUT : 14|2@0+ (1,0) [0|3] "" XXX
SG_ MAIN_ON : 15|1@0+ (1,0) [0|1] "" XXX
SG_ SET_SPEED : 23|8@0+ (1,0) [0|255] "km/h" XXX SG_ SET_SPEED : 23|8@0+ (1,0) [0|255] "km/h" XXX
SG_ ACC_FAULTED : 47|1@0+ (1,0) [0|1] "" XXX
SG_ CHECKSUM : 63|8@0+ (1,0) [0|255] "" XXX SG_ CHECKSUM : 63|8@0+ (1,0) [0|255] "" XXX
BO_ 552 ACCELEROMETER: 8 XXX BO_ 552 ACCELEROMETER: 8 XXX
@@ -164,8 +165,9 @@ BO_ 836 PRE_COLLISION_2: 8 DSU
SG_ CHECKSUM : 63|8@0+ (1,0) [0|0] "" XXX SG_ CHECKSUM : 63|8@0+ (1,0) [0|0] "" XXX
BO_ 865 CLUTCH: 8 XXX BO_ 865 CLUTCH: 8 XXX
SG_ CLUTCH_RELEASED : 38|1@0+ (1,0) [0|1] "" XXX SG_ ACC_FAULTED : 32|1@0+ (1,0) [0|1] "" XXX
SG_ GAS_PEDAL_ALT : 23|8@0+ (0.005,0) [0|1] "" XXX SG_ GAS_PEDAL_ALT : 23|8@0+ (0.005,0) [0|1] "" XXX
SG_ CLUTCH_RELEASED : 38|1@0+ (1,0) [0|1] "" XXX
BO_ 869 DSU_CRUISE : 7 DSU BO_ 869 DSU_CRUISE : 7 DSU
SG_ RES_BTN : 3|1@0+ (1,0) [0|0] "" XXX SG_ RES_BTN : 3|1@0+ (1,0) [0|0] "" XXX
@@ -180,6 +182,7 @@ BO_ 921 PCM_CRUISE_SM: 8 XXX
SG_ MAIN_ON : 4|1@0+ (1,0) [0|1] "" XXX SG_ MAIN_ON : 4|1@0+ (1,0) [0|1] "" XXX
SG_ CRUISE_CONTROL_STATE : 11|4@0+ (1,0) [0|15] "" XXX SG_ CRUISE_CONTROL_STATE : 11|4@0+ (1,0) [0|15] "" XXX
SG_ DISTANCE_LINES : 14|2@0+ (1,0) [0|3] "" XXX SG_ DISTANCE_LINES : 14|2@0+ (1,0) [0|3] "" XXX
SG_ TEMP_ACC_FAULTED : 15|1@0+ (1,0) [0|1] "" XXX
SG_ UI_SET_SPEED : 31|8@0+ (1,0) [0|255] "" XXX SG_ UI_SET_SPEED : 31|8@0+ (1,0) [0|255] "" XXX
BO_ 951 ESP_CONTROL: 8 ESP BO_ 951 ESP_CONTROL: 8 ESP
@@ -204,7 +207,7 @@ BO_ 1005 REVERSE_CAMERA_STATE: 2 BGM
BO_ 1009 PCM_CRUISE_ALT: 8 XXX BO_ 1009 PCM_CRUISE_ALT: 8 XXX
SG_ MAIN_ON : 13|1@0+ (1,0) [0|3] "" XXX SG_ MAIN_ON : 13|1@0+ (1,0) [0|3] "" XXX
SG_ CRUISE_STATE : 10|1@0+ (1,0) [0|1] "" XXX SG_ CRUISE_STATE : 10|1@0+ (1,0) [0|1] "" XXX
SG_ SET_SPEED : 23|8@0+ (1,0) [0|255] "mph" XXX SG_ UI_SET_SPEED : 23|8@0+ (1,0) [0|255] "mph" XXX
BO_ 1020 SOLAR_SENSOR: 8 XXX BO_ 1020 SOLAR_SENSOR: 8 XXX
SG_ LUX_SENSOR : 55|13@0+ (1,0) [0|0] "" XXX SG_ LUX_SENSOR : 55|13@0+ (1,0) [0|0] "" XXX
@@ -328,6 +331,7 @@ BO_ 1552 BODY_CONTROL_STATE_2: 8 XXX
SG_ METER_SLIDER_BRIGHTNESS_PCT : 30|7@0+ (1,0) [12|100] "%" XXX SG_ METER_SLIDER_BRIGHTNESS_PCT : 30|7@0+ (1,0) [12|100] "%" XXX
SG_ METER_SLIDER_LOW_BRIGHTNESS : 37|1@0+ (1,0) [0|1] "" XXX SG_ METER_SLIDER_LOW_BRIGHTNESS : 37|1@0+ (1,0) [0|1] "" XXX
SG_ METER_SLIDER_DIMMED : 38|1@0+ (1,0) [0|1] "" XXX SG_ METER_SLIDER_DIMMED : 38|1@0+ (1,0) [0|1] "" XXX
SG_ UNITS : 63|3@0+ (1,0) [1|4] "" XXX
BO_ 1553 UI_SETTING: 8 XXX BO_ 1553 UI_SETTING: 8 XXX
SG_ UNITS : 26|2@0+ (1,0) [0|3] "" XXX SG_ UNITS : 26|2@0+ (1,0) [0|3] "" XXX
@@ -370,6 +374,7 @@ CM_ SG_ 37 STEER_FRACTION "1/15th of the signal STEER_ANGLE, which is 1.5 deg; n
CM_ SG_ 37 STEER_RATE "factor is tbd"; CM_ SG_ 37 STEER_RATE "factor is tbd";
CM_ SG_ 466 ACCEL_NET "net acceleration produced by the system, given ACCEL_CMD, road grade and other factors"; CM_ SG_ 466 ACCEL_NET "net acceleration produced by the system, given ACCEL_CMD, road grade and other factors";
CM_ SG_ 466 CRUISE_STATE "Active state is 8, if standstill is requested will switch to state 11(3 sec timer), after timer is elapsed will switch into state 7(standstill). If plus button was pressed - status 9, minus button pressed - status 10"; CM_ SG_ 466 CRUISE_STATE "Active state is 8, if standstill is requested will switch to state 11(3 sec timer), after timer is elapsed will switch into state 7(standstill). If plus button was pressed - status 9, minus button pressed - status 10";
CM_ SG_ 467 ACC_FAULTED "1 when ACC is faulted and the PCM disallows engagement";
CM_ SG_ 467 SET_SPEED "43 km/h are shown as 28 mph, so conversion isn't perfect"; CM_ SG_ 467 SET_SPEED "43 km/h are shown as 28 mph, so conversion isn't perfect";
CM_ SG_ 467 LOW_SPEED_LOCKOUT "in low speed lockout, system would always disengage below 28mph"; CM_ SG_ 467 LOW_SPEED_LOCKOUT "in low speed lockout, system would always disengage below 28mph";
CM_ SG_ 560 BRAKE_PRESSED "another brake pressed?"; CM_ SG_ 560 BRAKE_PRESSED "another brake pressed?";
@@ -391,10 +396,12 @@ CM_ SG_ 835 PERMIT_BRAKING "Original ACC has this going high when a car in front
CM_ SG_ 835 ACCEL_CMD_ALT "Copy of main ACCEL_CMD, but across 8 bits instead of 16 bits like ACCEL_CMD. Unsure if only informational or has an effect. Likely informational as existing openpilot sets this to 0 and no loss of functionality observed. Originally 'AT_RAW' in leaked toyota_2017_ref_pt.dbc file."; CM_ SG_ 835 ACCEL_CMD_ALT "Copy of main ACCEL_CMD, but across 8 bits instead of 16 bits like ACCEL_CMD. Unsure if only informational or has an effect. Likely informational as existing openpilot sets this to 0 and no loss of functionality observed. Originally 'AT_RAW' in leaked toyota_2017_ref_pt.dbc file.";
CM_ SG_ 865 GAS_PEDAL_ALT "copy of main GAS_PEDAL. Both use 8 bits. Might indicate that this message is for pedals."; CM_ SG_ 865 GAS_PEDAL_ALT "copy of main GAS_PEDAL. Both use 8 bits. Might indicate that this message is for pedals.";
CM_ SG_ 865 CLUTCH_RELEASED "boolean of clutch for 6MT."; CM_ SG_ 865 CLUTCH_RELEASED "boolean of clutch for 6MT.";
CM_ SG_ 865 ACC_FAULTED "1 when ACC is faulted and the PCM disallows engagement";
CM_ SG_ 921 UI_SET_SPEED "set speed shown in the vehicle's UI with the vehicle's unit"; CM_ SG_ 921 UI_SET_SPEED "set speed shown in the vehicle's UI with the vehicle's unit";
CM_ SG_ 921 TEMP_ACC_FAULTED "1 when the UI is displaying or playing fault-related alerts or sounds. Also 1 when pressing main on.";
CM_ SG_ 951 BRAKE_LIGHTS_ACC "brake lights when ACC commands decel"; CM_ SG_ 951 BRAKE_LIGHTS_ACC "brake lights when ACC commands decel";
CM_ SG_ 956 GEAR "on 6MT, only R shows."; CM_ SG_ 956 GEAR "on 6MT, only R shows.";
CM_ SG_ 1009 SET_SPEED "units seem to be whatever the car is set to"; CM_ SG_ 1009 UI_SET_SPEED "units seem to be whatever the car is set to";
CM_ SG_ 1041 PCS_INDICATOR "Pre-Collision System Indicator"; CM_ SG_ 1041 PCS_INDICATOR "Pre-Collision System Indicator";
CM_ SG_ 1041 PCS_SENSITIVITY "Pre-Collision System Sensitivity"; CM_ SG_ 1041 PCS_SENSITIVITY "Pre-Collision System Sensitivity";
CM_ SG_ 1042 LDA_SA_TOGGLE "LDA Steering Assist Toggle"; CM_ SG_ 1042 LDA_SA_TOGGLE "LDA Steering Assist Toggle";
@@ -427,7 +434,7 @@ CM_ SG_ 1163 OVSPVALL "-5 at start then 2 after 2 seconds";
CM_ SG_ 1163 OVSPVALM "-5 at start then 5 after 2 seconds"; CM_ SG_ 1163 OVSPVALM "-5 at start then 5 after 2 seconds";
CM_ SG_ 1163 OVSPVALH "-5 at start then 10 after 2 seconds"; CM_ SG_ 1163 OVSPVALH "-5 at start then 10 after 2 seconds";
CM_ SG_ 1163 TSRSPU "always 1"; CM_ SG_ 1163 TSRSPU "always 1";
CM_ SG_ 1552 UI_SPEED "Vehicle's speedometer's display speed after Toyota's offset was applied, uses vehicle's unit"; CM_ SG_ 1552 UI_SPEED "Does not appear to match dash";
CM_ SG_ 1552 METER_SLIDER_BRIGHTNESS_PCT "Combination display brightness setting, scales from 12 per cent to 100 per cent, reflects combination meter settings only, not linked with headlight state"; CM_ SG_ 1552 METER_SLIDER_BRIGHTNESS_PCT "Combination display brightness setting, scales from 12 per cent to 100 per cent, reflects combination meter settings only, not linked with headlight state";
CM_ SG_ 1552 METER_SLIDER_LOW_BRIGHTNESS "Combination display low brightness mode, also controls footwell lighting"; CM_ SG_ 1552 METER_SLIDER_LOW_BRIGHTNESS "Combination display low brightness mode, also controls footwell lighting";
CM_ SG_ 1552 METER_SLIDER_DIMMED "Combination display slider not at max, reflects combination meter settings only, not linked with headlight state"; CM_ SG_ 1552 METER_SLIDER_DIMMED "Combination display slider not at max, reflects combination meter settings only, not linked with headlight state";
@@ -479,6 +486,7 @@ VAL_ 1162 TSGN3 0 "none" 1 "speed sign" 2 "0 unlimited" 7 "unlimited" 16 "highwa
VAL_ 1162 SPLSGN3 15 "conditional blank" 4 "wet road" 5 "rain" 0 "none"; VAL_ 1162 SPLSGN3 15 "conditional blank" 4 "wet road" 5 "rain" 0 "none";
VAL_ 1552 METER_SLIDER_LOW_BRIGHTNESS 1 "Low brightness mode, footwell lights off" 0 "Normal mode, footwell lights on"; VAL_ 1552 METER_SLIDER_LOW_BRIGHTNESS 1 "Low brightness mode, footwell lights off" 0 "Normal mode, footwell lights on";
VAL_ 1552 METER_SLIDER_DIMMED 1 "Dimmed" 0 "Not Dimmed"; VAL_ 1552 METER_SLIDER_DIMMED 1 "Dimmed" 0 "Not Dimmed";
VAL_ 1552 UNITS 1 "km (km/L)" 2 "km (L/100km)" 3 "miles (MPG US)" 4 "miles (MPG Imperial)";
VAL_ 1553 UNITS 1 "km" 2 "miles"; VAL_ 1553 UNITS 1 "km" 2 "miles";
VAL_ 1556 TURN_SIGNALS 3 "none" 2 "right" 1 "left"; VAL_ 1556 TURN_SIGNALS 3 "none" 2 "right" 1 "left";
VAL_ 1592 LOCK_STATUS 0 "locked" 1 "unlocked"; VAL_ 1592 LOCK_STATUS 0 "locked" 1 "unlocked";
+7 -5
View File
@@ -8,10 +8,11 @@ BO_ 401 STEERING_LTA: 8 XXX
SG_ SETME_X64 : 47|8@0+ (1,0) [0|255] "" XXX SG_ SETME_X64 : 47|8@0+ (1,0) [0|255] "" XXX
SG_ ANGLE : 55|8@0- (0.5,0) [0|255] "" XXX SG_ ANGLE : 55|8@0- (0.5,0) [0|255] "" XXX
SG_ STEER_ANGLE_CMD : 15|16@0- (0.0573,0) [-540|540] "" XXX SG_ STEER_ANGLE_CMD : 15|16@0- (0.0573,0) [-540|540] "" XXX
SG_ STEER_REQUEST : 25|1@0+ (1,0) [0|1] "" XXX SG_ STEER_REQUEST_2 : 25|1@0+ (1,0) [0|1] "" XXX
SG_ LKA_ACTIVE : 26|1@0+ (1,0) [0|1] "" XXX
SG_ BIT : 30|1@0+ (1,0) [0|1] "" XXX SG_ BIT : 30|1@0+ (1,0) [0|1] "" XXX
SG_ COUNTER : 6|6@0+ (1,0) [0|255] "" XXX SG_ COUNTER : 6|6@0+ (1,0) [0|255] "" XXX
SG_ STEER_REQUEST_2 : 0|1@0+ (1,0) [0|1] "" XXX SG_ STEER_REQUEST : 0|1@0+ (1,0) [0|1] "" XXX
SG_ SETME_X1 : 7|1@0+ (1,0) [0|1] "" XXX SG_ SETME_X1 : 7|1@0+ (1,0) [0|1] "" XXX
BO_ 550 BRAKE_MODULE: 8 XXX BO_ 550 BRAKE_MODULE: 8 XXX
@@ -38,9 +39,10 @@ CM_ SG_ 401 PERCENTAGE "driver override percentage (0-100), very close to steeri
CM_ SG_ 401 SETME_X64 "ramps to 0 smoothly then back on falling edge of STEER_REQUEST if BIT isn't 1"; CM_ SG_ 401 SETME_X64 "ramps to 0 smoothly then back on falling edge of STEER_REQUEST if BIT isn't 1";
CM_ SG_ 401 ANGLE "angle of car relative to lane center on LTA camera"; CM_ SG_ 401 ANGLE "angle of car relative to lane center on LTA camera";
CM_ SG_ 401 STEER_ANGLE_CMD "desired angle, OEM steers up to 95 degrees, no angle limit but torque will bottom out"; CM_ SG_ 401 STEER_ANGLE_CMD "desired angle, OEM steers up to 95 degrees, no angle limit but torque will bottom out";
CM_ SG_ 401 STEER_REQUEST "enable bit for steering, 1 to steer, 0 to not";
CM_ SG_ 401 BIT "has correlation to STEER_REQUEST"; CM_ SG_ 401 BIT "has correlation to STEER_REQUEST";
CM_ SG_ 401 STEER_REQUEST "enable bit for steering, 1 to steer, 0 to not";
CM_ SG_ 401 STEER_REQUEST_2 "enable bit for steering, 1 to steer, 0 to not"; CM_ SG_ 401 STEER_REQUEST_2 "enable bit for steering, 1 to steer, 0 to not";
CM_ SG_ 401 LKA_ACTIVE "1 when using LTA for LKA";
CM_ SG_ 550 BRAKE_PRESSURE "seems prop to pedal force"; CM_ SG_ 550 BRAKE_PRESSURE "seems prop to pedal force";
CM_ SG_ 550 BRAKE_POSITION "seems proportional to pedal displacement, unclear the max value of 0x1c8"; CM_ SG_ 550 BRAKE_POSITION "seems proportional to pedal displacement, unclear the max value of 0x1c8";
CM_ SG_ 610 TYPE "seems 1 on Corolla, 0 on all others"; CM_ SG_ 610 TYPE "seems 1 on Corolla, 0 on all others";
@@ -52,5 +54,5 @@ CM_ SG_ 1014 ADJACENT_ENABLED "when BSM is enabled in settings, this is on along
CM_ SG_ 1014 APPROACHING_ENABLED "when BSM is enabled in settings, this is on along with ADJACENT_ENABLED. this controls bsm alert visibility"; CM_ SG_ 1014 APPROACHING_ENABLED "when BSM is enabled in settings, this is on along with ADJACENT_ENABLED. this controls bsm alert visibility";
VAL_ 610 IPAS_STATE 5 "override" 3 "enabled" 1 "disabled"; VAL_ 610 IPAS_STATE 5 "override" 3 "enabled" 1 "disabled";
VAL_ 610 LKA_STATE 25 "temporary_fault" 17 "permanent_fault" 9 "temporary_fault2" 5 "active" 1 "standby"; VAL_ 610 LKA_STATE 25 "temporary_fault" 17 "permanent_fault" 11 "lka_missing_unavailable2" 9 "temporary_fault2" 5 "active" 3 "lka_missing_unavailable" 1 "standby";
VAL_ 610 LTA_STATE 25 "temporary_fault" 9 "temporary_fault2" 5 "active" 1 "standby"; VAL_ 610 LTA_STATE 25 "temporary_fault" 9 "temporary_fault2" 5 "active" 3 "lta_missing_unavailable" 1 "standby";
+22 -2
View File
@@ -91,7 +91,7 @@ BO_ 201 ECMEngineStatus: 8 K20_ECM
SG_ EngineTPS : 39|8@0+ (0.392156863,0) [0|100.000000065] "%" NEO SG_ EngineTPS : 39|8@0+ (0.392156863,0) [0|100.000000065] "%" NEO
SG_ EngineRPM : 15|16@0+ (0.25,0) [0|0] "RPM" NEO SG_ EngineRPM : 15|16@0+ (0.25,0) [0|0] "RPM" NEO
SG_ CruiseMainOn : 29|1@0+ (1,0) [0|1] "" NEO SG_ CruiseMainOn : 29|1@0+ (1,0) [0|1] "" NEO
SG_ Brake_Pressed : 40|1@0+ (1,0) [0|1] "" NEO SG_ BrakePressed : 40|1@0+ (1,0) [0|1] "" NEO
SG_ Standstill : 2|1@0+ (1,0) [0|1] "" NEO SG_ Standstill : 2|1@0+ (1,0) [0|1] "" NEO
SG_ CruiseActive : 31|2@0+ (1,0) [0|3] "" NEO SG_ CruiseActive : 31|2@0+ (1,0) [0|3] "" NEO
@@ -104,6 +104,7 @@ BO_ 209 EBCMBrakePedalSensors: 7 K17_EBCM
SG_ BrakeNormalized2 : 47|8@0- (-1,0) [0|255] "" XXX SG_ BrakeNormalized2 : 47|8@0- (-1,0) [0|255] "" XXX
BO_ 241 EBCMBrakePedalPosition: 6 K17_EBCM BO_ 241 EBCMBrakePedalPosition: 6 K17_EBCM
SG_ BrakePressed : 1|1@0+ (1,0) [0|1] "" XXX
SG_ BrakePedalPosition : 15|8@0+ (1,0) [0|255] "" NEO SG_ BrakePedalPosition : 15|8@0+ (1,0) [0|255] "" NEO
BO_ 298 BCMDoorBeltStatus: 8 K9_BCM BO_ 298 BCMDoorBeltStatus: 8 K9_BCM
@@ -143,6 +144,8 @@ BO_ 388 PSCMStatus: 8 K43_PSCM
SG_ LKADriverAppldTrq : 50|11@0- (0.01,0) [-10.24|10.23] "Nm" NEO SG_ LKADriverAppldTrq : 50|11@0- (0.01,0) [-10.24|10.23] "Nm" NEO
SG_ LKATorqueDelivered : 18|11@0- (0.01,0) [0|1] "" NEO SG_ LKATorqueDelivered : 18|11@0- (0.01,0) [0|1] "" NEO
SG_ LKATotalTorqueDelivered : 2|11@0- (0.01,0) [-10.24|10.23] "Nm" NEO SG_ LKATotalTorqueDelivered : 2|11@0- (0.01,0) [-10.24|10.23] "Nm" NEO
SG_ RollingCounter : 38|4@0+ (1,0) [0|15] "" XXX
SG_ PSCMStatusChecksum : 33|10@0+ (1,0) [0|1023] "" XXX
BO_ 417 AcceleratorPedal: 7 XXX BO_ 417 AcceleratorPedal: 7 XXX
SG_ AcceleratorPedal : 55|8@0+ (1,0) [0|0] "" NEO SG_ AcceleratorPedal : 55|8@0+ (1,0) [0|0] "" NEO
@@ -157,6 +160,7 @@ BO_ 452 AcceleratorPedal2: 8 XXX
BO_ 481 ASCMSteeringButton: 7 K124_ASCM BO_ 481 ASCMSteeringButton: 7 K124_ASCM
SG_ DistanceButton : 22|1@0+ (1,0) [0|0] "" NEO SG_ DistanceButton : 22|1@0+ (1,0) [0|0] "" NEO
SG_ LKAButton : 23|1@0+ (1,0) [0|0] "" NEO SG_ LKAButton : 23|1@0+ (1,0) [0|0] "" NEO
SG_ ACCAlwaysOne : 24|1@0+ (1,0) [0|1] "" XXX
SG_ ACCButtons : 46|3@0+ (1,0) [0|0] "" NEO SG_ ACCButtons : 46|3@0+ (1,0) [0|0] "" NEO
SG_ DriveModeButton : 39|1@0+ (1,0) [0|1] "" XXX SG_ DriveModeButton : 39|1@0+ (1,0) [0|1] "" XXX
SG_ RollingCounter : 33|2@0+ (1,0) [0|3] "" NEO SG_ RollingCounter : 33|2@0+ (1,0) [0|3] "" NEO
@@ -184,6 +188,9 @@ BO_ 501 ECMPRDNL2: 8 K20_ECM
SG_ PRNDL2 : 27|4@0+ (1,0) [0|255] "" NEO SG_ PRNDL2 : 27|4@0+ (1,0) [0|255] "" NEO
SG_ ManualMode : 41|1@0+ (1,0) [0|1] "" NEO SG_ ManualMode : 41|1@0+ (1,0) [0|1] "" NEO
BO_ 532 BRAKE_RELATED: 6 XXX
SG_ UserBrakePressure : 0|9@0+ (1,0) [0|511] "" XXX
BO_ 560 EPBStatus: 8 EPB BO_ 560 EPBStatus: 8 EPB
SG_ EPBClosed : 12|1@0+ (1,0) [0|1] "" NEO SG_ EPBClosed : 12|1@0+ (1,0) [0|1] "" NEO
@@ -204,6 +211,9 @@ BO_ 715 ASCMGasRegenCmd: 8 K124_ASCM
BO_ 717 ASCM_2CD: 5 K124_ASCM BO_ 717 ASCM_2CD: 5 K124_ASCM
BO_ 761 BRAKE_RELATED_2: 7 XXX
SG_ UserBrakePressure2 : 47|9@0+ (1,0) [0|511] "" XXX
BO_ 789 EBCMFrictionBrakeCmd: 5 K124_ASCM BO_ 789 EBCMFrictionBrakeCmd: 5 K124_ASCM
SG_ RollingCounter : 33|2@0+ (1,0) [0|0] "" NEO SG_ RollingCounter : 33|2@0+ (1,0) [0|0] "" NEO
SG_ FrictionBrakeMode : 7|4@0+ (1,0) [0|0] "" NEO SG_ FrictionBrakeMode : 7|4@0+ (1,0) [0|0] "" NEO
@@ -221,17 +231,22 @@ BO_ 810 TCICOnStarGPSPosition: 8 K73_TCIC
SG_ GPSLongitude : 39|32@0+ (1,-2147483648) [0|0] "milliarcsecond" NEO SG_ GPSLongitude : 39|32@0+ (1,-2147483648) [0|0] "milliarcsecond" NEO
SG_ GPSLatitude : 7|32@0+ (1,0) [0|0] "milliarcsecond" NEO SG_ GPSLatitude : 7|32@0+ (1,0) [0|0] "milliarcsecond" NEO
BO_ 840 EBCMWheelSpdFront: 4 K17_EBCM BO_ 840 EBCMWheelSpdFront: 5 K17_EBCM
SG_ FLWheelSpd : 7|16@0+ (0.0311,0) [0|255] "km/h" NEO SG_ FLWheelSpd : 7|16@0+ (0.0311,0) [0|255] "km/h" NEO
SG_ FRWheelSpd : 23|16@0+ (0.0311,0) [0|255] "km/h" NEO SG_ FRWheelSpd : 23|16@0+ (0.0311,0) [0|255] "km/h" NEO
BO_ 842 EBCMWheelSpdRear: 5 K17_EBCM BO_ 842 EBCMWheelSpdRear: 5 K17_EBCM
SG_ RLWheelSpd : 7|16@0+ (0.0311,0) [0|255] "km/h" NEO SG_ RLWheelSpd : 7|16@0+ (0.0311,0) [0|255] "km/h" NEO
SG_ RRWheelSpd : 23|16@0+ (0.0311,0) [0|255] "km/h" NEO SG_ RRWheelSpd : 23|16@0+ (0.0311,0) [0|255] "km/h" NEO
SG_ MovingForward : 32|1@0+ (1,0) [0|1] "" XXX
SG_ MovingBackward : 33|1@0+ (1,0) [0|1] "" XXX
SG_ MovingForward2 : 35|1@1+ (1,0) [0|1] "" XXX
SG_ MovingBackward2 : 36|1@0+ (1,0) [0|1] "" XXX
BO_ 869 ASCM_365: 4 K124_ASCM BO_ 869 ASCM_365: 4 K124_ASCM
BO_ 880 ASCMActiveCruiseControlStatus: 6 K124_ASCM BO_ 880 ASCMActiveCruiseControlStatus: 6 K124_ASCM
SG_ ACCCruiseState : 8|3@1+ (1,0) [0|7] "" XXX
SG_ ACCLeadCar : 44|1@0+ (1,0) [0|0] "" Vector__XXX SG_ ACCLeadCar : 44|1@0+ (1,0) [0|0] "" Vector__XXX
SG_ ACCAlwaysOne2 : 32|1@0+ (1,0) [0|0] "" Vector__XXX SG_ ACCAlwaysOne2 : 32|1@0+ (1,0) [0|0] "" Vector__XXX
SG_ ACCAlwaysOne : 0|1@0+ (1,0) [0|0] "" Vector__XXX SG_ ACCAlwaysOne : 0|1@0+ (1,0) [0|0] "" Vector__XXX
@@ -287,11 +302,15 @@ CM_ BU_ K114B_HPCM "Hybrid Powertrain Control Module";
CM_ BU_ NEO "Comma NEO"; CM_ BU_ NEO "Comma NEO";
CM_ BU_ K124_ASCM "Active Safety Control Module"; CM_ BU_ K124_ASCM "Active Safety Control Module";
CM_ SG_ 381 MSG17D_AccPower "Need to investigate"; CM_ SG_ 381 MSG17D_AccPower "Need to investigate";
CM_ BO_ 190 "Length varies from 6 to 8 bytes by car";
CM_ SG_ 190 GasPedalAndAcc "ACC baseline is 62"; CM_ SG_ 190 GasPedalAndAcc "ACC baseline is 62";
CM_ SG_ 352 Ignition "Non-zero when ignition is on"; CM_ SG_ 352 Ignition "Non-zero when ignition is on";
CM_ SG_ 451 GasPedalAndAcc2 "ACC baseline is 62"; CM_ SG_ 451 GasPedalAndAcc2 "ACC baseline is 62";
CM_ SG_ 481 ACCAlwaysOne "Usually 1 if the car is equipped with ACC";
CM_ SG_ 497 Ignition "Describes ignition + preconditioning mode, noisy"; CM_ SG_ 497 Ignition "Describes ignition + preconditioning mode, noisy";
CM_ SG_ 501 PRNDL2 "When ManualMode is Active, Value is 13=L1 12=L2 11=L3 ... 4=L10"; CM_ SG_ 501 PRNDL2 "When ManualMode is Active, Value is 13=L1 12=L2 11=L3 ... 4=L10";
CM_ SG_ 532 UserBrakePressure "can be lower than other brake position signals when the brakes are pre-filled from ACC braking and the user presses on the brakes. user-only pressure?";
CM_ SG_ 761 UserBrakePressure2 "Similar to BRAKE_RELATED->UserBrakePressure";
CM_ SG_ 1001 VehicleSpeed "Spinouts show here on 2wd. Speed derived from right front wheel (drive tire)"; CM_ SG_ 1001 VehicleSpeed "Spinouts show here on 2wd. Speed derived from right front wheel (drive tire)";
BA_DEF_ "UseGMParameterIDs" INT 0 0; BA_DEF_ "UseGMParameterIDs" INT 0 0;
BA_DEF_ "ProtocolType" STRING ; BA_DEF_ "ProtocolType" STRING ;
@@ -310,6 +329,7 @@ VAL_ 452 CruiseState 4 "Standstill" 3 "Faulted" 1 "Active" 0 "Off" ;
VAL_ 309 PRNDL 3 "R" 2 "D" 1 "N" 0 "P" ; VAL_ 309 PRNDL 3 "R" 2 "D" 1 "N" 0 "P" ;
VAL_ 309 ESPButton 1 "Active" 0 "Inactive" ; VAL_ 309 ESPButton 1 "Active" 0 "Inactive" ;
VAL_ 384 LKASteeringCmdActive 1 "Active" 0 "Inactive" ; VAL_ 384 LKASteeringCmdActive 1 "Active" 0 "Inactive" ;
VAL_ 880 ACCCruiseState 2 "Adaptive" 3 "Adaptive" 4 "Non-adaptive" 5 "Non-adaptive" ;
VAL_ 880 ACCLeadCar 1 "Present" 0 "Not Present" ; VAL_ 880 ACCLeadCar 1 "Present" 0 "Not Present" ;
VAL_ 880 ACCGapLevel 3 "Far" 2 "Med" 1 "Near" 0 "Inactive" ; VAL_ 880 ACCGapLevel 3 "Far" 2 "Med" 1 "Near" 0 "Inactive" ;
VAL_ 880 ACCResumeButton 1 "Pressed" 0 "Depressed" ; VAL_ 880 ACCResumeButton 1 "Pressed" 0 "Depressed" ;
@@ -448,6 +448,7 @@ BO_ 432 STANDSTILL: 7 VSA
BO_ 456 ACC_CONTROL: 8 XXX BO_ 456 ACC_CONTROL: 8 XXX
SG_ ACCEL_COMMAND : 7|12@0- (0.01,0) [0|0] "m/s^2" XXX SG_ ACCEL_COMMAND : 7|12@0- (0.01,0) [0|0] "m/s^2" XXX
SG_ CONTROL_OFF : 8|1@0+ (1,0) [0|1] "" XXX SG_ CONTROL_OFF : 8|1@0+ (1,0) [0|1] "" XXX
SG_ STANDSTILL : 9|1@0+ (1,0) [0|1] "" XXX
SG_ CONTROL_ON : 10|1@0+ (1,0) [0|1] "" XXX SG_ CONTROL_ON : 10|1@0+ (1,0) [0|1] "" XXX
SG_ BOH : 23|1@0+ (1,0) [0|1] "" XXX SG_ BOH : 23|1@0+ (1,0) [0|1] "" XXX
SG_ AEB_STATUS : 33|1@1+ (1,0) [0|7] "" XXX SG_ AEB_STATUS : 33|1@1+ (1,0) [0|7] "" XXX
@@ -495,9 +496,8 @@ BO_ 254913108 LKAS_HUD_2: 8 ADAS
SG_ COUNTER : 61|2@0+ (1,0) [0|3] "" XXX SG_ COUNTER : 61|2@0+ (1,0) [0|3] "" XXX
SG_ CHECKSUM : 59|4@0+ (1,0) [0|15] "" XXX SG_ CHECKSUM : 59|4@0+ (1,0) [0|15] "" XXX
CM_ BO 456 "not sure which bit enables cruise"; CM_ BO_ 456 "not sure which bit enables cruise";
CM_ SG_ 456 ACCEL_COMMAND "seems to be m/s^2? need to verify"; CM_ SG_ 456 STANDSTILL "set to 1 when camera requests -4.0 m/s^2";
CM_ SG_ 456 BOH "could be cruise standstill?";
VAL_ 401 GEAR_SHIFTER 32 "L" 16 "S" 8 "D" 4 "N" 2 "R" 1 "P"; VAL_ 401 GEAR_SHIFTER 32 "L" 16 "S" 8 "D" 4 "N" 2 "R" 1 "P";
VAL_ 401 GEAR 7 "L" 10 "S" 4 "D" 3 "N" 2 "R" 1 "P"; VAL_ 401 GEAR 7 "L" 10 "S" 4 "D" 3 "N" 2 "R" 1 "P";
+277 -47
View File
@@ -33,7 +33,7 @@ NS_ :
BS_: BS_:
BU_: XXX CAMERA BU_: XXX CAMERA FRONT_RADAR ADRV APRK
BO_ 53 ACCELERATOR: 32 XXX BO_ 53 ACCELERATOR: 32 XXX
@@ -42,6 +42,11 @@ BO_ 53 ACCELERATOR: 32 XXX
SG_ GEAR : 192|3@1+ (1,0) [0|7] "" XXX SG_ GEAR : 192|3@1+ (1,0) [0|7] "" XXX
SG_ ACCELERATOR_PEDAL : 40|8@1+ (1,0) [0|255] "" XXX SG_ ACCELERATOR_PEDAL : 40|8@1+ (1,0) [0|255] "" XXX
BO_ 64 GEAR_ALT: 32 XXX
SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX
SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX
SG_ GEAR : 32|3@1+ (1,0) [0|7] "" XXX
BO_ 69 GEAR: 24 XXX BO_ 69 GEAR: 24 XXX
SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX
SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX
@@ -62,15 +67,23 @@ BO_ 80 LKAS: 16 XXX
SG_ NEW_SIGNAL_2 : 70|2@0+ (1,0) [0|3] "" XXX SG_ NEW_SIGNAL_2 : 70|2@0+ (1,0) [0|3] "" XXX
SG_ SET_ME_1 : 80|1@0+ (1,0) [0|1] "" XXX SG_ SET_ME_1 : 80|1@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_3 : 111|8@0+ (1,0) [0|255] "" XXX SG_ NEW_SIGNAL_3 : 111|8@0+ (1,0) [0|255] "" XXX
SG_ FCA_SYSWARN : 40|1@0+ (1,0) [0|1] "" XXX
BO_ 81 ADRV_0x51: 32 ADRV
SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX
SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX
BO_ 96 ESP_STATUS: 32 XXX BO_ 96 ESP_STATUS: 32 XXX
SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX
SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX
SG_ ESP_DISABLED : 42|3@1+ (1,0) [0|63] "" XXX SG_ ESP_DISABLED : 42|3@1+ (1,0) [0|63] "" XXX
SG_ BRAKE_PRESSURE : 128|10@1+ (1,0) [0|65535] "" XXX
SG_ BRAKE_PRESSED : 148|1@1+ (1,0) [0|3] "" XXX
BO_ 101 BRAKE: 32 XXX BO_ 101 BRAKE: 32 XXX
SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX
SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX
SG_ BRAKE_POSITION : 40|16@1- (1,0) [0|65535] "" XXX
SG_ BRAKE_PRESSED : 57|1@1+ (1,0) [0|3] "" XXX SG_ BRAKE_PRESSED : 57|1@1+ (1,0) [0|3] "" XXX
BO_ 160 WHEEL_SPEEDS: 24 XXX BO_ 160 WHEEL_SPEEDS: 24 XXX
@@ -85,11 +98,18 @@ BO_ 234 MDPS: 24 XXX
SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX
SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX
SG_ LKA_ACTIVE : 48|1@0+ (1,0) [0|16777215] "" XXX SG_ LKA_ACTIVE : 48|1@0+ (1,0) [0|16777215] "" XXX
SG_ LKA_FAULT : 54|1@0+ (1,0) [0|1] "" XXX
SG_ STEERING_OUT_TORQUE : 64|12@1+ (0.1,-204.8) [0|65535] "" XXX SG_ STEERING_OUT_TORQUE : 64|12@1+ (0.1,-204.8) [0|65535] "" XXX
SG_ STEERING_COL_TORQUE : 80|13@1+ (1,-4095) [0|4095] "" XXX SG_ STEERING_COL_TORQUE : 80|13@1+ (1,-4095) [0|4095] "" XXX
SG_ STEERING_ANGLE : 96|16@1- (-0.1,0) [0|255] "deg" XXX SG_ STEERING_ANGLE : 96|16@1- (-0.1,0) [0|255] "deg" XXX
SG_ STEERING_ANGLE_2 : 128|16@1- (-0.1,0) [0|65535] "deg" XXX SG_ STEERING_ANGLE_2 : 128|16@1- (-0.1,0) [0|65535] "deg" XXX
BO_ 256 ACCELERATOR_BRAKE_ALT: 32 XXX
SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX
SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX
SG_ BRAKE_PRESSED : 32|1@1+ (1,0) [0|1] "" XXX
SG_ ACCELERATOR_PEDAL_PRESSED : 176|1@1+ (1,0) [0|1] "" XXX
BO_ 261 ACCELERATOR_ALT: 32 XXX BO_ 261 ACCELERATOR_ALT: 32 XXX
SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX
SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX
@@ -98,10 +118,10 @@ BO_ 261 ACCELERATOR_ALT: 32 XXX
BO_ 293 STEERING_SENSORS: 16 XXX BO_ 293 STEERING_SENSORS: 16 XXX
SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX
SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX
SG_ STEERING_RATE : 40|8@1- (-0.1,0) [0|255] "deg/s" XXX SG_ STEERING_RATE : 40|8@1+ (4,0) [0|1016] "deg/s" XXX
SG_ STEERING_ANGLE : 24|16@1- (-0.1,0) [0|255] "deg" XXX SG_ STEERING_ANGLE : 24|16@1- (-0.1,0) [0|255] "deg" XXX
BO_ 298 LFA: 16 XXX BO_ 298 LFA: 16 ADRV
SG_ STEER_REQ : 52|1@1+ (1,0) [0|1] "" XXX SG_ STEER_REQ : 52|1@1+ (1,0) [0|1] "" XXX
SG_ TORQUE_REQUEST : 41|11@1+ (1,-1024) [0|4095] "" XXX SG_ TORQUE_REQUEST : 41|11@1+ (1,-1024) [0|4095] "" XXX
SG_ LKA_ICON : 38|2@1+ (1,0) [0|255] "" XXX SG_ LKA_ICON : 38|2@1+ (1,0) [0|255] "" XXX
@@ -124,15 +144,45 @@ BO_ 304 GEAR_SHIFTER: 16 XXX
SG_ GEAR : 64|3@1+ (1,0) [0|7] "" XXX SG_ GEAR : 64|3@1+ (1,0) [0|7] "" XXX
SG_ KNOB_POSITION : 40|3@1+ (1,0) [0|3] "" XXX SG_ KNOB_POSITION : 40|3@1+ (1,0) [0|3] "" XXX
BO_ 373 SCC1: 24 XXX BO_ 357 SPAS1: 24 APRK
SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX
SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX SG_ COUNTER : 16|8@1+ (1,0) [0|0] "" XXX
SG_ ACCEL_REQ : 48|13@1- (1,0) [0|1023] "" XXX SG_ NEW_SIGNAL_1 : 96|16@1- (0.1,0) [0|0] "" XXX
SG_ CRUISE_ACTIVE : 68|1@0+ (1,0) [0|1] "" XXX SG_ NEW_SIGNAL_2 : 90|3@1+ (1,0) [0|0] "" XXX
BO_ 352 CAM_0x160: 16 CAMERA BO_ 362 SPAS2: 32 APRK
SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX
SG_ COUNTER : 16|8@1+ (1,0) [0|0] "" XXX
SG_ BLINKER_CONTROL : 133|3@1+ (1,0) [0|0] "" XXX
BO_ 373 TCS: 24 XXX
SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX
SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_1 : 80|1@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_2 : 74|1@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_3 : 76|1@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_4 : 24|7@1+ (1,0) [0|127] "" XXX
SG_ aBasis : 32|11@1+ (0.01,-10.23) [0|7] "m/s^2" XXX
SG_ NEW_SIGNAL_5 : 72|1@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_6 : 128|4@1+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_7 : 135|2@0+ (1,0) [0|3] "" XXX
SG_ PROBABLY_EQUIP : 136|2@1+ (1,0) [0|3] "" XXX
SG_ AEB_EQUIP_MAYBE : 96|1@0+ (1,0) [0|1] "" XXX
SG_ EQUIP_MAYBE : 64|1@0+ (1,0) [0|1] "" XXX
SG_ DriverBraking : 81|1@0+ (1,0) [0|1] "" XXX
SG_ DriverBrakingLowSens : 84|1@1+ (1,0) [0|1] "" XXX
SG_ ACC_REQ : 68|1@0+ (1,0) [0|1] "" XXX
SG_ ACCEL_REF_ACC : 48|11@1- (1,0) [0|1023] "" XXX
SG_ ACCEnable : 67|2@0+ (1,0) [0|3] "" XXX
BO_ 352 ADRV_0x160: 16 ADRV
SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX
SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX
SG_ SET_ME_FF : 64|8@1+ (1,0) [0|255] "" XXX
SG_ SET_ME_FC : 72|8@1+ (1,0) [0|255] "" XXX
SG_ SET_ME_2 : 56|8@1+ (1,0) [0|1] "" XXX
SG_ AEB_SETTING : 24|2@1+ (1,0) [0|255] "" XXX
SG_ SET_ME_9 : 80|8@1+ (1,0) [0|255] "" XXX
BO_ 384 CAM_0x180: 32 CAMERA BO_ 384 CAM_0x180: 32 CAMERA
SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX
@@ -158,49 +208,50 @@ BO_ 389 CAM_0x185: 8 CAMERA
SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX
SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX
BO_ 416 CRUISE_INFO: 32 XXX BO_ 416 SCC_CONTROL: 32 ADRV
SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX
SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX
SG_ BYTE3 : 24|8@1+ (1,0) [0|255] "" XXX
SG_ BYTE4 : 32|8@1+ (1,0) [0|255] "" XXX
SG_ BYTE5 : 40|8@1+ (1,0) [0|255] "" XXX
SG_ BYTE6 : 48|8@1+ (1,0) [0|255] "" XXX
SG_ BYTE7 : 56|8@1+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_1 : 64|2@1+ (1,0) [0|3] "" XXX SG_ NEW_SIGNAL_1 : 64|2@1+ (1,0) [0|3] "" XXX
SG_ CRUISE_MAIN : 66|1@1+ (1,0) [0|1] "" XXX SG_ NEW_SIGNAL_8 : 170|4@1+ (1,0) [0|15] "" XXX
SG_ CRUISE_STATUS : 67|3@1+ (1,0) [0|7] "" XXX SG_ NEW_SIGNAL_10 : 156|5@0+ (1,0) [0|3] "" XXX
SG_ CRUISE_INACTIVE : 70|1@1+ (1,0) [0|1] "" XXX SG_ ZEROS : 215|48@0+ (1,0) [0|281474976710655] "" XXX
SG_ NEW_SIGNAL_2 : 71|5@1+ (1,0) [0|15] "" XXX SG_ ZEROS_3 : 191|7@0+ (1,0) [0|127] "" XXX
SG_ ZEROS_4 : 183|4@0+ (1,0) [0|63] "" XXX
SG_ ZEROS_6 : 119|16@0+ (1,0) [0|65535] "" XXX
SG_ ZEROS_8 : 95|5@0+ (1,0) [0|31] "" XXX
SG_ NEW_SIGNAL_3 : 109|2@0+ (1,0) [0|1] "" XXX
SG_ SET_ME_TMP_64 : 55|8@0+ (1,0) [0|63] "" XXX
SG_ SET_ME_2 : 105|3@1+ (1,0) [0|7] "" XXX
SG_ NEW_SIGNAL_6 : 104|1@0+ (1,0) [0|1] "" XXX
SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX
SG_ ZEROS_9 : 71|5@1+ (1,0) [0|15] "" XXX
SG_ ZEROS_10 : 111|2@0+ (1,0) [0|3] "" XXX
SG_ SET_ME_3 : 45|2@0+ (1,0) [0|3] "" XXX
SG_ ObjValid : 46|1@0+ (1,0) [0|3] "" XXX
SG_ NEW_SIGNAL_2 : 168|2@1+ (1,0) [0|3] "" XXX
SG_ OBJ_STATUS : 176|3@1+ (1,0) [0|7] "" XXX
SG_ ACC_ObjDist : 24|11@1+ (0.1,0) [0|204.7] "m" XXX
SG_ ZEROS_5 : 77|11@1+ (1,0) [0|2047] "" XXX
SG_ DISTANCE_SETTING : 88|3@1+ (1,0) [0|3] "" XXX
SG_ ZEROS_2 : 207|5@0+ (1,0) [0|63] "" XXX
SG_ CRUISE_STANDSTILL : 76|1@1+ (1,0) [0|1] "" XXX SG_ CRUISE_STANDSTILL : 76|1@1+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_3 : 77|11@1+ (1,0) [0|2047] "" XXX SG_ aReqRaw : 140|11@1+ (0.01,-10.23) [-10.23|10.24] "m/s^2" XXX
SG_ BYTE11 : 88|8@1+ (1,0) [0|127] "" XXX SG_ aReqValue : 128|11@1+ (0.01,-10.23) [-10.23|10.24] "m/s^2" XXX
SG_ SET_SPEED : 102|7@0+ (1,0) [0|127] "km/h or mph" XXX SG_ ZEROS_7 : 63|8@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_4 : 103|1@1+ (1,0) [0|1] "" XXX SG_ NEW_SIGNAL_4 : 158|2@0+ (1,0) [0|3] "" XXX
SG_ BYTE13 : 104|8@1+ (1,0) [0|255] "" XXX SG_ ACCMode : 68|3@1+ (1,0) [0|7] "" XXX
SG_ BYTE14 : 112|8@1+ (1,0) [0|255] "" XXX SG_ NEW_SIGNAL_12 : 35|9@1+ (0.1,0) [0|255] "" XXX
SG_ BYTE15 : 120|8@1+ (1,0) [0|255] "" XXX SG_ JerkLowerLimit : 166|7@0+ (0.1,0) [0|12.7] "m/s^3" XXX
SG_ BYTE16 : 128|8@1+ (1,0) [0|255] "" XXX SG_ StopReq : 184|1@0+ (1,0) [0|1] "" XXX
SG_ BYTE17 : 136|8@1+ (1,0) [0|255] "" XXX SG_ NEW_SIGNAL_15 : 192|11@1+ (0.1,0) [0|204.7] "m" XXX
SG_ BYTE18 : 144|8@1+ (1,0) [0|255] "" XXX SG_ VSetDis : 103|8@0+ (1,0) [0|255] "km/h or mph" XXX
SG_ BYTE19 : 152|8@1+ (1,0) [0|255] "" XXX SG_ MainMode_ACC : 66|1@1+ (1,0) [0|1] "" XXX
SG_ BYTE20 : 160|8@1+ (1,0) [0|255] "" XXX
SG_ BYTE21 : 168|8@1+ (1,0) [0|255] "" XXX
SG_ BYTE22 : 176|8@1+ (1,0) [0|255] "" XXX
SG_ BYTE23 : 184|8@1+ (1,0) [0|255] "" XXX
SG_ BYTE24 : 192|8@1+ (1,0) [0|255] "" XXX
SG_ BYTE25 : 200|8@1+ (1,0) [0|255] "" XXX
SG_ BYTE26 : 208|8@1+ (1,0) [0|255] "" XXX
SG_ BYTE27 : 216|8@1+ (1,0) [0|255] "" XXX
SG_ BYTE28 : 224|8@1+ (1,0) [0|255] "" XXX
SG_ BYTE29 : 232|8@1+ (1,0) [0|255] "" XXX
SG_ BYTE30 : 240|8@1+ (1,0) [0|255] "" XXX
SG_ BYTE31 : 248|8@1+ (1,0) [0|255] "" XXX
BO_ 426 CRUISE_BUTTONS_ALT: 16 XXX BO_ 426 CRUISE_BUTTONS_ALT: 16 XXX
SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX
SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_1 : 24|4@1+ (1,0) [0|15] "" XXX SG_ NEW_SIGNAL_1 : 24|4@1+ (1,0) [0|15] "" XXX
SG_ SET_ME_1 : 28|3@1+ (1,0) [0|7] "" XXX SG_ SET_ME_1 : 28|2@1+ (1,0) [0|3] "" XXX
SG_ DISTANCE_UNIT : 30|1@1+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_2 : 31|3@1+ (1,0) [0|7] "" XXX SG_ NEW_SIGNAL_2 : 31|3@1+ (1,0) [0|7] "" XXX
SG_ ADAPTIVE_CRUISE_MAIN_BTN : 34|1@1+ (1,0) [0|1] "" XXX SG_ ADAPTIVE_CRUISE_MAIN_BTN : 34|1@1+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_3 : 35|1@1+ (1,0) [0|1] "" XXX SG_ NEW_SIGNAL_3 : 35|1@1+ (1,0) [0|1] "" XXX
@@ -247,16 +298,136 @@ BO_ 463 CRUISE_BUTTONS: 8 XXX
SG_ COUNTER : 12|4@1+ (1,0) [0|255] "" XXX SG_ COUNTER : 12|4@1+ (1,0) [0|255] "" XXX
SG_ CRUISE_BUTTONS : 16|3@1+ (1,0) [0|3] "" XXX SG_ CRUISE_BUTTONS : 16|3@1+ (1,0) [0|3] "" XXX
BO_ 480 LFAHDA_CLUSTER: 16 XXX BO_ 474 ADRV_0x1da: 32 ADRV
SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX
SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX
SG_ SET_ME_22 : 31|8@0+ (1,0) [0|255] "" XXX
SG_ SET_ME_41 : 47|8@0+ (1,0) [0|255] "" XXX
BO_ 480 LFAHDA_CLUSTER: 16 ADRV
SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX
SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX
SG_ HDA_ICON : 31|1@1+ (1,0) [0|1] "" XXX SG_ HDA_ICON : 31|1@1+ (1,0) [0|1] "" XXX
SG_ LFA_ICON : 47|2@1+ (1,0) [0|3] "" XXX SG_ LFA_ICON : 47|2@1+ (1,0) [0|3] "" XXX
SG_ NEW_SIGNAL_1 : 32|3@1+ (1,0) [0|7] "" XXX
SG_ NEW_SIGNAL_2 : 30|1@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_3 : 49|1@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_4 : 24|1@0+ (1,0) [0|1] "" XXX
BO_ 490 ADRV_0x1ea: 32 ADRV
SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX
SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX
SG_ SET_ME_1C : 31|8@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_1 : 32|2@1+ (1,0) [0|3] "" XXX
SG_ NEW_SIGNAL_2 : 47|2@0+ (1,0) [0|3] "" XXX
SG_ NEW_SIGNAL_3 : 55|8@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_4 : 64|6@1+ (1,0) [0|31] "" XXX
SG_ NEW_SIGNAL_5 : 72|2@1+ (1,0) [0|3] "" XXX
SG_ NEW_SIGNAL_6 : 75|5@1+ (1,0) [0|31] "" XXX
SG_ NEW_SIGNAL_7 : 80|5@1+ (1,0) [0|31] "" XXX
SG_ NEW_SIGNAL_8 : 88|7@1+ (1,0) [0|127] "" XXX
SG_ NEW_SIGNAL_9 : 96|1@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_10 : 143|5@0+ (1,0) [0|31] "" XXX
SG_ NEW_SIGNAL_11 : 144|3@1+ (1,0) [0|7] "" XXX
SG_ NEW_SIGNAL_12 : 152|6@1+ (1,0) [0|63] "" XXX
SG_ NEW_SIGNAL_13 : 160|1@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_14 : 163|5@1+ (1,0) [0|31] "" XXX
SG_ NEW_SIGNAL_15 : 175|4@0+ (1,0) [0|63] "" XXX
SG_ NEW_SIGNAL_16 : 168|3@1+ (1,0) [0|7] "" XXX
SG_ NEW_SIGNAL_17 : 176|2@1+ (1,0) [0|3] "" XXX
SG_ NEW_SIGNAL_18 : 184|1@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_19 : 208|3@1+ (1,0) [0|7] "" XXX
SG_ NEW_SIGNAL_20 : 212|1@0+ (1,0) [0|1] "" XXX
SG_ SET_ME_FF : 120|8@1+ (1,0) [0|255] "" XXX
SG_ SET_ME_TMP_F : 232|5@1+ (1,0) [0|31] "" XXX
SG_ SET_ME_TMP_F_2 : 240|5@1+ (1,0) [0|31] "" XXX
BO_ 507 CAM_0x1fb: 32 CAMERA BO_ 507 CAM_0x1fb: 32 CAMERA
SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX
SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX
BO_ 512 ADRV_0x200: 8 ADRV
SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX
SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX
SG_ SET_ME_E1 : 24|8@1+ (1,0) [0|255] "" XXX
SG_ SET_ME_3A : 32|8@1+ (1,0) [0|255] "" XXX
BO_ 513 RADAR_0x201: 32 FRONT_RADAR
SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX
SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX
BO_ 528 RADAR_0x210: 32 FRONT_RADAR
SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX
SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX
BO_ 529 RADAR_0x211: 32 FRONT_RADAR
SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX
SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX
BO_ 530 RADAR_0x212: 32 FRONT_RADAR
SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX
SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX
BO_ 531 RADAR_0x213: 32 FRONT_RADAR
SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX
SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX
BO_ 532 RADAR_0x214: 32 FRONT_RADAR
SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX
SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX
BO_ 533 RADAR_0x215: 32 FRONT_RADAR
SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX
SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX
BO_ 534 RADAR_0x216: 32 FRONT_RADAR
SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX
SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX
BO_ 535 RADAR_0x217: 32 FRONT_RADAR
SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX
SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX
BO_ 536 RADAR_0x218: 32 FRONT_RADAR
SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX
SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX
BO_ 537 RADAR_0x219: 32 FRONT_RADAR
SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX
SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX
BO_ 538 RADAR_0x21a: 32 FRONT_RADAR
SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX
SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX
BO_ 539 RADAR_0x21b: 32 FRONT_RADAR
SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX
SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX
BO_ 540 RADAR_0x21c: 32 FRONT_RADAR
SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX
SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX
BO_ 541 RADAR_0x21d: 32 FRONT_RADAR
SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX
SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX
BO_ 542 RADAR_0x21e: 32 FRONT_RADAR
SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX
SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX
BO_ 543 RADAR_0x21f: 32 FRONT_RADAR
SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX
SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX
BO_ 576 RADAR_0x240: 16 FRONT_RADAR
SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX
SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX
BO_ 593 RADAR_0x251: 16 FRONT_RADAR
SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX
SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX
BO_ 674 CAM_0x2a2: 32 CAMERA BO_ 674 CAM_0x2a2: 32 CAMERA
SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX
SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX
@@ -306,6 +477,11 @@ BO_ 702 CAM_0x2be: 32 CAMERA
SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX
SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX
BO_ 837 ADRV_0x345: 8 ADRV
SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX
SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX
SG_ SET_ME_15 : 24|8@1+ (1,0) [0|255] "" XXX
BO_ 961 BLINKER_STALKS: 8 XXX BO_ 961 BLINKER_STALKS: 8 XXX
SG_ COUNTER_ALT : 15|4@0+ (1,0) [0|15] "" XXX SG_ COUNTER_ALT : 15|4@0+ (1,0) [0|15] "" XXX
SG_ CHECKSUM_MAYBE : 7|8@0+ (1,0) [0|255] "" XXX SG_ CHECKSUM_MAYBE : 7|8@0+ (1,0) [0|255] "" XXX
@@ -329,19 +505,73 @@ BO_ 1043 BLINKERS: 8 XXX
BO_ 1240 CLUSTER_INFO: 8 XXX BO_ 1240 CLUSTER_INFO: 8 XXX
SG_ DISTANCE_UNIT : 0|1@1+ (1,0) [0|1] "" XXX SG_ DISTANCE_UNIT : 0|1@1+ (1,0) [0|1] "" XXX
BO_ 442 BLINDSPOTS_REAR_CORNERS: 24 XXX
SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX
SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX
SG_ NEW_SIGNAL_2 : 96|1@0+ (1,0) [0|1] "" XXX
SG_ COLLISION_AVOIDANCE_ACTIVE : 68|1@0+ (1,0) [0|1] "" XXX
SG_ LEFT_MB : 30|1@0+ (1,0) [0|3] "" XXX
SG_ LEFT_BLOCKED : 24|1@0+ (1,0) [0|1] "" XXX
SG_ MORE_LEFT_PROB : 32|1@1+ (1,0) [0|3] "" XXX
SG_ FL_INDICATOR : 46|6@0+ (1,0) [0|1] "" XXX
SG_ FR_INDICATOR : 54|6@0+ (1,0) [0|63] "" XXX
SG_ RIGHT_BLOCKED : 64|1@0+ (1,0) [0|1] "" XXX
BO_ 874 BLINDSPOTS_FRONT_CORNER_2: 16 XXX
SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX
SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX
BO_ 485 BLINDSPOTS_FRONT_CORNER_1: 16 XXX
SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX
SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX
SG_ NEW_SIGNAL_1 : 108|2@0+ (1,0) [0|3] "" XXX
SG_ NEW_SIGNAL_2 : 96|1@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_3 : 88|1@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_4 : 80|1@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_5 : 31|2@0+ (1,0) [0|3] "" XXX
SG_ NEW_SIGNAL_6 : 24|1@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_7 : 32|2@1+ (1,0) [0|3] "" XXX
SG_ NEW_SIGNAL_8 : 47|8@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_9 : 55|8@0+ (1,0) [0|255] "" XXX
BO_ 506 CLUSTER_SPEED_LIMIT: 32 XXX
SG_ SPEED_LIMIT_3 : 119|8@0+ (1,0) [0|255] "" XXX
SG_ SPEED_LIMIT_2 : 47|7@0+ (1,0) [0|255] "" XXX
SG_ SPEED_LIMIT_1 : 39|7@0+ (1,0) [0|255] "" XXX
SG_ SPEED_CHANGE_BLINKING : 129|1@1+ (1,0) [0|3] "" XXX
SG_ CHIME_2 : 122|2@1+ (1,0) [0|7] "" XXX
SG_ CHIME_1 : 133|1@0+ (1,0) [0|1] "" XXX
SG_ ARROW_DOWN : 120|1@0+ (1,0) [0|1] "" XXX
SG_ ARROW_UP : 121|1@0+ (1,0) [0|1] "" XXX
SG_ SECONDARY_LIMIT_1 : 79|8@0+ (1,0) [0|127] "" XXX
SG_ SECONDARY_LIMIT_2 : 103|8@0+ (1,0) [0|127] "" XXX
SG_ SCHOOL_ZONE : 155|1@0+ (1,0) [0|1] "" XXX
CM_ SG_ 96 BRAKE_PRESSURE "User applied brake pedal pressure. Ramps from computer applied pressure on falling edge of cruise. Cruise cancels if !=0";
CM_ SG_ 101 BRAKE_POSITION "User applied brake pedal position, max is ~700. Signed on some vehicles";
CM_ SG_ 373 PROBABLY_EQUIP "aeb equip?";
CM_ SG_ 373 ACCEnable "Likely a copy of CAN's TCS13->ACCEnable";
CM_ SG_ 373 DriverBraking "Likely derived from BRAKE->BRAKE_POSITION";
CM_ SG_ 373 DriverBrakingLowSens "Higher threshold version of DriverBraking";
CM_ SG_ 352 SET_ME_9 "has something to do with AEB settings";
CM_ SG_ 416 VSetDis "set speed in display units";
CM_ SG_ 961 COUNTER_ALT "only increments on change"; CM_ SG_ 961 COUNTER_ALT "only increments on change";
CM_ SG_ 1041 COUNTER_ALT "only increments on change"; CM_ SG_ 1041 COUNTER_ALT "only increments on change";
CM_ SG_ 1043 COUNTER_ALT "only increments on change"; CM_ SG_ 1043 COUNTER_ALT "only increments on change";
VAL_ 53 GEAR 0 "P" 5 "D" 6 "N" 7 "R" ; VAL_ 53 GEAR 0 "P" 5 "D" 6 "N" 7 "R" ;
VAL_ 64 GEAR 0 "P" 5 "D" 6 "N" 7 "R" ;
VAL_ 69 GEAR 0 "P" 5 "D" 6 "N" 7 "R" ; VAL_ 69 GEAR 0 "P" 5 "D" 6 "N" 7 "R" ;
VAL_ 304 GEAR 1 "P" 2 "R" 3 "N" 4 "D";
VAL_ 80 LKA_ICON 0 "hidden" 1 "grey" 2 "green" 3 "flashing green" ; VAL_ 80 LKA_ICON 0 "hidden" 1 "grey" 2 "green" 3 "flashing green" ;
VAL_ 80 LKA_MODE 1 "warning only" 2 "assist" 6 "off" ; VAL_ 80 LKA_MODE 1 "warning only" 2 "assist" 6 "off" ;
VAL_ 234 LKA_FAULT 0 "ok" 1 "lka fault" ;
VAL_ 298 LKA_ICON 0 "hidden" 1 "grey" 2 "green" 3 "flashing green" ; VAL_ 298 LKA_ICON 0 "hidden" 1 "grey" 2 "green" 3 "flashing green" ;
VAL_ 298 LKA_MODE 1 "warning only" 2 "assist" 6 "off" ; VAL_ 298 LKA_MODE 1 "warning only" 2 "assist" 6 "off" ;
VAL_ 416 CRUISE_STATUS 0 "cruise_inactive" 2 "cruise_active" 4 "driver_override" ; VAL_ 304 GEAR 1 "P" 2 "R" 3 "N" 4 "D" ;
VAL_ 352 AEB_SETTING 1 "off" 2 "warning only" 3 "active assist" ;
VAL_ 362 BLINKER_CONTROL 1 "hazards" 2 "hazards button backlight" 3 "left blinkers" 4 "right blinkers";
VAL_ 373 ACCEnable 0 "SCC ready" 1 "SCC temp fault" 2 "SCC permanent fault" 3 "SCC permanent fault, communication issue";
VAL_ 416 ACCMode 0 "off" 1 "enabled" 2 "driver_override" 3 "off_maybe_fault" 4 "cancelled" ;
VAL_ 426 CRUISE_BUTTONS 0 "none" 1 "res_accel" 2 "set_decel" 3 "gap_distance" 4 "pause_resume" ; VAL_ 426 CRUISE_BUTTONS 0 "none" 1 "res_accel" 2 "set_decel" 3 "gap_distance" 4 "pause_resume" ;
VAL_ 463 CRUISE_BUTTONS 0 "none" 1 "res_accel" 2 "set_decel" 3 "gap_distance" 4 "pause_resume" ; VAL_ 463 CRUISE_BUTTONS 0 "none" 1 "res_accel" 2 "set_decel" 3 "gap_distance" 4 "pause_resume" ;
+4 -4
View File
@@ -1440,11 +1440,10 @@ BO_ 909 FCA11: 8 FCA
SG_ FCA_DrvSetStatus : 22|3@1+ (1,0) [0|7] "" CLU,ESC SG_ FCA_DrvSetStatus : 22|3@1+ (1,0) [0|7] "" CLU,ESC
SG_ CF_VSM_DecCmdAct : 31|1@1+ (1,0) [0|1] "" ESC SG_ CF_VSM_DecCmdAct : 31|1@1+ (1,0) [0|1] "" ESC
SG_ FCA_Failinfo : 32|3@1+ (1,0) [0|7] "" ACU,CLU,ESC SG_ FCA_Failinfo : 32|3@1+ (1,0) [0|7] "" ACU,CLU,ESC
SG_ CR_FCA_Alive : 35|4@1+ (1,0) [0|15] "" ESC
SG_ FCA_RelativeVelocity : 39|9@1+ (0.1,-25.5) [-25.5|25.5] "m/s" iBAU SG_ FCA_RelativeVelocity : 39|9@1+ (0.1,-25.5) [-25.5|25.5] "m/s" iBAU
SG_ FCA_TimetoCollision : 48|8@1+ (10,0) [0|2540] "ms" iBAU SG_ FCA_TimetoCollision : 48|8@1+ (10,0) [0|2540] "ms" iBAU
SG_ CR_FCA_Alive : 56|4@1+ (1,0) [0|15] "" ESC SG_ CR_FCA_ChkSum : 56|8@1+ (1,0) [0|255] "" ESC
SG_ CR_FCA_ChkSum : 60|4@1+ (1,0) [0|15] "" ESC
SG_ Supplemental_Counter : 35|4@1+ (1,0) [0|15] "" XXX
SG_ PAINT1_Status : 16|2@1+ (1,0) [0|1] "" XXX SG_ PAINT1_Status : 16|2@1+ (1,0) [0|1] "" XXX
BO_ 1156 HDA11_MFC: 8 XXX BO_ 1156 HDA11_MFC: 8 XXX
@@ -1645,10 +1644,11 @@ CM_ "BO_ E_EMS11: All (plug-in) hybrids use this gas signal: CR_Vcu_AccPedDep_Po
CM_ SG_ 1348 SpeedLim_Nav_Clu "Speed limit displayed on Nav, Cluster and HUD"; CM_ SG_ 1348 SpeedLim_Nav_Clu "Speed limit displayed on Nav, Cluster and HUD";
VAL_ 274 CUR_GR 1 "D" 2 "D" 3 "D" 4 "D" 5 "D" 6 "D" 7 "D" 8 "D" 14 "R" 0 "P"; VAL_ 274 CUR_GR 1 "D" 2 "D" 3 "D" 4 "D" 5 "D" 6 "D" 7 "D" 8 "D" 14 "R" 0 "P";
VAL_ 871 CF_Lvr_Gear 5 "D" 8 "S" 6 "N" 7 "R" 0 "P"; VAL_ 871 CF_Lvr_Gear 12 "T" 5 "D" 8 "S" 6 "N" 7 "R" 0 "P";
VAL_ 882 Elect_Gear_Shifter 5 "D" 8 "S" 6 "N" 7 "R" 0 "P"; VAL_ 882 Elect_Gear_Shifter 5 "D" 8 "S" 6 "N" 7 "R" 0 "P";
VAL_ 905 ACCMode 0 "off" 1 "enabled" 2 "driver_override" 3 "off_maybe_fault" 4 "cancelled"; VAL_ 905 ACCMode 0 "off" 1 "enabled" 2 "driver_override" 3 "off_maybe_fault" 4 "cancelled";
VAL_ 909 CF_VSM_Warn 2 "FCW" 3 "AEB"; VAL_ 909 CF_VSM_Warn 2 "FCW" 3 "AEB";
VAL_ 916 ACCEnable 0 "SCC ready" 1 "SCC temp fault" 2 "SCC permanent fault" 3 "SCC permanent fault, communication issue";
VAL_ 1057 ACCMode 0 "off" 1 "enabled" 2 "driver_override" 3 "off_maybe_fault"; VAL_ 1057 ACCMode 0 "off" 1 "enabled" 2 "driver_override" 3 "off_maybe_fault";
VAL_ 1157 HDA_Icon_State 0 "no_hda" 1 "white_hda" 2 "green_hda"; VAL_ 1157 HDA_Icon_State 0 "no_hda" 1 "white_hda" 2 "green_hda";
VAL_ 1157 LFA_SysWarning 0 "no_message" 1 "switching_to_hda" 2 "switching_to_scc" 3 "lfa_error" 4 "check_hda" 5 "keep_hands_on_wheel_orange" 6 "keep_hands_on_wheel_red"; VAL_ 1157 LFA_SysWarning 0 "no_message" 1 "switching_to_hda" 2 "switching_to_scc" 3 "lfa_error" 4 "check_hda" 5 "keep_hands_on_wheel_orange" 6 "keep_hands_on_wheel_red";
@@ -0,0 +1,374 @@
CM_ "AUTOGENERATED FILE, DO NOT EDIT";
CM_ "hyundai_kia_mando_corner_radar.dbc starts here";
VERSION ""
NS_ :
NS_DESC_
CM_
BA_DEF_
BA_
VAL_
CAT_DEF_
CAT_
FILTER
BA_DEF_DEF_
EV_DATA_
ENVVAR_DATA_
SGTYPE_
SGTYPE_VAL_
BA_DEF_SGTYPE_
BA_SGTYPE_
SIG_TYPE_REF_
VAL_TABLE_
SIG_GROUP_
SIG_VALTYPE_
SIGTYPE_VALTYPE_
BO_TX_BU_
BA_DEF_REL_
BA_REL_
BA_DEF_DEF_REL_
BU_SG_REL_
BU_EV_REL_
BU_BO_REL_
SG_MUL_VAL_
BS_:
BU_: XXX
BO_ 256 RADAR_POINTS_METADATA_0x100: 64 RADAR
SG_ SIGNAL_1 : 0|32@1+ (1,0) [0|255] "" XXX
SG_ SIGNAL_2 : 32|32@1+ (1,0) [0|65535] "" XXX
SG_ SIGNAL_3 : 64|4@1+ (1,0) [0|15] "" XXX
SG_ SIGNAL_4 : 68|4@1+ (1,0) [0|15] "" XXX
SG_ RADAR_POINT_COUNT : 72|8@1+ (1,0) [0|255] "" XXX
SG_ SIGNAL_6 : 80|7@1+ (0.015625,0) [0|3] "" XXX
SG_ SIGNAL_7 : 87|1@1+ (1,0) [0|1] "" XXX
SG_ SIGNAL_8 : 88|3@1+ (1,0) [0|7] "" XXX
SG_ SIGNAL_9 : 91|5@1+ (0.0625,0) [0|31] "" XXX
SG_ SIGNAL_10 : 96|8@1+ (1,0) [0|255] "" XXX
SG_ SIGNAL_11 : 104|7@1+ (0.015625,0) [0|127] "" XXX
SG_ SIGNAL_12 : 111|2@1+ (1,0) [0|65535] "" XXX
SG_ SIGNAL_13 : 113|7@1+ (0.015625,0) [0|127] "" XXX
SG_ SIGNAL_14 : 120|7@1+ (0.015625,0) [0|127] "" XXX
SG_ SIGNAL_15 : 127|3@1+ (1,0) [0|3] "" XXX
SG_ SIGNAL_16 : 130|2@1+ (1,0) [0|3] "" XXX
SG_ SIGNAL_17 : 133|2@0+ (1,0) [0|3] "" XXX
SG_ SIGNAL_18 : 134|1@0+ (1,0) [0|3] "" XXX
SG_ SIGNAL_19 : 135|3@1+ (1,0) [0|3] "" XXX
SG_ SIGNAL_20 : 138|8@1+ (1,0) [0|63] "" XXX
SG_ SIGNAL_21 : 146|2@1+ (1,0) [0|3] "" XXX
SG_ SIGNAL_22 : 148|1@1+ (1,0) [0|3] "" XXX
SG_ SIGNAL_23 : 149|4@1+ (1,0) [0|7] "" XXX
SG_ SIGNAL_24 : 153|1@1+ (1,0) [0|3] "" XXX
SG_ SIGNAL_25 : 154|2@1+ (1,0) [0|3] "" XXX
SG_ SIGNAL_26 : 157|2@0+ (1,0) [0|3] "" XXX
SG_ SIGNAL_27 : 158|7@1+ (0.125,0) [0|3] "" XXX
SG_ SIGNAL_28 : 165|7@1+ (0.015625,0) [0|31] "" XXX
SG_ SIGNAL_29 : 172|7@1+ (0.125,0) [0|3] "" XXX
SG_ SIGNAL_30 : 179|7@1+ (0.015625,0) [0|1] "" XXX
SG_ SIGNAL_31 : 186|4@1+ (1,0) [0|7] "" XXX
SG_ SIGNAL_32 : 190|14@1+ (0.015625,0) [0|15] "" XXX
SG_ SIGNAL_33 : 204|11@1+ (0.03125,0) [0|8191] "" XXX
SG_ SIGNAL_34 : 215|2@1+ (1,0) [0|3] "" XXX
SG_ SIGNAL_35 : 217|7@1+ (1,0) [0|127] "" XXX
SG_ SIGNAL_36 : 224|6@1+ (1,0) [0|63] "" XXX
SG_ SIGNAL_37 : 230|6@1+ (0.2,0) [0|31] "" XXX
SG_ SIGNAL_38 : 236|6@1+ (0.2,0) [0|7] "" XXX
SG_ SIGNAL_39 : 242|8@1+ (1,-90) [0|255] "" XXX
SG_ SIGNAL_40 : 250|6@1+ (1,0) [0|63] "" XXX
SG_ SIGNAL_41 : 256|8@1+ (0.25,0) [0|255] "" XXX
SG_ SIGNAL_42 : 264|3@1+ (1,0) [0|3] "" XXX
SG_ SIGNAL_43 : 267|12@1+ (0.01,0) [0|31] "" XXX
SG_ SIGNAL_44 : 279|32@1+ (1,0) [0|63] "" XXX
SG_ SIGNAL_45 : 311|1@1+ (1,0) [0|1] "" XXX
SG_ SIGNAL_46 : 312|2@1+ (1,0) [0|3] "" XXX
SG_ SIGNAL_47 : 314|32@1+ (1,0) [0|255] "" XXX
SG_ SIGNAL_48 : 346|6@1+ (1,0) [0|63] "" XXX
SG_ SIGNAL_49 : 352|7@1+ (0.25,0) [0|127] "" XXX
SG_ SIGNAL_50 : 359|6@1+ (0.03125,0) [0|31] "" XXX
SG_ SIGNAL_51 : 365|10@1+ (0.125,0) [0|3] "" XXX
SG_ SIGNAL_52 : 375|10@1+ (0.125,0) [0|63] "" XXX
SG_ SIGNAL_53 : 385|7@1+ (1,0) [0|127] "" XXX
SG_ SIGNAL_54 : 392|7@1+ (1,0) [0|127] "" XXX
SG_ SIGNAL_55 : 399|8@1+ (0.00390625,0) [0|31] "" XXX
SG_ SIGNAL_56 : 407|10@1+ (0.125,0) [0|63] "" XXX
SG_ SIGNAL_57 : 417|1@1+ (1,0) [0|3] "" XXX
SG_ SIGNAL_58 : 418|1@1+ (1,0) [0|3] "" XXX
BO_ 512 RADAR_POINTS_METADATA_0x200: 64 RADAR
SG_ SIGNAL_1 : 0|32@1+ (1,0) [0|255] "" XXX
SG_ SIGNAL_2 : 32|32@1+ (1,0) [0|65535] "" XXX
SG_ SIGNAL_3 : 64|4@1+ (1,0) [0|15] "" XXX
SG_ SIGNAL_4 : 68|4@1+ (1,0) [0|15] "" XXX
SG_ RADAR_POINT_COUNT : 72|8@1+ (1,0) [0|255] "" XXX
SG_ SIGNAL_6 : 80|7@1+ (0.015625,0) [0|3] "" XXX
SG_ SIGNAL_7 : 87|1@1+ (1,0) [0|1] "" XXX
SG_ SIGNAL_8 : 88|3@1+ (1,0) [0|7] "" XXX
SG_ SIGNAL_9 : 91|5@1+ (0.0625,0) [0|31] "" XXX
SG_ SIGNAL_10 : 96|8@1+ (1,0) [0|255] "" XXX
SG_ SIGNAL_11 : 104|7@1+ (0.015625,0) [0|127] "" XXX
SG_ SIGNAL_12 : 111|2@1+ (1,0) [0|65535] "" XXX
SG_ SIGNAL_13 : 113|7@1+ (0.015625,0) [0|127] "" XXX
SG_ SIGNAL_14 : 120|7@1+ (0.015625,0) [0|127] "" XXX
SG_ SIGNAL_15 : 127|3@1+ (1,0) [0|3] "" XXX
SG_ SIGNAL_16 : 130|2@1+ (1,0) [0|3] "" XXX
SG_ SIGNAL_17 : 133|2@0+ (1,0) [0|3] "" XXX
SG_ SIGNAL_18 : 134|1@0+ (1,0) [0|3] "" XXX
SG_ SIGNAL_19 : 135|3@1+ (1,0) [0|3] "" XXX
SG_ SIGNAL_20 : 138|8@1+ (1,0) [0|63] "" XXX
SG_ SIGNAL_21 : 146|2@1+ (1,0) [0|3] "" XXX
SG_ SIGNAL_22 : 148|1@1+ (1,0) [0|3] "" XXX
SG_ SIGNAL_23 : 149|4@1+ (1,0) [0|7] "" XXX
SG_ SIGNAL_24 : 153|1@1+ (1,0) [0|3] "" XXX
SG_ SIGNAL_25 : 154|2@1+ (1,0) [0|3] "" XXX
SG_ SIGNAL_26 : 157|2@0+ (1,0) [0|3] "" XXX
SG_ SIGNAL_27 : 158|7@1+ (0.125,0) [0|3] "" XXX
SG_ SIGNAL_28 : 165|7@1+ (0.015625,0) [0|31] "" XXX
SG_ SIGNAL_29 : 172|7@1+ (0.125,0) [0|3] "" XXX
SG_ SIGNAL_30 : 179|7@1+ (0.015625,0) [0|1] "" XXX
SG_ SIGNAL_31 : 186|4@1+ (1,0) [0|7] "" XXX
SG_ SIGNAL_32 : 190|14@1+ (0.015625,0) [0|15] "" XXX
SG_ SIGNAL_33 : 204|11@1+ (0.03125,0) [0|8191] "" XXX
SG_ SIGNAL_34 : 215|2@1+ (1,0) [0|3] "" XXX
SG_ SIGNAL_35 : 217|7@1+ (1,0) [0|127] "" XXX
SG_ SIGNAL_36 : 224|6@1+ (1,0) [0|63] "" XXX
SG_ SIGNAL_37 : 230|6@1+ (0.2,0) [0|31] "" XXX
SG_ SIGNAL_38 : 236|6@1+ (0.2,0) [0|7] "" XXX
SG_ SIGNAL_39 : 242|8@1+ (1,-90) [0|255] "" XXX
SG_ SIGNAL_40 : 250|6@1+ (1,0) [0|63] "" XXX
SG_ SIGNAL_41 : 256|8@1+ (0.25,0) [0|255] "" XXX
SG_ SIGNAL_42 : 264|3@1+ (1,0) [0|3] "" XXX
SG_ SIGNAL_43 : 267|12@1+ (0.01,0) [0|31] "" XXX
SG_ SIGNAL_44 : 279|32@1+ (1,0) [0|63] "" XXX
SG_ SIGNAL_45 : 311|1@1+ (1,0) [0|1] "" XXX
SG_ SIGNAL_46 : 312|2@1+ (1,0) [0|3] "" XXX
SG_ SIGNAL_47 : 314|32@1+ (1,0) [0|255] "" XXX
SG_ SIGNAL_48 : 346|6@1+ (1,0) [0|63] "" XXX
SG_ SIGNAL_49 : 352|7@1+ (0.25,0) [0|127] "" XXX
SG_ SIGNAL_50 : 359|6@1+ (0.03125,0) [0|31] "" XXX
SG_ SIGNAL_51 : 365|10@1+ (0.125,0) [0|3] "" XXX
SG_ SIGNAL_52 : 375|10@1+ (0.125,0) [0|63] "" XXX
SG_ SIGNAL_53 : 385|7@1+ (1,0) [0|127] "" XXX
SG_ SIGNAL_54 : 392|7@1+ (1,0) [0|127] "" XXX
SG_ SIGNAL_55 : 399|8@1+ (0.00390625,0) [0|31] "" XXX
SG_ SIGNAL_56 : 407|10@1+ (0.125,0) [0|63] "" XXX
SG_ SIGNAL_57 : 417|1@1+ (1,0) [0|3] "" XXX
SG_ SIGNAL_58 : 418|1@1+ (1,0) [0|3] "" XXX
BO_ 257 RADAR_POINTS_0x101: 64 RADAR
SG_ MESSAGE_ID : 0|5@1+ (1,0) [0|31] "" XXX
SG_ LAYOUT_ID : 5|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_1_DISTANCE : 7|14@1+ (0.015625,0) [0|255.984375] "" XXX
SG_ POINT_1_SIGNAL_2 : 21|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_1_SIGNAL_3 : 23|8@1+ (0.001953125,-0.248046875) [-0.248046875|0.25] "" XXX
SG_ POINT_1_REL_VELOCITY : 31|13@1+ (0.03125,-66) [-66|189.96875] "" XXX
SG_ POINT_1_SIGNAL_5 : 44|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_1_SIGNAL_6 : 46|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_1_AZIMUTH : 48|12@1+ (0.001953125,-3.998046875) [-3.998046875|4.0] "" XXX
SG_ POINT_1_SIGNAL_8 : 60|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_1_SIGNAL_9 : 62|1@1+ (1,0) [0|1] "" XXX
SG_ POINT_1_SIGNAL_10 : 63|7@1+ (1,0) [0|127] "" XXX
SG_ POINT_1_SIGNAL_11 : 70|1@1+ (1,0) [0|1] "" XXX
SG_ POINT_1_SIGNAL_12 : 71|6@1+ (1,0) [0|63] "" XXX
SG_ POINT_1_SIGNAL_13 : 77|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_1_SIGNAL_14 : 79|8@1+ (0.001953125,-0.248046875) [-0.248046875|0.25] "" XXX
SG_ POINT_1_SIGNAL_15 : 87|1@1+ (1,0) [0|1] "" XXX
SG_ POINT_1_SIGNAL_16 : 88|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_1_SIGNAL_17 : 90|3@1+ (1,0) [0|7] "" XXX
SG_ POINT_1_SIGNAL_18 : 93|6@1+ (1,0) [0|63] "" XXX
SG_ POINT_1_SIGNAL_19 : 99|8@1+ (1,0) [0|255] "" XXX
SG_ POINT_1_SIGNAL_20 : 107|1@1+ (1,0) [0|1] "" XXX
SG_ POINT_2_DISTANCE : 108|14@1+ (0.015625,0) [0|255.984375] "" XXX
SG_ POINT_2_SIGNAL_2 : 122|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_2_SIGNAL_3 : 124|8@1+ (0.001953125,-0.248046875) [-0.248046875|0.25] "" XXX
SG_ POINT_2_REL_VELOCITY : 132|13@1+ (0.03125,-66) [-66|189.96875] "" XXX
SG_ POINT_2_SIGNAL_5 : 145|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_2_SIGNAL_6 : 147|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_2_AZIMUTH : 149|12@1+ (0.001953125,-3.998046875) [-3.998046875|4.0] "" XXX
SG_ POINT_2_SIGNAL_8 : 161|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_2_SIGNAL_9 : 163|1@1+ (1,0) [0|1] "" XXX
SG_ POINT_2_SIGNAL_10 : 164|7@1+ (1,0) [0|127] "" XXX
SG_ POINT_2_SIGNAL_11 : 171|1@1+ (1,0) [0|1] "" XXX
SG_ POINT_2_SIGNAL_12 : 172|6@1+ (1,0) [0|63] "" XXX
SG_ POINT_2_SIGNAL_13 : 178|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_2_SIGNAL_14 : 180|8@1+ (0.001953125,-0.248046875) [-0.248046875|0.25] "" XXX
SG_ POINT_2_SIGNAL_15 : 188|1@1+ (1,0) [0|1] "" XXX
SG_ POINT_2_SIGNAL_16 : 189|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_2_SIGNAL_17 : 191|3@1+ (1,0) [0|7] "" XXX
SG_ POINT_2_SIGNAL_18 : 194|6@1+ (1,0) [0|63] "" XXX
SG_ POINT_2_SIGNAL_19 : 200|8@1+ (1,0) [0|255] "" XXX
SG_ POINT_2_SIGNAL_20 : 208|1@1+ (1,0) [0|1] "" XXX
SG_ POINT_3_DISTANCE : 209|14@1+ (0.015625,0) [0|255.984375] "" XXX
SG_ POINT_3_SIGNAL_2 : 223|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_3_SIGNAL_3 : 225|8@1+ (0.001953125,-0.248046875) [-0.248046875|0.25] "" XXX
SG_ POINT_3_REL_VELOCITY : 233|13@1+ (0.03125,-66) [-66|189.96875] "" XXX
SG_ POINT_3_SIGNAL_5 : 246|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_3_SIGNAL_6 : 248|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_3_AZIMUTH : 250|12@1+ (0.001953125,-3.998046875) [-3.998046875|4.0] "" XXX
SG_ POINT_3_SIGNAL_8 : 262|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_3_SIGNAL_9 : 264|1@1+ (1,0) [0|1] "" XXX
SG_ POINT_3_SIGNAL_10 : 265|7@1+ (1,0) [0|127] "" XXX
SG_ POINT_3_SIGNAL_11 : 272|1@1+ (1,0) [0|1] "" XXX
SG_ POINT_3_SIGNAL_12 : 273|6@1+ (1,0) [0|63] "" XXX
SG_ POINT_3_SIGNAL_13 : 279|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_3_SIGNAL_14 : 281|8@1+ (0.001953125,-0.248046875) [-0.248046875|0.25] "" XXX
SG_ POINT_3_SIGNAL_15 : 289|1@1+ (1,0) [0|1] "" XXX
SG_ POINT_3_SIGNAL_16 : 290|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_3_SIGNAL_17 : 292|3@1+ (1,0) [0|7] "" XXX
SG_ POINT_3_SIGNAL_18 : 295|6@1+ (1,0) [0|63] "" XXX
SG_ POINT_3_SIGNAL_19 : 301|8@1+ (1,0) [0|255] "" XXX
SG_ POINT_3_SIGNAL_20 : 309|1@1+ (1,0) [0|1] "" XXX
SG_ POINT_4_DISTANCE : 310|14@1+ (0.015625,0) [0|255.984375] "" XXX
SG_ POINT_4_SIGNAL_2 : 324|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_4_SIGNAL_3 : 326|8@1+ (0.001953125,-0.248046875) [-0.248046875|0.25] "" XXX
SG_ POINT_4_REL_VELOCITY : 334|13@1+ (0.03125,-66) [-66|189.96875] "" XXX
SG_ POINT_4_SIGNAL_5 : 347|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_4_SIGNAL_6 : 349|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_4_AZIMUTH : 351|12@1+ (0.001953125,-3.998046875) [-3.998046875|4.0] "" XXX
SG_ POINT_4_SIGNAL_8 : 363|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_4_SIGNAL_9 : 365|1@1+ (1,0) [0|1] "" XXX
SG_ POINT_4_SIGNAL_10 : 366|7@1+ (1,0) [0|127] "" XXX
SG_ POINT_4_SIGNAL_11 : 373|1@1+ (1,0) [0|1] "" XXX
SG_ POINT_4_SIGNAL_12 : 374|6@1+ (1,0) [0|63] "" XXX
SG_ POINT_4_SIGNAL_13 : 380|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_4_SIGNAL_14 : 382|8@1+ (0.001953125,-0.248046875) [-0.248046875|0.25] "" XXX
SG_ POINT_4_SIGNAL_15 : 390|1@1+ (1,0) [0|1] "" XXX
SG_ POINT_4_SIGNAL_16 : 391|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_4_SIGNAL_17 : 393|3@1+ (1,0) [0|7] "" XXX
SG_ POINT_4_SIGNAL_18 : 396|6@1+ (1,0) [0|63] "" XXX
SG_ POINT_4_SIGNAL_19 : 402|8@1+ (1,0) [0|255] "" XXX
SG_ POINT_4_SIGNAL_20 : 410|1@1+ (1,0) [0|1] "" XXX
SG_ POINT_5_DISTANCE : 411|14@1+ (0.015625,0) [0|255.984375] "" XXX
SG_ POINT_5_SIGNAL_2 : 425|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_5_SIGNAL_3 : 427|8@1+ (0.001953125,-0.248046875) [-0.248046875|0.25] "" XXX
SG_ POINT_5_REL_VELOCITY : 435|13@1+ (0.03125,-66) [-66|189.96875] "" XXX
SG_ POINT_5_SIGNAL_5 : 448|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_5_SIGNAL_6 : 450|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_5_AZIMUTH : 452|12@1+ (0.001953125,-3.998046875) [-3.998046875|4.0] "" XXX
SG_ POINT_5_SIGNAL_8 : 464|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_5_SIGNAL_9 : 466|1@1+ (1,0) [0|1] "" XXX
SG_ POINT_5_SIGNAL_10 : 467|7@1+ (1,0) [0|127] "" XXX
SG_ POINT_5_SIGNAL_11 : 474|1@1+ (1,0) [0|1] "" XXX
SG_ POINT_5_SIGNAL_12 : 475|6@1+ (1,0) [0|63] "" XXX
SG_ POINT_5_SIGNAL_13 : 481|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_5_SIGNAL_14 : 483|8@1+ (0.001953125,-0.248046875) [-0.248046875|0.25] "" XXX
SG_ POINT_5_SIGNAL_15 : 491|1@1+ (1,0) [0|1] "" XXX
SG_ POINT_5_SIGNAL_16 : 492|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_5_SIGNAL_17 : 494|3@1+ (1,0) [0|7] "" XXX
SG_ POINT_5_SIGNAL_18 : 497|6@1+ (1,0) [0|63] "" XXX
SG_ POINT_5_SIGNAL_19 : 503|8@1+ (1,0) [0|255] "" XXX
SG_ POINT_5_SIGNAL_20 : 511|1@1+ (1,0) [0|1] "" XXX
BO_ 513 RADAR_POINTS_0x201: 64 RADAR
SG_ MESSAGE_ID : 0|5@1+ (1,0) [0|31] "" XXX
SG_ LAYOUT_ID : 5|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_1_DISTANCE : 7|14@1+ (0.015625,0) [0|255.984375] "" XXX
SG_ POINT_1_SIGNAL_2 : 21|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_1_SIGNAL_3 : 23|8@1+ (0.001953125,-0.248046875) [-0.248046875|0.25] "" XXX
SG_ POINT_1_REL_VELOCITY : 31|13@1+ (0.03125,-66) [-66|189.96875] "" XXX
SG_ POINT_1_SIGNAL_5 : 44|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_1_SIGNAL_6 : 46|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_1_AZIMUTH : 48|12@1+ (0.001953125,-3.998046875) [-3.998046875|4.0] "" XXX
SG_ POINT_1_SIGNAL_8 : 60|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_1_SIGNAL_9 : 62|1@1+ (1,0) [0|1] "" XXX
SG_ POINT_1_SIGNAL_10 : 63|7@1+ (1,0) [0|127] "" XXX
SG_ POINT_1_SIGNAL_11 : 70|1@1+ (1,0) [0|1] "" XXX
SG_ POINT_1_SIGNAL_12 : 71|6@1+ (1,0) [0|63] "" XXX
SG_ POINT_1_SIGNAL_13 : 77|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_1_SIGNAL_14 : 79|8@1+ (0.001953125,-0.248046875) [-0.248046875|0.25] "" XXX
SG_ POINT_1_SIGNAL_15 : 87|1@1+ (1,0) [0|1] "" XXX
SG_ POINT_1_SIGNAL_16 : 88|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_1_SIGNAL_17 : 90|3@1+ (1,0) [0|7] "" XXX
SG_ POINT_1_SIGNAL_18 : 93|6@1+ (1,0) [0|63] "" XXX
SG_ POINT_1_SIGNAL_19 : 99|8@1+ (1,0) [0|255] "" XXX
SG_ POINT_1_SIGNAL_20 : 107|1@1+ (1,0) [0|1] "" XXX
SG_ POINT_2_DISTANCE : 108|14@1+ (0.015625,0) [0|255.984375] "" XXX
SG_ POINT_2_SIGNAL_2 : 122|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_2_SIGNAL_3 : 124|8@1+ (0.001953125,-0.248046875) [-0.248046875|0.25] "" XXX
SG_ POINT_2_REL_VELOCITY : 132|13@1+ (0.03125,-66) [-66|189.96875] "" XXX
SG_ POINT_2_SIGNAL_5 : 145|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_2_SIGNAL_6 : 147|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_2_AZIMUTH : 149|12@1+ (0.001953125,-3.998046875) [-3.998046875|4.0] "" XXX
SG_ POINT_2_SIGNAL_8 : 161|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_2_SIGNAL_9 : 163|1@1+ (1,0) [0|1] "" XXX
SG_ POINT_2_SIGNAL_10 : 164|7@1+ (1,0) [0|127] "" XXX
SG_ POINT_2_SIGNAL_11 : 171|1@1+ (1,0) [0|1] "" XXX
SG_ POINT_2_SIGNAL_12 : 172|6@1+ (1,0) [0|63] "" XXX
SG_ POINT_2_SIGNAL_13 : 178|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_2_SIGNAL_14 : 180|8@1+ (0.001953125,-0.248046875) [-0.248046875|0.25] "" XXX
SG_ POINT_2_SIGNAL_15 : 188|1@1+ (1,0) [0|1] "" XXX
SG_ POINT_2_SIGNAL_16 : 189|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_2_SIGNAL_17 : 191|3@1+ (1,0) [0|7] "" XXX
SG_ POINT_2_SIGNAL_18 : 194|6@1+ (1,0) [0|63] "" XXX
SG_ POINT_2_SIGNAL_19 : 200|8@1+ (1,0) [0|255] "" XXX
SG_ POINT_2_SIGNAL_20 : 208|1@1+ (1,0) [0|1] "" XXX
SG_ POINT_3_DISTANCE : 209|14@1+ (0.015625,0) [0|255.984375] "" XXX
SG_ POINT_3_SIGNAL_2 : 223|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_3_SIGNAL_3 : 225|8@1+ (0.001953125,-0.248046875) [-0.248046875|0.25] "" XXX
SG_ POINT_3_REL_VELOCITY : 233|13@1+ (0.03125,-66) [-66|189.96875] "" XXX
SG_ POINT_3_SIGNAL_5 : 246|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_3_SIGNAL_6 : 248|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_3_AZIMUTH : 250|12@1+ (0.001953125,-3.998046875) [-3.998046875|4.0] "" XXX
SG_ POINT_3_SIGNAL_8 : 262|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_3_SIGNAL_9 : 264|1@1+ (1,0) [0|1] "" XXX
SG_ POINT_3_SIGNAL_10 : 265|7@1+ (1,0) [0|127] "" XXX
SG_ POINT_3_SIGNAL_11 : 272|1@1+ (1,0) [0|1] "" XXX
SG_ POINT_3_SIGNAL_12 : 273|6@1+ (1,0) [0|63] "" XXX
SG_ POINT_3_SIGNAL_13 : 279|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_3_SIGNAL_14 : 281|8@1+ (0.001953125,-0.248046875) [-0.248046875|0.25] "" XXX
SG_ POINT_3_SIGNAL_15 : 289|1@1+ (1,0) [0|1] "" XXX
SG_ POINT_3_SIGNAL_16 : 290|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_3_SIGNAL_17 : 292|3@1+ (1,0) [0|7] "" XXX
SG_ POINT_3_SIGNAL_18 : 295|6@1+ (1,0) [0|63] "" XXX
SG_ POINT_3_SIGNAL_19 : 301|8@1+ (1,0) [0|255] "" XXX
SG_ POINT_3_SIGNAL_20 : 309|1@1+ (1,0) [0|1] "" XXX
SG_ POINT_4_DISTANCE : 310|14@1+ (0.015625,0) [0|255.984375] "" XXX
SG_ POINT_4_SIGNAL_2 : 324|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_4_SIGNAL_3 : 326|8@1+ (0.001953125,-0.248046875) [-0.248046875|0.25] "" XXX
SG_ POINT_4_REL_VELOCITY : 334|13@1+ (0.03125,-66) [-66|189.96875] "" XXX
SG_ POINT_4_SIGNAL_5 : 347|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_4_SIGNAL_6 : 349|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_4_AZIMUTH : 351|12@1+ (0.001953125,-3.998046875) [-3.998046875|4.0] "" XXX
SG_ POINT_4_SIGNAL_8 : 363|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_4_SIGNAL_9 : 365|1@1+ (1,0) [0|1] "" XXX
SG_ POINT_4_SIGNAL_10 : 366|7@1+ (1,0) [0|127] "" XXX
SG_ POINT_4_SIGNAL_11 : 373|1@1+ (1,0) [0|1] "" XXX
SG_ POINT_4_SIGNAL_12 : 374|6@1+ (1,0) [0|63] "" XXX
SG_ POINT_4_SIGNAL_13 : 380|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_4_SIGNAL_14 : 382|8@1+ (0.001953125,-0.248046875) [-0.248046875|0.25] "" XXX
SG_ POINT_4_SIGNAL_15 : 390|1@1+ (1,0) [0|1] "" XXX
SG_ POINT_4_SIGNAL_16 : 391|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_4_SIGNAL_17 : 393|3@1+ (1,0) [0|7] "" XXX
SG_ POINT_4_SIGNAL_18 : 396|6@1+ (1,0) [0|63] "" XXX
SG_ POINT_4_SIGNAL_19 : 402|8@1+ (1,0) [0|255] "" XXX
SG_ POINT_4_SIGNAL_20 : 410|1@1+ (1,0) [0|1] "" XXX
SG_ POINT_5_DISTANCE : 411|14@1+ (0.015625,0) [0|255.984375] "" XXX
SG_ POINT_5_SIGNAL_2 : 425|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_5_SIGNAL_3 : 427|8@1+ (0.001953125,-0.248046875) [-0.248046875|0.25] "" XXX
SG_ POINT_5_REL_VELOCITY : 435|13@1+ (0.03125,-66) [-66|189.96875] "" XXX
SG_ POINT_5_SIGNAL_5 : 448|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_5_SIGNAL_6 : 450|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_5_AZIMUTH : 452|12@1+ (0.001953125,-3.998046875) [-3.998046875|4.0] "" XXX
SG_ POINT_5_SIGNAL_8 : 464|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_5_SIGNAL_9 : 466|1@1+ (1,0) [0|1] "" XXX
SG_ POINT_5_SIGNAL_10 : 467|7@1+ (1,0) [0|127] "" XXX
SG_ POINT_5_SIGNAL_11 : 474|1@1+ (1,0) [0|1] "" XXX
SG_ POINT_5_SIGNAL_12 : 475|6@1+ (1,0) [0|63] "" XXX
SG_ POINT_5_SIGNAL_13 : 481|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_5_SIGNAL_14 : 483|8@1+ (0.001953125,-0.248046875) [-0.248046875|0.25] "" XXX
SG_ POINT_5_SIGNAL_15 : 491|1@1+ (1,0) [0|1] "" XXX
SG_ POINT_5_SIGNAL_16 : 492|2@1+ (1,0) [0|3] "" XXX
SG_ POINT_5_SIGNAL_17 : 494|3@1+ (1,0) [0|7] "" XXX
SG_ POINT_5_SIGNAL_18 : 497|6@1+ (1,0) [0|63] "" XXX
SG_ POINT_5_SIGNAL_19 : 503|8@1+ (1,0) [0|255] "" XXX
SG_ POINT_5_SIGNAL_20 : 511|1@1+ (1,0) [0|1] "" XXX
BO_ 260 RADAR_POINTS_CHECKSUM_0x104: 3 RADAR
SG_ CRC16 : 0|16@1+ (1,0) [0|65535] "" XXX
BO_ 516 RADAR_POINTS_CHECKSUM_0x204: 3 RADAR
SG_ CRC16 : 0|16@1+ (1,0) [0|65535] "" XXX
@@ -1,57 +0,0 @@
#!/usr/bin/env python3
if __name__ == "__main__":
print("""
VERSION ""
NS_ :
NS_DESC_
CM_
BA_DEF_
BA_
VAL_
CAT_DEF_
CAT_
FILTER
BA_DEF_DEF_
EV_DATA_
ENVVAR_DATA_
SGTYPE_
SGTYPE_VAL_
BA_DEF_SGTYPE_
BA_SGTYPE_
SIG_TYPE_REF_
VAL_TABLE_
SIG_GROUP_
SIG_VALTYPE_
SIGTYPE_VALTYPE_
BO_TX_BU_
BA_DEF_REL_
BA_REL_
BA_DEF_DEF_REL_
BU_SG_REL_
BU_EV_REL_
BU_BO_REL_
SG_MUL_VAL_
BS_:
BU_: XXX
""")
# note: 0x501/0x502 seem to be special in 0x5XX range
for a in range(0x500, 0x500 + 32):
print(f"""
BO_ {a} RADAR_TRACK_{a:x}: 8 RADAR
SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX
SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX
SG_ STATE : 15|3@0+ (1,0) [0|7] "" XXX
SG_ LONG_DIST : 18|11@0+ (0.1,0) [0|204.7] "" XXX
SG_ REL_ACCEL : 33|10@0- (0.02,0) [-10.24|10.22] "" XXX
SG_ ZEROS : 37|4@0+ (1,0) [0|255] "" XXX
SG_ COUNTER : 38|1@0+ (1,0) [0|1] "" XXX
SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX
SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX
SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX
""")
@@ -1,3 +1,6 @@
CM_ "AUTOGENERATED FILE, DO NOT EDIT";
CM_ "hyundai_kia_mando_front_radar.dbc starts here";
VERSION "" VERSION ""
@@ -35,8 +38,7 @@ NS_ :
BS_: BS_:
BU_: XXX BU_: XXX
BO_ 1280 RADAR_TRACK_500: 8 RADAR BO_ 1280 RADAR_TRACK_500: 8 RADAR
SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX
SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX
@@ -48,8 +50,7 @@ BO_ 1280 RADAR_TRACK_500: 8 RADAR
SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX
SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX
SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX
BO_ 1281 RADAR_TRACK_501: 8 RADAR BO_ 1281 RADAR_TRACK_501: 8 RADAR
SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX
SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX
@@ -61,8 +62,7 @@ BO_ 1281 RADAR_TRACK_501: 8 RADAR
SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX
SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX
SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX
BO_ 1282 RADAR_TRACK_502: 8 RADAR BO_ 1282 RADAR_TRACK_502: 8 RADAR
SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX
SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX
@@ -74,8 +74,7 @@ BO_ 1282 RADAR_TRACK_502: 8 RADAR
SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX
SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX
SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX
BO_ 1283 RADAR_TRACK_503: 8 RADAR BO_ 1283 RADAR_TRACK_503: 8 RADAR
SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX
SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX
@@ -87,8 +86,7 @@ BO_ 1283 RADAR_TRACK_503: 8 RADAR
SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX
SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX
SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX
BO_ 1284 RADAR_TRACK_504: 8 RADAR BO_ 1284 RADAR_TRACK_504: 8 RADAR
SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX
SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX
@@ -100,8 +98,7 @@ BO_ 1284 RADAR_TRACK_504: 8 RADAR
SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX
SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX
SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX
BO_ 1285 RADAR_TRACK_505: 8 RADAR BO_ 1285 RADAR_TRACK_505: 8 RADAR
SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX
SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX
@@ -113,8 +110,7 @@ BO_ 1285 RADAR_TRACK_505: 8 RADAR
SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX
SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX
SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX
BO_ 1286 RADAR_TRACK_506: 8 RADAR BO_ 1286 RADAR_TRACK_506: 8 RADAR
SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX
SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX
@@ -126,8 +122,7 @@ BO_ 1286 RADAR_TRACK_506: 8 RADAR
SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX
SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX
SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX
BO_ 1287 RADAR_TRACK_507: 8 RADAR BO_ 1287 RADAR_TRACK_507: 8 RADAR
SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX
SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX
@@ -139,8 +134,7 @@ BO_ 1287 RADAR_TRACK_507: 8 RADAR
SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX
SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX
SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX
BO_ 1288 RADAR_TRACK_508: 8 RADAR BO_ 1288 RADAR_TRACK_508: 8 RADAR
SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX
SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX
@@ -152,8 +146,7 @@ BO_ 1288 RADAR_TRACK_508: 8 RADAR
SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX
SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX
SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX
BO_ 1289 RADAR_TRACK_509: 8 RADAR BO_ 1289 RADAR_TRACK_509: 8 RADAR
SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX
SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX
@@ -165,8 +158,7 @@ BO_ 1289 RADAR_TRACK_509: 8 RADAR
SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX
SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX
SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX
BO_ 1290 RADAR_TRACK_50a: 8 RADAR BO_ 1290 RADAR_TRACK_50a: 8 RADAR
SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX
SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX
@@ -178,8 +170,7 @@ BO_ 1290 RADAR_TRACK_50a: 8 RADAR
SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX
SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX
SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX
BO_ 1291 RADAR_TRACK_50b: 8 RADAR BO_ 1291 RADAR_TRACK_50b: 8 RADAR
SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX
SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX
@@ -191,8 +182,7 @@ BO_ 1291 RADAR_TRACK_50b: 8 RADAR
SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX
SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX
SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX
BO_ 1292 RADAR_TRACK_50c: 8 RADAR BO_ 1292 RADAR_TRACK_50c: 8 RADAR
SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX
SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX
@@ -204,8 +194,7 @@ BO_ 1292 RADAR_TRACK_50c: 8 RADAR
SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX
SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX
SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX
BO_ 1293 RADAR_TRACK_50d: 8 RADAR BO_ 1293 RADAR_TRACK_50d: 8 RADAR
SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX
SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX
@@ -217,8 +206,7 @@ BO_ 1293 RADAR_TRACK_50d: 8 RADAR
SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX
SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX
SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX
BO_ 1294 RADAR_TRACK_50e: 8 RADAR BO_ 1294 RADAR_TRACK_50e: 8 RADAR
SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX
SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX
@@ -230,8 +218,7 @@ BO_ 1294 RADAR_TRACK_50e: 8 RADAR
SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX
SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX
SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX
BO_ 1295 RADAR_TRACK_50f: 8 RADAR BO_ 1295 RADAR_TRACK_50f: 8 RADAR
SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX
SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX
@@ -243,8 +230,7 @@ BO_ 1295 RADAR_TRACK_50f: 8 RADAR
SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX
SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX
SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX
BO_ 1296 RADAR_TRACK_510: 8 RADAR BO_ 1296 RADAR_TRACK_510: 8 RADAR
SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX
SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX
@@ -256,8 +242,7 @@ BO_ 1296 RADAR_TRACK_510: 8 RADAR
SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX
SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX
SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX
BO_ 1297 RADAR_TRACK_511: 8 RADAR BO_ 1297 RADAR_TRACK_511: 8 RADAR
SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX
SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX
@@ -269,8 +254,7 @@ BO_ 1297 RADAR_TRACK_511: 8 RADAR
SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX
SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX
SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX
BO_ 1298 RADAR_TRACK_512: 8 RADAR BO_ 1298 RADAR_TRACK_512: 8 RADAR
SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX
SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX
@@ -282,8 +266,7 @@ BO_ 1298 RADAR_TRACK_512: 8 RADAR
SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX
SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX
SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX
BO_ 1299 RADAR_TRACK_513: 8 RADAR BO_ 1299 RADAR_TRACK_513: 8 RADAR
SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX
SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX
@@ -295,8 +278,7 @@ BO_ 1299 RADAR_TRACK_513: 8 RADAR
SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX
SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX
SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX
BO_ 1300 RADAR_TRACK_514: 8 RADAR BO_ 1300 RADAR_TRACK_514: 8 RADAR
SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX
SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX
@@ -308,8 +290,7 @@ BO_ 1300 RADAR_TRACK_514: 8 RADAR
SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX
SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX
SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX
BO_ 1301 RADAR_TRACK_515: 8 RADAR BO_ 1301 RADAR_TRACK_515: 8 RADAR
SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX
SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX
@@ -321,8 +302,7 @@ BO_ 1301 RADAR_TRACK_515: 8 RADAR
SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX
SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX
SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX
BO_ 1302 RADAR_TRACK_516: 8 RADAR BO_ 1302 RADAR_TRACK_516: 8 RADAR
SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX
SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX
@@ -334,8 +314,7 @@ BO_ 1302 RADAR_TRACK_516: 8 RADAR
SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX
SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX
SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX
BO_ 1303 RADAR_TRACK_517: 8 RADAR BO_ 1303 RADAR_TRACK_517: 8 RADAR
SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX
SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX
@@ -347,8 +326,7 @@ BO_ 1303 RADAR_TRACK_517: 8 RADAR
SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX
SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX
SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX
BO_ 1304 RADAR_TRACK_518: 8 RADAR BO_ 1304 RADAR_TRACK_518: 8 RADAR
SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX
SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX
@@ -360,8 +338,7 @@ BO_ 1304 RADAR_TRACK_518: 8 RADAR
SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX
SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX
SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX
BO_ 1305 RADAR_TRACK_519: 8 RADAR BO_ 1305 RADAR_TRACK_519: 8 RADAR
SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX
SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX
@@ -373,8 +350,7 @@ BO_ 1305 RADAR_TRACK_519: 8 RADAR
SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX
SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX
SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX
BO_ 1306 RADAR_TRACK_51a: 8 RADAR BO_ 1306 RADAR_TRACK_51a: 8 RADAR
SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX
SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX
@@ -386,8 +362,7 @@ BO_ 1306 RADAR_TRACK_51a: 8 RADAR
SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX
SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX
SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX
BO_ 1307 RADAR_TRACK_51b: 8 RADAR BO_ 1307 RADAR_TRACK_51b: 8 RADAR
SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX
SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX
@@ -399,8 +374,7 @@ BO_ 1307 RADAR_TRACK_51b: 8 RADAR
SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX
SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX
SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX
BO_ 1308 RADAR_TRACK_51c: 8 RADAR BO_ 1308 RADAR_TRACK_51c: 8 RADAR
SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX
SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX
@@ -412,8 +386,7 @@ BO_ 1308 RADAR_TRACK_51c: 8 RADAR
SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX
SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX
SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX
BO_ 1309 RADAR_TRACK_51d: 8 RADAR BO_ 1309 RADAR_TRACK_51d: 8 RADAR
SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX
SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX
@@ -425,8 +398,7 @@ BO_ 1309 RADAR_TRACK_51d: 8 RADAR
SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX
SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX
SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX
BO_ 1310 RADAR_TRACK_51e: 8 RADAR BO_ 1310 RADAR_TRACK_51e: 8 RADAR
SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX
SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX
@@ -438,8 +410,7 @@ BO_ 1310 RADAR_TRACK_51e: 8 RADAR
SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX
SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX
SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX
BO_ 1311 RADAR_TRACK_51f: 8 RADAR BO_ 1311 RADAR_TRACK_51f: 8 RADAR
SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX SG_ UNKNOWN_1 : 7|8@0- (1,0) [-128|127] "" XXX
SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX SG_ AZIMUTH : 12|10@0- (0.2,0) [-102.4|102.2] "" XXX
@@ -451,4 +422,4 @@ BO_ 1311 RADAR_TRACK_51f: 8 RADAR
SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX SG_ STATE_3 : 39|1@0+ (1,0) [0|1] "" XXX
SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX
SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX SG_ STATE_2 : 55|2@0+ (1,0) [0|3] "" XXX
+1 -1
View File
@@ -5,4 +5,4 @@ numpy==1.21.0
pycapnp==1.0.0 pycapnp==1.0.0
pylint==2.4.3 pylint==2.4.3
pyyaml==5.4 pyyaml==5.4
scons==3.1.1 scons
+13 -5
View File
@@ -128,9 +128,10 @@ BO_ 466 PCM_CRUISE: 8 XXX
BO_ 467 PCM_CRUISE_2: 8 XXX BO_ 467 PCM_CRUISE_2: 8 XXX
SG_ PCM_FOLLOW_DISTANCE : 12|2@0+ (1,0) [0|3] "" XXX SG_ PCM_FOLLOW_DISTANCE : 12|2@0+ (1,0) [0|3] "" XXX
SG_ MAIN_ON : 15|1@0+ (1,0) [0|1] "" XXX
SG_ LOW_SPEED_LOCKOUT : 14|2@0+ (1,0) [0|3] "" XXX SG_ LOW_SPEED_LOCKOUT : 14|2@0+ (1,0) [0|3] "" XXX
SG_ MAIN_ON : 15|1@0+ (1,0) [0|1] "" XXX
SG_ SET_SPEED : 23|8@0+ (1,0) [0|255] "km/h" XXX SG_ SET_SPEED : 23|8@0+ (1,0) [0|255] "km/h" XXX
SG_ ACC_FAULTED : 47|1@0+ (1,0) [0|1] "" XXX
SG_ CHECKSUM : 63|8@0+ (1,0) [0|255] "" XXX SG_ CHECKSUM : 63|8@0+ (1,0) [0|255] "" XXX
BO_ 552 ACCELEROMETER: 8 XXX BO_ 552 ACCELEROMETER: 8 XXX
@@ -209,8 +210,9 @@ BO_ 836 PRE_COLLISION_2: 8 DSU
SG_ CHECKSUM : 63|8@0+ (1,0) [0|0] "" XXX SG_ CHECKSUM : 63|8@0+ (1,0) [0|0] "" XXX
BO_ 865 CLUTCH: 8 XXX BO_ 865 CLUTCH: 8 XXX
SG_ CLUTCH_RELEASED : 38|1@0+ (1,0) [0|1] "" XXX SG_ ACC_FAULTED : 32|1@0+ (1,0) [0|1] "" XXX
SG_ GAS_PEDAL_ALT : 23|8@0+ (0.005,0) [0|1] "" XXX SG_ GAS_PEDAL_ALT : 23|8@0+ (0.005,0) [0|1] "" XXX
SG_ CLUTCH_RELEASED : 38|1@0+ (1,0) [0|1] "" XXX
BO_ 869 DSU_CRUISE : 7 DSU BO_ 869 DSU_CRUISE : 7 DSU
SG_ RES_BTN : 3|1@0+ (1,0) [0|0] "" XXX SG_ RES_BTN : 3|1@0+ (1,0) [0|0] "" XXX
@@ -225,6 +227,7 @@ BO_ 921 PCM_CRUISE_SM: 8 XXX
SG_ MAIN_ON : 4|1@0+ (1,0) [0|1] "" XXX SG_ MAIN_ON : 4|1@0+ (1,0) [0|1] "" XXX
SG_ CRUISE_CONTROL_STATE : 11|4@0+ (1,0) [0|15] "" XXX SG_ CRUISE_CONTROL_STATE : 11|4@0+ (1,0) [0|15] "" XXX
SG_ DISTANCE_LINES : 14|2@0+ (1,0) [0|3] "" XXX SG_ DISTANCE_LINES : 14|2@0+ (1,0) [0|3] "" XXX
SG_ TEMP_ACC_FAULTED : 15|1@0+ (1,0) [0|1] "" XXX
SG_ UI_SET_SPEED : 31|8@0+ (1,0) [0|255] "" XXX SG_ UI_SET_SPEED : 31|8@0+ (1,0) [0|255] "" XXX
BO_ 951 ESP_CONTROL: 8 ESP BO_ 951 ESP_CONTROL: 8 ESP
@@ -249,7 +252,7 @@ BO_ 1005 REVERSE_CAMERA_STATE: 2 BGM
BO_ 1009 PCM_CRUISE_ALT: 8 XXX BO_ 1009 PCM_CRUISE_ALT: 8 XXX
SG_ MAIN_ON : 13|1@0+ (1,0) [0|3] "" XXX SG_ MAIN_ON : 13|1@0+ (1,0) [0|3] "" XXX
SG_ CRUISE_STATE : 10|1@0+ (1,0) [0|1] "" XXX SG_ CRUISE_STATE : 10|1@0+ (1,0) [0|1] "" XXX
SG_ SET_SPEED : 23|8@0+ (1,0) [0|255] "mph" XXX SG_ UI_SET_SPEED : 23|8@0+ (1,0) [0|255] "mph" XXX
BO_ 1020 SOLAR_SENSOR: 8 XXX BO_ 1020 SOLAR_SENSOR: 8 XXX
SG_ LUX_SENSOR : 55|13@0+ (1,0) [0|0] "" XXX SG_ LUX_SENSOR : 55|13@0+ (1,0) [0|0] "" XXX
@@ -373,6 +376,7 @@ BO_ 1552 BODY_CONTROL_STATE_2: 8 XXX
SG_ METER_SLIDER_BRIGHTNESS_PCT : 30|7@0+ (1,0) [12|100] "%" XXX SG_ METER_SLIDER_BRIGHTNESS_PCT : 30|7@0+ (1,0) [12|100] "%" XXX
SG_ METER_SLIDER_LOW_BRIGHTNESS : 37|1@0+ (1,0) [0|1] "" XXX SG_ METER_SLIDER_LOW_BRIGHTNESS : 37|1@0+ (1,0) [0|1] "" XXX
SG_ METER_SLIDER_DIMMED : 38|1@0+ (1,0) [0|1] "" XXX SG_ METER_SLIDER_DIMMED : 38|1@0+ (1,0) [0|1] "" XXX
SG_ UNITS : 63|3@0+ (1,0) [1|4] "" XXX
BO_ 1553 UI_SETTING: 8 XXX BO_ 1553 UI_SETTING: 8 XXX
SG_ UNITS : 26|2@0+ (1,0) [0|3] "" XXX SG_ UNITS : 26|2@0+ (1,0) [0|3] "" XXX
@@ -415,6 +419,7 @@ CM_ SG_ 37 STEER_FRACTION "1/15th of the signal STEER_ANGLE, which is 1.5 deg; n
CM_ SG_ 37 STEER_RATE "factor is tbd"; CM_ SG_ 37 STEER_RATE "factor is tbd";
CM_ SG_ 466 ACCEL_NET "net acceleration produced by the system, given ACCEL_CMD, road grade and other factors"; CM_ SG_ 466 ACCEL_NET "net acceleration produced by the system, given ACCEL_CMD, road grade and other factors";
CM_ SG_ 466 CRUISE_STATE "Active state is 8, if standstill is requested will switch to state 11(3 sec timer), after timer is elapsed will switch into state 7(standstill). If plus button was pressed - status 9, minus button pressed - status 10"; CM_ SG_ 466 CRUISE_STATE "Active state is 8, if standstill is requested will switch to state 11(3 sec timer), after timer is elapsed will switch into state 7(standstill). If plus button was pressed - status 9, minus button pressed - status 10";
CM_ SG_ 467 ACC_FAULTED "1 when ACC is faulted and the PCM disallows engagement";
CM_ SG_ 467 SET_SPEED "43 km/h are shown as 28 mph, so conversion isn't perfect"; CM_ SG_ 467 SET_SPEED "43 km/h are shown as 28 mph, so conversion isn't perfect";
CM_ SG_ 467 LOW_SPEED_LOCKOUT "in low speed lockout, system would always disengage below 28mph"; CM_ SG_ 467 LOW_SPEED_LOCKOUT "in low speed lockout, system would always disengage below 28mph";
CM_ SG_ 560 BRAKE_PRESSED "another brake pressed?"; CM_ SG_ 560 BRAKE_PRESSED "another brake pressed?";
@@ -436,10 +441,12 @@ CM_ SG_ 835 PERMIT_BRAKING "Original ACC has this going high when a car in front
CM_ SG_ 835 ACCEL_CMD_ALT "Copy of main ACCEL_CMD, but across 8 bits instead of 16 bits like ACCEL_CMD. Unsure if only informational or has an effect. Likely informational as existing openpilot sets this to 0 and no loss of functionality observed. Originally 'AT_RAW' in leaked toyota_2017_ref_pt.dbc file."; CM_ SG_ 835 ACCEL_CMD_ALT "Copy of main ACCEL_CMD, but across 8 bits instead of 16 bits like ACCEL_CMD. Unsure if only informational or has an effect. Likely informational as existing openpilot sets this to 0 and no loss of functionality observed. Originally 'AT_RAW' in leaked toyota_2017_ref_pt.dbc file.";
CM_ SG_ 865 GAS_PEDAL_ALT "copy of main GAS_PEDAL. Both use 8 bits. Might indicate that this message is for pedals."; CM_ SG_ 865 GAS_PEDAL_ALT "copy of main GAS_PEDAL. Both use 8 bits. Might indicate that this message is for pedals.";
CM_ SG_ 865 CLUTCH_RELEASED "boolean of clutch for 6MT."; CM_ SG_ 865 CLUTCH_RELEASED "boolean of clutch for 6MT.";
CM_ SG_ 865 ACC_FAULTED "1 when ACC is faulted and the PCM disallows engagement";
CM_ SG_ 921 UI_SET_SPEED "set speed shown in the vehicle's UI with the vehicle's unit"; CM_ SG_ 921 UI_SET_SPEED "set speed shown in the vehicle's UI with the vehicle's unit";
CM_ SG_ 921 TEMP_ACC_FAULTED "1 when the UI is displaying or playing fault-related alerts or sounds. Also 1 when pressing main on.";
CM_ SG_ 951 BRAKE_LIGHTS_ACC "brake lights when ACC commands decel"; CM_ SG_ 951 BRAKE_LIGHTS_ACC "brake lights when ACC commands decel";
CM_ SG_ 956 GEAR "on 6MT, only R shows."; CM_ SG_ 956 GEAR "on 6MT, only R shows.";
CM_ SG_ 1009 SET_SPEED "units seem to be whatever the car is set to"; CM_ SG_ 1009 UI_SET_SPEED "units seem to be whatever the car is set to";
CM_ SG_ 1041 PCS_INDICATOR "Pre-Collision System Indicator"; CM_ SG_ 1041 PCS_INDICATOR "Pre-Collision System Indicator";
CM_ SG_ 1041 PCS_SENSITIVITY "Pre-Collision System Sensitivity"; CM_ SG_ 1041 PCS_SENSITIVITY "Pre-Collision System Sensitivity";
CM_ SG_ 1042 LDA_SA_TOGGLE "LDA Steering Assist Toggle"; CM_ SG_ 1042 LDA_SA_TOGGLE "LDA Steering Assist Toggle";
@@ -472,7 +479,7 @@ CM_ SG_ 1163 OVSPVALL "-5 at start then 2 after 2 seconds";
CM_ SG_ 1163 OVSPVALM "-5 at start then 5 after 2 seconds"; CM_ SG_ 1163 OVSPVALM "-5 at start then 5 after 2 seconds";
CM_ SG_ 1163 OVSPVALH "-5 at start then 10 after 2 seconds"; CM_ SG_ 1163 OVSPVALH "-5 at start then 10 after 2 seconds";
CM_ SG_ 1163 TSRSPU "always 1"; CM_ SG_ 1163 TSRSPU "always 1";
CM_ SG_ 1552 UI_SPEED "Vehicle's speedometer's display speed after Toyota's offset was applied, uses vehicle's unit"; CM_ SG_ 1552 UI_SPEED "Does not appear to match dash";
CM_ SG_ 1552 METER_SLIDER_BRIGHTNESS_PCT "Combination display brightness setting, scales from 12 per cent to 100 per cent, reflects combination meter settings only, not linked with headlight state"; CM_ SG_ 1552 METER_SLIDER_BRIGHTNESS_PCT "Combination display brightness setting, scales from 12 per cent to 100 per cent, reflects combination meter settings only, not linked with headlight state";
CM_ SG_ 1552 METER_SLIDER_LOW_BRIGHTNESS "Combination display low brightness mode, also controls footwell lighting"; CM_ SG_ 1552 METER_SLIDER_LOW_BRIGHTNESS "Combination display low brightness mode, also controls footwell lighting";
CM_ SG_ 1552 METER_SLIDER_DIMMED "Combination display slider not at max, reflects combination meter settings only, not linked with headlight state"; CM_ SG_ 1552 METER_SLIDER_DIMMED "Combination display slider not at max, reflects combination meter settings only, not linked with headlight state";
@@ -524,6 +531,7 @@ VAL_ 1162 TSGN3 0 "none" 1 "speed sign" 2 "0 unlimited" 7 "unlimited" 16 "highwa
VAL_ 1162 SPLSGN3 15 "conditional blank" 4 "wet road" 5 "rain" 0 "none"; VAL_ 1162 SPLSGN3 15 "conditional blank" 4 "wet road" 5 "rain" 0 "none";
VAL_ 1552 METER_SLIDER_LOW_BRIGHTNESS 1 "Low brightness mode, footwell lights off" 0 "Normal mode, footwell lights on"; VAL_ 1552 METER_SLIDER_LOW_BRIGHTNESS 1 "Low brightness mode, footwell lights off" 0 "Normal mode, footwell lights on";
VAL_ 1552 METER_SLIDER_DIMMED 1 "Dimmed" 0 "Not Dimmed"; VAL_ 1552 METER_SLIDER_DIMMED 1 "Dimmed" 0 "Not Dimmed";
VAL_ 1552 UNITS 1 "km (km/L)" 2 "km (L/100km)" 3 "miles (MPG US)" 4 "miles (MPG Imperial)";
VAL_ 1553 UNITS 1 "km" 2 "miles"; VAL_ 1553 UNITS 1 "km" 2 "miles";
VAL_ 1556 TURN_SIGNALS 3 "none" 2 "right" 1 "left"; VAL_ 1556 TURN_SIGNALS 3 "none" 2 "right" 1 "left";
VAL_ 1592 LOCK_STATUS 0 "locked" 1 "unlocked"; VAL_ 1592 LOCK_STATUS 0 "locked" 1 "unlocked";
+20 -10
View File
@@ -128,9 +128,10 @@ BO_ 466 PCM_CRUISE: 8 XXX
BO_ 467 PCM_CRUISE_2: 8 XXX BO_ 467 PCM_CRUISE_2: 8 XXX
SG_ PCM_FOLLOW_DISTANCE : 12|2@0+ (1,0) [0|3] "" XXX SG_ PCM_FOLLOW_DISTANCE : 12|2@0+ (1,0) [0|3] "" XXX
SG_ MAIN_ON : 15|1@0+ (1,0) [0|1] "" XXX
SG_ LOW_SPEED_LOCKOUT : 14|2@0+ (1,0) [0|3] "" XXX SG_ LOW_SPEED_LOCKOUT : 14|2@0+ (1,0) [0|3] "" XXX
SG_ MAIN_ON : 15|1@0+ (1,0) [0|1] "" XXX
SG_ SET_SPEED : 23|8@0+ (1,0) [0|255] "km/h" XXX SG_ SET_SPEED : 23|8@0+ (1,0) [0|255] "km/h" XXX
SG_ ACC_FAULTED : 47|1@0+ (1,0) [0|1] "" XXX
SG_ CHECKSUM : 63|8@0+ (1,0) [0|255] "" XXX SG_ CHECKSUM : 63|8@0+ (1,0) [0|255] "" XXX
BO_ 552 ACCELEROMETER: 8 XXX BO_ 552 ACCELEROMETER: 8 XXX
@@ -209,8 +210,9 @@ BO_ 836 PRE_COLLISION_2: 8 DSU
SG_ CHECKSUM : 63|8@0+ (1,0) [0|0] "" XXX SG_ CHECKSUM : 63|8@0+ (1,0) [0|0] "" XXX
BO_ 865 CLUTCH: 8 XXX BO_ 865 CLUTCH: 8 XXX
SG_ CLUTCH_RELEASED : 38|1@0+ (1,0) [0|1] "" XXX SG_ ACC_FAULTED : 32|1@0+ (1,0) [0|1] "" XXX
SG_ GAS_PEDAL_ALT : 23|8@0+ (0.005,0) [0|1] "" XXX SG_ GAS_PEDAL_ALT : 23|8@0+ (0.005,0) [0|1] "" XXX
SG_ CLUTCH_RELEASED : 38|1@0+ (1,0) [0|1] "" XXX
BO_ 869 DSU_CRUISE : 7 DSU BO_ 869 DSU_CRUISE : 7 DSU
SG_ RES_BTN : 3|1@0+ (1,0) [0|0] "" XXX SG_ RES_BTN : 3|1@0+ (1,0) [0|0] "" XXX
@@ -225,6 +227,7 @@ BO_ 921 PCM_CRUISE_SM: 8 XXX
SG_ MAIN_ON : 4|1@0+ (1,0) [0|1] "" XXX SG_ MAIN_ON : 4|1@0+ (1,0) [0|1] "" XXX
SG_ CRUISE_CONTROL_STATE : 11|4@0+ (1,0) [0|15] "" XXX SG_ CRUISE_CONTROL_STATE : 11|4@0+ (1,0) [0|15] "" XXX
SG_ DISTANCE_LINES : 14|2@0+ (1,0) [0|3] "" XXX SG_ DISTANCE_LINES : 14|2@0+ (1,0) [0|3] "" XXX
SG_ TEMP_ACC_FAULTED : 15|1@0+ (1,0) [0|1] "" XXX
SG_ UI_SET_SPEED : 31|8@0+ (1,0) [0|255] "" XXX SG_ UI_SET_SPEED : 31|8@0+ (1,0) [0|255] "" XXX
BO_ 951 ESP_CONTROL: 8 ESP BO_ 951 ESP_CONTROL: 8 ESP
@@ -250,7 +253,7 @@ BO_ 1005 REVERSE_CAMERA_STATE: 2 BGM
BO_ 1009 PCM_CRUISE_ALT: 8 XXX BO_ 1009 PCM_CRUISE_ALT: 8 XXX
SG_ MAIN_ON : 13|1@0+ (1,0) [0|3] "" XXX SG_ MAIN_ON : 13|1@0+ (1,0) [0|3] "" XXX
SG_ CRUISE_STATE : 10|1@0+ (1,0) [0|1] "" XXX SG_ CRUISE_STATE : 10|1@0+ (1,0) [0|1] "" XXX
SG_ SET_SPEED : 23|8@0+ (1,0) [0|255] "mph" XXX SG_ UI_SET_SPEED : 23|8@0+ (1,0) [0|255] "mph" XXX
BO_ 1020 SOLAR_SENSOR: 8 XXX BO_ 1020 SOLAR_SENSOR: 8 XXX
SG_ LUX_SENSOR : 55|13@0+ (1,0) [0|0] "" XXX SG_ LUX_SENSOR : 55|13@0+ (1,0) [0|0] "" XXX
@@ -374,6 +377,7 @@ BO_ 1552 BODY_CONTROL_STATE_2: 8 XXX
SG_ METER_SLIDER_BRIGHTNESS_PCT : 30|7@0+ (1,0) [12|100] "%" XXX SG_ METER_SLIDER_BRIGHTNESS_PCT : 30|7@0+ (1,0) [12|100] "%" XXX
SG_ METER_SLIDER_LOW_BRIGHTNESS : 37|1@0+ (1,0) [0|1] "" XXX SG_ METER_SLIDER_LOW_BRIGHTNESS : 37|1@0+ (1,0) [0|1] "" XXX
SG_ METER_SLIDER_DIMMED : 38|1@0+ (1,0) [0|1] "" XXX SG_ METER_SLIDER_DIMMED : 38|1@0+ (1,0) [0|1] "" XXX
SG_ UNITS : 63|3@0+ (1,0) [1|4] "" XXX
BO_ 1553 UI_SETTING: 8 XXX BO_ 1553 UI_SETTING: 8 XXX
SG_ UNITS : 26|2@0+ (1,0) [0|3] "" XXX SG_ UNITS : 26|2@0+ (1,0) [0|3] "" XXX
@@ -416,6 +420,7 @@ CM_ SG_ 37 STEER_FRACTION "1/15th of the signal STEER_ANGLE, which is 1.5 deg; n
CM_ SG_ 37 STEER_RATE "factor is tbd"; CM_ SG_ 37 STEER_RATE "factor is tbd";
CM_ SG_ 466 ACCEL_NET "net acceleration produced by the system, given ACCEL_CMD, road grade and other factors"; CM_ SG_ 466 ACCEL_NET "net acceleration produced by the system, given ACCEL_CMD, road grade and other factors";
CM_ SG_ 466 CRUISE_STATE "Active state is 8, if standstill is requested will switch to state 11(3 sec timer), after timer is elapsed will switch into state 7(standstill). If plus button was pressed - status 9, minus button pressed - status 10"; CM_ SG_ 466 CRUISE_STATE "Active state is 8, if standstill is requested will switch to state 11(3 sec timer), after timer is elapsed will switch into state 7(standstill). If plus button was pressed - status 9, minus button pressed - status 10";
CM_ SG_ 467 ACC_FAULTED "1 when ACC is faulted and the PCM disallows engagement";
CM_ SG_ 467 SET_SPEED "43 km/h are shown as 28 mph, so conversion isn't perfect"; CM_ SG_ 467 SET_SPEED "43 km/h are shown as 28 mph, so conversion isn't perfect";
CM_ SG_ 467 LOW_SPEED_LOCKOUT "in low speed lockout, system would always disengage below 28mph"; CM_ SG_ 467 LOW_SPEED_LOCKOUT "in low speed lockout, system would always disengage below 28mph";
CM_ SG_ 560 BRAKE_PRESSED "another brake pressed?"; CM_ SG_ 560 BRAKE_PRESSED "another brake pressed?";
@@ -437,10 +442,12 @@ CM_ SG_ 835 PERMIT_BRAKING "Original ACC has this going high when a car in front
CM_ SG_ 835 ACCEL_CMD_ALT "Copy of main ACCEL_CMD, but across 8 bits instead of 16 bits like ACCEL_CMD. Unsure if only informational or has an effect. Likely informational as existing openpilot sets this to 0 and no loss of functionality observed. Originally 'AT_RAW' in leaked toyota_2017_ref_pt.dbc file."; CM_ SG_ 835 ACCEL_CMD_ALT "Copy of main ACCEL_CMD, but across 8 bits instead of 16 bits like ACCEL_CMD. Unsure if only informational or has an effect. Likely informational as existing openpilot sets this to 0 and no loss of functionality observed. Originally 'AT_RAW' in leaked toyota_2017_ref_pt.dbc file.";
CM_ SG_ 865 GAS_PEDAL_ALT "copy of main GAS_PEDAL. Both use 8 bits. Might indicate that this message is for pedals."; CM_ SG_ 865 GAS_PEDAL_ALT "copy of main GAS_PEDAL. Both use 8 bits. Might indicate that this message is for pedals.";
CM_ SG_ 865 CLUTCH_RELEASED "boolean of clutch for 6MT."; CM_ SG_ 865 CLUTCH_RELEASED "boolean of clutch for 6MT.";
CM_ SG_ 865 ACC_FAULTED "1 when ACC is faulted and the PCM disallows engagement";
CM_ SG_ 921 UI_SET_SPEED "set speed shown in the vehicle's UI with the vehicle's unit"; CM_ SG_ 921 UI_SET_SPEED "set speed shown in the vehicle's UI with the vehicle's unit";
CM_ SG_ 921 TEMP_ACC_FAULTED "1 when the UI is displaying or playing fault-related alerts or sounds. Also 1 when pressing main on.";
CM_ SG_ 951 BRAKE_LIGHTS_ACC "brake lights when ACC commands decel"; CM_ SG_ 951 BRAKE_LIGHTS_ACC "brake lights when ACC commands decel";
CM_ SG_ 956 GEAR "on 6MT, only R shows."; CM_ SG_ 956 GEAR "on 6MT, only R shows.";
CM_ SG_ 1009 SET_SPEED "units seem to be whatever the car is set to"; CM_ SG_ 1009 UI_SET_SPEED "units seem to be whatever the car is set to";
CM_ SG_ 1041 PCS_INDICATOR "Pre-Collision System Indicator"; CM_ SG_ 1041 PCS_INDICATOR "Pre-Collision System Indicator";
CM_ SG_ 1041 PCS_SENSITIVITY "Pre-Collision System Sensitivity"; CM_ SG_ 1041 PCS_SENSITIVITY "Pre-Collision System Sensitivity";
CM_ SG_ 1042 LDA_SA_TOGGLE "LDA Steering Assist Toggle"; CM_ SG_ 1042 LDA_SA_TOGGLE "LDA Steering Assist Toggle";
@@ -473,7 +480,7 @@ CM_ SG_ 1163 OVSPVALL "-5 at start then 2 after 2 seconds";
CM_ SG_ 1163 OVSPVALM "-5 at start then 5 after 2 seconds"; CM_ SG_ 1163 OVSPVALM "-5 at start then 5 after 2 seconds";
CM_ SG_ 1163 OVSPVALH "-5 at start then 10 after 2 seconds"; CM_ SG_ 1163 OVSPVALH "-5 at start then 10 after 2 seconds";
CM_ SG_ 1163 TSRSPU "always 1"; CM_ SG_ 1163 TSRSPU "always 1";
CM_ SG_ 1552 UI_SPEED "Vehicle's speedometer's display speed after Toyota's offset was applied, uses vehicle's unit"; CM_ SG_ 1552 UI_SPEED "Does not appear to match dash";
CM_ SG_ 1552 METER_SLIDER_BRIGHTNESS_PCT "Combination display brightness setting, scales from 12 per cent to 100 per cent, reflects combination meter settings only, not linked with headlight state"; CM_ SG_ 1552 METER_SLIDER_BRIGHTNESS_PCT "Combination display brightness setting, scales from 12 per cent to 100 per cent, reflects combination meter settings only, not linked with headlight state";
CM_ SG_ 1552 METER_SLIDER_LOW_BRIGHTNESS "Combination display low brightness mode, also controls footwell lighting"; CM_ SG_ 1552 METER_SLIDER_LOW_BRIGHTNESS "Combination display low brightness mode, also controls footwell lighting";
CM_ SG_ 1552 METER_SLIDER_DIMMED "Combination display slider not at max, reflects combination meter settings only, not linked with headlight state"; CM_ SG_ 1552 METER_SLIDER_DIMMED "Combination display slider not at max, reflects combination meter settings only, not linked with headlight state";
@@ -526,6 +533,7 @@ VAL_ 1162 TSGN3 0 "none" 1 "speed sign" 2 "0 unlimited" 7 "unlimited" 16 "highwa
VAL_ 1162 SPLSGN3 15 "conditional blank" 4 "wet road" 5 "rain" 0 "none"; VAL_ 1162 SPLSGN3 15 "conditional blank" 4 "wet road" 5 "rain" 0 "none";
VAL_ 1552 METER_SLIDER_LOW_BRIGHTNESS 1 "Low brightness mode, footwell lights off" 0 "Normal mode, footwell lights on"; VAL_ 1552 METER_SLIDER_LOW_BRIGHTNESS 1 "Low brightness mode, footwell lights off" 0 "Normal mode, footwell lights on";
VAL_ 1552 METER_SLIDER_DIMMED 1 "Dimmed" 0 "Not Dimmed"; VAL_ 1552 METER_SLIDER_DIMMED 1 "Dimmed" 0 "Not Dimmed";
VAL_ 1552 UNITS 1 "km (km/L)" 2 "km (L/100km)" 3 "miles (MPG US)" 4 "miles (MPG Imperial)";
VAL_ 1553 UNITS 1 "km" 2 "miles"; VAL_ 1553 UNITS 1 "km" 2 "miles";
VAL_ 1556 TURN_SIGNALS 3 "none" 2 "right" 1 "left"; VAL_ 1556 TURN_SIGNALS 3 "none" 2 "right" 1 "left";
VAL_ 1592 LOCK_STATUS 0 "locked" 1 "unlocked"; VAL_ 1592 LOCK_STATUS 0 "locked" 1 "unlocked";
@@ -539,10 +547,11 @@ BO_ 401 STEERING_LTA: 8 XXX
SG_ SETME_X64 : 47|8@0+ (1,0) [0|255] "" XXX SG_ SETME_X64 : 47|8@0+ (1,0) [0|255] "" XXX
SG_ ANGLE : 55|8@0- (0.5,0) [0|255] "" XXX SG_ ANGLE : 55|8@0- (0.5,0) [0|255] "" XXX
SG_ STEER_ANGLE_CMD : 15|16@0- (0.0573,0) [-540|540] "" XXX SG_ STEER_ANGLE_CMD : 15|16@0- (0.0573,0) [-540|540] "" XXX
SG_ STEER_REQUEST : 25|1@0+ (1,0) [0|1] "" XXX SG_ STEER_REQUEST_2 : 25|1@0+ (1,0) [0|1] "" XXX
SG_ LKA_ACTIVE : 26|1@0+ (1,0) [0|1] "" XXX
SG_ BIT : 30|1@0+ (1,0) [0|1] "" XXX SG_ BIT : 30|1@0+ (1,0) [0|1] "" XXX
SG_ COUNTER : 6|6@0+ (1,0) [0|255] "" XXX SG_ COUNTER : 6|6@0+ (1,0) [0|255] "" XXX
SG_ STEER_REQUEST_2 : 0|1@0+ (1,0) [0|1] "" XXX SG_ STEER_REQUEST : 0|1@0+ (1,0) [0|1] "" XXX
SG_ SETME_X1 : 7|1@0+ (1,0) [0|1] "" XXX SG_ SETME_X1 : 7|1@0+ (1,0) [0|1] "" XXX
BO_ 550 BRAKE_MODULE: 8 XXX BO_ 550 BRAKE_MODULE: 8 XXX
@@ -569,9 +578,10 @@ CM_ SG_ 401 PERCENTAGE "driver override percentage (0-100), very close to steeri
CM_ SG_ 401 SETME_X64 "ramps to 0 smoothly then back on falling edge of STEER_REQUEST if BIT isn't 1"; CM_ SG_ 401 SETME_X64 "ramps to 0 smoothly then back on falling edge of STEER_REQUEST if BIT isn't 1";
CM_ SG_ 401 ANGLE "angle of car relative to lane center on LTA camera"; CM_ SG_ 401 ANGLE "angle of car relative to lane center on LTA camera";
CM_ SG_ 401 STEER_ANGLE_CMD "desired angle, OEM steers up to 95 degrees, no angle limit but torque will bottom out"; CM_ SG_ 401 STEER_ANGLE_CMD "desired angle, OEM steers up to 95 degrees, no angle limit but torque will bottom out";
CM_ SG_ 401 STEER_REQUEST "enable bit for steering, 1 to steer, 0 to not";
CM_ SG_ 401 BIT "has correlation to STEER_REQUEST"; CM_ SG_ 401 BIT "has correlation to STEER_REQUEST";
CM_ SG_ 401 STEER_REQUEST "enable bit for steering, 1 to steer, 0 to not";
CM_ SG_ 401 STEER_REQUEST_2 "enable bit for steering, 1 to steer, 0 to not"; CM_ SG_ 401 STEER_REQUEST_2 "enable bit for steering, 1 to steer, 0 to not";
CM_ SG_ 401 LKA_ACTIVE "1 when using LTA for LKA";
CM_ SG_ 550 BRAKE_PRESSURE "seems prop to pedal force"; CM_ SG_ 550 BRAKE_PRESSURE "seems prop to pedal force";
CM_ SG_ 550 BRAKE_POSITION "seems proportional to pedal displacement, unclear the max value of 0x1c8"; CM_ SG_ 550 BRAKE_POSITION "seems proportional to pedal displacement, unclear the max value of 0x1c8";
CM_ SG_ 610 TYPE "seems 1 on Corolla, 0 on all others"; CM_ SG_ 610 TYPE "seems 1 on Corolla, 0 on all others";
@@ -583,5 +593,5 @@ CM_ SG_ 1014 ADJACENT_ENABLED "when BSM is enabled in settings, this is on along
CM_ SG_ 1014 APPROACHING_ENABLED "when BSM is enabled in settings, this is on along with ADJACENT_ENABLED. this controls bsm alert visibility"; CM_ SG_ 1014 APPROACHING_ENABLED "when BSM is enabled in settings, this is on along with ADJACENT_ENABLED. this controls bsm alert visibility";
VAL_ 610 IPAS_STATE 5 "override" 3 "enabled" 1 "disabled"; VAL_ 610 IPAS_STATE 5 "override" 3 "enabled" 1 "disabled";
VAL_ 610 LKA_STATE 25 "temporary_fault" 17 "permanent_fault" 9 "temporary_fault2" 5 "active" 1 "standby"; VAL_ 610 LKA_STATE 25 "temporary_fault" 17 "permanent_fault" 11 "lka_missing_unavailable2" 9 "temporary_fault2" 5 "active" 3 "lka_missing_unavailable" 1 "standby";
VAL_ 610 LTA_STATE 25 "temporary_fault" 9 "temporary_fault2" 5 "active" 1 "standby"; VAL_ 610 LTA_STATE 25 "temporary_fault" 9 "temporary_fault2" 5 "active" 3 "lta_missing_unavailable" 1 "standby";
+194
View File
@@ -0,0 +1,194 @@
VERSION ""
NS_ :
NS_DESC_
CM_
BA_DEF_
BA_
VAL_
CAT_DEF_
CAT_
FILTER
BA_DEF_DEF_
EV_DATA_
ENVVAR_DATA_
SGTYPE_
SGTYPE_VAL_
BA_DEF_SGTYPE_
BA_SGTYPE_
SIG_TYPE_REF_
VAL_TABLE_
SIG_GROUP_
SIG_VALTYPE_
SIGTYPE_VALTYPE_
BO_TX_BU_
BA_DEF_REL_
BA_REL_
BA_DEF_DEF_REL_
BU_SG_REL_
BU_EV_REL_
BU_BO_REL_
SG_MUL_VAL_
BS_:
BU_: XXX RADAR
BO_ 768 BUTTONS: 8 RADAR
SG_ LKAS_PRESS : 2|1@0+ (1,0) [0|1] "" XXX
SG_ DISTANCE_PRESS : 5|1@0+ (1,0) [0|1] "" XXX
BO_ 769 OBJECT_0: 8 RADAR
SG_ ID : 5|6@0+ (1,0) [0|255] "" XXX
SG_ LONG_DIST : 7|13@1+ (0.03,0) [0|65535] "m" XXX
SG_ LAT_DIST : 20|11@1- (0.018,0) [0|15] "" XXX
SG_ SPEED : 31|10@1- (0.06944444444,0) [0|71] "m/s" XXX
SG_ LAT_SPEED : 48|7@1- (0.1,0) [0|127] "m/s" XXX
SG_ RCS : 63|8@0+ (1,0) [0|255] "" XXX
BO_ 771 OBJECT_1: 8 RADAR
SG_ ID : 5|6@0+ (1,0) [0|255] "" XXX
SG_ LONG_DIST : 7|13@1+ (0.03,0) [0|65535] "m" XXX
SG_ LAT_DIST : 20|11@1- (0.018,0) [0|15] "" XXX
SG_ SPEED : 31|10@1- (0.06944444444,0) [0|71] "m/s" XXX
SG_ LAT_SPEED : 48|7@1- (0.1,0) [0|127] "m/s" XXX
SG_ RCS : 63|8@0+ (1,0) [0|255] "" XXX
BO_ 773 OBJECT_2: 8 RADAR
SG_ ID : 5|6@0+ (1,0) [0|255] "" XXX
SG_ LONG_DIST : 7|13@1+ (0.03,0) [0|65535] "m" XXX
SG_ LAT_DIST : 20|11@1- (0.018,0) [0|15] "" XXX
SG_ SPEED : 31|10@1- (0.06944444444,0) [0|71] "m/s" XXX
SG_ LAT_SPEED : 48|7@1- (0.1,0) [0|127] "m/s" XXX
SG_ RCS : 63|8@0+ (1,0) [0|255] "" XXX
BO_ 775 OBJECT_3: 8 RADAR
SG_ ID : 5|6@0+ (1,0) [0|255] "" XXX
SG_ LONG_DIST : 7|13@1+ (0.03,0) [0|65535] "m" XXX
SG_ LAT_DIST : 20|11@1- (0.018,0) [0|15] "" XXX
SG_ SPEED : 31|10@1- (0.06944444444,0) [0|71] "m/s" XXX
SG_ LAT_SPEED : 48|7@1- (0.1,0) [0|127] "m/s" XXX
SG_ RCS : 63|8@0+ (1,0) [0|255] "" XXX
BO_ 777 OBJECT_4: 8 RADAR
SG_ ID : 5|6@0+ (1,0) [0|255] "" XXX
SG_ LONG_DIST : 7|13@1+ (0.03,0) [0|65535] "m" XXX
SG_ LAT_DIST : 20|11@1- (0.018,0) [0|15] "" XXX
SG_ SPEED : 31|10@1- (0.06944444444,0) [0|71] "m/s" XXX
SG_ LAT_SPEED : 48|7@1- (0.1,0) [0|127] "m/s" XXX
SG_ RCS : 63|8@0+ (1,0) [0|255] "" XXX
BO_ 779 OBJECT_5: 8 RADAR
SG_ ID : 5|6@0+ (1,0) [0|255] "" XXX
SG_ LONG_DIST : 7|13@1+ (0.03,0) [0|65535] "m" XXX
SG_ LAT_DIST : 20|11@1- (0.018,0) [0|15] "" XXX
SG_ SPEED : 31|10@1- (0.06944444444,0) [0|71] "m/s" XXX
SG_ LAT_SPEED : 48|7@1- (0.1,0) [0|127] "m/s" XXX
SG_ RCS : 63|8@0+ (1,0) [0|255] "" XXX
BO_ 781 OBJECT_6: 8 RADAR
SG_ ID : 5|6@0+ (1,0) [0|255] "" XXX
SG_ LONG_DIST : 7|13@1+ (0.03,0) [0|65535] "m" XXX
SG_ LAT_DIST : 20|11@1- (0.018,0) [0|15] "" XXX
SG_ SPEED : 31|10@1- (0.06944444444,0) [0|71] "m/s" XXX
SG_ LAT_SPEED : 48|7@1- (0.1,0) [0|127] "m/s" XXX
SG_ RCS : 63|8@0+ (1,0) [0|255] "" XXX
BO_ 783 OBJECT_7: 8 RADAR
SG_ ID : 5|6@0+ (1,0) [0|255] "" XXX
SG_ LONG_DIST : 7|13@1+ (0.03,0) [0|65535] "m" XXX
SG_ LAT_DIST : 20|11@1- (0.018,0) [0|15] "" XXX
SG_ SPEED : 31|10@1- (0.06944444444,0) [0|71] "m/s" XXX
SG_ LAT_SPEED : 48|7@1- (0.1,0) [0|127] "m/s" XXX
SG_ RCS : 63|8@0+ (1,0) [0|255] "" XXX
BO_ 785 OBJECT_8: 8 RADAR
SG_ ID : 5|6@0+ (1,0) [0|255] "" XXX
SG_ LONG_DIST : 7|13@1+ (0.03,0) [0|65535] "m" XXX
SG_ LAT_DIST : 20|11@1- (0.018,0) [0|15] "" XXX
SG_ SPEED : 31|10@1- (0.06944444444,0) [0|71] "m/s" XXX
SG_ LAT_SPEED : 48|7@1- (0.1,0) [0|127] "m/s" XXX
SG_ RCS : 63|8@0+ (1,0) [0|255] "" XXX
BO_ 787 OBJECT_9: 8 RADAR
SG_ ID : 5|6@0+ (1,0) [0|255] "" XXX
SG_ LONG_DIST : 7|13@1+ (0.03,0) [0|65535] "m" XXX
SG_ LAT_DIST : 20|11@1- (0.018,0) [0|15] "" XXX
SG_ SPEED : 31|10@1- (0.06944444444,0) [0|71] "m/s" XXX
SG_ LAT_SPEED : 48|7@1- (0.1,0) [0|127] "m/s" XXX
SG_ RCS : 63|8@0+ (1,0) [0|255] "" XXX
BO_ 789 OBJECT_10: 8 RADAR
SG_ ID : 5|6@0+ (1,0) [0|255] "" XXX
SG_ LONG_DIST : 7|13@1+ (0.03,0) [0|65535] "m" XXX
SG_ LAT_DIST : 20|11@1- (0.018,0) [0|15] "" XXX
SG_ SPEED : 31|10@1- (0.06944444444,0) [0|71] "m/s" XXX
SG_ LAT_SPEED : 48|7@1- (0.1,0) [0|127] "m/s" XXX
SG_ RCS : 63|8@0+ (1,0) [0|255] "" XXX
BO_ 791 OBJECT_11: 8 RADAR
SG_ ID : 5|6@0+ (1,0) [0|255] "" XXX
SG_ LONG_DIST : 7|13@1+ (0.03,0) [0|65535] "m" XXX
SG_ LAT_DIST : 20|11@1- (0.018,0) [0|15] "" XXX
SG_ SPEED : 31|10@1- (0.06944444444,0) [0|71] "m/s" XXX
SG_ LAT_SPEED : 48|7@1- (0.1,0) [0|127] "m/s" XXX
SG_ RCS : 63|8@0+ (1,0) [0|255] "" XXX
CM_ "Front target"
BO_ 1664 CLUSTER_F: 8 RADAR
SG_ LONG_DIST : 7|13@1+ (0.03,0) [0|255] "m" XXX
SG_ LAT_DIST : 20|11@1- (0.015,0) [-20|20] "m" XXX
SG_ SPEED : 31|10@1- (0.06944444444,0) [0|71] "m/s" XXX
SG_ ID : 0|6@1+ (1,0) [0|63] "" XXX
SG_ LAT_SPEED : 48|7@1- (0.1,0) [0|127] "m/s" XXX
SG_ RCS : 63|8@0+ (1,0) [0|255] "" XXX
CM_ "Front target ahead"
BO_ 1665 CLUSTER_F_A: 8 RADAR
SG_ LONG_DIST : 7|13@1+ (0.03,0) [0|255] "m" XXX
SG_ LAT_DIST : 20|11@1- (0.015,0) [-20|20] "m" XXX
SG_ SPEED : 31|10@1- (0.06944444444,0) [0|71] "m/s" XXX
SG_ ID : 0|6@1+ (1,0) [0|63] "" XXX
SG_ LAT_SPEED : 48|7@1- (0.1,0) [0|127] "m/s" XXX
SG_ RCS : 63|8@0+ (1,0) [0|255] "" XXX
CM_ "Left target"
BO_ 1666 CLUSTER_L: 8 RADAR
SG_ LONG_DIST : 7|13@1+ (0.03,0) [0|255] "m" XXX
SG_ LAT_DIST : 20|11@1- (0.015,0) [-20|20] "m" XXX
SG_ SPEED : 31|10@1- (0.06944444444,0) [0|71] "m/s" XXX
SG_ VALID : 6|1@0+ (1,0) [0|1] "" XXX
SG_ ID : 0|6@1+ (1,0) [0|63] "" XXX
SG_ LAT_SPEED : 48|7@1- (0.1,0) [0|127] "m/s" XXX
SG_ RCS : 63|8@0+ (1,0) [0|255] "" XXX
CM_ "Right target"
BO_ 1667 CLUSTER_R: 8 RADAR
SG_ LONG_DIST : 7|13@1+ (0.03,0) [0|255] "m" XXX
SG_ LAT_DIST : 20|11@1- (0.015,0) [-20|20] "m" XXX
SG_ SPEED : 31|10@1- (0.06944444444,0) [0|71] "m/s" XXX
SG_ VALID : 6|1@0+ (1,0) [0|1] "" XXX
SG_ ID : 0|6@1+ (1,0) [0|63] "" XXX
SG_ LAT_SPEED : 48|7@1- (0.1,0) [0|127] "m/s" XXX
SG_ RCS : 63|8@0+ (1,0) [0|255] "" XXX
CM_ "Left target ahead"
BO_ 1668 CLUSTER_L_A: 8 RADAR
SG_ LONG_DIST : 7|13@1+ (0.03,0) [0|255] "m" XXX
SG_ LAT_DIST : 20|11@1- (0.015,0) [-20|20] "m" XXX
SG_ SPEED : 31|10@1- (0.06944444444,0) [0|71] "m/s" XXX
SG_ VALID : 6|1@0+ (1,0) [0|1] "" XXX
SG_ ID : 0|6@1+ (1,0) [0|63] "" XXX
SG_ LAT_SPEED : 48|7@1- (0.1,0) [0|127] "m/s" XXX
SG_ RCS : 63|8@0+ (1,0) [0|255] "" XXX
CM_ "Right target ahead"
BO_ 1669 CLUSTER_R_A: 8 RADAR
SG_ LONG_DIST : 7|13@1+ (0.03,0) [0|255] "m" XXX
SG_ LAT_DIST : 20|11@1- (0.015,0) [-20|20] "m" XXX
SG_ SPEED : 31|10@1- (0.06944444444,0) [0|71] "m/s" XXX
SG_ VALID : 6|1@0+ (1,0) [0|1] "" XXX
SG_ ID : 0|6@1+ (1,0) [0|63] "" XXX
SG_ LAT_SPEED : 48|7@1- (0.1,0) [0|127] "m/s" XXX
SG_ RCS : 63|8@0+ (1,0) [0|255] "" XXX
+13 -5
View File
@@ -128,9 +128,10 @@ BO_ 466 PCM_CRUISE: 8 XXX
BO_ 467 PCM_CRUISE_2: 8 XXX BO_ 467 PCM_CRUISE_2: 8 XXX
SG_ PCM_FOLLOW_DISTANCE : 12|2@0+ (1,0) [0|3] "" XXX SG_ PCM_FOLLOW_DISTANCE : 12|2@0+ (1,0) [0|3] "" XXX
SG_ MAIN_ON : 15|1@0+ (1,0) [0|1] "" XXX
SG_ LOW_SPEED_LOCKOUT : 14|2@0+ (1,0) [0|3] "" XXX SG_ LOW_SPEED_LOCKOUT : 14|2@0+ (1,0) [0|3] "" XXX
SG_ MAIN_ON : 15|1@0+ (1,0) [0|1] "" XXX
SG_ SET_SPEED : 23|8@0+ (1,0) [0|255] "km/h" XXX SG_ SET_SPEED : 23|8@0+ (1,0) [0|255] "km/h" XXX
SG_ ACC_FAULTED : 47|1@0+ (1,0) [0|1] "" XXX
SG_ CHECKSUM : 63|8@0+ (1,0) [0|255] "" XXX SG_ CHECKSUM : 63|8@0+ (1,0) [0|255] "" XXX
BO_ 552 ACCELEROMETER: 8 XXX BO_ 552 ACCELEROMETER: 8 XXX
@@ -209,8 +210,9 @@ BO_ 836 PRE_COLLISION_2: 8 DSU
SG_ CHECKSUM : 63|8@0+ (1,0) [0|0] "" XXX SG_ CHECKSUM : 63|8@0+ (1,0) [0|0] "" XXX
BO_ 865 CLUTCH: 8 XXX BO_ 865 CLUTCH: 8 XXX
SG_ CLUTCH_RELEASED : 38|1@0+ (1,0) [0|1] "" XXX SG_ ACC_FAULTED : 32|1@0+ (1,0) [0|1] "" XXX
SG_ GAS_PEDAL_ALT : 23|8@0+ (0.005,0) [0|1] "" XXX SG_ GAS_PEDAL_ALT : 23|8@0+ (0.005,0) [0|1] "" XXX
SG_ CLUTCH_RELEASED : 38|1@0+ (1,0) [0|1] "" XXX
BO_ 869 DSU_CRUISE : 7 DSU BO_ 869 DSU_CRUISE : 7 DSU
SG_ RES_BTN : 3|1@0+ (1,0) [0|0] "" XXX SG_ RES_BTN : 3|1@0+ (1,0) [0|0] "" XXX
@@ -225,6 +227,7 @@ BO_ 921 PCM_CRUISE_SM: 8 XXX
SG_ MAIN_ON : 4|1@0+ (1,0) [0|1] "" XXX SG_ MAIN_ON : 4|1@0+ (1,0) [0|1] "" XXX
SG_ CRUISE_CONTROL_STATE : 11|4@0+ (1,0) [0|15] "" XXX SG_ CRUISE_CONTROL_STATE : 11|4@0+ (1,0) [0|15] "" XXX
SG_ DISTANCE_LINES : 14|2@0+ (1,0) [0|3] "" XXX SG_ DISTANCE_LINES : 14|2@0+ (1,0) [0|3] "" XXX
SG_ TEMP_ACC_FAULTED : 15|1@0+ (1,0) [0|1] "" XXX
SG_ UI_SET_SPEED : 31|8@0+ (1,0) [0|255] "" XXX SG_ UI_SET_SPEED : 31|8@0+ (1,0) [0|255] "" XXX
BO_ 951 ESP_CONTROL: 8 ESP BO_ 951 ESP_CONTROL: 8 ESP
@@ -249,7 +252,7 @@ BO_ 1005 REVERSE_CAMERA_STATE: 2 BGM
BO_ 1009 PCM_CRUISE_ALT: 8 XXX BO_ 1009 PCM_CRUISE_ALT: 8 XXX
SG_ MAIN_ON : 13|1@0+ (1,0) [0|3] "" XXX SG_ MAIN_ON : 13|1@0+ (1,0) [0|3] "" XXX
SG_ CRUISE_STATE : 10|1@0+ (1,0) [0|1] "" XXX SG_ CRUISE_STATE : 10|1@0+ (1,0) [0|1] "" XXX
SG_ SET_SPEED : 23|8@0+ (1,0) [0|255] "mph" XXX SG_ UI_SET_SPEED : 23|8@0+ (1,0) [0|255] "mph" XXX
BO_ 1020 SOLAR_SENSOR: 8 XXX BO_ 1020 SOLAR_SENSOR: 8 XXX
SG_ LUX_SENSOR : 55|13@0+ (1,0) [0|0] "" XXX SG_ LUX_SENSOR : 55|13@0+ (1,0) [0|0] "" XXX
@@ -373,6 +376,7 @@ BO_ 1552 BODY_CONTROL_STATE_2: 8 XXX
SG_ METER_SLIDER_BRIGHTNESS_PCT : 30|7@0+ (1,0) [12|100] "%" XXX SG_ METER_SLIDER_BRIGHTNESS_PCT : 30|7@0+ (1,0) [12|100] "%" XXX
SG_ METER_SLIDER_LOW_BRIGHTNESS : 37|1@0+ (1,0) [0|1] "" XXX SG_ METER_SLIDER_LOW_BRIGHTNESS : 37|1@0+ (1,0) [0|1] "" XXX
SG_ METER_SLIDER_DIMMED : 38|1@0+ (1,0) [0|1] "" XXX SG_ METER_SLIDER_DIMMED : 38|1@0+ (1,0) [0|1] "" XXX
SG_ UNITS : 63|3@0+ (1,0) [1|4] "" XXX
BO_ 1553 UI_SETTING: 8 XXX BO_ 1553 UI_SETTING: 8 XXX
SG_ UNITS : 26|2@0+ (1,0) [0|3] "" XXX SG_ UNITS : 26|2@0+ (1,0) [0|3] "" XXX
@@ -415,6 +419,7 @@ CM_ SG_ 37 STEER_FRACTION "1/15th of the signal STEER_ANGLE, which is 1.5 deg; n
CM_ SG_ 37 STEER_RATE "factor is tbd"; CM_ SG_ 37 STEER_RATE "factor is tbd";
CM_ SG_ 466 ACCEL_NET "net acceleration produced by the system, given ACCEL_CMD, road grade and other factors"; CM_ SG_ 466 ACCEL_NET "net acceleration produced by the system, given ACCEL_CMD, road grade and other factors";
CM_ SG_ 466 CRUISE_STATE "Active state is 8, if standstill is requested will switch to state 11(3 sec timer), after timer is elapsed will switch into state 7(standstill). If plus button was pressed - status 9, minus button pressed - status 10"; CM_ SG_ 466 CRUISE_STATE "Active state is 8, if standstill is requested will switch to state 11(3 sec timer), after timer is elapsed will switch into state 7(standstill). If plus button was pressed - status 9, minus button pressed - status 10";
CM_ SG_ 467 ACC_FAULTED "1 when ACC is faulted and the PCM disallows engagement";
CM_ SG_ 467 SET_SPEED "43 km/h are shown as 28 mph, so conversion isn't perfect"; CM_ SG_ 467 SET_SPEED "43 km/h are shown as 28 mph, so conversion isn't perfect";
CM_ SG_ 467 LOW_SPEED_LOCKOUT "in low speed lockout, system would always disengage below 28mph"; CM_ SG_ 467 LOW_SPEED_LOCKOUT "in low speed lockout, system would always disengage below 28mph";
CM_ SG_ 560 BRAKE_PRESSED "another brake pressed?"; CM_ SG_ 560 BRAKE_PRESSED "another brake pressed?";
@@ -436,10 +441,12 @@ CM_ SG_ 835 PERMIT_BRAKING "Original ACC has this going high when a car in front
CM_ SG_ 835 ACCEL_CMD_ALT "Copy of main ACCEL_CMD, but across 8 bits instead of 16 bits like ACCEL_CMD. Unsure if only informational or has an effect. Likely informational as existing openpilot sets this to 0 and no loss of functionality observed. Originally 'AT_RAW' in leaked toyota_2017_ref_pt.dbc file."; CM_ SG_ 835 ACCEL_CMD_ALT "Copy of main ACCEL_CMD, but across 8 bits instead of 16 bits like ACCEL_CMD. Unsure if only informational or has an effect. Likely informational as existing openpilot sets this to 0 and no loss of functionality observed. Originally 'AT_RAW' in leaked toyota_2017_ref_pt.dbc file.";
CM_ SG_ 865 GAS_PEDAL_ALT "copy of main GAS_PEDAL. Both use 8 bits. Might indicate that this message is for pedals."; CM_ SG_ 865 GAS_PEDAL_ALT "copy of main GAS_PEDAL. Both use 8 bits. Might indicate that this message is for pedals.";
CM_ SG_ 865 CLUTCH_RELEASED "boolean of clutch for 6MT."; CM_ SG_ 865 CLUTCH_RELEASED "boolean of clutch for 6MT.";
CM_ SG_ 865 ACC_FAULTED "1 when ACC is faulted and the PCM disallows engagement";
CM_ SG_ 921 UI_SET_SPEED "set speed shown in the vehicle's UI with the vehicle's unit"; CM_ SG_ 921 UI_SET_SPEED "set speed shown in the vehicle's UI with the vehicle's unit";
CM_ SG_ 921 TEMP_ACC_FAULTED "1 when the UI is displaying or playing fault-related alerts or sounds. Also 1 when pressing main on.";
CM_ SG_ 951 BRAKE_LIGHTS_ACC "brake lights when ACC commands decel"; CM_ SG_ 951 BRAKE_LIGHTS_ACC "brake lights when ACC commands decel";
CM_ SG_ 956 GEAR "on 6MT, only R shows."; CM_ SG_ 956 GEAR "on 6MT, only R shows.";
CM_ SG_ 1009 SET_SPEED "units seem to be whatever the car is set to"; CM_ SG_ 1009 UI_SET_SPEED "units seem to be whatever the car is set to";
CM_ SG_ 1041 PCS_INDICATOR "Pre-Collision System Indicator"; CM_ SG_ 1041 PCS_INDICATOR "Pre-Collision System Indicator";
CM_ SG_ 1041 PCS_SENSITIVITY "Pre-Collision System Sensitivity"; CM_ SG_ 1041 PCS_SENSITIVITY "Pre-Collision System Sensitivity";
CM_ SG_ 1042 LDA_SA_TOGGLE "LDA Steering Assist Toggle"; CM_ SG_ 1042 LDA_SA_TOGGLE "LDA Steering Assist Toggle";
@@ -472,7 +479,7 @@ CM_ SG_ 1163 OVSPVALL "-5 at start then 2 after 2 seconds";
CM_ SG_ 1163 OVSPVALM "-5 at start then 5 after 2 seconds"; CM_ SG_ 1163 OVSPVALM "-5 at start then 5 after 2 seconds";
CM_ SG_ 1163 OVSPVALH "-5 at start then 10 after 2 seconds"; CM_ SG_ 1163 OVSPVALH "-5 at start then 10 after 2 seconds";
CM_ SG_ 1163 TSRSPU "always 1"; CM_ SG_ 1163 TSRSPU "always 1";
CM_ SG_ 1552 UI_SPEED "Vehicle's speedometer's display speed after Toyota's offset was applied, uses vehicle's unit"; CM_ SG_ 1552 UI_SPEED "Does not appear to match dash";
CM_ SG_ 1552 METER_SLIDER_BRIGHTNESS_PCT "Combination display brightness setting, scales from 12 per cent to 100 per cent, reflects combination meter settings only, not linked with headlight state"; CM_ SG_ 1552 METER_SLIDER_BRIGHTNESS_PCT "Combination display brightness setting, scales from 12 per cent to 100 per cent, reflects combination meter settings only, not linked with headlight state";
CM_ SG_ 1552 METER_SLIDER_LOW_BRIGHTNESS "Combination display low brightness mode, also controls footwell lighting"; CM_ SG_ 1552 METER_SLIDER_LOW_BRIGHTNESS "Combination display low brightness mode, also controls footwell lighting";
CM_ SG_ 1552 METER_SLIDER_DIMMED "Combination display slider not at max, reflects combination meter settings only, not linked with headlight state"; CM_ SG_ 1552 METER_SLIDER_DIMMED "Combination display slider not at max, reflects combination meter settings only, not linked with headlight state";
@@ -524,6 +531,7 @@ VAL_ 1162 TSGN3 0 "none" 1 "speed sign" 2 "0 unlimited" 7 "unlimited" 16 "highwa
VAL_ 1162 SPLSGN3 15 "conditional blank" 4 "wet road" 5 "rain" 0 "none"; VAL_ 1162 SPLSGN3 15 "conditional blank" 4 "wet road" 5 "rain" 0 "none";
VAL_ 1552 METER_SLIDER_LOW_BRIGHTNESS 1 "Low brightness mode, footwell lights off" 0 "Normal mode, footwell lights on"; VAL_ 1552 METER_SLIDER_LOW_BRIGHTNESS 1 "Low brightness mode, footwell lights off" 0 "Normal mode, footwell lights on";
VAL_ 1552 METER_SLIDER_DIMMED 1 "Dimmed" 0 "Not Dimmed"; VAL_ 1552 METER_SLIDER_DIMMED 1 "Dimmed" 0 "Not Dimmed";
VAL_ 1552 UNITS 1 "km (km/L)" 2 "km (L/100km)" 3 "miles (MPG US)" 4 "miles (MPG Imperial)";
VAL_ 1553 UNITS 1 "km" 2 "miles"; VAL_ 1553 UNITS 1 "km" 2 "miles";
VAL_ 1556 TURN_SIGNALS 3 "none" 2 "right" 1 "left"; VAL_ 1556 TURN_SIGNALS 3 "none" 2 "right" 1 "left";
VAL_ 1592 LOCK_STATUS 0 "locked" 1 "unlocked"; VAL_ 1592 LOCK_STATUS 0 "locked" 1 "unlocked";
+182 -71
View File
@@ -36,39 +36,69 @@ BS_:
BU_: Airbag_MQB BAP_Tester_MQB BMS_MQB Datenlogger_MQB Gateway_MQB Getriebe_DQ_Hybrid_MQB Getriebe_DQ_MQB LEH_MQB Motor_Diesel_MQB Motor_Hybrid_MQB Motor_Otto_MQB SAK_MQB Waehlhebel_MQB Vector__XXX l c i XXX BU_: Airbag_MQB BAP_Tester_MQB BMS_MQB Datenlogger_MQB Gateway_MQB Getriebe_DQ_Hybrid_MQB Getriebe_DQ_MQB LEH_MQB Motor_Diesel_MQB Motor_Hybrid_MQB Motor_Otto_MQB SAK_MQB Waehlhebel_MQB Vector__XXX l c i XXX
BO_ 290 ACC_06: 8 Gateway_MQB BO_ 290 ACC_06: 8 XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" Getriebe_DQ_Hybrid_MQB,Getriebe_DQ_MQB,Motor_Diesel_MQB,Motor_Hybrid_MQB,Motor_Otto_MQB SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ COUNTER : 8|4@1+ (1,0) [0|15] "" Getriebe_DQ_Hybrid_MQB,Getriebe_DQ_MQB,Motor_Diesel_MQB,Motor_Hybrid_MQB,Motor_Otto_MQB SG_ COUNTER : 8|4@1+ (1,0) [0|15] "" XXX
SG_ ACC_limitierte_Anfahrdyn : 12|1@1+ (1,0) [0|1] "" Motor_Diesel_MQB,Motor_Hybrid_MQB,Motor_Otto_MQB SG_ ACC_limitierte_Anfahrdyn : 12|1@1+ (1,0) [0|1] "" XXX
SG_ ACC_zul_Regelabw_unten : 16|6@1+ (0.024,0) [0|1.512] "Unit_MeterPerSeconSquar" Getriebe_DQ_Hybrid_MQB,Getriebe_DQ_MQB,Motor_Diesel_MQB,Motor_Hybrid_MQB,Motor_Otto_MQB SG_ ACC_nachtr_Stopp_Anf : 13|1@1+ (1,0) [0|1] "" XXX
SG_ ACC_StartStopp_Info : 22|2@1+ (1,0) [0|3] "" Motor_Diesel_MQB,Motor_Otto_MQB SG_ ACC_DynErhoehung : 14|1@1+ (1.0,0.0) [0.0|1] "" XXX
SG_ ACC_Sollbeschleunigung_02 : 24|11@1+ (0.005,-7.22) [-7.22|3.005] "Unit_MeterPerSeconSquar" Getriebe_DQ_Hybrid_MQB,Getriebe_DQ_MQB,Motor_Diesel_MQB,Motor_Hybrid_MQB,Motor_Otto_MQB SG_ ACC_Freilaufstrategie_TSK : 15|1@1+ (1.0,0.0) [0.0|1] "" XXX
SG_ ACC_zul_Regelabw_oben : 35|5@1+ (0.0625,0) [0|1.9375] "Unit_MeterPerSeconSquar" Getriebe_DQ_Hybrid_MQB,Getriebe_DQ_MQB,Motor_Diesel_MQB,Motor_Hybrid_MQB,Motor_Otto_MQB SG_ ACC_zul_Regelabw_unten : 16|6@1+ (0.024,0) [0|1.512] "Unit_MeterPerSeconSquar" XXX
SG_ ACC_neg_Sollbeschl_Grad_02 : 40|8@1+ (0.05,0) [0|12.75] "Unit_MeterPerCubicSecon" Motor_Diesel_MQB,Motor_Hybrid_MQB,Motor_Otto_MQB SG_ ACC_StartStopp_Info : 22|2@1+ (1,0) [0|3] "" XXX
SG_ ACC_pos_Sollbeschl_Grad_02 : 48|8@1+ (0.05,0) [0|12.75] "Unit_MeterPerCubicSecon" Motor_Diesel_MQB,Motor_Hybrid_MQB,Motor_Otto_MQB SG_ ACC_Sollbeschleunigung_02 : 24|11@1+ (0.005,-7.22) [-7.22|3.005] "Unit_MeterPerSeconSquar" XXX
SG_ ACC_Anfahren : 56|1@1+ (1,0) [0|1] "" Getriebe_DQ_Hybrid_MQB,Getriebe_DQ_MQB,Motor_Diesel_MQB,Motor_Hybrid_MQB,Motor_Otto_MQB SG_ ACC_zul_Regelabw_oben : 35|5@1+ (0.0625,0) [0|1.9375] "Unit_MeterPerSeconSquar" XXX
SG_ ACC_Anhalten : 57|1@1+ (1,0) [0|1] "" Getriebe_DQ_Hybrid_MQB,Getriebe_DQ_MQB,Motor_Diesel_MQB,Motor_Hybrid_MQB,Motor_Otto_MQB SG_ ACC_neg_Sollbeschl_Grad_02 : 40|8@1+ (0.05,0) [0|12.75] "Unit_MeterPerCubicSecon" XXX
SG_ ACC_Typ : 58|2@1+ (1,0) [0|3] "" Motor_Diesel_MQB,Motor_Hybrid_MQB,Motor_Otto_MQB SG_ ACC_pos_Sollbeschl_Grad_02 : 48|8@1+ (0.05,0) [0|12.75] "Unit_MeterPerCubicSecon" XXX
SG_ ACC_Status_ACC : 60|3@1+ (1,0) [0|7] "" Getriebe_DQ_Hybrid_MQB,Getriebe_DQ_MQB,Motor_Diesel_MQB,Motor_Hybrid_MQB,Motor_Otto_MQB SG_ ACC_Anfahren : 56|1@1+ (1,0) [0|1] "" XXX
SG_ ACC_Minimale_Bremsung : 63|1@1+ (1,0) [0|1] "" Motor_Diesel_MQB,Motor_Hybrid_MQB,Motor_Otto_MQB SG_ ACC_Anhalten : 57|1@1+ (1,0) [0|1] "" XXX
SG_ ACC_Typ : 58|2@1+ (1,0) [0|3] "" XXX
SG_ ACC_Status_ACC : 60|3@1+ (1,0) [0|7] "" XXX
SG_ ACC_Minimale_Bremsung : 63|1@1+ (1,0) [0|1] "" XXX
BO_ 279 ACC_10: 8 Gateway_MQB BO_ 279 ACC_10: 8 XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" Airbag_MQB SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ COUNTER : 8|4@1+ (1,0) [0|15] "" Airbag_MQB SG_ COUNTER : 8|4@1+ (1,0) [0|15] "" XXX
SG_ AWV1_Anf_Prefill : 16|1@1+ (1,0) [0|1] "" Airbag_MQB SG_ AWV1_Anf_Prefill : 16|1@1+ (1,0) [0|1] "" XXX
SG_ ANB_CM_Info : 17|1@1+ (1,0) [0|1] "" Vector__XXX SG_ ANB_CM_Info : 17|1@1+ (1,0) [0|1] "" XXX
SG_ AWV2_Freigabe : 18|1@1+ (1,0) [0|1] "" Airbag_MQB SG_ AWV2_Freigabe : 18|1@1+ (1,0) [0|1] "" XXX
SG_ AWV1_HBA_Param : 19|2@1+ (1,0) [0|3] "" Vector__XXX SG_ AWV1_HBA_Param : 19|2@1+ (1,0) [0|3] "" XXX
SG_ AWV2_Ruckprofil : 21|3@1+ (1,0) [0|7] "" Vector__XXX SG_ AWV2_Ruckprofil : 21|3@1+ (1,0) [0|7] "" XXX
SG_ AWV2_Priowarnung : 24|1@1+ (1,0) [0|1] "" Vector__XXX SG_ AWV2_Priowarnung : 24|1@1+ (1,0) [0|1] "" XXX
SG_ ANB_CM_Anforderung : 25|1@1+ (1,0) [0|1] "" Airbag_MQB SG_ ANB_CM_Anforderung : 25|1@1+ (1,0) [0|1] "" XXX
SG_ ANB_Info_Teilbremsung : 26|1@1+ (1,0) [0|1] "" Vector__XXX SG_ ANB_Info_Teilbremsung : 26|1@1+ (1,0) [0|1] "" XXX
SG_ ANB_Notfallblinken : 27|1@1+ (1,0) [0|1] "" Vector__XXX SG_ ANB_Notfallblinken : 27|1@1+ (1,0) [0|1] "" XXX
SG_ ANB_Teilbremsung_Freigabe : 28|1@1+ (1,0) [0|1] "" Airbag_MQB SG_ ANB_Teilbremsung_Freigabe : 28|1@1+ (1,0) [0|1] "" XXX
SG_ ANB_Zielbrems_Teilbrems_Verz_Anf : 29|10@1+ (0.024,-20.016) [-20.016|4.536] "Unit_MeterPerSeconSquar" Airbag_MQB SG_ ANB_Zielbrems_Teilbrems_Verz_Anf : 29|10@1+ (0.024,-20.016) [-20.016|4.536] "Unit_MeterPerSeconSquar" XXX
SG_ ANB_Zielbremsung_Freigabe : 39|1@1+ (1,0) [0|1] "" Airbag_MQB SG_ ANB_Zielbremsung_Freigabe : 39|1@1+ (1,0) [0|1] "" XXX
SG_ AWV_Vorstufe : 40|1@1+ (1,0) [0|1] "" Vector__XXX SG_ AWV_Vorstufe : 40|1@1+ (1,0) [0|1] "" XXX
SG_ AWV_Halten : 41|1@1+ (1,0) [0|1] "" Vector__XXX SG_ AWV_Halten : 41|1@1+ (1,0) [0|1] "" XXX
SG_ AWV_CityANB_Auspraegung : 42|1@1+ (1,0) [0|1] "" XXX
SG_ PCF_Freigabe : 43|1@1+ (1,0) [0|1] "" XXX
SG_ AWV1_ECD_Anlauf : 44|1@1+ (1,0) [0|1] "" XXX
SG_ AWV_AWA_VZ_Anf_Lenkmomoffset : 46|1@1+ (1.0,0.0) [0.0|1] "" XXX
SG_ AWV_AWA_Anf_Lenkmomoffset : 47|9@1+ (0.01,0) [0.00|5.11] "Unit_NewtoMeter" XXX
SG_ PCF_Time_to_collision : 56|8@1+ (0.01,0) [0|2.5] "Unit_Secon" XXX
BO_ 679 ACC_13: 8 XXX
SG_ ACC_Regelgeschw : 12|10@1+ (0.32,0) [0|327.04] "Unit_KiloMeterPerHour" XXX
SG_ ACC_Einheit_maxSetzgeschw : 22|1@1+ (1,0) [0|1] "" XXX
SG_ ACC_maxSetzgeschw : 23|9@1+ (1,0) [0|510] "" XXX
SG_ ACC_minRegelgeschw : 32|8@1+ (0.32,0) [0|81.28] "Unit_KiloMeterPerHour" XXX
SG_ ACC_maxRegelgeschw : 40|8@1+ (0.32,0) [0|81.28] "Unit_KiloMeterPerHour" XXX
SG_ ACC_Tempolimitassistent : 48|2@1+ (1,0) [0|3] "" XXX
SG_ ACC_Kurvenassistent : 52|3@1+ (1,0) [0|7] "" XXX
SG_ ACC_RUV : 56|2@1+ (1,0) [0|3] "" XXX
SG_ ACC_Tachokranz : 58|1@1+ (1,0) [0|1] "" XXX
SG_ ACC_Typ_Tachokranz_unten : 59|1@1+ (1,0) [0|1] "" XXX
SG_ ACC_ENG_Texte : 60|2@1+ (1,0) [0|3] "" XXX
BO_ 681 ACC_15: 8 XXX
SG_ AWV_Warnung : 16|3@1+ (1,0) [0|7] "" XXX
SG_ AWV_Texte : 24|3@1+ (1,0) [0|7] "" XXX
SG_ AWV_Status_Anzeige : 32|2@1+ (1,0) [0|3] "" XXX
SG_ AWV_Einstellung_System_FSG : 34|1@1+ (1,0) [0|1] "" XXX
SG_ AWV_Einstellung_Warnung_FSG : 36|3@1+ (1,0) [0|7] "" XXX
SG_ AWV_Warnlevel : 58|6@1+ (1,0) [0|63] "" XXX
BO_ 64 Airbag_01: 8 Airbag_MQB BO_ 64 Airbag_01: 8 Airbag_MQB
SG_ Airbag_01_CRC : 0|8@1+ (1,0) [0|255] "" BMS_MQB,Gateway_MQB,LEH_MQB,Motor_Diesel_MQB,Motor_Hybrid_MQB,Motor_Otto_MQB SG_ Airbag_01_CRC : 0|8@1+ (1,0) [0|255] "" BMS_MQB,Gateway_MQB,LEH_MQB,Motor_Diesel_MQB,Motor_Hybrid_MQB,Motor_Otto_MQB
@@ -1237,33 +1267,35 @@ BO_ 919 LDW_02: 8 XXX
BO_ 780 ACC_02: 8 XXX BO_ 780 ACC_02: 8 XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ COUNTER : 8|4@1+ (1,0) [0|15] "" XXX SG_ COUNTER : 8|4@1+ (1,0) [0|15] "" XXX
SG_ ACC_Wunschgeschw : 12|10@1+ (0.32,0) [0.00|326.72] "Unit_KiloMeterPerHour" XXX SG_ ACC_Wunschgeschw_02 : 12|10@1+ (0.32,0) [0|327.04] "Unit_KiloMeterPerHour" XXX
SG_ ACC_Status_Prim_Anz : 22|2@1+ (1.0,0.0) [0.0|3] "" XXX SG_ ACC_Status_Prim_Anz : 22|2@1+ (1,0) [0|3] "" XXX
SG_ ACC_Abstandsindex : 24|10@1+ (1,0) [1|1021] "" XXX SG_ ACC_Abstandsindex : 24|10@1+ (1,0) [1|1021] "" XXX
SG_ ACC_Akustik : 34|3@1+ (1.0,0.0) [0.0|7] "" XXX SG_ ACC_Akustik_02 : 34|2@1+ (1,0) [0|3] "" XXX
SG_ ACC_Gesetzte_Zeitluecke : 37|3@1+ (1.0,0.0) [0.0|7] "" XXX SG_ ACC_Warnung_Verkehrszeichen_1 : 36|1@1+ (1,0) [0|1] "" XXX
SG_ ACC_Optischer_Fahrerhinweis : 40|1@1+ (1.0,0.0) [0.0|1] "" XXX SG_ ACC_Gesetzte_Zeitluecke : 37|3@1+ (1,0) [0|7] "" XXX
SG_ ACC_Typ_Tachokranz : 41|1@1+ (1.0,0.0) [0.0|1] "" XXX SG_ ACC_Optischer_Fahrerhinweis : 40|1@1+ (1,0) [0|1] "" XXX
SG_ ACC_Anzeige_Zeitluecke : 42|1@1+ (1.0,0.0) [0.0|1] "" XXX SG_ ACC_Typ_Tachokranz : 41|1@1+ (1,0) [0|1] "" XXX
SG_ ACC_Tachokranz : 43|1@1+ (1.0,0.0) [0.0|1] "" XXX SG_ ACC_Anzeige_Zeitluecke : 42|1@1+ (1,0) [0|1] "" XXX
SG_ ACC_Display_Prio : 44|2@1+ (1.0,0.0) [0.0|3] "" XXX SG_ ACC_Tachokranz : 43|1@1+ (1,0) [0|1] "" XXX
SG_ ACC_Relevantes_Objekt : 46|2@1+ (1.0,0.0) [0.0|3] "" XXX SG_ ACC_Display_Prio : 44|2@1+ (1,0) [0|3] "" XXX
SG_ ACC_Texte_Primaeranz : 48|7@1+ (1.0,0.0) [0.0|127] "" XXX SG_ ACC_Relevantes_Objekt : 46|2@1+ (1,0) [0|3] "" XXX
SG_ ACC_Wunschgeschw_erreicht : 55|1@1+ (1.0,0.0) [0.0|1] "" XXX SG_ ACC_Texte_Primaeranz : 48|7@1+ (1,0) [0|127] "" XXX
SG_ ACC_Status_Anzeige : 61|3@1+ (1.0,0.0) [0.0|7] "" XXX SG_ ACC_Wunschgeschw_erreicht : 55|1@1+ (1,0) [0|1] "" XXX
SG_ ACC_Typ_Tachokranz_unten : 60|1@1+ (1,0) [0|1] "" XXX
SG_ ACC_Status_Anzeige : 61|3@1+ (1,0) [0|7] "" XXX
BO_ 302 ACC_07: 8 XXX BO_ 302 ACC_07: 8 XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ COUNTER : 8|4@1+ (1,0) [0|15] "" XXX SG_ COUNTER : 8|4@1+ (1,0) [0|15] "" XXX
SG_ ACC_Distance_to_Stop : 12|11@1+ (0.01,0) [0|1] "m" XXX SG_ ACC_Anhalteweg : 12|11@1+ (0.01,0) [0|20.45] "Unit_Meter" XXX
SG_ ACC_Hold_Request : 23|1@1+ (1,0) [0|1] "x" XXX SG_ ACC_Anhalten : 23|1@1+ (1,0) [0|1] "" XXX
SG_ ACC_Boost_Request : 24|1@1+ (1,0) [0|1] "" XXX SG_ ACC_Boost_Anf : 24|1@1+ (1,0) [0|1] "" XXX
SG_ ACC_Freewheel_Request : 25|1@1+ (1,0) [0|1] "" XXX SG_ ACC_Freilauf_Anf : 25|1@1+ (1,0) [0|1] "" XXX
SG_ ACC_Freewheel_Type : 26|2@1+ (1,0) [0|3] "enum" XXX SG_ ACC_Freilauf_Info : 26|2@1+ (1,0) [0|3] "" XXX
SG_ ACC_Hold_Type : 28|3@1+ (1,0) [0|15] "enum" XXX SG_ ACC_Anforderung_HMS : 28|3@1+ (1,0) [0|7] "" XXX
SG_ ACC_Hold_Release : 31|1@1+ (1,0) [0|1] "" XXX SG_ ACC_Anfahren : 31|1@1+ (1,0) [0|1] "" XXX
SG_ ACC_Accel_Secondary : 32|8@1+ (0.03,-4.6) [-4.6|2.99] "m/s2" XXX SG_ ACC_Folgebeschl : 32|8@1+ (0.03,-4.6) [-4.6|2.99] "Unit_MeterPerSeconSquar" XXX
SG_ ACC_Accel_TSK : 53|11@1+ (0.005,-7.22) [-7.22|3.005] "m/s2" XXX SG_ ACC_Sollbeschleunigung_02 : 53|11@1+ (0.005,-7.22) [-7.22|3.005] "Unit_MeterPerSeconSquar" XXX
BO_ 264 Fahrwerk_01: 8 XXX BO_ 264 Fahrwerk_01: 8 XXX
SG_ Fahrwerk_01_BZ : 8|4@1+ (1,0) [0|15] "" XXX SG_ Fahrwerk_01_BZ : 8|4@1+ (1,0) [0|15] "" XXX
@@ -1297,15 +1329,18 @@ BO_ 783 SWA_01: 8 Gateway_MQB
BO_ 804 ACC_04: 8 XXX BO_ 804 ACC_04: 8 XXX
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
SG_ COUNTER : 8|4@1+ (1,0) [0|15] "" XXX SG_ COUNTER : 8|4@1+ (1,0) [0|15] "" XXX
SG_ ACC_Texte_Zusatzanz : 16|6@1+ (1.0,0.0) [0.0|63] "" XXX SG_ ACC_Texte_Sekundaeranz : 12|4@1+ (1,0) [0|15] "" XXX
SG_ ACC_Status_Zusatzanz : 22|5@1+ (1.0,0.0) [0.0|31] "" XXX SG_ ACC_Texte_Zusatzanz : 16|6@1+ (1,0) [0|63] "" XXX
SG_ ACC_Texte : 27|5@1+ (1.0,0.0) [0.0|31] "" XXX SG_ ACC_Status_Zusatzanz : 22|5@1+ (1,0) [0|31] "" XXX
SG_ ACC_Texte_braking_guard : 32|3@1+ (1.0,0.0) [0.0|7] "" XXX SG_ ACC_Texte : 27|5@1+ (1,0) [0|31] "" XXX
SG_ ACC_Warnhinweis : 35|1@1+ (1.0,0.0) [0.0|1] "" XXX SG_ ACC_Texte_braking_guard : 32|3@1+ (1,0) [0|7] "" XXX
SG_ ACC_Geschw_Zielfahrzeug : 40|10@1+ (0.32,0) [0.00|326.72] "Unit_KiloMeterPerHour" XXX SG_ ACC_Warnhinweis : 35|1@1+ (1,0) [0|1] "" XXX
SG_ ACC_Charisma_FahrPr : 56|3@1+ (1.0,0.0) [0.0|7] "" XXX SG_ ACC_Zeitluecke_Abstandswarner : 36|6@1+ (0.1,0) [0|6] "Unit_Secon" XXX
SG_ ACC_Charisma_Status : 59|2@1+ (1.0,0.0) [0.0|3] "" XXX SG_ ACC_Abstand_Abstandswarner : 42|9@1+ (1,0) [0|508] "" XXX
SG_ ACC_Charisma_Umschaltung : 61|2@1+ (1.0,0.0) [0.0|3] "" XXX SG_ ACC_Tempolimit : 51|5@1+ (1,0) [0|31] "" XXX
SG_ ACC_Charisma_FahrPr : 56|4@1+ (1,0) [0|15] "" XXX
SG_ ACC_Charisma_Status : 60|2@1+ (1,0) [0|3] "" XXX
SG_ ACC_Texte_Abstandswarner : 62|2@1+ (1,0) [0|3] "" XXX
BO_ 917 LWR_AFS_01: 8 XXX BO_ 917 LWR_AFS_01: 8 XXX
@@ -1437,14 +1472,90 @@ CM_ SG_ 1720 KBI_Variante "Zeigt an ob es sich um ein konventionelles Zeiger-Kom
CM_ SG_ 1720 KBI_Variante_USA "In diesem Signal wird die HW-Variante des Kombis ausgegeben, ACC plausibilisiert auf dieses Signal hin seine US-Codierung"; CM_ SG_ 1720 KBI_Variante_USA "In diesem Signal wird die HW-Variante des Kombis ausgegeben, ACC plausibilisiert auf dieses Signal hin seine US-Codierung";
VAL_ 159 EPS_HCA_Status 0 "disabled" 1 "initializing" 2 "fault" 3 "ready" 4 "rejected" 5 "active"; VAL_ 159 EPS_HCA_Status 0 "disabled" 1 "initializing" 2 "fault" 3 "ready" 4 "rejected" 5 "active" ;
VAL_ 173 GE_Fahrstufe 5 "P" 6 "R" 7 "N" 8 "D" 9 "S" 10 "E" 13 "T" 14 "T"; VAL_ 173 GE_Fahrstufe 5 "P" 6 "R" 7 "N" 8 "D" 9 "S" 10 "E" 13 "T" 14 "T" ;
VAL_ 288 TSK_Status 0 "init" 1 "disabled" 2 "enabled" 3 "regulating" 4 "accel_pedal_override" 5 "brake_only" 6 "temp_fault" 7 "perm_fault"; VAL_ 288 TSK_Status 0 "init" 1 "disabled" 2 "enabled" 3 "regulating" 4 "accel_pedal_override" 5 "brake_only" 6 "temp_fault" 7 "perm_fault" ;
VAL_ 302 ACC_Freewheel_Type 0 "freewheel_released" 1 "freewheel_not_permitted" 2 "freewheel_not_released" 3 "freewheel_requested" ; VAL_ 780 ACC_Wunschgeschw_02 1023 "keine_Anzeige" ;
VAL_ 302 ACC_Hold_Type 0 "no_request" 1 "hold" 2 "park" 3 "hold_standby" 4 "startup" 5 "loosen_over_ramp" ; VAL_ 780 ACC_Status_Prim_Anz 0 "Symbol nicht beleuchtet" 1 "Farbe 1 (typisch 'gruen')" 2 "Farbe 2 (typisch 'rot')" 3 "Farbe 3 (typisch 'gelb')" ;
VAL_ 391 GearPosition 2 "P" 3 "R" 4 "N" 5 "D" 6 "D"; VAL_ 780 ACC_Abstandsindex 0 "Sonderanzeige_graue_Fahrbahn" 1022 "Sonderanzeige_graue_Fahrbahn" 1023 "Sonderanzeige_Fahrbahn_mit_gruenem_roten_Bereich" ;
VAL_ 391 RegenBrakingMode 0 "default" 1 "B1" 2 "B2" 3 "B3"; VAL_ 780 ACC_Akustik_02 0 "keine_Akustik" 1 "hochpriore_Akustik" 2 "niederpriore_Akustik" 3 "hochpriore_Dauerakustik" ;
VAL_ 870 Fast_Send_Rate_Active 0 "1 Hz" 1 "50 Hz"; VAL_ 780 ACC_Warnung_Verkehrszeichen_1 0 "keine_Warnung_Initialwert" 1 "Warnung" ;
VAL_ 780 ACC_Gesetzte_Zeitluecke 0 "keine_Anzeige" 1 "Zeitluecke_1" 2 "Zeitluecke_2" 3 "Zeitluecke_3" 4 "Zeitluecke_4" 5 "Zeitluecke_5" 6 "nicht_definiert" 7 "nicht_definiert" ;
VAL_ 780 ACC_Optischer_Fahrerhinweis 0 "optischer_Fahrerhinweis_AUS" 1 "optischer_Fahrerhinweis_EIN" ;
VAL_ 780 ACC_Typ_Tachokranz 0 "Tachokranz_lang" 1 "Tachokranz_kurz" ;
VAL_ 780 ACC_Anzeige_Zeitluecke 0 "Anzeige_Zeitluecke_nicht_angefordert" 1 "Anzeige_Zeitluecke_angefordert" ;
VAL_ 780 ACC_Tachokranz 0 "Tachokranz_nicht_beleuchtet" 1 "Tachokranz_beleuchtet" ;
VAL_ 780 ACC_Display_Prio 0 "hoechste_Prio" 1 "mittlere_Prio" 2 "geringe_Prio" 3 "keine_Prio" ;
VAL_ 780 ACC_Relevantes_Objekt 0 "Symbol_nicht_beleuchtet" 1 "Farbe_1_typisch_gruen" 2 "Farbe_2_typisch_rot" 3 "Farbe_3_typisch_gelb" ;
VAL_ 780 ACC_Texte_Primaeranz 0 "keine Anzeige" 1 "ACC nicht verfuegbar !" 2 "Auto_Auto_ _ _" 3 "Auto_ _Auto_ _" 4 "Auto_ _ _Auto_" 5 "Auto_ _ _ _Auto" 6 "Auto_Auto_ _ _ Gong (durchgestrichen)" 7 "Auto_ _Auto_ _ Gong (durchgestrichen)" 8 "Auto_ _ _Auto_ Gong (durchgestrichen)" 9 "Auto_ _ _ _Auto Gong (durchgestrichen)" 10 "ACC bereit" 11 "keine Abstandsregelung" 12 "ACC Sensor Sicht !" 13 "ACC nicht verfuegbar" 14 "o o o" 15 "Hochschalten" 16 "ESP Eingriff" 17 "Herunterschalten" 18 "Parkbremse !" 19 "Geschwindigkeitsgrenze" 20 "Waehlhebelposition !" 21 "VDA ACC-Symbol YYY km/h / mph" 22 "Tempolimit XXX km/h / mph" 23 "Kurve XXX km/h / mph" 24 "ACC Abschaltung" 25 "Symbol 'Eieruhr'" 26 "!" 27 "--- km/h / mph" 28 "XXX km/h / mph (Schriftart 2)" 29 "Lenkradwinkel" 30 "Anfahren bestaetigen" 31 "Fahrzeug verloren" 32 "Im Stand nicht moeglich" 33 "Ungueltiger Anfahrbefehl" 34 "Tuer offen !" 35 "Fahrer Gurtschloss offen !" 36 "Schalthebelposition !" 37 "Drehzahl !" 38 "Kurvenassistent aus" 39 "Tempolimit aus" 40 "Abbiegeassistent" 41 "Ortsanfang XXX km/h / mph" 42 "Ortsende XXX km/h / mph" 43 "Tempolimit Ende XXX km/h / mph" 44 "HDC aktiv" 45 "braking guard Bremsruck" 46 "braking guard aus" 47 "braking guard aus" 48 "Uebernehmen !" 49 "Steigung zu gross" 50 "Stehendes Objekt voraus" 51 "SET / 'GRA Symbol'___xxx km/h / mph" 52 "SET / 'GRA Symbol' xxx km/h / mph" 53 "ACC aus" 54 "ACC startet" 55 "ACC reinigen" 56 "ACC Fehler" 57 "ACC haelt an !" 58 "Bremse betaetigen !" 59 "Kupplung betaetigt" 60 "LIM AUS" 61 "LIM AKTIV" 62 "LIM PASSIV" 63 "LIM FEHLER" 64 "Bremse ueberhitzt !" 65 "Bremse haelt !" 66 "ESP PASSIV !" 67 "ACC_anfahrbereit" 68 "Gang_einlegen" 69 "Rechtsueberholen_verhindert" 70 "Linksueberholen_verhindert" 71 "Achtung_Geschwindigkeitsueberschreitung" 72 "Tempolimit_und_Kurvenassistent_nicht_verfuegbar" ;
VAL_ 780 ACC_Wunschgeschw_erreicht 0 "Wunschgeschwindigkeit_nicht_erreicht" 1 "Wunschgeschwindigkeit_erreicht" ;
VAL_ 780 ACC_Typ_Tachokranz_unten 0 "LEDs_an" 1 "LEDs_aus" ;
VAL_ 780 ACC_Status_Anzeige 0 "ACC_GRA_Hauptschalter_aus" 1 "ACC_in_Init_nicht_bei_GRA" 2 "ACC_GRA_passiv" 3 "ACC_GRA_aktiv" 4 "ACC_GRA_im_Hintergrund_uebertreten" 5 "ACC_GRA_Abschaltreaktion" 6 "ACC_reversibel_aus_nicht_bei_GRA" 7 "ACC_GRA_irreversibel_aus" ;
VAL_ 804 ACC_Texte_Sekundaeranz 0 "keine_Anzeige" 1 "Zielfahrzeug_erkannt" 2 "Rechtskurve_voraus" 3 "Linkskurve_voraus" 4 "Tempolimit_voraus" 5 "Sensorsicht" 6 "Anfahrbereit" 7 "Tempolimit_erkannt" 8 "Kreuzung_voraus" 9 "Kreisverkehr_voraus" ;
VAL_ 804 ACC_Texte_Zusatzanz 0 "keine_Anzeige" 1 "ACC_AUS" 2 "ACC_BEREIT" 3 "UEBERTRETEN" 4 "ABSTAND" 5 "DISTANZ_1" 6 "DISTANZ_2" 7 "DISTANZ_3" 8 "DISTANZ_4" 9 "DISTANZ_1__dyn" 10 "DISTANZ_2__dyn" 11 "DISTANZ_3__dyn" 12 "DISTANZ_4__dyn" 13 "DISTANZ_1__stand" 14 "DISTANZ_2__stand" 15 "DISTANZ_3__stand" 16 "DISTANZ_4__stand" 17 "DISTANZ_1__comf" 18 "DISTANZ_2__comf" 19 "DISTANZ_3__comf" 20 "DISTANZ_4__comf" 21 "DISTANZ_1__efficiency" 22 "DISTANZ_2__efficiency" 23 "DISTANZ_3__efficiency" 24 "DISTANZ_4__efficiency" 25 "DISTANZ_5" 26 "DISTANZ_5__dyn" 27 "DISTANZ_5__stand" 28 "DISTANZ_5__comf" 29 "DISTANZ_5__efficiency" 30 "ACHTUNG" 31 "Abstandsanzeige" 32 "Abstandsanz_Warnung_aktiviert" ;
VAL_ 804 ACC_Status_Zusatzanz 0 "keine Anzeige" 1 "Bild 1 (Fzg. Silhouette, typ. farblos)" 2 "Bild 2 (Fzg. Farbe 1, typ. grau)" 3 "Bild 3 (Fzg. Farbe 2, typ. rot)" 4 "Bild 4 (Symbol 1 ACCplus, typ. Doppelfzg. gelb)" 5 "Bild 5 (Symbol 2 ACCplus, typ. Doppelfzg. grau)" 6 "Bild 6 (Fzg. Farbe 2, typ. rot) mit Priorität im Kombi (Pop-up)" ;
VAL_ 804 ACC_Texte 0 "keine_Anzeige" 1 "ACC_nicht_verfuegbar" 2 "ACC_und_AWV_nicht_verfuegbar" 3 "ACC_keine_Sensorsicht" 4 "ACC_und_AWV_keine_Sensorsicht" 5 "ACC_Steigung_zu_gross" 6 "ACC_nur_in_Fahrstufe_verfuegbar" 7 "ACC_Parkbremse_betaetigt" 8 "ACC_ESP_Eingriff" 9 "ACC_Bitte_uebernehmen" 10 "ACC_HDC_betaetigt" 11 "ACC_Geschwindigkeitsgrenze" 12 "ACC_Schalthebelposition" 13 "ACC_Drehzahl" 14 "ACC_Kupplung_betaetigt" 15 "ACC_Aktivierverhinderung" 16 "ACC_Abschaltung" 17 "ACC_Parkassistent_aktiv" 18 "ACC_ESC_aus" 19 "ACC_Charisma_Modus_inkompatibel" 20 "ACC_Stehendes_Objekt_voraus" 21 "ACA_Fahreruebernahme" 22 "ACA_Querfuehrung_nicht_verfuegbar" ;
VAL_ 804 ACC_Texte_braking_guard 0 "keine_Anzeige" 1 "AWV_aus" 2 "AWV_Warnung" 3 "AWV_Demomodus" 4 "AWV_Systemstoerung" 5 "AWV_Eingriff" 6 "AWV_Vorwarnung_aus" 7 "AWV_keine_Sensorsicht" ;
VAL_ 804 ACC_Warnhinweis 0 "kein_Warnhinweis" 1 "Warnhinweis" ;
VAL_ 804 ACC_Zeitluecke_Abstandswarner 61 "Freifahrt" 62 "nicht_definiert" 63 "keine_Anzeige" ;
VAL_ 804 ACC_Abstand_Abstandswarner 509 "Freifahrt" 510 "nicht_definiert" 511 "keine_Anzeige" ;
VAL_ 804 ACC_Tempolimit 0 "keine_Anzeige" 1 "5_zulHoechstgeschw" 2 "7_zulHoechstgeschw" 3 "10_zulHoechstgeschw" 4 "15_zulHoechstgeschw" 5 "20_zulHoechstgeschw" 6 "25_zulHoechstgeschw" 7 "30_zulHoechstgeschw" 8 "35_zulHoechstgeschw" 9 "40_zulHoechstgeschw" 10 "45_zulHoechstgeschw" 11 "50_zulHoechstgeschw" 12 "55_zulHoechstgeschw" 13 "60_zulHoechstgeschw" 14 "65_zulHoechstgeschw" 15 "70_zulHoechstgeschw" 16 "75_zulHoechstgeschw" 17 "80_zulHoechstgeschw" 18 "85_zulHoechstgeschw" 19 "90_zulHoechstgeschw" 20 "95_zulHoechstgeschw" 21 "100_zulHoechstgeschw" 22 "110_zulHoechstgeschw" 23 "120_zulHoechstgeschw" 24 "130_zulHoechstgeschw" 25 "140_zulHoechstgeschw" 26 "150_zulHoechstgeschw" 27 "160_zulHoechstgeschw" 28 "200_zulHoechstgeschw" 30 "250_zulHoechstgeschw" 31 "Ende_zulHoechstgeschw" ;
VAL_ 804 ACC_Charisma_FahrPr 0 "keine_Funktion" 1 "Programm_1" 2 "Programm_2" 3 "Programm_3" 4 "Programm_4" 5 "Programm_5" 6 "Programm_6" 7 "Programm_7" 8 "Programm_8" 9 "Programm_9" 10 "Programm_10" 11 "Programm_11" 12 "Programm_12" 13 "Programm_13" 14 "Programm_14" 15 "Programm_15" ;
VAL_ 804 ACC_Charisma_Status 0 "Init" 1 "verfuegbar" 2 "nicht_verfuegbar" 3 "asynchron_durch_Fahrerwunsch" ;
VAL_ 804 ACC_Texte_Abstandswarner 0 "keine_Anzeige" 1 "Systemstoerung" 2 "keine_Sensorsicht" 3 "zurzeit_eingeschraenkt" ;
VAL_ 290 ACC_limitierte_Anfahrdyn 0 "keine_Limitierung" 1 "Limitierung_Anfahrdynamik_angefordert" ;
VAL_ 290 ACC_nachtr_Stopp_Anf 0 "nicht_angefordert" 1 "angefordert" ;
VAL_ 290 ACC_StartStopp_Info 0 "Motorlauf_langfristig_nicht_notwendig_Stoppfreigabe" 1 "Motoranlauf_nicht_zwingend_notwendig_Stoppverbot_keine_Startanforderung" 2 "Motoranlauf_zwingend_notwendig_Startanforderung" 3 "Systemfehler" ;
VAL_ 290 ACC_Sollbeschleunigung_02 2046 "Neutralwert" 2047 "Fehler" ;
VAL_ 290 ACC_Anfahren 0 "keine_Anforderung_Anfahren" 1 "Anforderung_Anfahren" ;
VAL_ 290 ACC_Anhalten 0 "kein_Anhalten_gewuenscht" 1 "Anhalten_gewuenscht" ;
VAL_ 290 ACC_Typ 0 "Basis_ACC" 1 "ACC_mit_FollowToStop" 2 "ACC_mit_StopAndGo" 3 "ACC_nicht_codiert" ;
VAL_ 290 ACC_Status_ACC 0 "ACC_OFF_Hauptschalter_aus" 1 "ACC_INIT" 2 "ACC_STANDBY" 3 "ACC_AKTIV_regelt" 4 "ACC_OVERRIDE" 5 "ACC_Abschaltreaktion" 6 "reversibler_Fehler_im_ACC_System" 7 "irreversibler_Fehler_im_ACC_System" ;
VAL_ 290 ACC_Minimale_Bremsung 0 "Anforderung_Minimale_Bremsung_nicht_aktiv" 1 "Anforderung_Minimale_Bremsung_aktiv" ;
VAL_ 302 ACC_Anhalteweg 2046 "Neutralwert" 2047 "Fehler" ;
VAL_ 302 ACC_Anhalten 0 "kein_Anhalten_gewuenscht" 1 "Anhalten_gewuenscht" ;
VAL_ 302 ACC_Freilauf_Anf 0 "keine Freilauf-Anforderung" 1 "Freilauf-Anforderung" ;
VAL_ 302 ACC_Freilauf_Info 0 "Freilauf_freigegeben" 1 "kein_Uebergang_in_Freilauf_zulaessig" 2 "Freilauf_nicht_freigegeben" 3 "Freilauf_Anforderung" ;
VAL_ 302 ACC_Anforderung_HMS 0 "keine_Anforderung" 1 "halten" 2 "parken" 3 "halten_Standby" 4 "anfahren" 5 "Loesen_ueber_Rampe" ;
VAL_ 302 ACC_Anfahren 0 "keine_Anforderung_Anfahren" 1 "Anforderung_Anfahren" ;
VAL_ 302 ACC_Folgebeschl 254 "Neutralwert" ;
VAL_ 302 ACC_Sollbeschleunigung_02 2046 "Neutralwert" 2047 "Fehler" ;
VAL_ 279 AWV1_Anf_Prefill 0 "Prefill_nicht_aktivieren" 1 "Prefill_aktivieren" ;
VAL_ 279 ANB_CM_Info 0 "Standard" 1 "Erweitert" ;
VAL_ 279 AWV2_Freigabe 0 "keine_Freigabe" 1 "Freigabe" ;
VAL_ 279 AWV1_HBA_Param 0 "Defaultparametersatz" 1 "Parametersatz_mit_leicht_erhoehter_Empfindlichkeit" 2 "Parametersatz_mit_erhoehter_Empfindlichkeit" 3 "Parametersatz_mit_hoechster_Empfindlichkeit" ;
VAL_ 279 AWV2_Priowarnung 0 "Anzeige_Verlassen_der_Fahrspur_wird_nicht_unterdrueckt" 1 "Anzeige_Verlassen_der_Fahrspur_wird_unterdrueckt" ;
VAL_ 279 ANB_CM_Anforderung 0 "keine_Anforderung" 1 "Anforderung_aktiv" ;
VAL_ 279 ANB_Info_Teilbremsung 0 "Auspraegung_Standard" 1 "Auspraegung_Erweitert" ;
VAL_ 279 ANB_Notfallblinken 0 "kein_ANB_Notfallblinken" 1 "Notfallblinken_ANB_angefordert" ;
VAL_ 279 ANB_Teilbremsung_Freigabe 0 "Teilbremsung_nicht_freigegeben" 1 "Teilbremsung_freigegeben" ;
VAL_ 279 ANB_Zielbremsung_Freigabe 0 "Zielbremsung_nicht_freigegeben" 1 "Zielbremsung_freigegeben" ;
VAL_ 279 AWV_Vorstufe 0 "keine_Notbremsung_erwartet" 1 "Notbremsung_in_Kuerze" ;
VAL_ 279 AWV_Halten 0 "keine_Anforderung" 1 "Anforderung_das_Fzg_im_Stillstand_zu_halten" ;
VAL_ 279 AWV_CityANB_Auspraegung 0 "autom_Bremsung_im_ges_vBereich" 1 "autom_Bremsung_im_def_vBereich" ;
VAL_ 279 PCF_Freigabe 0 "keine_Freigabe_PreCrashFront" 1 "Freigabe_PreCrashFront" ;
VAL_ 279 AWV1_ECD_Anlauf 0 "ECD_Anlauf_nicht_aktivieren" 1 "ECD_Anlauf_aktivieren" ;
VAL_ 279 PCF_Time_to_collision 255 "Objektstatus=0x0__oder_berechneter_TTC_Wert_groesser_als_Maximalwert" ;
VAL_ 679 ACC_Regelgeschw 1023 "keine_Anzeige" ;
VAL_ 679 ACC_Einheit_maxSetzgeschw 0 "kmh" 1 "mph" ;
VAL_ 679 ACC_maxSetzgeschw 511 "Init_Neutralwert" ;
VAL_ 679 ACC_minRegelgeschw 255 "keine_Anzeige" ;
VAL_ 679 ACC_maxRegelgeschw 255 "keine_Anzeige" ;
VAL_ 679 ACC_Tempolimitassistent 0 "keine_Anzeige" 1 "Tempolimitassistent_aktiv" 2 "Tempolimitassistent_nicht_verfuegbar" 3 "Tempolimitassistent_Fahreruebernahme" ;
VAL_ 679 ACC_Kurvenassistent 0 "keine_Anzeige" 1 "Kreuzung" 2 "Rechtskurve" 3 "Linkskurve" 4 "Kreisverkehr" ;
VAL_ 679 ACC_RUV 0 "keine_Anzeige" 1 "RUV_aktiv_Rechtsverkehr" 2 "RUV_aktiv_Linksverkehr" ;
VAL_ 679 ACC_Tachokranz 0 "Tachokranz_nicht_beleuchtet" 1 "Tachokranz_beleuchtet" ;
VAL_ 679 ACC_Typ_Tachokranz_unten 0 "LEDs_an" 1 "LEDs_aus" ;
VAL_ 679 ACC_ENG_Texte 0 "keine_Anzeige" 1 "keine_Laenderverfuegbarkeit" 2 "nicht_verfuegbar" 3 "Geschwindigkeitsgrenze" ;
VAL_ 681 AWV_Warnung 0 "keine_Anzeige" 1 "latente_Vorwarnung" 2 "Vorwarnung" 3 "Akutwarnung" 4 "Eingriff" 5 "Fahreruebernahmeaufforderung" 6 "Abbiegewarnung" ;
VAL_ 681 AWV_Texte 0 "keine_Anzeige" 1 "Systemstoerung" 2 "keine_Sensorsicht" 3 "Demomodus" 4 "System_aus" 5 "nicht_definiert" 6 "ESC_aus" 7 "zurzeit_eingeschraenkt" ;
VAL_ 681 AWV_Status_Anzeige 0 "Init" 1 "verfuegbar" 2 "nicht_verfuegbar" ;
VAL_ 681 AWV_Einstellung_System_FSG 0 "deaktiviert" 1 "aktiviert" ;
VAL_ 681 AWV_Einstellung_Warnung_FSG 0 "Aus" 1 "Setting_2" 2 "Setting_3" 3 "Setting_4" 4 "Setting_5" 5 "Ein" ;
VAL_ 681 AWV_Warnlevel 0 "keine_Gefaehrdung" 63 "max_Gefaehrdung" ;
VAL_ 391 GearPosition 2 "P" 3 "R" 4 "N" 5 "D" 6 "D" ;
VAL_ 391 RegenBrakingMode 0 "default" 1 "B1" 2 "B2" 3 "B3" ;
VAL_ 870 Fast_Send_Rate_Active 0 "1 Hz" 1 "50 Hz" ;
VAL_ 1720 KBI_Variante_USA 0 "keine USA-Variante" 1 "USA-Variante" ; VAL_ 1720 KBI_Variante_USA 0 "keine USA-Variante" 1 "USA-Variante" ;
VAL_ 1720 KBI_Variante 0 "Zeiger Kombiinstrument" 1 "Volldisplay Kombiinstrument" ; VAL_ 1720 KBI_Variante 0 "Zeiger Kombiinstrument" 1 "Volldisplay Kombiinstrument" ;
VAL_ 1720 KBI_BCmE_aktiv 0 "Anzeige_nicht_aktiv" 1 "Anzeige_aktiv" ; VAL_ 1720 KBI_BCmE_aktiv 0 "Anzeige_nicht_aktiv" 1 "Anzeige_aktiv" ;
+3
View File
@@ -18,3 +18,6 @@ examples/output.csv
nosetests.xml nosetests.xml
.mypy_cache/ .mypy_cache/
.sconsign.dblite .sconsign.dblite
# CTU info files generated by Cppcheck
*.*.ctu-info
+9 -9
View File
@@ -1,10 +1,10 @@
# flake8: noqa from .python import (Panda, PandaDFU, # noqa: F401
# pylint: skip-file BASEDIR, pack_can_buffer, unpack_can_buffer,
from .python import Panda, PandaDFU, flash_release, \ DEFAULT_FW_FN, DEFAULT_H7_FW_FN, MCU_TYPE_H7, MCU_TYPE_F4, DLC_TO_LEN, LEN_TO_DLC,
BASEDIR, ensure_st_up_to_date, PandaSerial, pack_can_buffer, unpack_can_buffer, \ ALTERNATIVE_EXPERIENCE, USBPACKET_MAX_SIZE)
DEFAULT_FW_FN, DEFAULT_H7_FW_FN, MCU_TYPE_H7, MCU_TYPE_F4, DLC_TO_LEN, LEN_TO_DLC, \
ALTERNATIVE_EXPERIENCE
from .python.config import BOOTSTUB_ADDRESS, BLOCK_SIZE_FX, APP_ADDRESS_FX, \ from .python.serial import PandaSerial # noqa: F401
BLOCK_SIZE_H7, APP_ADDRESS_H7, DEVICE_SERIAL_NUMBER_ADDR_H7, \
DEVICE_SERIAL_NUMBER_ADDR_FX from .python.config import (BOOTSTUB_ADDRESS, BLOCK_SIZE_FX, APP_ADDRESS_FX, # noqa: F401
BLOCK_SIZE_H7, APP_ADDRESS_H7, DEVICE_SERIAL_NUMBER_ADDR_H7, # noqa: F401
DEVICE_SERIAL_NUMBER_ADDR_FX)
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+172 -139
View File
@@ -8,33 +8,39 @@ import hashlib
import datetime import datetime
import traceback import traceback
import warnings import warnings
import logging
from functools import wraps from functools import wraps
from typing import Optional from typing import Optional
from itertools import accumulate from itertools import accumulate
from .dfu import PandaDFU, MCU_TYPE_F2, MCU_TYPE_F4, MCU_TYPE_H7 # pylint: disable=import-error
from .flash_release import flash_release # noqa pylint: disable=import-error from .config import DEFAULT_FW_FN, DEFAULT_H7_FW_FN, SECTOR_SIZES_FX, SECTOR_SIZES_H7
from .update import ensure_st_up_to_date # noqa pylint: disable=import-error from .dfu import PandaDFU, MCU_TYPE_F2, MCU_TYPE_F4, MCU_TYPE_H7
from .serial import PandaSerial # noqa pylint: disable=import-error from .isotp import isotp_send, isotp_recv
from .isotp import isotp_send, isotp_recv # pylint: disable=import-error from .spi import SpiHandle
from .config import DEFAULT_FW_FN, DEFAULT_H7_FW_FN, SECTOR_SIZES_FX, SECTOR_SIZES_H7 # noqa pylint: disable=import-error
__version__ = '0.0.10' __version__ = '0.0.10'
# setup logging
LOGLEVEL = os.environ.get('LOGLEVEL', 'INFO').upper()
logging.basicConfig(level=LOGLEVEL, format='%(message)s')
BASEDIR = os.path.join(os.path.dirname(os.path.realpath(__file__)), "../") BASEDIR = os.path.join(os.path.dirname(os.path.realpath(__file__)), "../")
DEBUG = os.getenv("PANDADEBUG") is not None DEBUG = os.getenv("PANDADEBUG") is not None
CAN_TRANSACTION_MAGIC = struct.pack("<I", 0x43414E2F)
USBPACKET_MAX_SIZE = 0x40
CANPACKET_HEAD_SIZE = 0x5 CANPACKET_HEAD_SIZE = 0x5
DLC_TO_LEN = [0, 1, 2, 3, 4, 5, 6, 7, 8, 12, 16, 20, 24, 32, 48, 64] DLC_TO_LEN = [0, 1, 2, 3, 4, 5, 6, 7, 8, 12, 16, 20, 24, 32, 48, 64]
LEN_TO_DLC = {length: dlc for (dlc, length) in enumerate(DLC_TO_LEN)} LEN_TO_DLC = {length: dlc for (dlc, length) in enumerate(DLC_TO_LEN)}
def pack_can_buffer(arr): def pack_can_buffer(arr):
snds = [b''] snds = [CAN_TRANSACTION_MAGIC]
idx = 0
for address, _, dat, bus in arr: for address, _, dat, bus in arr:
assert len(dat) in LEN_TO_DLC assert len(dat) in LEN_TO_DLC
if DEBUG: #logging.debug(" W 0x%x: 0x%s", address, dat.hex())
print(f" W 0x{address:x}: 0x{dat.hex()}")
extended = 1 if address >= 0x800 else 0 extended = 1 if address >= 0x800 else 0
data_len_code = LEN_TO_DLC[len(dat)] data_len_code = LEN_TO_DLC[len(dat)]
header = bytearray(5) header = bytearray(5)
@@ -44,57 +50,50 @@ def pack_can_buffer(arr):
header[2] = (word_4b >> 8) & 0xFF header[2] = (word_4b >> 8) & 0xFF
header[3] = (word_4b >> 16) & 0xFF header[3] = (word_4b >> 16) & 0xFF
header[4] = (word_4b >> 24) & 0xFF header[4] = (word_4b >> 24) & 0xFF
snds[idx] += header + dat
if len(snds[idx]) > 256: # Limit chunks to 256 bytes
snds.append(b'')
idx += 1
#Apply counter to each 64 byte packet snds[-1] += header + dat
for idx in range(len(snds)): if len(snds[-1]) > 256: # Limit chunks to 256 bytes
tx = b'' snds.append(CAN_TRANSACTION_MAGIC)
counter = 0
for i in range (0, len(snds[idx]), 63):
tx += bytes([counter]) + snds[idx][i:i+63]
counter += 1
snds[idx] = tx
return snds return snds
def unpack_can_buffer(dat): def unpack_can_buffer(dat):
ret = [] ret = []
counter = 0 if len(dat) < len(CAN_TRANSACTION_MAGIC):
tail = bytearray() return ret
for i in range(0, len(dat), 64):
if counter != dat[i]: if dat[:len(CAN_TRANSACTION_MAGIC)] != CAN_TRANSACTION_MAGIC:
print("CAN: LOST RECV PACKET COUNTER") logging.error("CAN: recv didn't start with magic")
break return ret
counter+=1
chunk = tail + dat[i+1:i+64] dat = dat[len(CAN_TRANSACTION_MAGIC):]
tail = bytearray()
pos = 0 while len(dat) >= CANPACKET_HEAD_SIZE:
while pos<len(chunk): data_len = DLC_TO_LEN[(dat[0]>>4)]
data_len = DLC_TO_LEN[(chunk[pos]>>4)]
pckt_len = CANPACKET_HEAD_SIZE + data_len header = dat[:CANPACKET_HEAD_SIZE]
if pckt_len <= len(chunk[pos:]): dat = dat[CANPACKET_HEAD_SIZE:]
header = chunk[pos:pos+CANPACKET_HEAD_SIZE]
if len(header) < 5: bus = (header[0] >> 1) & 0x7
print("CAN: MALFORMED USB RECV PACKET") address = (header[4] << 24 | header[3] << 16 | header[2] << 8 | header[1]) >> 3
break
bus = (header[0] >> 1) & 0x7 if (header[1] >> 1) & 0x1:
address = (header[4] << 24 | header[3] << 16 | header[2] << 8 | header[1]) >> 3 # returned
returned = (header[1] >> 1) & 0x1 bus += 128
rejected = header[1] & 0x1 if header[1] & 0x1:
data = chunk[pos + CANPACKET_HEAD_SIZE:pos + CANPACKET_HEAD_SIZE + data_len] # rejected
if returned: bus += 192
bus += 128
if rejected: data = dat[:data_len]
bus += 192 dat = dat[data_len:]
if DEBUG:
print(f" R 0x{address:x}: 0x{data.hex()}") #logging.debug(" R 0x%x: 0x%s", address, data.hex())
ret.append((address, 0, data, bus))
pos += pckt_len ret.append((address, 0, data, bus))
else:
tail = chunk[pos:] if len(dat) > 0:
break logging.error("CAN: malformed packet. leftover data")
return ret return ret
def ensure_health_packet_version(fn): def ensure_health_packet_version(fn):
@@ -117,11 +116,22 @@ def ensure_can_packet_version(fn):
return fn(self, *args, **kwargs) return fn(self, *args, **kwargs)
return wrapper return wrapper
def ensure_can_health_packet_version(fn):
@wraps(fn)
def wrapper(self, *args, **kwargs):
if self.can_health_version < self.CAN_HEALTH_PACKET_VERSION:
raise RuntimeError("Panda firmware has outdated CAN health packet definition. Reflash panda firmware.")
elif self.can_health_version > self.CAN_HEALTH_PACKET_VERSION:
raise RuntimeError("Panda python library has outdated CAN health packet definition. Update panda python library.")
return fn(self, *args, **kwargs)
return wrapper
class ALTERNATIVE_EXPERIENCE: class ALTERNATIVE_EXPERIENCE:
DEFAULT = 0 DEFAULT = 0
DISABLE_DISENGAGE_ON_GAS = 1 DISABLE_DISENGAGE_ON_GAS = 1
DISABLE_STOCK_AEB = 2 DISABLE_STOCK_AEB = 2
RAISE_LONGITUDINAL_LIMITS_TO_ISO_MAX = 8 RAISE_LONGITUDINAL_LIMITS_TO_ISO_MAX = 8
ALKA = 16
class Panda: class Panda:
@@ -152,11 +162,14 @@ class Panda:
SAFETY_FAW = 26 SAFETY_FAW = 26
SAFETY_BODY = 27 SAFETY_BODY = 27
SAFETY_HYUNDAI_CANFD = 28 SAFETY_HYUNDAI_CANFD = 28
SAFETY_VOLVO_C1 = 29
SAFETY_VOLVO_EUCD = 30
SERIAL_DEBUG = 0 SERIAL_DEBUG = 0
SERIAL_ESP = 1 SERIAL_ESP = 1
SERIAL_LIN1 = 2 SERIAL_LIN1 = 2
SERIAL_LIN2 = 3 SERIAL_LIN2 = 3
SERIAL_SOM_DEBUG = 4
GMLAN_CAN2 = 1 GMLAN_CAN2 = 1
GMLAN_CAN3 = 2 GMLAN_CAN3 = 2
@@ -172,14 +185,21 @@ class Panda:
HW_TYPE_UNO = b'\x05' HW_TYPE_UNO = b'\x05'
HW_TYPE_DOS = b'\x06' HW_TYPE_DOS = b'\x06'
HW_TYPE_RED_PANDA = b'\x07' HW_TYPE_RED_PANDA = b'\x07'
HW_TYPE_RED_PANDA_V2 = b'\x08'
HW_TYPE_TRES = b'\x09'
CAN_PACKET_VERSION = 2 CAN_PACKET_VERSION = 3
HEALTH_PACKET_VERSION = 8 HEALTH_PACKET_VERSION = 11
HEALTH_STRUCT = struct.Struct("<IIIIIIIIBBBBBBBHBBBHIfB") CAN_HEALTH_PACKET_VERSION = 3
HEALTH_STRUCT = struct.Struct("<IIIIIIIIIBBBBBBHBBBHfBBB")
CAN_HEALTH_STRUCT = struct.Struct("<BIBBBBBBBBIIIIIIHHBBB")
F2_DEVICES = (HW_TYPE_PEDAL, ) F2_DEVICES = (HW_TYPE_PEDAL, )
F4_DEVICES = (HW_TYPE_WHITE_PANDA, HW_TYPE_GREY_PANDA, HW_TYPE_BLACK_PANDA, HW_TYPE_UNO, HW_TYPE_DOS) F4_DEVICES = (HW_TYPE_WHITE_PANDA, HW_TYPE_GREY_PANDA, HW_TYPE_BLACK_PANDA, HW_TYPE_UNO, HW_TYPE_DOS)
H7_DEVICES = (HW_TYPE_RED_PANDA, ) H7_DEVICES = (HW_TYPE_RED_PANDA, HW_TYPE_RED_PANDA_V2, HW_TYPE_TRES)
INTERNAL_DEVICES = (HW_TYPE_UNO, HW_TYPE_DOS)
HAS_OBD = (HW_TYPE_BLACK_PANDA, HW_TYPE_UNO, HW_TYPE_DOS, HW_TYPE_RED_PANDA, HW_TYPE_RED_PANDA_V2, HW_TYPE_TRES)
CLOCK_SOURCE_MODE_DISABLED = 0 CLOCK_SOURCE_MODE_DISABLED = 0
CLOCK_SOURCE_MODE_FREE_RUNNING = 1 CLOCK_SOURCE_MODE_FREE_RUNNING = 1
@@ -197,9 +217,9 @@ class Panda:
FLAG_HYUNDAI_HYBRID_GAS = 2 FLAG_HYUNDAI_HYBRID_GAS = 2
FLAG_HYUNDAI_LONG = 4 FLAG_HYUNDAI_LONG = 4
FLAG_HYUNDAI_CAMERA_SCC = 8 FLAG_HYUNDAI_CAMERA_SCC = 8
FLAG_HYUNDAI_CANFD_HDA2 = 16
FLAG_HYUNDAI_CANFD_HDA2 = 1 FLAG_HYUNDAI_CANFD_ALT_BUTTONS = 32
FLAG_HYUNDAI_CANFD_ALT_BUTTONS = 2 FLAG_HYUNDAI_ALT_LIMITS = 64
FLAG_TESLA_POWERTRAIN = 1 FLAG_TESLA_POWERTRAIN = 1
FLAG_TESLA_LONG_CONTROL = 2 FLAG_TESLA_LONG_CONTROL = 2
@@ -212,8 +232,9 @@ class Panda:
FLAG_SUBARU_GEN2 = 1 FLAG_SUBARU_GEN2 = 1
FLAG_GM_HW_CAM = 1 FLAG_GM_HW_CAM = 1
FLAG_GM_HW_CAM_LONG = 2
def __init__(self, serial: Optional[str] = None, claim: bool = True, disable_checks: bool = True): def __init__(self, serial: Optional[str] = None, claim: bool = True, spi: bool = False, disable_checks: bool = True):
self._serial = serial self._serial = serial
self._disable_checks = disable_checks self._disable_checks = disable_checks
@@ -221,9 +242,9 @@ class Panda:
self._bcd_device = None self._bcd_device = None
# connect and set mcu type # connect and set mcu type
self._spi = spi
self.connect(claim) self.connect(claim)
def close(self): def close(self):
self._handle.close() self._handle.close()
self._handle = None self._handle = None
@@ -231,10 +252,30 @@ class Panda:
def connect(self, claim=True, wait=False): def connect(self, claim=True, wait=False):
if self._handle is not None: if self._handle is not None:
self.close() self.close()
context = usb1.USBContext()
self._handle = None self._handle = None
if self._spi:
self._handle = SpiHandle()
# TODO implement
self._serial = "SPIDEV"
self.bootstub = False
else:
self.usb_connect(claim=claim, wait=wait)
assert self._handle is not None
self._mcu_type = self.get_mcu_type()
self.health_version, self.can_version, self.can_health_version = self.get_packets_versions()
print("connected")
# disable openpilot's heartbeat checks
if self._disable_checks:
self.set_heartbeat_disabled()
self.set_power_save(0)
def usb_connect(self, claim=True, wait=False):
context = usb1.USBContext()
while 1: while 1:
try: try:
for device in context.getDeviceList(skip_on_error=True): for device in context.getDeviceList(skip_on_error=True):
@@ -267,16 +308,6 @@ class Panda:
break break
context = usb1.USBContext() # New context needed so new devices show up context = usb1.USBContext() # New context needed so new devices show up
assert self._handle is not None
self._mcu_type = self.get_mcu_type()
self.health_version, self.can_version = self.get_packets_versions()
print("connected")
# disable openpilot's heartbeat checks
if self._disable_checks:
self.set_heartbeat_disabled()
self.set_power_save(0)
def reset(self, enter_bootstub=False, enter_bootloader=False, reconnect=True): def reset(self, enter_bootstub=False, enter_bootloader=False, reconnect=True):
try: try:
if enter_bootloader: if enter_bootloader:
@@ -435,26 +466,65 @@ class Panda:
"uptime": a[0], "uptime": a[0],
"voltage": a[1], "voltage": a[1],
"current": a[2], "current": a[2],
"can_rx_errs": a[3], "safety_tx_blocked": a[3],
"can_send_errs": a[4], "safety_rx_invalid": a[4],
"can_fwd_errs": a[5], "tx_buffer_overflow": a[5],
"gmlan_send_errs": a[6], "rx_buffer_overflow": a[6],
"faults": a[7], "gmlan_send_errs": a[7],
"ignition_line": a[8], "faults": a[8],
"ignition_can": a[9], "ignition_line": a[9],
"controls_allowed": a[10], "ignition_can": a[10],
"gas_interceptor_detected": a[11], "controls_allowed": a[11],
"car_harness_status": a[12], "gas_interceptor_detected": a[12],
"usb_power_mode": a[13], "car_harness_status": a[13],
"safety_mode": a[14], "safety_mode": a[14],
"safety_param": a[15], "safety_param": a[15],
"fault_status": a[16], "fault_status": a[16],
"power_save_enabled": a[17], "power_save_enabled": a[17],
"heartbeat_lost": a[18], "heartbeat_lost": a[18],
"alternative_experience": a[19], "alternative_experience": a[19],
"blocked_msg_cnt": a[20], "interrupt_load": a[20],
"interrupt_load": a[21], "fan_power": a[21],
"fan_power": a[22], "safety_rx_checks_invalid": a[22],
"usb_power_mode": a[23],
}
@ensure_can_health_packet_version
def can_health(self, can_number):
LEC_ERROR_CODE = {
0: "No error",
1: "Stuff error",
2: "Form error",
3: "AckError",
4: "Bit1Error",
5: "Bit0Error",
6: "CRCError",
7: "NoChange",
}
dat = self._handle.controlRead(Panda.REQUEST_IN, 0xc2, int(can_number), 0, self.CAN_HEALTH_STRUCT.size)
a = self.CAN_HEALTH_STRUCT.unpack(dat)
return {
"bus_off": a[0],
"bus_off_cnt": a[1],
"error_warning": a[2],
"error_passive": a[3],
"last_error": LEC_ERROR_CODE[a[4]],
"last_stored_error": LEC_ERROR_CODE[a[5]],
"last_data_error": LEC_ERROR_CODE[a[6]],
"last_data_stored_error": LEC_ERROR_CODE[a[7]],
"receive_error_cnt": a[8],
"transmit_error_cnt": a[9],
"total_error_cnt": a[10],
"total_tx_lost_cnt": a[11],
"total_rx_lost_cnt": a[12],
"total_tx_cnt": a[13],
"total_rx_cnt": a[14],
"total_fwd_cnt": a[15],
"can_speed": a[16],
"can_data_speed": a[17],
"canfd_enabled": a[18],
"brs_enabled": a[19],
"canfd_non_iso": a[20],
} }
# ******************* control ******************* # ******************* control *******************
@@ -491,33 +561,12 @@ class Panda:
# Returns tuple with health packet version and CAN packet/USB packet version # Returns tuple with health packet version and CAN packet/USB packet version
def get_packets_versions(self): def get_packets_versions(self):
dat = self._handle.controlRead(Panda.REQUEST_IN, 0xdd, 0, 0, 2) dat = self._handle.controlRead(Panda.REQUEST_IN, 0xdd, 0, 0, 3)
if dat: if dat and len(dat) == 3:
a = struct.unpack("BB", dat) a = struct.unpack("BBB", dat)
return (a[0], a[1]) return (a[0], a[1], a[2])
else: else:
return (0, 0) return (0, 0, 0)
def is_white(self):
return self.get_type() == Panda.HW_TYPE_WHITE_PANDA
def is_grey(self):
return self.get_type() == Panda.HW_TYPE_GREY_PANDA
def is_black(self):
return self.get_type() == Panda.HW_TYPE_BLACK_PANDA
def is_pedal(self):
return self.get_type() == Panda.HW_TYPE_PEDAL
def is_uno(self):
return self.get_type() == Panda.HW_TYPE_UNO
def is_dos(self):
return self.get_type() == Panda.HW_TYPE_DOS
def is_red(self):
return self.get_type() == Panda.HW_TYPE_RED_PANDA
def get_mcu_type(self): def get_mcu_type(self):
hw_type = self.get_type() hw_type = self.get_type()
@@ -530,13 +579,10 @@ class Panda:
return None return None
def has_obd(self): def has_obd(self):
return (self.is_uno() or self.is_dos() or self.is_black() or self.is_red()) return self.get_type() in Panda.HAS_OBD
def has_canfd(self) -> bool: def is_internal(self):
return self.get_type() in Panda.H7_DEVICES return self.get_type() in Panda.INTERNAL_DEVICES
def is_internal(self) -> bool:
return self.get_type() in (Panda.HW_TYPE_UNO, Panda.HW_TYPE_DOS)
def get_serial(self): def get_serial(self):
dat = self._handle.controlRead(Panda.REQUEST_IN, 0xd0, 0, 0, 0x20) dat = self._handle.controlRead(Panda.REQUEST_IN, 0xd0, 0, 0, 0x20)
@@ -552,9 +598,6 @@ class Panda:
# ******************* configuration ******************* # ******************* configuration *******************
def set_usb_power(self, on):
self._handle.controlWrite(Panda.REQUEST_OUT, 0xe6, int(on), 0, b'')
def set_power_save(self, power_save_enabled=0): def set_power_save(self, power_save_enabled=0):
self._handle.controlWrite(Panda.REQUEST_OUT, 0xe7, int(power_save_enabled), 0, b'') self._handle.controlWrite(Panda.REQUEST_OUT, 0xe7, int(power_save_enabled), 0, b'')
@@ -596,14 +639,8 @@ class Panda:
def set_can_data_speed_kbps(self, bus, speed): def set_can_data_speed_kbps(self, bus, speed):
self._handle.controlWrite(Panda.REQUEST_OUT, 0xf9, bus, int(speed * 10), b'') self._handle.controlWrite(Panda.REQUEST_OUT, 0xf9, bus, int(speed * 10), b'')
# CAN FD and BRS status def set_canfd_non_iso(self, bus, non_iso):
def get_canfd_status(self, bus): self._handle.controlWrite(Panda.REQUEST_OUT, 0xfc, bus, int(non_iso), b'')
dat = self._handle.controlRead(Panda.REQUEST_IN, 0xfa, bus, 0, 2)
if dat:
a = struct.unpack("BB", dat)
return (a[0], a[1])
else:
return (None, None)
def set_uart_baud(self, uart, rate): def set_uart_baud(self, uart, rate):
self._handle.controlWrite(Panda.REQUEST_OUT, 0xe4, uart, int(rate / 300), b'') self._handle.controlWrite(Panda.REQUEST_OUT, 0xe4, uart, int(rate / 300), b'')
@@ -686,7 +723,7 @@ class Panda:
def serial_write(self, port_number, ln): def serial_write(self, port_number, ln):
ret = 0 ret = 0
for i in range(0, len(ln), 0x20): for i in range(0, len(ln), 0x20):
ret += self._handle.bulkWrite(2, struct.pack("B", port_number) + ln[i:i + 0x20]) ret += self._handle.bulkWrite(2, struct.pack("B", port_number) + bytes(ln[i:i + 0x20], 'utf-8'))
return ret return ret
def serial_clear(self, port_number): def serial_clear(self, port_number):
@@ -809,7 +846,3 @@ class Panda:
# ****************** Siren ***************** # ****************** Siren *****************
def set_siren(self, enabled): def set_siren(self, enabled):
self._handle.controlWrite(Panda.REQUEST_OUT, 0xf6, int(enabled), 0, b'') self._handle.controlWrite(Panda.REQUEST_OUT, 0xf6, int(enabled), 0, b'')
# ****************** Debug *****************
def set_green_led(self, enabled):
self._handle.controlWrite(Panda.REQUEST_OUT, 0xf7, int(enabled), 0, b'')
-23
View File
@@ -9,29 +9,6 @@ APP_ADDRESS_FX = 0x8004000
SECTOR_SIZES_FX = [0x4000 for _ in range(4)] + [0x10000] + [0x20000 for _ in range(11)] SECTOR_SIZES_FX = [0x4000 for _ in range(4)] + [0x10000] + [0x20000 for _ in range(11)]
DEVICE_SERIAL_NUMBER_ADDR_FX = 0x1FFF79C0 DEVICE_SERIAL_NUMBER_ADDR_FX = 0x1FFF79C0
DEFAULT_FW_FN = os.path.join(BASEDIR, "board", "obj", "panda.bin.signed") DEFAULT_FW_FN = os.path.join(BASEDIR, "board", "obj", "panda.bin.signed")
DEFAULT_SSPOOF_FW_FN = os.path.join(BASEDIR, "board", "obj", "panda.bin.sspoof.signed")
TESTING_FW_FN = os.path.join(BASEDIR, "board", "obj", "panda.bin.testing.signed")
TESTING_SSPOOF_FW_FN = os.path.join(BASEDIR, "board", "obj", "panda.bin.testing.sspoof.signed")
atl_enabled = False
if os.path.exists('/data/params/d/dp_atl'):
with open('/data/params/d/dp_atl') as f:
if (int(f.read().strip())) != 0:
atl_enabled = True
sspoof_enabled = False
if os.path.exists('/data/params/d/dp_sspoof'):
with open('/data/params/d/dp_sspoof') as f:
if (int(f.read().strip())) != 0:
sspoof_enabled = True
if atl_enabled and sspoof_enabled and os.path.exists(TESTING_SSPOOF_FW_FN):
DEFAULT_FW_FN = TESTING_SSPOOF_FW_FN
elif atl_enabled and not sspoof_enabled and os.path.exists(TESTING_FW_FN):
DEFAULT_FW_FN = TESTING_FW_FN
elif not atl_enabled and sspoof_enabled and os.path.exists(DEFAULT_SSPOOF_FW_FN):
DEFAULT_FW_FN = DEFAULT_SSPOOF_FW_FN
DEFAULT_BOOTSTUB_FN = os.path.join(BASEDIR, "board", "obj", "bootstub.panda.bin") DEFAULT_BOOTSTUB_FN = os.path.join(BASEDIR, "board", "obj", "bootstub.panda.bin")
BLOCK_SIZE_H7 = 0x400 BLOCK_SIZE_H7 = 0x400
-74
View File
@@ -1,74 +0,0 @@
#!/usr/bin/env python3
import sys
import time
import requests
import json
import io
def flash_release(path=None, st_serial=None):
from panda import Panda, PandaDFU
from zipfile import ZipFile
def status(x):
print("\033[1;32;40m" + x + "\033[00m")
if st_serial is not None:
# look for Panda
panda_list = Panda.list()
if len(panda_list) == 0:
raise Exception("panda not found, make sure it's connected and your user can access it")
elif len(panda_list) > 1:
raise Exception("Please only connect one panda")
st_serial = panda_list[0]
print("Using panda with serial %s" % st_serial)
if path is None:
print("Fetching latest firmware from github.com/commaai/panda-artifacts")
r = requests.get("https://raw.githubusercontent.com/commaai/panda-artifacts/master/latest.json")
url = json.loads(r.text)['url']
r = requests.get(url)
print("Fetching firmware from %s" % url)
path = io.BytesIO(r.content)
zf = ZipFile(path)
zf.printdir()
version = zf.read("version").decode().strip()
status("0. Preparing to flash " + str(version))
code_bootstub = zf.read("bootstub.panda.bin")
code_panda = zf.read("panda.bin")
# enter DFU mode
status("1. Entering DFU mode")
panda = Panda(st_serial)
panda.reset(enter_bootstub=True)
panda.reset(enter_bootloader=True)
time.sleep(1)
# program bootstub
status("2. Programming bootstub")
dfu = PandaDFU(PandaDFU.st_serial_to_dfu_serial(st_serial))
dfu.program_bootstub(code_bootstub)
time.sleep(1)
# flash main code
status("3. Flashing main code")
panda = Panda(st_serial)
panda.flash(code=code_panda)
panda.close()
# check for connection
status("4. Verifying version")
panda = Panda(st_serial)
my_version = panda.get_version()
print("dongle id: %s" % panda.get_serial()[0])
print(my_version, "should be", version)
assert(str(version) == str(my_version))
# done!
status("6. Success!")
if __name__ == "__main__":
flash_release(*sys.argv[1:])
+105
View File
@@ -0,0 +1,105 @@
import math
import struct
import spidev
import logging
from functools import reduce
from typing import List
# Constants
SYNC = 0x5A
HACK = 0x79
DACK = 0x85
NACK = 0x1F
CHECKSUM_START = 0xAB
MAX_RETRY_COUNT = 5
USB_MAX_SIZE = 0x40
# This mimics the handle given by libusb1 for easy interoperability
class SpiHandle:
def __init__(self):
self.spi = spidev.SpiDev() # pylint: disable=c-extension-no-member
self.spi.open(0, 0)
self.spi.max_speed_hz = 30000000
# helpers
def _calc_checksum(self, data: List[int]) -> int:
cksum = CHECKSUM_START
for b in data:
cksum ^= b
return cksum
def _transfer(self, endpoint: int, data, max_rx_len: int = 1000) -> bytes:
logging.debug("starting transfer: endpoint=%d, max_rx_len=%d", endpoint, max_rx_len)
logging.debug("==============================================")
for n in range(MAX_RETRY_COUNT):
logging.debug("\ntry #%d", n+1)
try:
logging.debug("- send header")
packet = struct.pack("<BBHH", SYNC, endpoint, len(data), max_rx_len)
packet += bytes([reduce(lambda x, y: x^y, packet) ^ CHECKSUM_START])
self.spi.xfer2(packet)
logging.debug("- waiting for ACK")
# TODO: add timeout?
dat = b"\x00"
while dat[0] not in [HACK, NACK]:
dat = self.spi.xfer2(b"\x12")
if dat[0] == NACK:
raise Exception("Got NACK response for header")
# send data
logging.debug("- sending data")
packet = bytes([*data, self._calc_checksum(data)])
self.spi.xfer2(packet)
logging.debug("- waiting for ACK")
dat = b"\x00"
while dat[0] not in [DACK, NACK]:
dat = self.spi.xfer2(b"\xab")
if dat[0] == NACK:
raise Exception("Got NACK response for data")
# get response length, then response
response_len_bytes = bytes(self.spi.xfer2(b"\x00" * 2))
response_len = struct.unpack("<H", response_len_bytes)[0]
logging.debug("- receiving response")
dat = bytes(self.spi.xfer2(b"\x00" * (response_len + 1)))
if self._calc_checksum([DACK, *response_len_bytes, *dat]) != 0:
raise Exception("SPI got bad checksum")
return dat[:-1]
except Exception:
logging.exception("SPI transfer failed, %d retries left", n)
raise Exception(f"SPI transaction failed {MAX_RETRY_COUNT} times")
# libusb1 functions
def close(self):
self.spi.close()
def controlWrite(self, request_type: int, request: int, value: int, index: int, data, timeout: int = 0):
return self._transfer(0, struct.pack("<BHHH", request, value, index, 0))
def controlRead(self, request_type: int, request: int, value: int, index: int, length: int, timeout: int = 0):
return self._transfer(0, struct.pack("<BHHH", request, value, index, length))
# TODO: implement these properly
def bulkWrite(self, endpoint: int, data: List[int], timeout: int = 0) -> int:
for x in range(math.ceil(len(data) / USB_MAX_SIZE)):
self._transfer(endpoint, data[USB_MAX_SIZE*x:USB_MAX_SIZE*(x+1)])
return len(data)
def bulkRead(self, endpoint: int, length: int, timeout: int = 0) -> bytes:
ret: List[int] = []
for _ in range(math.ceil(length / USB_MAX_SIZE)):
d = self._transfer(endpoint, [], max_rx_len=USB_MAX_SIZE)
ret += d
if len(d) < USB_MAX_SIZE:
break
return bytes(ret)
+39 -16
View File
@@ -376,13 +376,31 @@ class CanClient():
self._recv_buffer() self._recv_buffer()
class IsoTpMessage(): class IsoTpMessage():
def __init__(self, can_client: CanClient, timeout: float = 1, debug: bool = False, max_len: int = 8): def __init__(self, can_client: CanClient, timeout: float = 1, single_frame_mode: bool = False, separation_time: float = 0,
debug: bool = False, max_len: int = 8):
self._can_client = can_client self._can_client = can_client
self.timeout = timeout self.timeout = timeout
self.single_frame_mode = single_frame_mode
self.debug = debug self.debug = debug
self.max_len = max_len self.max_len = max_len
def send(self, dat: bytes) -> None: # <= 127, separation time in milliseconds
# 0xF1 to 0xF9 UF, 100 to 900 microseconds
if 1e-4 <= separation_time <= 9e-4:
offset = int(round(separation_time, 4) * 1e4) - 1
separation_time = 0xF1 + offset
elif 0 <= separation_time <= 0.127:
separation_time = round(separation_time * 1000)
else:
raise Exception("Separation time not in range")
self.flow_control_msg = bytes([
0x30, # flow control
0x01 if self.single_frame_mode else 0x00, # block size
separation_time,
]).ljust(self.max_len, b"\x00")
def send(self, dat: bytes, setup_only: bool = False) -> None:
# throw away any stale data # throw away any stale data
self._can_client.recv(drain=True) self._can_client.recv(drain=True)
@@ -396,39 +414,42 @@ class IsoTpMessage():
self.rx_idx = 0 self.rx_idx = 0
self.rx_done = False self.rx_done = False
if self.debug: if self.debug and not setup_only:
print(f"ISO-TP: REQUEST - {hex(self._can_client.tx_addr)} 0x{bytes.hex(self.tx_dat)}") print(f"ISO-TP: REQUEST - {hex(self._can_client.tx_addr)} 0x{bytes.hex(self.tx_dat)}")
self._tx_first_frame() self._tx_first_frame(setup_only=setup_only)
def _tx_first_frame(self) -> None: def _tx_first_frame(self, setup_only: bool = False) -> None:
if self.tx_len < self.max_len: if self.tx_len < self.max_len:
# single frame (send all bytes) # single frame (send all bytes)
if self.debug: if self.debug and not setup_only:
print(f"ISO-TP: TX - single frame - {hex(self._can_client.tx_addr)}") print(f"ISO-TP: TX - single frame - {hex(self._can_client.tx_addr)}")
msg = (bytes([self.tx_len]) + self.tx_dat).ljust(self.max_len, b"\x00") msg = (bytes([self.tx_len]) + self.tx_dat).ljust(self.max_len, b"\x00")
self.tx_done = True self.tx_done = True
else: else:
# first frame (send first 6 bytes) # first frame (send first 6 bytes)
if self.debug: if self.debug and not setup_only:
print(f"ISO-TP: TX - first frame - {hex(self._can_client.tx_addr)}") print(f"ISO-TP: TX - first frame - {hex(self._can_client.tx_addr)}")
msg = (struct.pack("!H", 0x1000 | self.tx_len) + self.tx_dat[:self.max_len - 2]).ljust(self.max_len - 2, b"\x00") msg = (struct.pack("!H", 0x1000 | self.tx_len) + self.tx_dat[:self.max_len - 2]).ljust(self.max_len - 2, b"\x00")
self._can_client.send([msg]) if not setup_only:
self._can_client.send([msg])
def recv(self, timeout=None) -> Optional[bytes]: def recv(self, timeout=None) -> Tuple[Optional[bytes], bool]:
if timeout is None: if timeout is None:
timeout = self.timeout timeout = self.timeout
start_time = time.monotonic() start_time = time.monotonic()
updated = False
try: try:
while True: while True:
for msg in self._can_client.recv(): for msg in self._can_client.recv():
self._isotp_rx_next(msg) self._isotp_rx_next(msg)
start_time = time.monotonic() start_time = time.monotonic()
updated = True
if self.tx_done and self.rx_done: if self.tx_done and self.rx_done:
return self.rx_dat return self.rx_dat, updated
# no timeout indicates non-blocking # no timeout indicates non-blocking
if timeout == 0: if timeout == 0:
return None return None, updated
if time.monotonic() - start_time > timeout: if time.monotonic() - start_time > timeout:
raise MessageTimeoutError("timeout waiting for response") raise MessageTimeoutError("timeout waiting for response")
finally: finally:
@@ -456,9 +477,8 @@ class IsoTpMessage():
print(f"ISO-TP: RX - first frame - {hex(self._can_client.rx_addr)} idx={self.rx_idx} done={self.rx_done}") print(f"ISO-TP: RX - first frame - {hex(self._can_client.rx_addr)} idx={self.rx_idx} done={self.rx_done}")
if self.debug: if self.debug:
print(f"ISO-TP: TX - flow control continue - {hex(self._can_client.tx_addr)}") print(f"ISO-TP: TX - flow control continue - {hex(self._can_client.tx_addr)}")
# send flow control message (send all bytes) # send flow control message
msg = b"\x30\x00\x00".ljust(self.max_len, b"\x00") self._can_client.send([self.flow_control_msg])
self._can_client.send([msg])
return return
# consecutive rx frame # consecutive rx frame
@@ -470,6 +490,9 @@ class IsoTpMessage():
self.rx_dat += rx_data[1:1 + rx_size] self.rx_dat += rx_data[1:1 + rx_size]
if self.rx_len == len(self.rx_dat): if self.rx_len == len(self.rx_dat):
self.rx_done = True self.rx_done = True
elif self.single_frame_mode:
# notify ECU to send next frame
self._can_client.send([self.flow_control_msg])
if self.debug: if self.debug:
print(f"ISO-TP: RX - consecutive frame - {hex(self._can_client.rx_addr)} idx={self.rx_idx} done={self.rx_done}") print(f"ISO-TP: RX - consecutive frame - {hex(self._can_client.rx_addr)} idx={self.rx_idx} done={self.rx_done}")
return return
@@ -548,12 +571,12 @@ class UdsClient():
req += data req += data
# send request, wait for response # send request, wait for response
isotp_msg = IsoTpMessage(self._can_client, self.timeout, self.debug) isotp_msg = IsoTpMessage(self._can_client, timeout=self.timeout, debug=self.debug)
isotp_msg.send(req) isotp_msg.send(req)
response_pending = False response_pending = False
while True: while True:
timeout = self.response_pending_timeout if response_pending else self.timeout timeout = self.response_pending_timeout if response_pending else self.timeout
resp = isotp_msg.recv(timeout) resp, _ = isotp_msg.recv(timeout)
if resp is None: if resp is None:
continue continue
-44
View File
@@ -1,44 +0,0 @@
#!/usr/bin/env python3
import os
import time
def ensure_st_up_to_date():
from panda import Panda, PandaDFU, BASEDIR
with open(os.path.join(BASEDIR, "VERSION")) as f:
repo_version = f.read()
repo_version += "-EON" if os.path.isfile('/EON') else "-DEV"
panda = None
panda_dfu = None
while 1:
# break on normal mode Panda
panda_list = Panda.list()
if len(panda_list) > 0:
panda = Panda(panda_list[0])
break
# flash on DFU mode Panda
panda_dfu = PandaDFU.list()
if len(panda_dfu) > 0:
panda_dfu = PandaDFU(panda_dfu[0])
panda_dfu.recover()
print("waiting for board...")
time.sleep(1)
if panda.bootstub or not panda.get_version().startswith(repo_version):
panda.flash()
if panda.bootstub:
panda.recover()
assert(not panda.bootstub)
version = str(panda.get_version())
print("%s should be %s" % (version, repo_version))
assert(version.startswith(repo_version))
if __name__ == "__main__":
ensure_st_up_to_date()
Binary file not shown.
+1 -30
View File
@@ -3,42 +3,13 @@
DFU_UTIL="dfu-util" DFU_UTIL="dfu-util"
DEFAULT_FW_FN="/data/openpilot/panda/board/obj/panda.bin.signed" DEFAULT_FW_FN="/data/openpilot/panda/board/obj/panda.bin.signed"
DEFAULT_SSPOOF_FW_FN="/data/openpilot/panda/board/obj/panda.bin.sspoof.signed"
TESTING_FW_FN="/data/openpilot/panda/board/obj/panda.bin.testing.signed"
TESTING_SSPOOF_FW_FN="/data/openpilot/panda/board/obj/panda.bin.testing.sspoof.signed"
ATL_ENABLED=0
ATL=`cat /data/params/d/dp_atl`
if [ -f /data/params/d/dp_atl ] && [ $ATL != "0" ]; then
ATL_ENABLED=1
fi
SSPOOF_ENABLED=0
SSPOOF=`cat /data/params/d/dp_sspoof`
if [ -f /data/params/d/dp_sspoof ] && [ $SSPOOF != "0" ]; then
SSPOOF_ENABLED=1
fi
FW=$DEFAULT_FW_FN
if [ "$ATL_ENABLED" = "1" ] && [ "$SSPOOF_ENABLED" = "1" ] && [ -f $TESTING_SSPOOF_FW_FN ]; then
echo "Use testing + sspoof firmware..."
FW=$TESTING_SSPOOF_FW_FN
elif [ "$ATL_ENABLED" = "1" ] && [ "$SSPOOF_ENABLED" = "0" ] && [ -f $TESTING_FW_FN ]; then
echo "Use testing firmware..."
FW=$TESTING_FW_FN
elif [ "$ATL_ENABLED" = "0" ] && [ "$SSPOOF_ENABLED" = "1" ] && [ -f $DEFAULT_SSPOOF_FW_FN ]; then
echo "Use sspoof firmware..."
FW=$DEFAULT_SSPOOF_FW_FN
else
echo "Use stock firmware..."
fi
/data/openpilot/selfdrive/ui/qt/spinner & /data/openpilot/selfdrive/ui/qt/spinner &
pkill -f boardd pkill -f boardd
python -c "from panda import Panda; Panda().reset(enter_bootstub=True); Panda().reset(enter_bootloader=True)" || true python -c "from panda import Panda; Panda().reset(enter_bootstub=True); Panda().reset(enter_bootloader=True)" || true
sleep 1 sleep 1
echo "\n\n\nUpdating panda.bin..." echo "\n\n\nUpdating panda.bin..."
$DFU_UTIL -d 0483:df11 -a 0 -s 0x08004000 -D $FW $DFU_UTIL -d 0483:df11 -a 0 -s 0x08004000 -D $DEFAULT_FW_FN
echo "\n\n\nUpdating bootstub.panda.bin..." echo "\n\n\nUpdating bootstub.panda.bin..."
$DFU_UTIL -d 0483:df11 -a 0 -s 0x08000000:leave -D /data/openpilot/panda/board/obj/bootstub.panda.bin $DFU_UTIL -d 0483:df11 -a 0 -s 0x08000000:leave -D /data/openpilot/panda/board/obj/bootstub.panda.bin
sleep 1 sleep 1
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

+4
View File
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<svg viewBox="0 0 300 300" xmlns="http://www.w3.org/2000/svg">
<path d="M 278.364 122.673 C 282.129 126.545 284.418 132.064 284.5 137.465 L 284.5 200.562 C 284.419 205.963 282.129 211.48 278.364 215.352 C 274.492 219.119 268.972 221.407 263.571 221.488 L 259.262 221.488 L 259.262 238.417 C 259.128 241.171 257.425 244.12 255.107 245.614 C 252.655 246.875 249.249 246.874 246.796 245.613 C 244.48 244.12 242.777 241.171 242.643 238.417 L 242.643 221.488 L 57.357 221.488 L 57.357 238.417 C 57.223 241.171 55.519 244.121 53.203 245.614 C 50.75 246.875 47.344 246.875 44.892 245.614 C 42.575 244.12 40.872 241.171 40.738 238.417 L 40.738 221.488 L 36.427 221.488 C 31.027 221.407 25.508 219.119 21.636 215.352 C 17.871 211.48 15.582 205.961 15.5 200.56 L 15.5 137.463 C 15.581 132.062 17.871 126.545 21.636 122.673 C 25.508 118.906 31.029 116.618 36.429 116.536 L 40.738 116.536 L 40.738 87.024 C 40.426 78.719 43.434 70.271 48.95 64.028 C 54.579 57.887 62.818 53.986 71.131 53.441 L 228.982 53.444 C 237.295 53.989 245.421 57.888 251.05 64.028 C 256.566 70.272 259.574 78.719 259.262 87.024 L 259.262 116.536 L 263.573 116.536 C 268.974 116.618 274.492 118.906 278.364 122.673 Z M 60.911 75.581 C 58.147 78.782 56.932 82.617 57.35 86.825 L 57.357 118.356 C 60.791 119.893 63.643 122.022 66.115 125.423 C 68.512 128.877 69.916 133.256 69.976 137.46 L 69.976 167.014 L 230.024 167.014 L 230.024 137.466 C 230.084 133.262 231.488 128.877 233.884 125.423 C 236.357 122.021 239.208 119.892 242.643 118.356 L 242.643 86.988 C 243.06 82.779 241.852 78.782 239.089 75.581 C 236.438 72.283 232.951 70.432 228.785 70.059 L 71.215 70.059 C 67.049 70.433 63.563 72.283 60.911 75.581 Z M 33.383 203.605 C 34.241 204.572 35.14 204.944 36.431 204.87 L 53.357 204.87 L 53.357 137.465 C 53.432 136.174 53.06 135.278 52.093 134.42 C 51.236 133.454 50.336 133.08 49.046 133.155 L 36.429 133.155 C 35.139 133.08 34.295 133.506 33.382 134.419 C 32.47 135.332 32.044 136.176 32.119 137.466 L 32.119 200.56 C 32.044 201.851 32.416 202.747 33.383 203.605 Z M 69.976 204.87 L 230.024 204.87 L 230.024 183.631 L 69.976 183.631 L 69.976 204.87 Z M 267.881 137.465 C 267.956 136.174 267.584 135.278 266.618 134.419 C 265.758 133.453 264.86 133.08 263.57 133.155 L 250.953 133.155 C 249.663 133.08 248.766 133.452 247.908 134.419 C 246.941 135.277 246.568 136.176 246.643 137.466 L 246.643 204.87 L 263.571 204.87 C 264.862 204.944 265.759 204.572 266.616 203.606 C 267.583 202.748 267.956 201.849 267.881 200.559 L 267.881 137.465 Z" fill="black" style="stroke-width: 4px; vector-effect: non-scaling-stroke; fill-opacity: 0.4;"/>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

+10
View File
@@ -0,0 +1,10 @@
<svg width="300" height="300" viewBox="0 0 300 300" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M182.019 181.218C123.429 239.83 67.543 258.769 54.9241 245.243C51.3182 241.636 51.3182 236.226 51.3182 231.717C51.3182 207.37 74.7548 160.481 124.331 114.489C129.74 109.98 129.74 101.864 125.233 96.454C120.725 91.0438 112.612 91.0438 107.204 95.5525C95.4866 106.373 85.5713 117.194 76.5569 128.016C51.3181 89.242 45.9096 61.2866 54.0213 52.2701C63.9367 42.351 100.894 50.4672 144.162 82.9291C157.683 92.8482 171.203 104.57 183.823 117.196C193.738 127.115 203.654 137.936 211.767 148.757C202.754 160.48 192.838 170.399 182.021 181.22L182.019 181.218ZM246.019 54.0753C255.033 63.0928 248.724 91.9498 225.287 128.918C217.174 118.999 209.062 109.982 200.048 100.063C191.034 91.0451 181.119 82.0274 171.204 73.9125C209.064 49.5654 237.006 45.0578 246.019 54.0753ZM264.048 36.04C243.316 15.3002 200.047 24.318 150.471 58.5842C100.894 24.317 56.7244 15.3005 35.9947 36.04C15.2627 56.7799 24.2771 99.1619 59.4313 149.66C38.6993 179.417 26.0793 208.272 26.0793 231.718C26.0793 247.949 32.3888 257.868 36.896 263.278C45.0091 271.394 54.9244 275 67.5433 275C105.403 275 158.583 241.635 200.049 200.157C209.063 191.14 218.077 181.22 225.288 171.301C249.625 209.176 255.034 237.128 246.02 246.144C238.809 253.357 218.076 250.653 193.739 238.028C187.43 235.322 180.218 237.127 176.613 243.438C173.008 249.75 175.712 256.965 182.022 260.571C200.951 270.49 218.979 274.999 232.501 274.999C245.121 274.999 255.036 271.391 263.148 263.277C283.88 242.537 274.866 199.252 240.612 149.657C272.163 105.473 286.583 59.4852 264.05 36.0397L264.048 36.04Z" fill="url(#paint0_radial_1352_397)"/>
<path d="M175.414 154.169C175.414 171.6 161.29 185.729 143.866 185.729C126.441 185.729 112.317 171.6 112.317 154.169C112.317 136.738 126.441 122.609 143.866 122.609C161.29 122.609 175.414 136.738 175.414 154.169Z" fill="#E11C1C"/>
<defs>
<radialGradient id="paint0_radial_1352_397" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(150 150) rotate(90) scale(125)">
<stop offset="0.135417" stop-color="#E11C1C"/>
<stop offset="1" stop-color="#FF8C22"/>
</radialGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

@@ -0,0 +1,4 @@
<svg width="300" height="300" viewBox="0 0 300 300" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M182.019 181.218C123.429 239.83 67.543 258.769 54.9241 245.243C51.3182 241.636 51.3182 236.226 51.3182 231.717C51.3182 207.37 74.7548 160.481 124.331 114.489C129.74 109.98 129.74 101.864 125.233 96.454C120.725 91.0438 112.612 91.0438 107.204 95.5525C95.4866 106.373 85.5713 117.194 76.5569 128.016C51.3181 89.242 45.9096 61.2866 54.0213 52.2701C63.9367 42.351 100.894 50.4672 144.162 82.9291C157.683 92.8482 171.203 104.57 183.823 117.196C193.738 127.115 203.654 137.936 211.767 148.757C202.754 160.48 192.838 170.399 182.021 181.22L182.019 181.218ZM246.019 54.0753C255.033 63.0928 248.724 91.9498 225.287 128.918C217.174 118.999 209.062 109.982 200.048 100.063C191.034 91.0451 181.119 82.0274 171.204 73.9125C209.064 49.5654 237.006 45.0578 246.019 54.0753ZM264.048 36.04C243.316 15.3002 200.047 24.318 150.471 58.5842C100.894 24.317 56.7244 15.3005 35.9947 36.04C15.2627 56.7799 24.2771 99.1619 59.4313 149.66C38.6993 179.417 26.0793 208.272 26.0793 231.718C26.0793 247.949 32.3888 257.868 36.896 263.278C45.0091 271.394 54.9244 275 67.5433 275C105.403 275 158.583 241.635 200.049 200.157C209.063 191.14 218.077 181.22 225.288 171.301C249.625 209.176 255.034 237.128 246.02 246.144C238.809 253.357 218.076 250.653 193.739 238.028C187.43 235.322 180.218 237.127 176.613 243.438C173.008 249.75 175.712 256.965 182.022 260.571C200.951 270.49 218.979 274.999 232.501 274.999C245.121 274.999 255.036 271.391 263.148 263.277C283.88 242.537 274.866 199.252 240.612 149.657C272.163 105.473 286.583 59.4852 264.05 36.0397L264.048 36.04Z" fill="black" fill-opacity="0.36"/>
<path d="M175.414 154.169C175.414 171.6 161.29 185.729 143.866 185.729C126.441 185.729 112.317 171.6 112.317 154.169C112.317 136.738 126.441 122.609 143.866 122.609C161.29 122.609 175.414 136.738 175.414 154.169Z" fill="black" fill-opacity="0.36"/>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

@@ -0,0 +1,4 @@
<svg width="300" height="300" viewBox="0 0 300 300" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M182.019 181.218C123.429 239.83 67.543 258.769 54.9241 245.243C51.3182 241.636 51.3182 236.226 51.3182 231.717C51.3182 207.37 74.7548 160.481 124.331 114.489C129.74 109.98 129.74 101.864 125.233 96.454C120.725 91.0438 112.612 91.0438 107.204 95.5525C95.4866 106.373 85.5713 117.194 76.5569 128.016C51.3181 89.242 45.9096 61.2866 54.0213 52.2701C63.9367 42.351 100.894 50.4672 144.162 82.9291C157.683 92.8482 171.203 104.57 183.823 117.196C193.738 127.115 203.654 137.936 211.767 148.757C202.754 160.48 192.838 170.399 182.021 181.22L182.019 181.218ZM246.019 54.0753C255.033 63.0928 248.724 91.9498 225.287 128.918C217.174 118.999 209.062 109.982 200.048 100.063C191.034 91.0451 181.119 82.0274 171.204 73.9125C209.064 49.5654 237.006 45.0578 246.019 54.0753ZM264.048 36.04C243.316 15.3002 200.047 24.318 150.471 58.5842C100.894 24.317 56.7244 15.3005 35.9947 36.04C15.2627 56.7799 24.2771 99.1619 59.4313 149.66C38.6993 179.417 26.0793 208.272 26.0793 231.718C26.0793 247.949 32.3888 257.868 36.896 263.278C45.0091 271.394 54.9244 275 67.5433 275C105.403 275 158.583 241.635 200.049 200.157C209.063 191.14 218.077 181.22 225.288 171.301C249.625 209.176 255.034 237.128 246.02 246.144C238.809 253.357 218.076 250.653 193.739 238.028C187.43 235.322 180.218 237.127 176.613 243.438C173.008 249.75 175.712 256.965 182.022 260.571C200.951 270.49 218.979 274.999 232.501 274.999C245.121 274.999 255.036 271.391 263.148 263.277C283.88 242.537 274.866 199.252 240.612 149.657C272.163 105.473 286.583 59.4852 264.05 36.0397L264.048 36.04Z" fill="white"/>
<path d="M175.414 154.169C175.414 171.6 161.29 185.729 143.866 185.729C126.441 185.729 112.317 171.6 112.317 154.169C112.317 136.738 126.441 122.609 143.866 122.609C161.29 122.609 175.414 136.738 175.414 154.169Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+134 -89
View File
@@ -1,4 +1,6 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
from __future__ import annotations
import base64 import base64
import bz2 import bz2
import hashlib import hashlib
@@ -14,14 +16,15 @@ import sys
import tempfile import tempfile
import threading import threading
import time import time
from collections import namedtuple from dataclasses import asdict, dataclass, replace
from datetime import datetime from datetime import datetime
from functools import partial from functools import partial
from typing import Any, Dict from queue import Queue
from typing import BinaryIO, Callable, Dict, List, Optional, Set, Union, cast
import requests import requests
from jsonrpc import JSONRPCResponseManager, dispatcher from jsonrpc import JSONRPCResponseManager, dispatcher
from websocket import (ABNF, WebSocketException, WebSocketTimeoutException, from websocket import (ABNF, WebSocket, WebSocketException, WebSocketTimeoutException,
create_connection) create_connection)
import cereal.messaging as messaging import cereal.messaging as messaging
@@ -54,19 +57,54 @@ WS_FRAME_SIZE = 4096
NetworkType = log.DeviceState.NetworkType NetworkType = log.DeviceState.NetworkType
UploadFileDict = Dict[str, Union[str, int, float, bool]]
UploadItemDict = Dict[str, Union[str, bool, int, float, Dict[str, str]]]
UploadFilesToUrlResponse = Dict[str, Union[int, List[UploadItemDict], List[str]]]
@dataclass
class UploadFile:
fn: str
url: str
headers: Dict[str, str]
allow_cellular: bool
@classmethod
def from_dict(cls, d: Dict) -> UploadFile:
return cls(d.get("fn", ""), d.get("url", ""), d.get("headers", {}), d.get("allow_cellular", False))
@dataclass
class UploadItem:
path: str
url: str
headers: Dict[str, str]
created_at: int
id: Optional[str]
retry_count: int = 0
current: bool = False
progress: float = 0
allow_cellular: bool = False
@classmethod
def from_dict(cls, d: Dict) -> UploadItem:
return cls(d["path"], d["url"], d["headers"], d["created_at"], d["id"], d["retry_count"], d["current"],
d["progress"], d["allow_cellular"])
dispatcher["echo"] = lambda s: s dispatcher["echo"] = lambda s: s
recv_queue: Any = queue.Queue() recv_queue: Queue[str] = queue.Queue()
send_queue: Any = queue.Queue() send_queue: Queue[str] = queue.Queue()
upload_queue: Any = queue.Queue() upload_queue: Queue[UploadItem] = queue.Queue()
low_priority_send_queue: Any = queue.Queue() low_priority_send_queue: Queue[str] = queue.Queue()
log_recv_queue: Any = queue.Queue() log_recv_queue: Queue[str] = queue.Queue()
cancelled_uploads: Any = set() cancelled_uploads: Set[str] = set()
UploadItem = namedtuple('UploadItem', ['path', 'url', 'headers', 'created_at', 'id', 'retry_count', 'current', 'progress', 'allow_cellular'], defaults=(0, False, 0, False))
cur_upload_items: Dict[int, Any] = {} cur_upload_items: Dict[int, Optional[UploadItem]] = {}
def strip_bz2_extension(fn): def strip_bz2_extension(fn: str) -> str:
if fn.endswith('.bz2'): if fn.endswith('.bz2'):
return fn[:-4] return fn[:-4]
return fn return fn
@@ -76,29 +114,30 @@ class AbortTransferException(Exception):
pass pass
class UploadQueueCache(): class UploadQueueCache:
params = Params() params = Params()
@staticmethod @staticmethod
def initialize(upload_queue): def initialize(upload_queue: Queue[UploadItem]) -> None:
try: try:
upload_queue_json = UploadQueueCache.params.get("AthenadUploadQueue") upload_queue_json = UploadQueueCache.params.get("AthenadUploadQueue")
if upload_queue_json is not None: if upload_queue_json is not None:
for item in json.loads(upload_queue_json): for item in json.loads(upload_queue_json):
upload_queue.put(UploadItem(**item)) upload_queue.put(UploadItem.from_dict(item))
except Exception: except Exception:
cloudlog.exception("athena.UploadQueueCache.initialize.exception") cloudlog.exception("athena.UploadQueueCache.initialize.exception")
@staticmethod @staticmethod
def cache(upload_queue): def cache(upload_queue: Queue[UploadItem]) -> None:
try: try:
items = [i._asdict() for i in upload_queue.queue if i.id not in cancelled_uploads] queue: List[Optional[UploadItem]] = list(upload_queue.queue)
items = [asdict(i) for i in queue if i is not None and (i.id not in cancelled_uploads)]
UploadQueueCache.params.put("AthenadUploadQueue", json.dumps(items)) UploadQueueCache.params.put("AthenadUploadQueue", json.dumps(items))
except Exception: except Exception:
cloudlog.exception("athena.UploadQueueCache.cache.exception") cloudlog.exception("athena.UploadQueueCache.cache.exception")
def handle_long_poll(ws): def handle_long_poll(ws: WebSocket) -> None:
end_event = threading.Event() end_event = threading.Event()
threads = [ threads = [
@@ -126,7 +165,7 @@ def handle_long_poll(ws):
thread.join() thread.join()
def jsonrpc_handler(end_event): def jsonrpc_handler(end_event: threading.Event) -> None:
dispatcher["startLocalProxy"] = partial(startLocalProxy, end_event) dispatcher["startLocalProxy"] = partial(startLocalProxy, end_event)
while not end_event.is_set(): while not end_event.is_set():
try: try:
@@ -147,11 +186,12 @@ def jsonrpc_handler(end_event):
def retry_upload(tid: int, end_event: threading.Event, increase_count: bool = True) -> None: def retry_upload(tid: int, end_event: threading.Event, increase_count: bool = True) -> None:
if cur_upload_items[tid].retry_count < MAX_RETRY_COUNT: item = cur_upload_items[tid]
item = cur_upload_items[tid] if item is not None and item.retry_count < MAX_RETRY_COUNT:
new_retry_count = item.retry_count + 1 if increase_count else item.retry_count new_retry_count = item.retry_count + 1 if increase_count else item.retry_count
item = item._replace( item = replace(
item,
retry_count=new_retry_count, retry_count=new_retry_count,
progress=0, progress=0,
current=False current=False
@@ -175,44 +215,44 @@ def upload_handler(end_event: threading.Event) -> None:
cur_upload_items[tid] = None cur_upload_items[tid] = None
try: try:
cur_upload_items[tid] = upload_queue.get(timeout=1)._replace(current=True) cur_upload_items[tid] = item = replace(upload_queue.get(timeout=1), current=True)
if cur_upload_items[tid].id in cancelled_uploads: if item.id in cancelled_uploads:
cancelled_uploads.remove(cur_upload_items[tid].id) cancelled_uploads.remove(item.id)
continue continue
# Remove item if too old # Remove item if too old
age = datetime.now() - datetime.fromtimestamp(cur_upload_items[tid].created_at / 1000) age = datetime.now() - datetime.fromtimestamp(item.created_at / 1000)
if age.total_seconds() > MAX_AGE: if age.total_seconds() > MAX_AGE:
cloudlog.event("athena.upload_handler.expired", item=cur_upload_items[tid], error=True) cloudlog.event("athena.upload_handler.expired", item=item, error=True)
continue continue
# Check if uploading over metered connection is allowed # Check if uploading over metered connection is allowed
sm.update(0) sm.update(0)
metered = sm['deviceState'].networkMetered metered = sm['deviceState'].networkMetered
network_type = sm['deviceState'].networkType.raw network_type = sm['deviceState'].networkType.raw
if metered and (not cur_upload_items[tid].allow_cellular): if metered and (not item.allow_cellular):
retry_upload(tid, end_event, False) retry_upload(tid, end_event, False)
continue continue
try: try:
def cb(sz, cur): def cb(sz: int, cur: int) -> None:
# Abort transfer if connection changed to metered after starting upload # Abort transfer if connection changed to metered after starting upload
sm.update(0) sm.update(0)
metered = sm['deviceState'].networkMetered metered = sm['deviceState'].networkMetered
if metered and (not cur_upload_items[tid].allow_cellular): if metered and (not item.allow_cellular):
raise AbortTransferException raise AbortTransferException
cur_upload_items[tid] = cur_upload_items[tid]._replace(progress=cur / sz if sz else 1) cur_upload_items[tid] = replace(item, progress=cur / sz if sz else 1)
fn = cur_upload_items[tid].path fn = item.path
try: try:
sz = os.path.getsize(fn) sz = os.path.getsize(fn)
except OSError: except OSError:
sz = -1 sz = -1
cloudlog.event("athena.upload_handler.upload_start", fn=fn, sz=sz, network_type=network_type, metered=metered, retry_count=cur_upload_items[tid].retry_count) cloudlog.event("athena.upload_handler.upload_start", fn=fn, sz=sz, network_type=network_type, metered=metered, retry_count=item.retry_count)
response = _do_upload(cur_upload_items[tid], cb) response = _do_upload(item, cb)
if response.status_code not in (200, 201, 401, 403, 412): if response.status_code not in (200, 201, 401, 403, 412):
cloudlog.event("athena.upload_handler.retry", status_code=response.status_code, fn=fn, sz=sz, network_type=network_type, metered=metered) cloudlog.event("athena.upload_handler.retry", status_code=response.status_code, fn=fn, sz=sz, network_type=network_type, metered=metered)
@@ -234,7 +274,7 @@ def upload_handler(end_event: threading.Event) -> None:
cloudlog.exception("athena.upload_handler.exception") cloudlog.exception("athena.upload_handler.exception")
def _do_upload(upload_item, callback=None): def _do_upload(upload_item: UploadItem, callback: Optional[Callable] = None) -> requests.Response:
path = upload_item.path path = upload_item.path
compress = False compress = False
@@ -244,27 +284,25 @@ def _do_upload(upload_item, callback=None):
compress = True compress = True
with open(path, "rb") as f: with open(path, "rb") as f:
data: BinaryIO
if compress: if compress:
cloudlog.event("athena.upload_handler.compress", fn=path, fn_orig=upload_item.path) cloudlog.event("athena.upload_handler.compress", fn=path, fn_orig=upload_item.path)
data = bz2.compress(f.read()) compressed = bz2.compress(f.read())
size = len(data) size = len(compressed)
data = io.BytesIO(data) data = io.BytesIO(compressed)
else: else:
size = os.fstat(f.fileno()).st_size size = os.fstat(f.fileno()).st_size
data = f data = f
if callback:
data = CallbackReader(data, callback, size)
return requests.put(upload_item.url, return requests.put(upload_item.url,
data=data, data=CallbackReader(data, callback, size) if callback else data,
headers={**upload_item.headers, 'Content-Length': str(size)}, headers={**upload_item.headers, 'Content-Length': str(size)},
timeout=30) timeout=30)
# security: user should be able to request any message from their car # security: user should be able to request any message from their car
@dispatcher.add_method @dispatcher.add_method
def getMessage(service=None, timeout=1000): def getMessage(service: str, timeout: int = 1000) -> Dict:
if service is None or service not in service_list: if service is None or service not in service_list:
raise Exception("invalid service") raise Exception("invalid service")
@@ -274,7 +312,8 @@ def getMessage(service=None, timeout=1000):
if ret is None: if ret is None:
raise TimeoutError raise TimeoutError
return ret.to_dict() # this is because capnp._DynamicStructReader doesn't have typing information
return cast(Dict, ret.to_dict())
@dispatcher.add_method @dispatcher.add_method
@@ -288,7 +327,7 @@ def getVersion() -> Dict[str, str]:
@dispatcher.add_method @dispatcher.add_method
def setNavDestination(latitude=0, longitude=0, place_name=None, place_details=None): def setNavDestination(latitude: int = 0, longitude: int = 0, place_name: Optional[str] = None, place_details: Optional[str] = None) -> Dict[str, int]:
destination = { destination = {
"latitude": latitude, "latitude": latitude,
"longitude": longitude, "longitude": longitude,
@@ -300,8 +339,8 @@ def setNavDestination(latitude=0, longitude=0, place_name=None, place_details=No
return {"success": 1} return {"success": 1}
def scan_dir(path, prefix): def scan_dir(path: str, prefix: str) -> List[str]:
files = list() files = []
# only walk directories that match the prefix # only walk directories that match the prefix
# (glob and friends traverse entire dir tree) # (glob and friends traverse entire dir tree)
with os.scandir(path) as i: with os.scandir(path) as i:
@@ -320,18 +359,18 @@ def scan_dir(path, prefix):
return files return files
@dispatcher.add_method @dispatcher.add_method
def listDataDirectory(prefix=''): def listDataDirectory(prefix='') -> List[str]:
return scan_dir(ROOT, prefix) return scan_dir(ROOT, prefix)
@dispatcher.add_method @dispatcher.add_method
def reboot(): def reboot() -> Dict[str, int]:
sock = messaging.sub_sock("deviceState", timeout=1000) sock = messaging.sub_sock("deviceState", timeout=1000)
ret = messaging.recv_one(sock) ret = messaging.recv_one(sock)
if ret is None or ret.deviceState.started: if ret is None or ret.deviceState.started:
raise Exception("Reboot unavailable") raise Exception("Reboot unavailable")
def do_reboot(): def do_reboot() -> None:
time.sleep(2) time.sleep(2)
HARDWARE.reboot() HARDWARE.reboot()
@@ -341,50 +380,53 @@ def reboot():
@dispatcher.add_method @dispatcher.add_method
def uploadFileToUrl(fn, url, headers): def uploadFileToUrl(fn: str, url: str, headers: Dict[str, str]) -> UploadFilesToUrlResponse:
return uploadFilesToUrls([{ # this is because mypy doesn't understand that the decorator doesn't change the return type
response: UploadFilesToUrlResponse = uploadFilesToUrls([{
"fn": fn, "fn": fn,
"url": url, "url": url,
"headers": headers, "headers": headers,
}]) }])
return response
@dispatcher.add_method @dispatcher.add_method
def uploadFilesToUrls(files_data): def uploadFilesToUrls(files_data: List[UploadFileDict]) -> UploadFilesToUrlResponse:
items = [] files = map(UploadFile.from_dict, files_data)
failed = []
for file in files_data: items: List[UploadItemDict] = []
fn = file.get('fn', '') failed: List[str] = []
if len(fn) == 0 or fn[0] == '/' or '..' in fn or 'url' not in file: for file in files:
failed.append(fn) if len(file.fn) == 0 or file.fn[0] == '/' or '..' in file.fn or len(file.url) == 0:
failed.append(file.fn)
continue continue
path = os.path.join(ROOT, fn) path = os.path.join(ROOT, file.fn)
if not os.path.exists(path) and not os.path.exists(strip_bz2_extension(path)): if not os.path.exists(path) and not os.path.exists(strip_bz2_extension(path)):
failed.append(fn) failed.append(file.fn)
continue continue
# Skip item if already in queue # Skip item if already in queue
url = file['url'].split('?')[0] url = file.url.split('?')[0]
if any(url == item['url'].split('?')[0] for item in listUploadQueue()): if any(url == item['url'].split('?')[0] for item in listUploadQueue()):
continue continue
item = UploadItem( item = UploadItem(
path=path, path=path,
url=file['url'], url=file.url,
headers=file.get('headers', {}), headers=file.headers,
created_at=int(time.time() * 1000), created_at=int(time.time() * 1000),
id=None, id=None,
allow_cellular=file.get('allow_cellular', False), allow_cellular=file.allow_cellular,
) )
upload_id = hashlib.sha1(str(item).encode()).hexdigest() upload_id = hashlib.sha1(str(item).encode()).hexdigest()
item = item._replace(id=upload_id) item = replace(item, id=upload_id)
upload_queue.put_nowait(item) upload_queue.put_nowait(item)
items.append(item._asdict()) items.append(asdict(item))
UploadQueueCache.cache(upload_queue) UploadQueueCache.cache(upload_queue)
resp = {"enqueued": len(items), "items": items} resp: UploadFilesToUrlResponse = {"enqueued": len(items), "items": items}
if failed: if failed:
resp["failed"] = failed resp["failed"] = failed
@@ -392,32 +434,32 @@ def uploadFilesToUrls(files_data):
@dispatcher.add_method @dispatcher.add_method
def listUploadQueue(): def listUploadQueue() -> List[UploadItemDict]:
items = list(upload_queue.queue) + list(cur_upload_items.values()) items = list(upload_queue.queue) + list(cur_upload_items.values())
return [i._asdict() for i in items if (i is not None) and (i.id not in cancelled_uploads)] return [asdict(i) for i in items if (i is not None) and (i.id not in cancelled_uploads)]
@dispatcher.add_method @dispatcher.add_method
def cancelUpload(upload_id): def cancelUpload(upload_id: Union[str, List[str]]) -> Dict[str, Union[int, str]]:
if not isinstance(upload_id, list): if not isinstance(upload_id, list):
upload_id = [upload_id] upload_id = [upload_id]
uploading_ids = {item.id for item in list(upload_queue.queue)} uploading_ids = {item.id for item in list(upload_queue.queue)}
cancelled_ids = uploading_ids.intersection(upload_id) cancelled_ids = uploading_ids.intersection(upload_id)
if len(cancelled_ids) == 0: if len(cancelled_ids) == 0:
return 404 return {"success": 0, "error": "not found"}
cancelled_uploads.update(cancelled_ids) cancelled_uploads.update(cancelled_ids)
return {"success": 1} return {"success": 1}
@dispatcher.add_method @dispatcher.add_method
def primeActivated(activated): def primeActivated(activated: bool) -> Dict[str, int]:
return {"success": 1} return {"success": 1}
@dispatcher.add_method @dispatcher.add_method
def setBandwithLimit(upload_speed_kbps, download_speed_kbps): def setBandwithLimit(upload_speed_kbps: int, download_speed_kbps: int) -> Dict[str, Union[int, str]]:
if not AGNOS: if not AGNOS:
return {"success": 0, "error": "only supported on AGNOS"} return {"success": 0, "error": "only supported on AGNOS"}
@@ -428,7 +470,7 @@ def setBandwithLimit(upload_speed_kbps, download_speed_kbps):
return {"success": 0, "error": "failed to set limit", "stdout": e.stdout, "stderr": e.stderr} return {"success": 0, "error": "failed to set limit", "stdout": e.stdout, "stderr": e.stderr}
def startLocalProxy(global_end_event, remote_ws_uri, local_port): def startLocalProxy(global_end_event: threading.Event, remote_ws_uri: str, local_port: int) -> Dict[str, int]:
try: try:
if local_port not in LOCAL_PORT_WHITELIST: if local_port not in LOCAL_PORT_WHITELIST:
raise Exception("Requested local port not whitelisted") raise Exception("Requested local port not whitelisted")
@@ -462,7 +504,7 @@ def startLocalProxy(global_end_event, remote_ws_uri, local_port):
@dispatcher.add_method @dispatcher.add_method
def getPublicKey(): def getPublicKey() -> Optional[str]:
if not os.path.isfile(PERSIST + '/comma/id_rsa.pub'): if not os.path.isfile(PERSIST + '/comma/id_rsa.pub'):
return None return None
@@ -471,7 +513,7 @@ def getPublicKey():
@dispatcher.add_method @dispatcher.add_method
def getSshAuthorizedKeys(): def getSshAuthorizedKeys() -> str:
return Params().get("GithubSshKeys", encoding='utf8') or '' return Params().get("GithubSshKeys", encoding='utf8') or ''
@@ -486,7 +528,7 @@ def getNetworkType():
@dispatcher.add_method @dispatcher.add_method
def getNetworkMetered(): def getNetworkMetered() -> bool:
network_type = HARDWARE.get_network_type() network_type = HARDWARE.get_network_type()
return HARDWARE.get_network_metered(network_type) return HARDWARE.get_network_metered(network_type)
@@ -497,7 +539,7 @@ def getNetworks():
@dispatcher.add_method @dispatcher.add_method
def takeSnapshot(): def takeSnapshot() -> Optional[Union[str, Dict[str, str]]]:
from system.camerad.snapshot.snapshot import jpeg_write, snapshot from system.camerad.snapshot.snapshot import jpeg_write, snapshot
ret = snapshot() ret = snapshot()
if ret is not None: if ret is not None:
@@ -514,16 +556,19 @@ def takeSnapshot():
raise Exception("not available while camerad is started") raise Exception("not available while camerad is started")
def get_logs_to_send_sorted(): def get_logs_to_send_sorted() -> List[str]:
# TODO: scan once then use inotify to detect file creation/deletion # TODO: scan once then use inotify to detect file creation/deletion
curr_time = int(time.time()) curr_time = int(time.time())
logs = [] logs = []
for log_entry in os.listdir(SWAGLOG_DIR): for log_entry in os.listdir(SWAGLOG_DIR):
log_path = os.path.join(SWAGLOG_DIR, log_entry) log_path = os.path.join(SWAGLOG_DIR, log_entry)
time_sent = 0
try: try:
time_sent = int.from_bytes(getxattr(log_path, LOG_ATTR_NAME), sys.byteorder) value = getxattr(log_path, LOG_ATTR_NAME)
if value is not None:
time_sent = int.from_bytes(value, sys.byteorder)
except (ValueError, TypeError): except (ValueError, TypeError):
time_sent = 0 pass
# assume send failed and we lost the response if sent more than one hour ago # assume send failed and we lost the response if sent more than one hour ago
if not time_sent or curr_time - time_sent > 3600: if not time_sent or curr_time - time_sent > 3600:
logs.append(log_entry) logs.append(log_entry)
@@ -531,7 +576,7 @@ def get_logs_to_send_sorted():
return sorted(logs)[:-1] return sorted(logs)[:-1]
def log_handler(end_event): def log_handler(end_event: threading.Event) -> None:
# dont upload any logs for now # dont upload any logs for now
if True: if True:
return return
@@ -594,7 +639,7 @@ def log_handler(end_event):
cloudlog.exception("athena.log_handler.exception") cloudlog.exception("athena.log_handler.exception")
def stat_handler(end_event): def stat_handler(end_event: threading.Event) -> None:
while not end_event.is_set(): while not end_event.is_set():
last_scan = 0 last_scan = 0
curr_scan = sec_since_boot() curr_scan = sec_since_boot()
@@ -620,7 +665,7 @@ def stat_handler(end_event):
time.sleep(0.1) time.sleep(0.1)
def ws_proxy_recv(ws, local_sock, ssock, end_event, global_end_event): def ws_proxy_recv(ws: WebSocket, local_sock: socket.socket, ssock: socket.socket, end_event: threading.Event, global_end_event: threading.Event) -> None:
while not (end_event.is_set() or global_end_event.is_set()): while not (end_event.is_set() or global_end_event.is_set()):
try: try:
data = ws.recv() data = ws.recv()
@@ -639,7 +684,7 @@ def ws_proxy_recv(ws, local_sock, ssock, end_event, global_end_event):
end_event.set() end_event.set()
def ws_proxy_send(ws, local_sock, signal_sock, end_event): def ws_proxy_send(ws: WebSocket, local_sock: socket.socket, signal_sock: socket.socket, end_event: threading.Event) -> None:
while not end_event.is_set(): while not end_event.is_set():
try: try:
r, _, _ = select.select((local_sock, signal_sock), (), ()) r, _, _ = select.select((local_sock, signal_sock), (), ())
@@ -664,7 +709,7 @@ def ws_proxy_send(ws, local_sock, signal_sock, end_event):
cloudlog.debug("athena.ws_proxy_send done closing sockets") cloudlog.debug("athena.ws_proxy_send done closing sockets")
def ws_recv(ws, end_event): def ws_recv(ws: WebSocket, end_event: threading.Event) -> None:
last_ping = int(sec_since_boot() * 1e9) last_ping = int(sec_since_boot() * 1e9)
while not end_event.is_set(): while not end_event.is_set():
try: try:
@@ -686,7 +731,7 @@ def ws_recv(ws, end_event):
end_event.set() end_event.set()
def ws_send(ws, end_event): def ws_send(ws: WebSocket, end_event: threading.Event) -> None:
while not end_event.is_set(): while not end_event.is_set():
try: try:
try: try:
@@ -705,7 +750,7 @@ def ws_send(ws, end_event):
end_event.set() end_event.set()
def backoff(retries): def backoff(retries: int) -> int:
return random.randrange(0, min(128, int(2 ** retries))) return random.randrange(0, min(128, int(2 ** retries)))
Binary file not shown.
+23 -108
View File
@@ -1,4 +1,4 @@
/* Generated by Cython 0.29.26 */ /* Generated by Cython 0.29.24 */
/* BEGIN: Cython Metadata /* BEGIN: Cython Metadata
{ {
@@ -23,8 +23,8 @@ END: Cython Metadata */
#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
#error Cython requires Python 2.6+ or Python 3.3+. #error Cython requires Python 2.6+ or Python 3.3+.
#else #else
#define CYTHON_ABI "0_29_26" #define CYTHON_ABI "0_29_24"
#define CYTHON_HEX_VERSION 0x001D1AF0 #define CYTHON_HEX_VERSION 0x001D18F0
#define CYTHON_FUTURE_DIVISION 1 #define CYTHON_FUTURE_DIVISION 1
#include <stddef.h> #include <stddef.h>
#ifndef offsetof #ifndef offsetof
@@ -171,7 +171,7 @@ END: Cython Metadata */
#ifndef CYTHON_USE_UNICODE_INTERNALS #ifndef CYTHON_USE_UNICODE_INTERNALS
#define CYTHON_USE_UNICODE_INTERNALS 1 #define CYTHON_USE_UNICODE_INTERNALS 1
#endif #endif
#if PY_VERSION_HEX < 0x030300F0 || PY_VERSION_HEX >= 0x030B00A2 #if PY_VERSION_HEX < 0x030300F0
#undef CYTHON_USE_UNICODE_WRITER #undef CYTHON_USE_UNICODE_WRITER
#define CYTHON_USE_UNICODE_WRITER 0 #define CYTHON_USE_UNICODE_WRITER 0
#elif !defined(CYTHON_USE_UNICODE_WRITER) #elif !defined(CYTHON_USE_UNICODE_WRITER)
@@ -190,7 +190,7 @@ END: Cython Metadata */
#define CYTHON_FAST_THREAD_STATE 1 #define CYTHON_FAST_THREAD_STATE 1
#endif #endif
#ifndef CYTHON_FAST_PYCALL #ifndef CYTHON_FAST_PYCALL
#define CYTHON_FAST_PYCALL (PY_VERSION_HEX < 0x030B00A1) #define CYTHON_FAST_PYCALL 1
#endif #endif
#ifndef CYTHON_PEP489_MULTI_PHASE_INIT #ifndef CYTHON_PEP489_MULTI_PHASE_INIT
#define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000) #define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000)
@@ -209,9 +209,7 @@ END: Cython Metadata */
#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) #define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1)
#endif #endif
#if CYTHON_USE_PYLONG_INTERNALS #if CYTHON_USE_PYLONG_INTERNALS
#if PY_MAJOR_VERSION < 3 #include "longintrepr.h"
#include "longintrepr.h"
#endif
#undef SHIFT #undef SHIFT
#undef BASE #undef BASE
#undef MASK #undef MASK
@@ -342,68 +340,9 @@ class __Pyx_FakeReference {
#define __Pyx_DefaultClassType PyClass_Type #define __Pyx_DefaultClassType PyClass_Type
#else #else
#define __Pyx_BUILTIN_MODULE_NAME "builtins" #define __Pyx_BUILTIN_MODULE_NAME "builtins"
#define __Pyx_DefaultClassType PyType_Type #if PY_VERSION_HEX >= 0x030800A4 && PY_VERSION_HEX < 0x030800B2
#if PY_VERSION_HEX >= 0x030B00A1 #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
static CYTHON_INLINE PyCodeObject* __Pyx_PyCode_New(int a, int k, int l, int s, int f, PyCode_New(a, 0, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
PyObject *code, PyObject *c, PyObject* n, PyObject *v,
PyObject *fv, PyObject *cell, PyObject* fn,
PyObject *name, int fline, PyObject *lnos) {
PyObject *kwds=NULL, *argcount=NULL, *posonlyargcount=NULL, *kwonlyargcount=NULL;
PyObject *nlocals=NULL, *stacksize=NULL, *flags=NULL, *replace=NULL, *call_result=NULL, *empty=NULL;
const char *fn_cstr=NULL;
const char *name_cstr=NULL;
PyCodeObject* co=NULL;
PyObject *type, *value, *traceback;
PyErr_Fetch(&type, &value, &traceback);
if (!(kwds=PyDict_New())) goto end;
if (!(argcount=PyLong_FromLong(a))) goto end;
if (PyDict_SetItemString(kwds, "co_argcount", argcount) != 0) goto end;
if (!(posonlyargcount=PyLong_FromLong(0))) goto end;
if (PyDict_SetItemString(kwds, "co_posonlyargcount", posonlyargcount) != 0) goto end;
if (!(kwonlyargcount=PyLong_FromLong(k))) goto end;
if (PyDict_SetItemString(kwds, "co_kwonlyargcount", kwonlyargcount) != 0) goto end;
if (!(nlocals=PyLong_FromLong(l))) goto end;
if (PyDict_SetItemString(kwds, "co_nlocals", nlocals) != 0) goto end;
if (!(stacksize=PyLong_FromLong(s))) goto end;
if (PyDict_SetItemString(kwds, "co_stacksize", stacksize) != 0) goto end;
if (!(flags=PyLong_FromLong(f))) goto end;
if (PyDict_SetItemString(kwds, "co_flags", flags) != 0) goto end;
if (PyDict_SetItemString(kwds, "co_code", code) != 0) goto end;
if (PyDict_SetItemString(kwds, "co_consts", c) != 0) goto end;
if (PyDict_SetItemString(kwds, "co_names", n) != 0) goto end;
if (PyDict_SetItemString(kwds, "co_varnames", v) != 0) goto end;
if (PyDict_SetItemString(kwds, "co_freevars", fv) != 0) goto end;
if (PyDict_SetItemString(kwds, "co_cellvars", cell) != 0) goto end;
if (PyDict_SetItemString(kwds, "co_linetable", lnos) != 0) goto end;
if (!(fn_cstr=PyUnicode_AsUTF8AndSize(fn, NULL))) goto end;
if (!(name_cstr=PyUnicode_AsUTF8AndSize(name, NULL))) goto end;
if (!(co = PyCode_NewEmpty(fn_cstr, name_cstr, fline))) goto end;
if (!(replace = PyObject_GetAttrString((PyObject*)co, "replace"))) goto cleanup_code_too;
if (!(empty = PyTuple_New(0))) goto cleanup_code_too; // unfortunately __pyx_empty_tuple isn't available here
if (!(call_result = PyObject_Call(replace, empty, kwds))) goto cleanup_code_too;
Py_XDECREF((PyObject*)co);
co = (PyCodeObject*)call_result;
call_result = NULL;
if (0) {
cleanup_code_too:
Py_XDECREF((PyObject*)co);
co = NULL;
}
end:
Py_XDECREF(kwds);
Py_XDECREF(argcount);
Py_XDECREF(posonlyargcount);
Py_XDECREF(kwonlyargcount);
Py_XDECREF(nlocals);
Py_XDECREF(stacksize);
Py_XDECREF(replace);
Py_XDECREF(call_result);
Py_XDECREF(empty);
if (type) {
PyErr_Restore(type, value, traceback);
}
return co;
}
#else #else
#define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
@@ -641,10 +580,10 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
#if PY_VERSION_HEX < 0x030200A4 #if PY_VERSION_HEX < 0x030200A4
typedef long Py_hash_t; typedef long Py_hash_t;
#define __Pyx_PyInt_FromHash_t PyInt_FromLong #define __Pyx_PyInt_FromHash_t PyInt_FromLong
#define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsHash_t #define __Pyx_PyInt_AsHash_t PyInt_AsLong
#else #else
#define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
#define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsSsize_t #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t
#endif #endif
#if PY_MAJOR_VERSION >= 3 #if PY_MAJOR_VERSION >= 3
#define __Pyx_PyMethod_New(func, self, klass) ((self) ? ((void)(klass), PyMethod_New(func, self)) : __Pyx_NewRef(func)) #define __Pyx_PyMethod_New(func, self, klass) ((self) ? ((void)(klass), PyMethod_New(func, self)) : __Pyx_NewRef(func))
@@ -807,7 +746,6 @@ static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x);
(likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj))
static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject*);
#if CYTHON_ASSUME_SAFE_MACROS #if CYTHON_ASSUME_SAFE_MACROS
#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) #define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
#else #else
@@ -2630,7 +2568,7 @@ static int __Pyx_CLineForTraceback(CYTHON_NCP_UNUSED PyThreadState *tstate, int
} }
if (!use_cline) { if (!use_cline) {
c_line = 0; c_line = 0;
(void) PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False);
} }
else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) { else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) {
c_line = 0; c_line = 0;
@@ -2727,31 +2665,30 @@ static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
const char *funcname, int c_line, const char *funcname, int c_line,
int py_line, const char *filename) { int py_line, const char *filename) {
PyCodeObject *py_code = NULL; PyCodeObject *py_code = 0;
PyObject *py_funcname = NULL; PyObject *py_srcfile = 0;
PyObject *py_funcname = 0;
#if PY_MAJOR_VERSION < 3 #if PY_MAJOR_VERSION < 3
PyObject *py_srcfile = NULL;
py_srcfile = PyString_FromString(filename); py_srcfile = PyString_FromString(filename);
if (!py_srcfile) goto bad; #else
py_srcfile = PyUnicode_FromString(filename);
#endif #endif
if (!py_srcfile) goto bad;
if (c_line) { if (c_line) {
#if PY_MAJOR_VERSION < 3 #if PY_MAJOR_VERSION < 3
py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
if (!py_funcname) goto bad;
#else #else
py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
if (!py_funcname) goto bad;
funcname = PyUnicode_AsUTF8(py_funcname);
if (!funcname) goto bad;
#endif #endif
} }
else { else {
#if PY_MAJOR_VERSION < 3 #if PY_MAJOR_VERSION < 3
py_funcname = PyString_FromString(funcname); py_funcname = PyString_FromString(funcname);
if (!py_funcname) goto bad; #else
py_funcname = PyUnicode_FromString(funcname);
#endif #endif
} }
#if PY_MAJOR_VERSION < 3 if (!py_funcname) goto bad;
py_code = __Pyx_PyCode_New( py_code = __Pyx_PyCode_New(
0, 0,
0, 0,
@@ -2770,16 +2707,11 @@ static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
__pyx_empty_bytes /*PyObject *lnotab*/ __pyx_empty_bytes /*PyObject *lnotab*/
); );
Py_DECREF(py_srcfile); Py_DECREF(py_srcfile);
#else Py_DECREF(py_funcname);
py_code = PyCode_NewEmpty(filename, funcname, py_line);
#endif
Py_XDECREF(py_funcname); // XDECREF since it's only set on Py3 if cline
return py_code; return py_code;
bad: bad:
Py_XDECREF(py_funcname);
#if PY_MAJOR_VERSION < 3
Py_XDECREF(py_srcfile); Py_XDECREF(py_srcfile);
#endif Py_XDECREF(py_funcname);
return NULL; return NULL;
} }
static void __Pyx_AddTraceback(const char *funcname, int c_line, static void __Pyx_AddTraceback(const char *funcname, int c_line,
@@ -3627,23 +3559,6 @@ static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
Py_DECREF(x); Py_DECREF(x);
return ival; return ival;
} }
static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject* o) {
if (sizeof(Py_hash_t) == sizeof(Py_ssize_t)) {
return (Py_hash_t) __Pyx_PyIndex_AsSsize_t(o);
#if PY_MAJOR_VERSION < 3
} else if (likely(PyInt_CheckExact(o))) {
return PyInt_AS_LONG(o);
#endif
} else {
Py_ssize_t ival;
PyObject *x;
x = PyNumber_Index(o);
if (!x) return -1;
ival = PyInt_AsLong(x);
Py_DECREF(x);
return ival;
}
}
static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) {
return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False);
} }
Binary file not shown.
+29 -34
View File
@@ -1,29 +1,26 @@
#pragma once #pragma once
#include <atomic>
#include <cstdint> #include <cstdint>
#include <ctime> #include <ctime>
#include <functional> #include <functional>
#include <list> #include <list>
#include <mutex> #include <memory>
#include <optional> #include <optional>
#include <vector> #include <vector>
#include <libusb-1.0/libusb.h>
#include "cereal/gen/cpp/car.capnp.h" #include "cereal/gen/cpp/car.capnp.h"
#include "cereal/gen/cpp/log.capnp.h" #include "cereal/gen/cpp/log.capnp.h"
#include "panda/board/health.h" #include "panda/board/health.h"
#include "panda/board/can_definitions.h"
#include "selfdrive/boardd/panda_comms.h"
#define TIMEOUT 0
#define PANDA_BUS_CNT 4
#define RECV_SIZE (0x4000U)
#define USB_TX_SOFT_LIMIT (0x100U) #define USB_TX_SOFT_LIMIT (0x100U)
#define USBPACKET_MAX_SIZE (0x40) #define USBPACKET_MAX_SIZE (0x40)
#define CANPACKET_HEAD_SIZE 5U
#define CANPACKET_MAX_SIZE 72U #define RECV_SIZE (0x4000U)
#define CANPACKET_REJECTED (0xC0U)
#define CANPACKET_RETURNED (0x80U) #define CAN_REJECTED_BUS_OFFSET 0xC0U
#define CAN_RETURNED_BUS_OFFSET 0x80U
struct __attribute__((packed)) can_header { struct __attribute__((packed)) can_header {
uint8_t reserved : 1; uint8_t reserved : 1;
@@ -36,42 +33,31 @@ struct __attribute__((packed)) can_header {
}; };
struct can_frame { struct can_frame {
long address; long address;
std::string dat; std::string dat;
long busTime; long busTime;
long src; long src;
}; };
class Panda { class Panda {
private: private:
libusb_context *ctx = NULL; std::unique_ptr<PandaCommsHandle> handle;
libusb_device_handle *dev_handle = NULL;
std::mutex usb_lock;
std::vector<uint8_t> recv_buf;
void handle_usb_issue(int err, const char func[]);
void cleanup();
public: public:
Panda(std::string serial="", uint32_t bus_offset=0); Panda(std::string serial="", uint32_t bus_offset=0);
~Panda();
std::string usb_serial; std::string hw_serial;
std::atomic<bool> connected = true;
std::atomic<bool> comms_healthy = true;
cereal::PandaState::PandaType hw_type = cereal::PandaState::PandaType::UNKNOWN; cereal::PandaState::PandaType hw_type = cereal::PandaState::PandaType::UNKNOWN;
bool has_rtc = false; bool has_rtc = false;
const uint32_t bus_offset; const uint32_t bus_offset;
bool has_gps = true;
bool connected();
bool comms_healthy();
// Static functions // Static functions
static std::vector<std::string> list(); static std::vector<std::string> list();
// HW communication
int usb_write(uint8_t bRequest, uint16_t wValue, uint16_t wIndex, unsigned int timeout=TIMEOUT);
int usb_read(uint8_t bRequest, uint16_t wValue, uint16_t wIndex, unsigned char *data, uint16_t wLength, unsigned int timeout=TIMEOUT);
int usb_bulk_write(unsigned char endpoint, unsigned char* data, int length, unsigned int timeout=TIMEOUT);
int usb_bulk_read(unsigned char endpoint, unsigned char* data, int length, unsigned int timeout=TIMEOUT);
// Panda functionality // Panda functionality
cereal::PandaState::PandaType get_hw_type(); cereal::PandaState::PandaType get_hw_type();
void set_safety_model(cereal::CarParams::SafetyModel safety_model, uint16_t safety_param=0U); void set_safety_model(cereal::CarParams::SafetyModel safety_model, uint16_t safety_param=0U);
@@ -82,6 +68,7 @@ class Panda {
uint16_t get_fan_speed(); uint16_t get_fan_speed();
void set_ir_pwr(uint16_t ir_pwr); void set_ir_pwr(uint16_t ir_pwr);
std::optional<health_t> get_state(); std::optional<health_t> get_state();
std::optional<can_health_t> get_can_state(uint16_t can_number);
void set_loopback(bool loopback); void set_loopback(bool loopback);
std::optional<std::vector<uint8_t>> get_firmware_version(); std::optional<std::vector<uint8_t>> get_firmware_version();
std::optional<std::string> get_serial(); std::optional<std::string> get_serial();
@@ -91,8 +78,16 @@ class Panda {
void send_heartbeat(bool engaged); void send_heartbeat(bool engaged);
void set_can_speed_kbps(uint16_t bus, uint16_t speed); void set_can_speed_kbps(uint16_t bus, uint16_t speed);
void set_data_speed_kbps(uint16_t bus, uint16_t speed); void set_data_speed_kbps(uint16_t bus, uint16_t speed);
void set_canfd_non_iso(uint16_t bus, bool non_iso);
void can_send(capnp::List<cereal::CanData>::Reader can_data_list); void can_send(capnp::List<cereal::CanData>::Reader can_data_list);
bool can_receive(std::vector<can_frame>& out_vec); bool can_receive(std::vector<can_frame>& out_vec);
// dp
void set_pigeon_baud(int baud);
bool has_gps = true;
// dp - passthru for pigeon
int control_write(uint8_t request, uint16_t param1, uint16_t param2);
int control_read(uint8_t request, uint16_t param1, uint16_t param2, unsigned char *data, uint16_t length);
int bulk_write(unsigned char endpoint, unsigned char* data, int length);
protected: protected:
// for unit tests // for unit tests

Some files were not shown because too many files have changed in this diff Show More