Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FCA Giorgio: Alfa Romeo Stelvio #1043

Draft
wants to merge 28 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
30f32bc
initial DBC
jyoung8607 Apr 26, 2024
87e2a2b
Merge branch 'master' of https://github.com/commaai/opendbc into alfa…
jyoung8607 May 2, 2024
59199c8
Merge branch 'master' of https://github.com/commaai/opendbc into alfa…
jyoung8607 May 15, 2024
c176832
checkpoint
jyoung8607 May 15, 2024
8b2beaa
probable LKA command
jyoung8607 May 16, 2024
abad696
checkpoint camera and other message updates
jyoung8607 May 16, 2024
44d802d
checkpoint
jyoung8607 May 17, 2024
46b6496
checkpoint
jyoung8607 May 17, 2024
29f50bf
cruise message updates
jyoung8607 May 17, 2024
b55dd5e
rename FCA Giorgio DBC
jyoung8607 May 22, 2024
153cb0f
CRC solved
jyoung8607 May 22, 2024
63d07c3
EPS and other misc updates
jyoung8607 May 22, 2024
852b6dd
ABS_5
jyoung8607 May 22, 2024
22536db
more EPS/LKA tweaks
jyoung8607 May 22, 2024
0e11c74
lane departure visual/haptic triggers
jyoung8607 May 22, 2024
e034946
add EPS_3, speculative driver/eps torque
jyoung8607 May 22, 2024
cf086b2
network node identifiers
jyoung8607 May 22, 2024
04b56da
ABS_6
jyoung8607 May 22, 2024
49260be
steering angle and torque scaling corrections
jyoung8607 May 22, 2024
7a6ef92
ACC_7 raw accelerometers
jyoung8607 May 22, 2024
4f2eaaf
more updates
jyoung8607 May 22, 2024
02211d2
probable reverse signal, other tweaks
jyoung8607 May 22, 2024
3495fd4
more final XOR variants
jyoung8607 May 22, 2024
dfc1e8e
misc updates
jyoung8607 May 23, 2024
2a94502
checkpoint
jyoung8607 Jun 13, 2024
8d6bf7d
Merge branch 'master' of https://github.com/commaai/opendbc into alfa…
jyoung8607 Jul 2, 2024
3a30c53
add EPS LKA fault bit
jyoung8607 Jul 3, 2024
739bc50
Merge branch 'master' of https://github.com/commaai/opendbc into alfa…
jyoung8607 Jul 9, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 25 additions & 2 deletions can/common.cc
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ unsigned int chrysler_checksum(uint32_t address, const Signal &sig, const std::v

// Static lookup table for fast computation of CRCs
uint8_t crc8_lut_8h2f[256]; // CRC8 poly 0x2F, aka 8H2F/AUTOSAR
uint8_t crc8_lut_j1850[256]; // CRC8 poly 0x1D, aka SAE J1850
uint16_t crc16_lut_xmodem[256]; // CRC16 poly 0x1021, aka XMODEM

void gen_crc_lookup_table_8(uint8_t poly, uint8_t crc_lut[]) {
Expand Down Expand Up @@ -105,8 +106,9 @@ void gen_crc_lookup_table_16(uint16_t poly, uint16_t crc_lut[]) {
// Initializes CRC lookup tables at module initialization
struct CrcInitializer {
CrcInitializer() {
gen_crc_lookup_table_8(0x2F, crc8_lut_8h2f); // CRC-8 8H2F/AUTOSAR for Volkswagen
gen_crc_lookup_table_16(0x1021, crc16_lut_xmodem); // CRC-16 XMODEM for HKG CAN FD
gen_crc_lookup_table_8(0x2F, crc8_lut_8h2f); // CRC-8 8H2F/AUTOSAR for Volkswagen
gen_crc_lookup_table_8(0x1D, crc8_lut_j1850); // CRC-8 SAE-J1850
gen_crc_lookup_table_16(0x1021, crc16_lut_xmodem); // CRC-16 XMODEM for HKG CAN FD
}
};

Expand Down Expand Up @@ -248,3 +250,24 @@ unsigned int hkg_can_fd_checksum(uint32_t address, const Signal &sig, const std:

return crc;
}

unsigned int fca_giorgio_checksum(uint32_t address, const Signal &sig, const std::vector<uint8_t> &d) {
// CRC is in the last byte, poly is same as SAE J1850 but uses a different init value and output XOR
uint8_t crc = 0x00;

for (int i = 0; i < d.size() - 1; i++) {
crc ^= d[i];
crc = crc8_lut_j1850[crc];
}

if (address == 0xDE) {
return crc ^ 0x10;
} else if (address == 0x106) {
return crc ^ 0xF6;
} else if (address == 0x122) {
return crc ^ 0xF1;
} else {
return crc ^ 0xA;
}

}
1 change: 1 addition & 0 deletions can/common.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ unsigned int chrysler_checksum(uint32_t address, const Signal &sig, const std::v
unsigned int volkswagen_mqb_checksum(uint32_t address, const Signal &sig, const std::vector<uint8_t> &d);
unsigned int xor_checksum(uint32_t address, const Signal &sig, const std::vector<uint8_t> &d);
unsigned int hkg_can_fd_checksum(uint32_t address, const Signal &sig, const std::vector<uint8_t> &d);
unsigned int fca_giorgio_checksum(uint32_t address, const Signal &sig, const std::vector<uint8_t> &d);
unsigned int pedal_checksum(uint32_t address, const Signal &sig, const std::vector<uint8_t> &d);

class MessageState {
Expand Down
1 change: 1 addition & 0 deletions can/common.pxd
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ cdef extern from "common_dbc.h":
SUBARU_CHECKSUM,
CHRYSLER_CHECKSUM
HKG_CAN_FD_CHECKSUM,
FCA_GIORGIO_CHECKSUM,

cdef struct Signal:
string name
Expand Down
1 change: 1 addition & 0 deletions can/common_dbc.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ enum SignalType {
SUBARU_CHECKSUM,
CHRYSLER_CHECKSUM,
HKG_CAN_FD_CHECKSUM,
FCA_GIORGIO_CHECKSUM,
};

struct Signal {
Expand Down
2 changes: 2 additions & 0 deletions can/dbc.cc
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,8 @@ ChecksumState* get_checksum(const std::string& dbc_name) {
s = new ChecksumState({8, -1, 0, -1, true, SUBARU_CHECKSUM, &subaru_checksum});
} else if (startswith(dbc_name, "chrysler_")) {
s = new ChecksumState({8, -1, 7, -1, false, CHRYSLER_CHECKSUM, &chrysler_checksum});
} else if (startswith(dbc_name, "fca_giorgio")) {
s = new ChecksumState({8, -1, 7, -1, false, FCA_GIORGIO_CHECKSUM, &fca_giorgio_checksum});
} else if (startswith(dbc_name, "comma_body")) {
s = new ChecksumState({8, 4, 7, 3, false, PEDAL_CHECKSUM, &pedal_checksum});
}
Expand Down
240 changes: 240 additions & 0 deletions fca_giorgio.dbc
Original file line number Diff line number Diff line change
@@ -0,0 +1,240 @@
BO_ 171 NEW_MSG_AB: 8 XXX
SG_ NEW_SIGNAL_5 : 3|12@0+ (1,0) [0|4095] "" XXX
SG_ NEW_SIGNAL_6 : 21|6@0+ (1,0) [0|63] "" XXX
SG_ NEW_SIGNAL_1 : 23|2@0+ (1,0) [0|3] "" XXX
SG_ NEW_SIGNAL_2 : 35|4@0+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_3 : 51|12@0+ (1,0) [0|4095] "" XXX
SG_ NEW_SIGNAL_4 : 55|4@0+ (1,0) [0|15] "" XXX

BO_ 222 EPS_1: 6 EPS
SG_ STEERING_ANGLE : 5|14@0+ (0.1,-716.8) [0|16383] "deg" XXX
SG_ STEERING_RATE : 19|12@0+ (0.5,-1000) [0|4095] "deg/s" XXX
SG_ UNKNOWN_1 : 20|1@0+ (1,0) [0|1] "" XXX
SG_ COUNTER : 35|4@0+ (1,0) [0|15] "" XXX
SG_ CHECKSUM : 47|8@0+ (1,0) [0|255] "" XXX

BO_ 228 NEW_MSG_E4: 6 XXX
SG_ NEW_SIGNAL_1 : 13|1@0+ (1,0) [0|1] "" XXX

BO_ 238 ABS_1: 8 ABS
SG_ WHEEL_SPEED_FL : 7|13@0+ (0.017,0) [0|8191] "m/s" XXX
SG_ WHEEL_SPEED_FR : 10|13@0+ (0.017,0) [0|8191] "m/s" XXX
SG_ WHEEL_SPEED_RL : 29|13@0+ (0.017,0) [0|8191] "m/s" XXX
SG_ WHEEL_SPEED_RR : 32|13@0+ (0.017,0) [0|8191] "m/s" XXX
SG_ COUNTER : 51|4@0+ (1,0) [0|15] "" XXX
SG_ CHECKSUM : 63|8@0+ (1,0) [0|255] "" XXX

BO_ 241 NEW_MSG_F1: 8 XXX
SG_ MAYBE_VOLTAGE : 18|10@0+ (0.02,0) [0|1023] "" XXX
SG_ COUNTER : 51|4@0+ (1,0) [0|15] "" XXX
SG_ CHECKSUM : 63|8@0+ (1,0) [0|255] "" XXX

BO_ 249 NEW_MSG_F9: 4 XXX
SG_ COUNTER : 19|4@0+ (1,0) [0|15] "" XXX
SG_ CHECKSUM : 31|8@0+ (1,0) [0|255] "" XXX

BO_ 250 ABS_3: 8 ABS
SG_ BRAKE_PRESSURE_THRESHOLD : 2|1@0+ (1,0) [0|1] "" XXX
SG_ BRAKE_PEDAL_SWITCH : 3|1@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_1 : 9|2@0+ (1,0) [0|3] "" XXX
SG_ XCOUNTER : 38|4@0+ (1,0) [0|15] "" XXX
SG_ XCHECKSUM : 63|8@0+ (1,0) [0|255] "" XXX

BO_ 252 ENGINE_1: 8 ENGINE
SG_ ENGINE_RPM : 7|14@0+ (1,0) [0|255] "rev/min" XXX
SG_ ACCEL_PEDAL : 20|8@0+ (0.4,0) [0|255] "percent" XXX
SG_ REVERSE : 26|1@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_3 : 39|1@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_1 : 46|2@1+ (1,0) [0|3] "" XXX
SG_ COUNTER : 51|4@0+ (1,0) [0|15] "" XXX
SG_ CHECKSUM : 63|8@0+ (1,0) [0|255] "" XXX

BO_ 254 ABS_2: 8 ABS
SG_ LONG_ACCEL : 7|12@0+ (0.01,-20.48) [0|4095] "m/s2" XXX
SG_ LATERAL_ACCEL : 11|12@0+ (0.01,-20.48) [0|4095] "m/s2" XXX
SG_ YAW_RATE : 31|12@0+ (-0.0014,2.86) [0|4095] "rad/s" XXX
SG_ NEW_SIGNAL_1 : 47|9@0+ (1,0) [0|511] "" XXX
SG_ COUNTER : 51|4@0+ (1,0) [0|15] "" XXX
SG_ CHECKSUM : 63|8@0+ (1,0) [0|255] "" XXX

BO_ 257 ABS_6: 8 ABS
SG_ MAYBE_ACC_BRAKE : 5|1@0+ (1,0) [0|1] "" XXX
SG_ VEHICLE_SPEED : 15|11@0+ (0.017,0) [0|2047] "" XXX
SG_ BRAKE_PRESSURE_1 : 20|11@0+ (1,0) [0|2047] "" XXX
SG_ BRAKE_PRESSURE_2 : 43|12@0+ (1,0) [0|4095] "" XXX
SG_ CHECKSUM : 63|8@0+ (1,0) [0|255] "" XXX

BO_ 262 EPS_2: 7 EPS
SG_ UNKNOWN_TORQUE : 7|12@0+ (1,-2000) [0|4095] "" XXX
SG_ UNKNOWN_STATUS : 9|1@0+ (1,0) [0|1] "" XXX
SG_ DRIVER_TORQUE : 23|11@0+ (1,-1024) [0|2047] "" XXX
SG_ LKA_STATUS : 38|2@0+ (1,0) [0|3] "" XXX
SG_ LKA_FAULT : 39|1@0+ (1,0) [0|1] "" XXX
SG_ COUNTER : 43|4@0+ (1,0) [0|15] "" XXX
SG_ CHECKSUM : 55|8@0+ (1,0) [0|255] "" XXX

BO_ 263 ABS_4: 8 ABS
SG_ BRAKE_PRESSURE : 7|8@0+ (1,0) [0|255] "" XXX

BO_ 265 NEW_MSG_109: 8 XXX
SG_ COUNTER : 51|4@0+ (1,0) [0|15] "" XXX
SG_ CHECKSUM : 63|8@0+ (1,0) [0|255] "" XXX

BO_ 270 ABS_7: 7 XXX
SG_ LONG_ACCEL_RAW : 7|12@0+ (0.01,-20.48) [0|4095] "" XXX
SG_ LATERAL_ACCEL_RAW : 11|12@0+ (0.01,-20.48) [0|4095] "" XXX
SG_ YAW_RATE_RAW : 31|12@0+ (-0.0014,2.86) [0|4095] "" XXX
SG_ COUNTER : 43|4@0+ (1,0) [0|15] "" XXX
SG_ CHECKSUM : 55|8@0+ (1,0) [0|255] "" XXX

BO_ 278 ABS_5: 8 ABS
SG_ WHEEL_IMPULSE_FL : 7|8@0+ (1,0) [0|255] "" XXX
SG_ WHEEL_IMPULSE_FR : 15|8@0+ (1,0) [0|255] "" XXX
SG_ WHEEL_IMPULSE_RL : 23|8@0+ (1,0) [0|255] "" XXX
SG_ WHEEL_IMPULSE_RR : 31|8@0+ (1,0) [0|255] "" XXX
SG_ ACTIVE_FL : 32|1@0+ (1,0) [0|1] "" XXX
SG_ ACTIVE_FR : 33|1@0+ (1,0) [0|1] "" XXX
SG_ ACTIVE_RL : 34|1@0+ (1,0) [0|1] "" XXX
SG_ ACTIVE_RR : 35|1@0+ (1,0) [0|1] "" XXX
SG_ FORWARD_1 : 36|1@0+ (1,0) [0|1] "" XXX
SG_ REVERSE_1 : 37|1@0+ (1,0) [0|1] "" XXX
SG_ FORWARD_2 : 38|1@0+ (1,0) [0|1] "" XXX
SG_ REVERSE_2 : 39|1@0+ (1,0) [0|1] "" XXX
SG_ COUNTER : 51|4@0+ (1,0) [0|15] "" XXX
SG_ CHECKSUM : 63|8@0+ (1,0) [0|255] "" XXX

BO_ 280 NEW_MSG_118: 6 XXX
SG_ COUNTER : 35|4@0+ (1,0) [0|15] "" XXX
SG_ CHECKSUM : 47|8@0+ (1,0) [0|255] "" XXX

BO_ 282 NEW_MSG_11A: 8 XXX
SG_ NEW_SIGNAL_1 : 7|11@0+ (1,-1000) [0|2047] "" XXX
SG_ COUNTER : 51|4@0+ (1,0) [0|15] "" XXX
SG_ CHECKSUM : 63|8@0+ (1,0) [0|255] "" XXX

BO_ 284 NEW_MSG_11C: 8 XXX
SG_ NEW_SIGNAL_1 : 7|12@0+ (1,0) [0|4095] "" XXX
SG_ NEW_SIGNAL_2 : 11|12@0+ (1,0) [0|4095] "" XXX
SG_ NEW_SIGNAL_3 : 28|13@0+ (1,0) [0|8191] "" XXX
SG_ NEW_SIGNAL_4 : 31|2@0+ (1,0) [0|3] "" XXX
SG_ VEHICLE_SPEED : 47|12@0+ (0.017,0) [0|4095] "m/s" XXX
SG_ COUNTER : 51|4@0+ (1,0) [0|15] "" XXX
SG_ CHECKSUM : 63|8@0+ (1,0) [0|255] "" XXX

BO_ 288 NEW_MSG_120: 6 XXX
SG_ COUNTER : 19|4@0+ (1,0) [0|15] "" XXX
SG_ CHECKSUM : 31|8@0+ (1,0) [0|255] "" XXX

BO_ 290 EPS_3: 4 EPS
SG_ EPS_TORQUE : 7|12@0+ (1,-2048) [0|4095] "" XXX
SG_ COUNTER : 19|4@0+ (1,0) [0|15] "" XXX
SG_ CHECKSUM : 31|8@0+ (1,0) [0|255] "" XXX

BO_ 501 NEW_MSG_1F5: 5 XXX
SG_ NEW_SIGNAL_2 : 22|1@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_3 : 27|4@0+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_1 : 39|8@0+ (1,0) [0|255] "" XXX

BO_ 502 LKA_COMMAND: 8 CAMERA
SG_ LKA_TORQUE : 7|11@0+ (1,-1024) [0|2047] "" XXX
SG_ HAPTIC_WARN_1 : 8|1@0+ (1,0) [0|1] "" XXX
SG_ LKA_ACTIVE : 11|1@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_1 : 12|1@0+ (1,0) [0|1] "" XXX
SG_ HAPTIC_WARN_2 : 19|1@0+ (1,0) [0|1] "" XXX
SG_ COUNTER : 51|4@0+ (1,0) [0|15] "" XXX
SG_ CHECKSUM : 63|8@0+ (1,0) [0|255] "" XXX

BO_ 508 NEW_MSG_1FC: 8 XXX
SG_ NEW_SIGNAL_1 : 6|1@0+ (1,0) [0|1] "" XXX

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

....also, I think that BO_ 550 has something to do with the Start&Stop functionality, and should be...

BO_ 550 STARTSTOP: 8 XXX
SG_ STARTSTOP_ENABLED : 18|1@0+ (1,0) [0|1] "" XXX

BO_ 601 NEW_MSG_259: 8 XXX
SG_ NEW_SIGNAL_1 : 47|8@0+ (1,0) [0|255] "" XXX

BO_ 762 NEW_MSG_2FA: 3 XXX
Copy link

@kholk kholk May 24, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

According to my Giulia, 0x2fa should be the left buttons on the Steering wheel....

SG_ BTN_CRUISE : 1|1@0+ (1,0) [0|255] "" XXX
SG_ BTN_RES : 7|1@0+ (1,0) [0|1] "" XXX
SG_ BTN_SET_DUAL_DOWN : 5|3@0+ (1,0) [0|1] "" XXX
SG_ BTN_SET_DUAL_UP : 5|3@0+ (1,0) [0|1] "" XXX
SG_ BTN_SET_SINGLE_DOWN : 5|3@0+ (1,0) [0|255] "" XXX
SG_ BTN_SET_SINGLE_UP : 5|3@0+ (1,0) [0|255] "" XXX
SG_ BUTTONS_STATUS : 7|8@0+ (1,0) [0|255] "" XXX

VAL_ 762 BTN_CRUISE 1 "PRESSED" 0 "NOT_PRESSED";
VAL_ 762 BTN_RES 1 "PRESSED" 0 "NOT_PRESSED";
VAL_ 762 BTN_SET_DUAL_DOWN 4 "PRESSED" 3 "NOT_PRESSED" 2 "NOT_PRESSED" 1 "NOT_PRESSED" 0 "NOT_PRESSED";
VAL_ 762 BTN_SET_DUAL_UP 2 "NOT_PRESSED" 0 "PRESSED";
VAL_ 762 BTN_SET_SINGLE_DOWN 3 "PRESSED" 0 "NOT_PRESSED" 2 "NOT_PRESSED" 1 "NOT_PRESSED";
VAL_ 762 BTN_SET_SINGLE_UP 1 "PRESSED" 0 "NOT_PRESSED" 2 "NOT_PRESSED" 3 "NOT_PRESSED";
VAL_ 762 BUTTONS_STATUS 144 "RES" 18 "CRUISE" 8 "SET_UP_ONEPRESS" 0 "SET_UP_STEP2" 24 "SET_DOWN_ONEPRESS" 32 "SET_DOWN_STEP2" 16 "IDLE";

;-)

SG_ NEW_SIGNAL_1 : 7|8@0+ (1,0) [0|255] "" XXX

BO_ 766 CAM_UNKNOWN_1: 4 CAMERA

BO_ 900 NEW_MSG_384: 8 XXX
SG_ NEW_SIGNAL_1 : 19|3@0+ (1,0) [0|7] "" XXX
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

....and still according to my Giulia (I have no race mode, I'm mostly sure race is correct but I can guarantee only D, N and A)

SG_ DNA_Mode : 15|8@0+ (1,0) [0|1] "" XXX
SG_ HEADLIGHTS : 31|1@0+ (1,0) [0|1] "" XXX

VAL_ 900 DNA_Mode 1 "DNA_NORMAL" 9 "DNA_DYNAMIC" 17 "DNA_ADVANCED_EFFICIENCY" 49 "DNA_RACE";
VAL_ 900 HEADLIGHTS 1 "LOW_BEAM__ON" 0 "OFF";

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I will look around, but is there a guide somewhere on what is needed to reverse engineer these? I can at least say I have a good background in similar areas, I've just never worked on CAN. I have a QV with race mode so I could possibly confirm this.


BO_ 1040 NEW_MSG_410: 8 XXX
SG_ NEW_SIGNAL_3 : 7|8@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_1 : 23|8@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_2 : 49|1@0+ (1,0) [0|1] "" XXX
SG_ COUNTER : 55|4@0+ (1,0) [0|15] "" XXX
SG_ CHECKSUM : 63|8@0+ (1,0) [0|255] "" XXX

BO_ 1046 NEW_MSG_416: 8 XXX
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is repeating the VIN over and over, should be called VIN or something I guess?

SG_ MUX M : 1|2@0+ (1,0) [0|3] "" XXX
SG_ UNKNOWN_M0_1 m0 : 15|8@0+ (1,0) [0|255] "" XXX
SG_ UNKNOWN_M0_2 m0 : 23|8@0+ (1,0) [0|255] "" XXX
SG_ UNKNOWN_M0_3 m0 : 31|8@0+ (1,0) [0|255] "" XXX
SG_ UNKNOWN_M0_4 m0 : 39|8@0+ (1,0) [0|255] "" XXX
SG_ UNKNOWN_M0_5 m0 : 47|8@0+ (1,0) [0|255] "" XXX
SG_ UNKNOWN_M0_6 m0 : 55|8@0+ (1,0) [0|255] "" XXX
SG_ UNKNOWN_M0_7 m0 : 63|8@0+ (1,0) [0|255] "" XXX
SG_ UNKNOWN_M1_1 m1 : 15|8@0+ (1,0) [0|255] "" XXX
SG_ UNKNOWN_M1_2 m1 : 23|8@0+ (1,0) [0|255] "" XXX
SG_ UNKNOWN_M1_3 m1 : 31|8@0+ (1,0) [0|255] "" XXX
SG_ UNKNOWN_M1_4 m1 : 39|8@0+ (1,0) [0|255] "" XXX
SG_ UNKNOWN_M1_5 m1 : 47|8@0+ (1,0) [0|255] "" XXX
SG_ UNKNOWN_M1_6 m1 : 55|8@0+ (1,0) [0|255] "" XXX
SG_ UNKNOWN_M1_7 m1 : 63|8@0+ (1,0) [0|255] "" XXX
SG_ UNKNOWN_M2_1 m2 : 15|8@0+ (1,0) [0|255] "" XXX
SG_ UNKNOWN_M2_2 m2 : 23|8@0+ (1,0) [0|255] "" XXX
SG_ UNKNOWN_M2_3 m2 : 31|8@0+ (1,0) [0|255] "" XXX
SG_ UNKNOWN_M2_4 m2 : 39|8@0+ (1,0) [0|255] "" XXX
SG_ UNKNOWN_M2_5 m2 : 47|8@0+ (1,0) [0|255] "" XXX
SG_ UNKNOWN_M2_6 m2 : 55|8@0+ (1,0) [0|255] "" XXX
SG_ UNKNOWN_M2_7 m2 : 63|8@0+ (1,0) [0|255] "" XXX

BO_ 1194 CAM_UNKNOWN_2: 8 CAMERA

BO_ 1198 LKA_HUD_1: 8 CAMERA
SG_ NEW_SIGNAL_1 : 4|5@0+ (1,0) [0|31] "" XXX
SG_ NEW_SIGNAL_3 : 12|5@0+ (1,0) [0|31] "" XXX
SG_ NEW_SIGNAL_2 : 23|8@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_5 : 29|1@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_4 : 38|3@0+ (1,0) [0|7] "" XXX
SG_ COUNTER : 51|4@0+ (1,0) [0|15] "" XXX
SG_ CHECKSUM : 63|8@0+ (1,0) [0|255] "" XXX

BO_ 1351 LKA_HUD_2: 8 CAMERA
SG_ NEW_SIGNAL_1 : 51|3@0+ (1,0) [0|7] "" XXX
SG_ NEW_SIGNAL_2 : 55|4@0+ (1,0) [0|15] "" XXX

BO_ 1442 ACC_1: 8 RADAR
SG_ HUD_SPEED : 7|8@0+ (1,0) [0|255] "km/h" XXX
SG_ TARGET_SPEED : 15|8@0+ (0.433,0) [0|255] "m/s" XXX
SG_ NEW_SIGNAL_3 : 17|5@0+ (1,0) [0|31] "" XXX
SG_ NEW_SIGNAL_4 : 18|1@0+ (1,0) [0|1] "" XXX
SG_ CRUISE_STATUS : 22|2@0+ (1,0) [0|3] "" XXX
SG_ MAYBE_TJA : 23|1@0+ (1,0) [0|1] "" XXX

BO_ 1458 CAM_UNKNOWN_5: 4 CAMERA
SG_ NEW_SIGNAL_1 : 5|1@0+ (1,0) [0|1] "" XXX

BO_ 1854 BCM_1: 4 BCM
SG_ RIGHT_TURN_STALK : 16|1@0+ (1,0) [0|1] "" XXX
SG_ LEFT_TURN_STALK : 17|1@0+ (1,0) [0|1] "" XXX

BO_ 1865 NEW_MSG_749: 8 XXX
SG_ NEW_SIGNAL_1 : 23|2@0+ (1,0) [0|3] "" XXX

BO_ 506855454 CAM_UNKNOWN_6: 1 CAMERA

CM_ SG_ 254 LONG_ACCEL "scale TBD";
CM_ SG_ 254 LATERAL_ACCEL "scale TBD";
CM_ SG_ 254 YAW_RATE "scale estimated";
CM_ SG_ 257 MAYBE_ACC_BRAKE "may correlate with ACC-actuated braking";
CM_ SG_ 278 FORWARD_1 "probably per-axle";
CM_ SG_ 278 REVERSE_1 "probably per-axle";
CM_ SG_ 278 FORWARD_2 "probably per-axle";
CM_ SG_ 278 REVERSE_2 "probably per-axle";
CM_ SG_ 282 NEW_SIGNAL_1 "smoothed yaw rate with low speed cutoff, maybe active forward lighting target angle";
CM_ SG_ 284 VEHICLE_SPEED "scale estimated";
CM_ SG_ 502 HAPTIC_WARN_1 "correlates with steering wheel haptic";
CM_ SG_ 502 HAPTIC_WARN_2 "correlates with steering wheel haptic";
CM_ BO_ 1198 "Definite LKA activity, probably contains lane-line recognition and lane departure signals, indicator of LKA vs TJA, perhaps indicator of active assist in map-permitted areas";
VAL_ 262 LKA_STATUS 0 "standby" 1 "lka_active";