mazda 2023

This commit is contained in:
jakethesake420
2025-11-16 12:51:47 -06:00
parent dcde5a8414
commit c48fa45294
12 changed files with 821 additions and 64 deletions
+1 -1
View File
@@ -67,7 +67,7 @@ ChecksumState* get_checksum(const std::string& dbc_name) {
s = new ChecksumState({8, -1, 7, -1, false, CHRYSLER_CHECKSUM, &chrysler_checksum});
} else if (startswith(dbc_name, "comma_body")) {
s = new ChecksumState({8, 4, 7, 3, false, PEDAL_CHECKSUM, &pedal_checksum});
} else if (startswith(dbc_name, "mazda_2019")) {
} else if (startswith(dbc_name, "mazda_2019") || startswith(dbc_name, "mazda_2023")) {
s = new ChecksumState({8, 8, 0, 0, true, MAZDA2019_CHECKSUM, &mazda2019_checksum});
} else if (startswith(dbc_name, "mazda_2017")) {
s = new ChecksumState({8, -1, 0, -1, true, MAZDA2017_CHECKSUM, &mazda2017_checksum});
+660
View File
@@ -0,0 +1,660 @@
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_ 16 STEER_TORQUE_VB: 8 XXX
SG_ STEER_TORQUE_SENSOR : 5|13@0+ (1,-4000) [0|15] "" XXX
SG_ NEW_SIGNAL_12 : 7|2@0+ (1,0) [0|15] "" XXX
SG_ STEER_TORQUE_MOTOR : 8|13@0+ (0.05,-205) [0|15] "" XXX
SG_ BRAKE_PREASURE : 27|12@0+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_1 : 43|4@0+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_5 : 47|4@0+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_3 : 51|4@0+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_4 : 55|4@0+ (1,0) [0|15] "" XXX
SG_ CHKSUM : 63|8@0- (1,0) [0|15] "" XXX
BO_ 17 STEER_TORQUE_VB_2: 8 XXX
SG_ STEER_TORQUE_MOTOR : 7|16@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_3 : 23|12@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_1 : 27|14@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_2 : 45|6@0+ (1,0) [0|15] "" XXX
SG_ CTR : 51|4@0+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_5 : 55|4@0+ (1,0) [0|15] "" XXX
SG_ CHKSUM : 63|8@0+ (1,0) [0|255] "" XXX
BO_ 18 STEER_VB: 8 XXX
SG_ STEER_ANGLE : 25|14@0- (1,375) [0|65536] "" XXX
SG_ STEER_LEFT_BIT : 26|1@0+ (1,0) [0|1] "" XXX
SG_ CTR : 41|2@0+ (1,0) [0|3] "" XXX
SG_ ENGINE_OFF : 43|2@0+ (1,0) [0|63] "" XXX
SG_ NEW_SIGNAL_2 : 53|6@0+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_3 : 55|2@0+ (1,0) [0|15] "" XXX
BO_ 20 NEW_MSG_29: 8 XXX
SG_ RIGHT_BLINK_CLOCK : 23|8@0+ (1,0) [0|1] "" XXX
BO_ 22 CRZ_CTRL_BTNS: 8 XXX
SG_ SIGNAL : 45|1@0+ (1,0) [0|15] "" XXX
SG_ NOT_SIGNAL : 46|1@0+ (1,0) [0|3] "" XXX
SG_ CRZ_CTRL_BTN_PRESSED : 48|1@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_2 : 51|3@0+ (1,0) [0|7] "" XXX
BO_ 24 BRAKE_PEDAL_VB: 8 XXX
SG_ BRAKE_PEDAL_PRESSED_AND_ENGINE_ON : 0|1@0+ (1,0) [0|3] "" XXX
SG_ NOT_BRAKE_PEDAL_PRESSED : 6|1@0+ (1,0) [0|3] "" XXX
SG_ BRAKE_PRESSED : 7|1@0+ (1,0) [0|65535] "" XXX
SG_ NOT_BRAKE_PEDAL_PRESSED_AND_ENGINE_ON : 15|1@0+ (1,0) [0|7] "" XXX
BO_ 26 ENGINE_DATA_VB: 8 XXX
SG_ RPM : 7|13@0+ (1,0) [0|15] "" XXX
SG_ PEDAL_GAS : 39|10@0+ (1,0) [0|15] "" XXX
SG_ ENGINE_ON : 52|1@0+ (1,0) [0|15] "" XXX
SG_ CHKSUM : 63|8@0- (1,0) [0|15] "" XXX
BO_ 29 WHEEL: 8 XXX
SG_ ENCODER_1 : 7|16@0+ (1,0) [0|65535] "" XXX
SG_ ENCODER_2 : 23|16@0+ (1,0) [0|65535] "" XXX
SG_ SPEED : 39|16@0+ (1,0) [0|127] "" XXX
SG_ NEW_SIGNAL_2 : 51|4@0+ (1,0) [0|15] "" XXX
SG_ STANDSTILL : 52|1@0+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_6 : 55|3@0+ (1,0) [0|7] "" XXX
SG_ NEW_SIGNAL_1 : 63|8@0+ (1,0) [0|255] "" XXX
BO_ 31 GEAR_VB: 8 XXX
SG_ NEW_SIGNAL_1 : 7|16@0+ (1,0) [0|65535] "" XXX
SG_ NEW_SIGNAL_2 : 23|16@0+ (1,0) [0|65535] "" XXX
SG_ GEAR : 36|4@0+ (1,0) [0|65535] "" XXX
SG_ NEW_SIGNAL_4 : 55|16@0+ (1,0) [0|65535] "" XXX
BO_ 37 BLANK_1: 8 XXX
SG_ NEW_SIGNAL_1 : 7|16@0+ (1,0) [0|65535] "" XXX
SG_ NEW_SIGNAL_2 : 23|16@0+ (1,0) [0|65535] "" XXX
SG_ NEW_SIGNAL_3 : 39|16@0+ (1,0) [0|65535] "" XXX
SG_ NEW_SIGNAL_4 : 55|16@0+ (1,0) [0|65535] "" XXX
BO_ 44 BLANK_2: 8 XXX
SG_ NEW_SIGNAL_1 : 7|16@0+ (1,0) [0|16777215] "" XXX
SG_ NEW_SIGNAL_4 : 23|16@0+ (1,0) [0|65535] "" XXX
SG_ NEW_SIGNAL_2 : 39|16@0+ (1,0) [0|16777215] "" XXX
SG_ NEW_SIGNAL_3 : 55|16@0+ (1,0) [0|65535] "" XXX
BO_ 59 STEER_RATE: 8 XXX
SG_ STEER_ANGLE : 23|16@0+ (0.05,-1600) [-500|500] "" XXX
SG_ CHKSUM : 39|8@0+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_1 : 43|4@0+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_2 : 47|4@0+ (1,0) [0|15] "" XXX
SG_ STEER_ANGLE_RATE : 55|8@0+ (0.05,0) [0|65535] "" XXX
BO_ 96 STEER2: 8 XXX
SG_ STEER__ : 7|16@0+ (1,0) [0|65535] "" XXX
SG_ SPEED : 18|16@0- (0.00621371,-62.1371) [-65635|65635] "MPH" XXX
SG_ CAR_MOVING_FORWARD : 21|1@0+ (1,0) [0|15] "" XXX
SG_ CAR_REVERSING : 22|1@0+ (1,0) [0|1] "" XXX
SG_ ENGINE_OFF : 23|1@0+ (1,0) [0|1] "" XXX
SG_ TURN_OFF : 32|1@0+ (1,0) [0|1] "" XXX
SG_ ENGINE_ON : 33|1@0+ (1,0) [0|1] "" XXX
SG_ TURN_ON : 34|1@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_4 : 45|1@0+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_5 : 48|4@1+ (1,0) [0|15] "" XXX
SG_ CTR : 55|4@0+ (1,0) [0|15] "" XXX
SG_ CHKSUM : 63|8@0+ (1,0) [0|255] "" XXX
BO_ 116 BRAKE_2: 8 XXX
SG_ BRAKE_PRESSURE : 3|9@0+ (1,-152) [0|511] "" XXX
BO_ 117 NEW_MSG_31_MAIN: 8 XXX
BO_ 120 BCM_ECHO_MAYBE: 8 XXX
SG_ EPS_MOTOR_TORQUE_MAYBE : 7|16@0+ (1,0) [0|65535] "" XXX
SG_ BRAKE_MAYBE : 39|8@0+ (1,0) [0|65535] "" XXX
BO_ 121 NEW_MSG_39: 8 XXX
SG_ NEW_SIGNAL_3 : 7|16@0+ (1,0) [0|65535] "" XXX
SG_ NEW_SIGNAL_2 : 16|2@1+ (1,0) [0|3] "" XXX
SG_ NEW_SIGNAL_1 : 25|10@0+ (1,0) [0|3] "" XXX
BO_ 128 RADARS: 8 XXX
SG_ NEW_SIGNAL_3 : 7|8@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_4 : 15|1@0+ (1,0) [0|255] "" XXX
SG_ REAR_LEFT : 17|1@0+ (1,0) [0|1] "" XXX
SG_ FRONT_RIGHT : 18|1@0+ (1,0) [0|1] "" XXX
SG_ FRONT_LEFT : 19|1@0+ (1,0) [0|255] "" XXX
SG_ REAR_RIGHT : 20|1@0+ (1,0) [0|15] "" XXX
SG_ FRONT : 21|1@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_1 : 59|4@0+ (1,0) [0|255] "" XXX
BO_ 129 NEW_MSG_19: 8 XXX
SG_ NEW_SIGNAL_2 : 15|1@0+ (1,0) [0|65535] "" XXX
SG_ NEW_SIGNAL_3 : 31|16@0+ (1,0) [0|65535] "" XXX
SG_ NEW_SIGNAL_4 : 47|16@0+ (1,0) [0|65535] "" XXX
SG_ NEW_SIGNAL_5 : 56|8@1+ (1,0) [0|15] "" XXX
BO_ 130 STEER_AUX: 8 XXX
SG_ STEER_ANGLE : 23|14@0+ (0.2,-1600) [0|65535] "" XXX
SG_ NEW_SIGNAL_2 : 39|8@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_1 : 55|16@0- (1,0) [0|65535] "" XXX
BO_ 132 NEW_MSG_84: 8 XXX
SG_ STEER_ANGLE : 23|16@0+ (1,0) [0|65535] "" XXX
BO_ 133 NEW_MSG_35: 8 XXX
SG_ STEER_ANGLE : 23|16@0+ (1,0) [0|65535] "" XXX
BO_ 134 STEER_OLD: 8 XXX
SG_ NEW_SIGNAL_1 : 7|16@0+ (1,0) [0|65535] "" XXX
SG_ STEER_ANGLE : 25|14@0- (0.1,36) [0|1023] "" XXX
BO_ 135 STEER: 8 XXX
SG_ STEER_ANGLE : 23|16@0+ (0.1,-1600) [0|65535] "" XXX
BO_ 136 NEW_MSG_40: 8 XXX
SG_ NEW_SIGNAL_4 : 4|1@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_5 : 5|1@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_6 : 6|1@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_1 : 36|13@0+ (1,0) [0|8191] "" XXX
SG_ NEW_SIGNAL_2 : 59|1@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_3 : 60|1@0+ (1,0) [0|1] "" XXX
BO_ 137 SPEED: 8 XXX
SG_ SPEED : 23|16@0+ (1,-12) [0|65535] "" XXX
BO_ 145 BLINK_INFO: 8 XXX
SG_ RIGHT_BLINK : 12|1@0+ (1,0) [0|3] "" XXX
SG_ LEFT_BLINK : 13|1@0+ (1,0) [0|3] "" XXX
SG_ Speed : 27|12@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_1 : 40|8@1+ (1,0) [0|255] "" XXX
SG_ CTR : 51|4@0+ (1,0) [0|15] "" XXX
SG_ CHKSUM : 63|8@0+ (1,0) [0|15] "" XXX
BO_ 151 NEW_MSG_97: 8 XXX
BO_ 155 NEW_MSG_43: 8 XXX
SG_ NEW_SIGNAL_1 : 7|8@0+ (1,0) [0|16777215] "" XXX
SG_ NEW_SIGNAL_2 : 15|8@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_3 : 23|8@0+ (1,0) [0|255] "" XXX
BO_ 157 CRZ_BTNS: 8 XXX
SG_ RES : 2|1@0+ (1,0) [0|1] "" XXX
SG_ SET_M : 3|1@0+ (1,0) [0|1] "" XXX
SG_ SET_P : 4|1@0+ (1,0) [0|1] "" XXX
SG_ CAN : 5|1@0+ (1,0) [0|1] "" XXX
SG_ STATIC_0 : 7|2@0+ (1,0) [0|7] "" XXX
SG_ STATIC_1 : 10|7@0+ (1,0) [0|15] "" XXX
SG_ MODE_LKAS : 11|1@0+ (1,0) [0|1] "" XXX
SG_ MODE_ACC : 13|1@0+ (1,0) [0|3] "" XXX
SG_ STATIC_2 : 19|32@0+ (1,0) [0|7] "" XXX
SG_ CTR : 48|4@1+ (1,0) [0|15] "" XXX
SG_ CHKSUM : 56|8@1+ (1,0) [0|63] "" XXX
BO_ 159 BRAKE_PEDAL: 8 XXX
SG_ REVERSE : 1|1@0+ (1,0) [0|65535] "" XXX
SG_ NEW_SIGNAL_1 : 2|1@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_2 : 4|1@1+ (1,0) [0|3] "" XXX
SG_ NEW_SIGNAL_3 : 40|6@1+ (1,0) [0|15] "" XXX
SG_ BRAKE_NOT_PRESSED : 58|1@0+ (1,0) [0|1] "" XXX
SG_ BRAKE_PRESSED : 59|1@0+ (1,0) [0|1] "" XXX
BO_ 253 NEW_MSG_34: 8 XXX
SG_ NEW_SIGNAL_1 : 36|5@0+ (1,0) [0|31] "" XXX
BO_ 256 CAM_Start: 8 XXX
SG_ DISTANCE_LEAD_CAR : 0|12@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_1 : 2|2@0+ (1,0) [0|1] "" XXX
SG_ ACTIVE_TARGET : 4|1@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_3 : 20|12@0+ (1,0) [0|7] "" XXX
SG_ NEW_SIGNAL_5 : 24|12@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_10 : 44|12@0+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_7 : 56|4@1+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_8 : 61|2@0+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_2 : 63|2@0+ (1,0) [0|3] "" XXX
BO_ 257 LKAS: 8 XXX
SG_ LEAD_DIST : 0|12@0+ (1,0) [0|255] "" XXX
SG_ SET_19 : 2|2@0+ (1,0) [0|255] "" XXX
SG_ ANGLE_TARGET : 20|12@0+ (1,0) [0|4095] "" XXX
SG_ UNKNOWN : 24|12@0+ (1,0) [0|4095] "" XXX
SG_ MAX_TORQUE__ : 44|12@0- (1,0) [0|4095] "" XXX
SG_ SET_0 : 48|1@1+ (1,0) [0|3] "" XXX
SG_ CTR : 59|4@0+ (1,0) [0|255] "" XXX
SG_ CTR_ACT : 61|2@0+ (1,0) [0|3] "" XXX
SG_ SET_0_1 : 63|2@0+ (1,0) [0|3] "" XXX
BO_ 258 NEW_MSG_3: 8 XXX
SG_ NEW_SIGNAL_6 : 1|2@1+ (1,0) [0|3] "" XXX
SG_ NEW_SIGNAL_1 : 13|10@0- (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_2 : 18|10@0- (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_4 : 39|10@0- (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_5 : 44|10@0- (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_3 : 59|4@0+ (1,0) [0|255] "" XXX
BO_ 259 NEW_MSG_5: 8 XXX
SG_ NEW_SIGNAL_1 : 0|12@0- (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_2 : 19|11@0- (1,0) [0|10000000] "" XXX
SG_ NEW_SIGNAL_3 : 39|10@0- (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_4 : 44|10@0- (1,0) [0|1] "" XXX
BO_ 260 NEW_MSG_6: 8 XXX
SG_ NEW_SIGNAL_1 : 0|12@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_2 : 20|12@0- (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_3 : 24|12@0+ (1,0) [0|1] "" XXX
BO_ 261 NEW_MSG_7: 8 XXX
SG_ NEW_SIGNAL_1 : 15|8@0+ (1,0) [0|255] "" XXX
BO_ 262 NEW_MSG_8: 8 XXX
SG_ NEW_SIGNAL_2 : 7|8@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_1 : 15|8@0- (1,0) [0|255] "" XXX
BO_ 263 NEW_MSG_9: 8 XXX
SG_ NEW_SIGNAL_1 : 15|8@0+ (1,0) [0|255] "" XXX
BO_ 264 NEW_MSG_2: 8 XXX
SG_ CRZ_CTRL_PRESSED : 48|1@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_2 : 49|3@1+ (1,0) [0|7] "" XXX
SG_ NEW_SIGNAL_1 : 56|8@1+ (1,0) [0|15] "" XXX
BO_ 273 NEW_MSG_26: 8 XXX
SG_ NEW_SIGNAL_1 : 23|4@0+ (1,0) [0|3] "" XXX
BO_ 274 NEW_MSG_27: 8 XXX
SG_ NEW_SIGNAL_1 : 39|8@0+ (1,0) [0|1] "" XXX
BO_ 277 NEW_MSG_24: 8 XXX
SG_ NEW_SIGNAL_1 : 47|8@0+ (1,0) [0|1] "" XXX
BO_ 278 NEW_MSG_25: 8 XXX
BO_ 288 NEW_MSG_30: 8 XXX
BO_ 289 NEW_MSG_28: 8 XXX
SG_ NEW_SIGNAL_1 : 55|8@0+ (1,0) [0|1] "" XXX
BO_ 290 NEW_MSG_23: 8 XXX
SG_ NEW_SIGNAL_1 : 31|5@0+ (1,0) [0|255] "" XXX
BO_ 291 NEW_MSG_22: 8 XXX
SG_ NEW_SIGNAL_1 : 39|8@0+ (1,0) [0|255] "" XXX
BO_ 292 NEW_MSG_18: 8 XXX
SG_ NEW_SIGNAL_1 : 63|8@0+ (1,0) [0|255] "" XXX
BO_ 293 NEW_MSG_12: 8 XXX
SG_ NEW_SIGNAL_1 : 7|8@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_3 : 19|4@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_2 : 39|16@0+ (1,0) [0|255] "" XXX
BO_ 294 NEW_MSG_13: 8 XXX
SG_ NEW_SIGNAL_3 : 7|16@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_1 : 59|4@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_2 : 61|2@0+ (1,0) [0|1] "" XXX
BO_ 304 CAM_LANES: 8 XXX
SG_ DISTANCE_TO_LEFT_LANE : 1|10@0- (1,0) [0|1] "" XXX
SG_ RIGHT_LANE_DETECTED : 4|1@0+ (1,0) [0|255] "" XXX
SG_ LEFT_LANE_DETECTED : 7|1@0+ (1,0) [0|1] "" XXX
SG_ DISTANCE_TO_RIGHT_LANE : 23|10@0- (1,0) [0|2047] "" XXX
SG_ DISTANCE_TO_LEFT_LANE_LOW_RES : 29|8@0+ (1,0) [0|4095] "" XXX
SG_ DISTANCE_TO_RIGHT_LANE_LOW_RES : 37|8@0+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_3 : 59|4@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_4 : 61|2@0+ (1,0) [0|3] "" XXX
BO_ 305 CAM_LANES_2_MAYBE: 8 XXX
SG_ NEW_SIGNAL_4 : 23|8@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_5 : 56|4@1+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_6 : 61|2@0+ (1,0) [0|3] "" XXX
BO_ 306 CAM_LANE_3_MAYBE: 8 XXX
SG_ STEER : 7|10@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_2 : 13|10@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_1 : 19|10@0+ (1,0) [0|63] "" XXX
SG_ NEW_SIGNAL_4 : 25|10@0+ (1,0) [0|1] "" XXX
SG_ LANE_DETECTED_1 : 44|1@0+ (1,0) [0|1] "" XXX
SG_ LANE_DETECTED_2 : 45|1@0+ (1,0) [0|1] "" XXX
BO_ 307 NEW_MSG_1: 8 XXX
SG_ NEW_SIGNAL_4 : 7|10@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_2 : 13|10@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_1 : 19|10@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_3 : 25|10@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_5 : 61|6@0+ (1,0) [0|1] "" XXX
BO_ 308 ACC_POSSIBLY: 8 XXX
SG_ NEW_SIGNAL_2 : 0|7@0+ (1,0) [0|63] "" XXX
SG_ NEW_SIGNAL_6 : 4|1@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_4 : 18|7@0+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_5 : 36|7@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_7 : 37|1@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_3 : 54|7@0+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_8 : 55|1@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_1 : 63|8@0+ (1,0) [0|255] "" XXX
BO_ 310 NEW_MSG_10: 8 XXX
SG_ NEW_SIGNAL_2 : 47|8@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_1 : 56|4@1+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_3 : 61|2@0+ (1,0) [0|3] "" XXX
BO_ 320 NEW_MSG_4: 8 XXX
SG_ NEW_SIGNAL_4 : 16|1@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_2 : 27|7@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_1 : 36|9@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_3 : 43|6@0+ (1,0) [0|1] "" XXX
BO_ 321 NEW_MSG_11: 8 XXX
SG_ NEW_SIGNAL_1 : 5|1@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_2 : 32|1@0+ (1,0) [0|1] "" XXX
BO_ 336 NEW_MSG_20: 8 XXX
SG_ NEW_SIGNAL_2 : 7|8@0+ (1,0) [0|4095] "" XXX
SG_ NEW_SIGNAL_1 : 11|12@0+ (1,0) [0|127] "" XXX
SG_ NEW_SIGNAL_3 : 31|8@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_4 : 39|8@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_5 : 47|8@0+ (1,0) [0|255] "" XXX
BO_ 342 NEW_MSG_21: 8 XXX
SG_ NEW_SIGNAL_7 : 7|16@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_8 : 23|16@0+ (1,0) [0|65535] "" XXX
SG_ NEW_SIGNAL_5 : 39|16@0+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_6 : 40|4@1+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_3 : 48|4@1+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_4 : 55|4@0+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_1 : 56|4@1+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_2 : 63|4@0+ (1,0) [0|15] "" XXX
BO_ 352 NEW_MSG_14: 8 XXX
SG_ NEW_SIGNAL_1 : 7|16@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_2 : 23|16@0+ (1,0) [0|65535] "" XXX
SG_ NEW_SIGNAL_3 : 39|16@0+ (1,0) [0|65535] "" XXX
SG_ NEW_SIGNAL_4 : 55|16@0+ (1,0) [0|65535] "" XXX
BO_ 354 CAM_KEEP_ALIVE_1: 8 XXX
SG_ NEW_SIGNAL_1 : 7|16@0+ (1,0) [0|65535] "" XXX
SG_ NEW_SIGNAL_2 : 23|16@0+ (1,0) [0|65535] "" XXX
SG_ NEW_SIGNAL_3 : 39|16@0+ (1,0) [0|65535] "" XXX
SG_ NEW_SIGNAL_4 : 55|30@0+ (1,0) [0|65535] "" XXX
BO_ 355 NEW_MSG_15: 8 XXX
SG_ NEW_SIGNAL_1 : 7|8@0+ (1,0) [0|127] "" XXX
BO_ 356 NEW_MSG_16: 8 XXX
SG_ NEW_SIGNAL_1 : 56|4@1+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_2 : 61|2@0+ (1,0) [0|3] "" XXX
BO_ 357 NEW_MSG_17: 8 XXX
SG_ NEW_SIGNAL_2 : 7|32@0+ (1,0) [0|4294967295] "" XXX
SG_ NEW_SIGNAL_3 : 56|4@1+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_1 : 61|2@0+ (1,0) [0|3] "" XXX
BO_ 358 CAM_End: 8 XXX
SG_ NEW_SIGNAL_4 : 11|14@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_1 : 31|8@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_3 : 59|4@0+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_2 : 61|2@0+ (1,0) [0|3] "" XXX
BO_ 512 NEW_MSG_32: 8 XXX
SG_ NEW_SIGNAL_1 : 7|16@0+ (1,0) [0|65535] "" XXX
SG_ NEW_SIGNAL_2 : 23|16@0+ (1,0) [0|65535] "" XXX
SG_ NEW_SIGNAL_3 : 39|16@0+ (1,0) [0|65535] "" XXX
BO_ 514 ENGINE_DATA: 8 XXX
SG_ RPM : 7|14@0+ (1,0) [0|8191] "" XXX
SG_ NEW_SIGNAL_1 : 19|12@0+ (1,0) [0|255] "" XXX
SG_ PEDAL_GAS : 39|10@0+ (1,0) [0|65535] "" XXX
SG_ ENGINE_ON : 52|1@0+ (1,0) [0|1] "" XXX
SG_ CHKSUM : 56|8@1+ (1,0) [0|255] "" XXX
BO_ 515 NEW_MSG_36: 8 XXX
SG_ NEW_SIGNAL_1 : 31|5@0+ (1,0) [0|31] "" XXX
BO_ 529 NEW_MSG_31: 8 XXX
SG_ NEW_SIGNAL_3 : 8|1@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_4 : 24|1@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_1 : 39|4@0+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_2 : 47|4@0+ (1,0) [0|15] "" XXX
BO_ 533 WHEEL_SPEEDS: 8 XXX
SG_ FL : 7|16@0+ (0.01,-100) [0|65535] "" XXX
SG_ FR : 23|16@0+ (0.01,-100) [0|65535] "" XXX
SG_ RL : 39|16@0+ (0.01,-100) [0|65535] "" XXX
SG_ RR : 55|16@0+ (0.01,-100) [0|65535] "" XXX
BO_ 535 SPEED_OLD: 8 XXX
SG_ SPEED : 39|16@0+ (0.01,0) [0|65535] "" XXX
BO_ 537 MANUAL_GEAR: 8 XXX
SG_ NEW_SIGNAL_2 : 7|16@0+ (1,0) [0|65535] "" XXX
SG_ NEW_SIGNAL_3 : 23|16@0+ (1,0) [0|65535] "" XXX
SG_ GEAR : 33|2@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_4 : 55|16@0+ (1,0) [0|65535] "" XXX
BO_ 542 ACC: 8 XXX
SG_ CTR1 : 3|4@0+ (1,0) [0|31] "" XXX
SG_ DERIVATIVE : 7|4@0+ (1,0) [0|1] "" XXX
SG_ CTR2 : 11|4@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_5 : 12|1@0+ (1,0) [0|1] "" XXX
SG_ ACC_ACTIVE : 13|1@0+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_4 : 15|2@0+ (1,0) [0|3] "" XXX
SG_ ACCEL_CMD : 23|12@0+ (1,-2000) [0|8191] "" XXX
SG_ ACC_ACTIVE2 : 27|1@0+ (1,0) [0|7] "" XXX
SG_ NEW_SIGNAL_1 : 35|4@0+ (1,0) [0|15] "" XXX
SG_ CTR3 : 37|2@0+ (1,0) [0|3] "" XXX
SG_ NEW_SIGNAL_6 : 39|2@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_7 : 47|8@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_9 : 48|8@1+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_11 : 63|8@0+ (1,0) [0|255] "" XXX
BO_ 543 NEW_MSG_21F: 8 XXX
SG_ NEW_SIGNAL_1 : 22|7@0+ (1,0) [0|127] "" XXX
SG_ NEW_SIGNAL_2 : 31|8@0+ (1,0) [0|255] "" XXX
BO_ 546 ACC_2: 8 XXX
SG_ NEW_SIGNAL_3 : 7|8@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_4 : 11|4@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_5 : 17|2@0+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_7 : 19|2@0+ (1,0) [0|3] "" XXX
SG_ NEW_SIGNAL_6 : 23|4@0+ (1,0) [0|63] "" XXX
SG_ NEW_SIGNAL_2 : 31|16@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_1 : 47|16@0+ (1,0) [0|65535] "" XXX
SG_ CHKSUM : 63|8@0+ (1,0) [0|15] "" XXX
BO_ 547 NEW_MSG_223: 8 XXX
BO_ 552 GEAR: 8 XXX
SG_ NEW_SIGNAL_1 : 0|1@0+ (1,0) [0|1] "" XXX
SG_ SHIFT : 8|1@0+ (1,0) [0|1] "" XXX
SG_ TORQUE_CONVERTER_LOCK : 11|1@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_2 : 16|1@0+ (1,0) [0|1] "" XXX
SG_ GEAR : 33|4@1+ (1,0) [0|255] "" XXX
SG_ GEAR_SHIFT : 43|4@0+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_3 : 56|6@1+ (1,0) [0|63] "" XXX
BO_ 576 STEER_TORQUE: 8 XXX
SG_ STEER_TORQUE_SENSOR : 7|16@0+ (1,0) [0|65535] "" XXX
BO_ 585 EPS_LKAS: 8 XXX
SG_ LKAS_REQUEST : 7|16@0- (1,0) [0|65535] "" XXX
SG_ STEER_FEEL : 23|16@0+ (1,0) [0|65535] "" XXX
SG_ COUNTER : 48|8@1+ (1,0) [0|255] "" XXX
SG_ CHECKSUM : 56|8@1+ (1,0) [0|255] "" XXX
BO_ 587 EPS_FEEDBACK: 8 XXX
SG_ STEER_TORQUE_SENSOR : 7|16@0- (1,0) [0|65535] "" XXX
SG_ CPU_0_VIOL : 23|8@0+ (1,0) [0|15] "" XXX
SG_ CPU_1_VIOL : 31|8@0+ (1,0) [0|255] "" XXX
SG_ CPU_2_VIOL : 39|8@0+ (1,0) [0|255] "" XXX
SG_ CPU_3_VIOL : 47|8@0+ (1,0) [0|255] "" XXX
SG_ CPU_1_STATE : 48|4@1+ (1,0) [0|15] "" XXX
SG_ CPU_0_STATE : 55|4@0+ (1,0) [0|15] "" XXX
SG_ CPU_3_STATE : 56|4@1+ (1,0) [0|15] "" XXX
SG_ CPU_2_STATE : 63|4@0+ (1,0) [0|15] "" XXX
BO_ 608 NEW_MSG_41: 8 XXX
SG_ NEW_SIGNAL_1 : 8|7@1+ (1,0) [0|15] "" XXX
BO_ 640 NEW_MSG_280: 8 XXX
SG_ NEW_SIGNAL_1 : 2|3@0+ (1,0) [0|7] "" XXX
BO_ 1029 NEW_MSG_405: 8 XXX
SG_ LEFT_TURN_SIGNAL_PULSE : 48|1@0+ (1,0) [0|1] "" XXX
SG_ RIGHT_TURN_SIGNAL_PULSE : 49|1@0+ (1,0) [0|1] "" XXX
BO_ 1034 KEEP_ALIVE_2: 8 XXX
SG_ NEW_SIGNAL_1 : 7|16@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_3 : 23|16@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_4 : 39|16@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_5 : 55|16@0+ (1,0) [0|255] "" XXX
BO_ 1045 NEW_MSG_415: 8 XXX
SG_ AUTO_HOLD_ACTIVE : 4|1@0+ (1,0) [0|1] "" XXX
SG_ AUTO_HOLD_ENABLED : 22|1@0+ (1,0) [0|3] "" XXX
SG_ PARKING_BRAKE_ACTIVE : 37|1@0+ (1,0) [0|1] "" XXX
SG_ CTR : 51|4@0+ (1,0) [0|15] "" XXX
SG_ CHKSUM : 63|8@0+ (1,0) [0|255] "" XXX
BO_ 1066 NEW_MSG_42A: 8 XXX
BO_ 1067 NEW_MSG_33: 8 XXX
SG_ NEW_SIGNAL_1 : 7|16@0+ (1,0) [0|65535] "" XXX
SG_ NEW_SIGNAL_4 : 23|8@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_2 : 42|1@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_5 : 43|1@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_6 : 44|1@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_3 : 45|1@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_7 : 47|8@0+ (1,0) [0|3] "" XXX
BO_ 1078 NEW_MSG_44: 8 XXX
SG_ IGNITION : 10|1@1+ (1,0) [0|255] "" XXX
BO_ 1087 BRAKE_PEDAL_BUS1: 8 XXX
SG_ NEW_SIGNAL_3 : 7|16@0+ (1,0) [0|65535] "" XXX
SG_ NEW_SIGNAL_4 : 23|16@0+ (1,0) [0|65535] "" XXX
SG_ LEFT_TURN_SIGNAL_PULSE : 32|1@0+ (1,0) [0|1] "" XXX
SG_ RIGHT_TURN_SIGNAL_PULSE : 34|1@0+ (1,0) [0|1] "" XXX
SG_ BRAKE_PEDAL_PRESSED : 42|1@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_5 : 47|4@0+ (1,0) [0|15] "" XXX
BO_ 1098 CRUZE_STATE: 8 XXX
SG_ NEW_SIGNAL_7 : 1|1@0+ (1,0) [0|1] "" XXX
SG_ CRZ_STATE : 6|3@0+ (1,0) [0|15] "" XXX
SG_ NEW_SIGNAL_1 : 13|1@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_2 : 18|1@0+ (1,0) [0|1] "" XXX
SG_ CRZ_SPEED : 31|9@0+ (1,0) [0|255] "" XXX
SG_ DISTANCE_SETTING : 38|3@0+ (1,0) [0|4] "" XXX
SG_ NEW_SIGNAL_5 : 42|1@0+ (1,0) [0|1] "" XXX
SG_ STOCK_LKAS_MODE : 44|1@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_4 : 45|1@0+ (1,0) [0|1] "" XXX
BO_ 1100 NEW_MSG_44C: 8 XXX
SG_ TRAFFIC_SIGN_SYSTEM_ENABLED_1 : 4|1@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_1 : 5|1@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_4 : 8|1@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_3 : 10|1@0+ (1,0) [0|1] "" XXX
SG_ NEW_SIGNAL_2 : 37|1@0+ (1,0) [0|1] "" XXX
BO_ 1103 NEW_MSG_42: 8 XXX
SG_ NEW_SIGNAL_1 : 12|12@0+ (1,0) [0|4095] "" XXX
BO_ 1120 CAM_KEEP_ALIVE_2: 8 XXX
SG_ NEW_SIGNAL_1 : 7|16@0+ (1,0) [0|65535] "" XXX
SG_ NEW_SIGNAL_2 : 23|16@0+ (1,0) [0|65535] "" XXX
SG_ NEW_SIGNAL_3 : 39|16@0+ (1,0) [0|65535] "" XXX
SG_ NEW_SIGNAL_4 : 55|16@0+ (1,0) [0|65535] "" XXX
BO_ 1167 SYSTEM_SETTINGS: 8 XXX
SG_ IMPERIAL_UNIT : 15|1@0+ (1,0) [0|1] "" XXX
BO_ 1170 NEW_MSG_492: 8 XXX
SG_ MRCC_NOT_ALLOWED : 12|1@0+ (1,0) [0|1] "" XXX
SG_ MRRC_ALLOWED : 13|1@0+ (1,0) [0|3] "" XXX
BO_ 1200 KEEP_ALIVE_3: 8 XXX
SG_ NEW_SIGNAL_1 : 7|16@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_3 : 23|16@0+ (1,0) [0|65535] "" XXX
SG_ NEW_SIGNAL_4 : 39|16@0+ (1,0) [0|65535] "" XXX
SG_ NEW_SIGNAL_2 : 55|16@0+ (1,0) [0|255] "" XXX
BO_ 1209 KEEP_ALIVE_1: 8 XXX
SG_ NEW_SIGNAL_8 : 4|5@0+ (1,0) [0|127] "" XXX
SG_ NEW_SIGNAL_7 : 15|8@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_6 : 23|8@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_5 : 31|8@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_4 : 39|8@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_3 : 47|8@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_2 : 55|8@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_1 : 63|8@0+ (1,0) [0|255] "" XXX
BO_ 1216 CAM_69: 8 XXX
SG_ NEW_SIGNAL_2 : 7|16@0+ (1,0) [0|65535] "" XXX
SG_ NEW_SIGNAL_3 : 23|16@0+ (1,0) [0|65535] "" XXX
SG_ NEW_SIGNAL_4 : 39|16@0+ (1,0) [0|65535] "" XXX
SG_ NEW_SIGNAL_5 : 55|12@0+ (1,0) [0|7] "" XXX
SG_ NEW_SIGNAL_1 : 56|4@1+ (1,0) [0|15] "" XXX
BO_ 1436 CAM_71: 8 XXX
SG_ NEW_SIGNAL_1 : 7|16@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_2 : 23|16@0+ (1,0) [0|65535] "" XXX
SG_ NEW_SIGNAL_3 : 39|16@0+ (1,0) [0|65535] "" XXX
SG_ NEW_SIGNAL_4 : 55|16@0+ (1,0) [0|65535] "" XXX
BO_ 1866 NEW_MSG_37: 8 XXX
SG_ NEW_SIGNAL_1 : 7|8@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_2 : 15|8@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_3 : 23|8@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_4 : 31|8@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_5 : 39|8@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_6 : 47|8@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_7 : 55|8@0+ (1,0) [0|255] "" XXX
SG_ NEW_SIGNAL_8 : 63|8@0+ (1,0) [0|255] "" XXX
BO_ 1867 EPS_FEEDBACK2: 8 XXX
SG_ HALL2 : 7|16@0- (-1,0) [0|65535] "" XXX
SG_ HALL3 : 23|16@0- (-1,0) [0|65535] "" XXX
SG_ HALL4 : 39|16@0- (1,0) [0|65535] "" XXX
SG_ NEW_SIGNAL_5 : 55|8@0+ (1,0) [0|255] "" XXX
SG_ CTR : 63|8@0+ (1,0) [0|65535] "" XXX
BO_ 1868 EPS_FEEDBACK3: 8 XXX
SG_ OUT1 : 7|16@0- (1,-32767) [0|65535] "" XXX
SG_ OUT2 : 23|16@0- (1,0) [0|65535] "" XXX
SG_ OUT3 : 39|16@0- (-1,0) [0|65535] "" XXX
SG_ OUT4 : 55|16@0- (-1,0) [0|65535] "" XXX
CM_ SG_ 31 GEAR "13-P, 12-R, 11-N, 1-6-D";
VAL_ 31 GEAR 13 "P" 12 "R" 11 "N" 1 "D" 2 "D" 3 "D" 4 "D" 5 "D" 6 "D";
VAL_ 537 GEAR 0 "P" 1 "D" 2 "R";
VAL_ 552 GEAR 13 "P" 12 "R" 11 "N" 1 "D" 2 "D" 3 "D" 4 "D" 5 "D" 6 "D";
VAL_ 552 GEAR_SHIFT 6 "6th" 5 "5th" 4 "4th" 3 "3rd" 2 "2nd" 1 "1st" 14 "Shift" 13 "Park" 11 "Neutral" 12 "Reverse";
VAL_ 1098 CRZ_STATE 1 "CRUISE_DISABLED" 2 "CRUISE_READY" 4 "GAS_OVERRIDE" 3 "CRUISE_ENABLE";
VAL_ 1098 DISTANCE_SETTING 4 "CLOSE" 3 "MEDIUM_CLOSE" 2 "MEDIUM_FAR" 1 "FAR" 0 "ACC_DISABLED";
+8 -5
View File
@@ -197,10 +197,9 @@ void can_set_forwarding(uint8_t from, uint8_t to) {
void ignition_can_hook(CANPacket_t *to_push) {
int bus = GET_BUS(to_push);
int addr = GET_ADDR(to_push);
int len = GET_LEN(to_push);
if (bus == 0) {
int addr = GET_ADDR(to_push);
int len = GET_LEN(to_push);
// GM exception
if ((addr == 0x1F1) && (len == 8)) {
// SystemPowerMode (2=Run, 3=Crank Request)
@@ -226,9 +225,13 @@ void ignition_can_hook(CANPacket_t *to_push) {
ignition_can_cnt = 0U;
}
} else if (bus == 1) {
// Mazda 2019 exception
if ((addr == 0x274) && (len == 8)) {
ignition_can = (GET_BYTE(to_push, 5) & 0x4U) != 0U;
ignition_can_cnt = 0U;
}
} else if (bus == 2) {
int addr = GET_ADDR(to_push);
int len = GET_LEN(to_push);
// GM exception, SDGM cars have this message on bus 2
if ((addr == 0x1F1) && (len == 8)) {
// SystemPowerMode (2=Run, 3=Crank Request)
+54 -7
View File
@@ -29,6 +29,10 @@
#define MAZDA_2019_CRZ_BTNS 0x9d // rx on main tx on camera. DBC: CRZ_BTNS
#define MAZDA_2019_ACC 0x220 // main bus. DBC: ACC
#define MAZDA_2023_SPEED 0x215 // main bus. DBC: WHEEL_SPEEDS
#define MAZDA_2023_BRAKE 0x9F // main bus. DBC: BRAKE_PEDAL
#define MAZDA_2023_ACC 0x21e // main bus. DBC: ACC
#define MAZDA_TI_LKAS 0x249
// CAN bus numbers
@@ -39,13 +43,16 @@
// param flag masks
const int FLAG_GEN1 = 1;
const int FLAG_GEN2 = 2;
const int FLAG_TORQUE_INTERCEPTOR = 4;
const int FLAG_RADAR_INTERCEPTOR = 8;
const int FLAG_NO_FSC = 16;
const int FLAG_NO_MRCC = 32;
const int FLAG_GEN3 = 4;
const int FLAG_TORQUE_INTERCEPTOR = 8;
const int FLAG_RADAR_INTERCEPTOR = 16;
const int FLAG_NO_FSC = 32;
const int FLAG_NO_MRCC = 64;
const int FLAG_MANUAL_TRANSMISSION = 128;
bool gen1 = false;
bool gen2 = false;
bool gen3 = false;
bool torque_interceptor = false;
bool radar_interceptor = false;
bool no_fsc = false;
@@ -84,7 +91,7 @@ const CanMsg MAZDA_TI_RI_TX_MSGS[] = {{MAZDA_LKAS, 0, 8}, {MAZDA_TI_LKAS, 1, 8},
{MAZDA_RADAR_363, 0, 8}, {MAZDA_RADAR_364, 0, 8}, {MAZDA_RADAR_365, 0, 8}, {MAZDA_RADAR_366, 0, 8},
{MAZDA_RADAR_499, 0, 8}};
const CanMsg MAZDA_2019_TX_MSGS[] = {{MAZDA_TI_LKAS, 1, 8}, {MAZDA_2019_ACC, 2, 8}};
const CanMsg MAZDA_2019_TX_MSGS[] = {{MAZDA_TI_LKAS, 1, 8}, {MAZDA_2019_ACC, 2, 8}, {MAZDA_2023_ACC, 2, 8}};
RxCheck mazda_rx_checks[] = {
{.msg = {{MAZDA_CRZ_CTRL, 0, 8, .frequency = 50U}, { 0 }, { 0 }}},
@@ -110,8 +117,17 @@ RxCheck mazda_2019_rx_checks[] = {
{.msg = {{MAZDA_2019_STEER_TORQUE, 1, 8, .frequency = 50U}, { 0 }, { 0 }}},
};
RxCheck mazda_2023_rx_checks[] = {
{.msg = {{MAZDA_2023_BRAKE, 0, 8, .frequency = 5U}, { 0 }, { 0 }}},
{.msg = {{MAZDA_2019_GAS, 2, 8, .frequency = 100U}, { 0 }, { 0 }}},
{.msg = {{MAZDA_2019_CRUISE, 1, 8, .frequency = 10U}, { 0 }, { 0 }}},
{.msg = {{MAZDA_2023_SPEED, 2, 8, .frequency = 30U}, { 0 }, { 0 }}},
{.msg = {{MAZDA_2019_STEER_TORQUE, 1, 8, .frequency = 50U}, { 0 }, { 0 }}},
};
// track msgs coming from OP so that we know what CAM msgs to drop and what to forward
static void mazda_rx_hook(const CANPacket_t *to_push) {
print("pcm_cruise_check");
int addr = GET_ADDR(to_push);
if ((int)GET_BUS(to_push) == MAZDA_MAIN) {
if (gen1){
@@ -163,6 +179,16 @@ static void mazda_rx_hook(const CANPacket_t *to_push) {
generic_rx_checks(addr == MAZDA_2019_SPEED);
}
if (gen3) {
if (addr == MAZDA_2023_BRAKE) {
brake_pressed = (GET_BYTE(to_push, 7) & 0x8U);
}
if (addr == MAZDA_2023_SPEED) {
int speed = ( (GET_BYTE(to_push, 0) << 8) | (GET_BYTE(to_push, 1)) ) - 10000; // Front Left Wheel Speed
vehicle_moving = speed != 0;
}
generic_rx_checks(false);
}
}
if ((GET_BUS(to_push) == MAZDA_AUX)) {
@@ -171,9 +197,20 @@ static void mazda_rx_hook(const CANPacket_t *to_push) {
update_sample(&torque_driver, torque_driver_new);
}
if (addr == MAZDA_2019_STEER_TORQUE && gen2) {
if (addr == MAZDA_2019_STEER_TORQUE && (gen2 || gen3)) {
update_sample(&torque_driver, (int16_t)(GET_BYTE(to_push, 0) << 8 | GET_BYTE(to_push, 1)));
}
if (gen3) {
if (addr == MAZDA_2019_CRUISE) {
uint8_t state = GET_BYTE(to_push, 0) & 0x70U;
bool cruise_engaged = (0x30U == state);
bool cruise_override = (0x40U == state);
//bool cruise_disable = (state == 0x10U);
acc_main_on = true;
pcm_cruise_check(cruise_engaged || cruise_override);
}
}
}
if ((GET_BUS(to_push) == MAZDA_CAM)) {
@@ -189,6 +226,12 @@ static void mazda_rx_hook(const CANPacket_t *to_push) {
}
generic_rx_checks(addr == MAZDA_2019_CRUISE);
}
if (gen3) {
if (addr == MAZDA_2019_GAS) {
gas_pressed = (GET_BYTE(to_push, 4) || ((GET_BYTE(to_push, 5) & 0xC0U)));
}
generic_rx_checks(false);
}
}
}
@@ -218,7 +261,7 @@ static bool mazda_tx_hook(const CANPacket_t *to_send) {
}
}
}
if (gen2 && (bus == MAZDA_AUX) && (addr == MAZDA_TI_LKAS)) {
if ((gen2 || gen3) && (bus == MAZDA_AUX) && (addr == MAZDA_TI_LKAS)) {
int desired_torque = (int16_t)((GET_BYTE(to_send, 0) << 8) | GET_BYTE(to_send, 1)); // signal is signed
if (steer_torque_cmd_checks(desired_torque, -1, MAZDA_2019_STEERING_LIMITS)) {
tx = false;
@@ -260,6 +303,7 @@ static safety_config mazda_init(uint16_t param) {
safety_config ret = BUILD_SAFETY_CFG(mazda_rx_checks, MAZDA_TX_MSGS);
gen1 = GET_FLAG(param, FLAG_GEN1);
gen2 = GET_FLAG(param, FLAG_GEN2);
gen3 = GET_FLAG(param, FLAG_GEN3);
radar_interceptor = GET_FLAG(param, FLAG_RADAR_INTERCEPTOR);
torque_interceptor = GET_FLAG(param, FLAG_TORQUE_INTERCEPTOR);
no_fsc = GET_FLAG(param, FLAG_NO_FSC);
@@ -281,6 +325,9 @@ static safety_config mazda_init(uint16_t param) {
if (gen2) {
ret = BUILD_SAFETY_CFG(mazda_2019_rx_checks, MAZDA_2019_TX_MSGS);
}
if (gen3) {
ret = BUILD_SAFETY_CFG(mazda_2023_rx_checks, MAZDA_2019_TX_MSGS);
}
return ret;
}
+7 -4
View File
@@ -244,10 +244,13 @@ class Panda:
FLAG_MAZDA_GEN1 = 1
FLAG_MAZDA_GEN2 = 2
FLAG_MAZDA_TORQUE_INTERCEPTOR = 4
FLAG_MAZDA_RADAR_INTERCEPTOR = 8
FLAG_MAZDA_NO_FSC = 16
FLAG_MAZDA_NO_MRCC = 32
FLAG_MAZDA_GEN3 = 4
FLAG_MAZDA_TORQUE_INTERCEPTOR = 8
FLAG_MAZDA_RADAR_INTERCEPTOR = 16
FLAG_MAZDA_NO_FSC = 32
FLAG_MAZDA_NO_MRCC = 64
FLAG_MAZDA_MANUAL_TRANSMISSION = 128
def __init__(self, serial: str | None = None, claim: bool = True, disable_checks: bool = True, can_speed_kbps: int = 500):
self._connect_serial = serial
+1 -1
View File
@@ -106,7 +106,7 @@ class CarController(CarControllerBase):
if self.frame % 2 == 0:
can_sends.extend(mazdacan.create_radar_command(self.packer, self.frame, CC.longActive, CS, hold))
else:
elif self.CP.flags & MazdaFlags.GEN2:
raw_acc_output = (CC.actuators.accel * 200) + 2000
if CC.longActive:
if self.params.get_bool("BlendedACC"):
+47 -33
View File
@@ -41,7 +41,7 @@ class CarState(CarStateBase):
self.update = self.update_gen1
if CP.flags & MazdaFlags.GEN1:
self.update = self.update_gen1
if CP.flags & MazdaFlags.GEN2:
if CP.flags & MazdaFlags.GEN2 or CP.flags & MazdaFlags.GEN3:
self.update = self.update_gen2
def update_gen1(self, cp, cp_cam, cp_body, frogpilot_variables):
@@ -184,11 +184,6 @@ class CarState(CarStateBase):
#self.shifting = cp_cam.vl["GEAR"]["SHIFT"]
#self.torque_converter_lock = cp_cam.vl["GEAR"]["TORQUE_CONVERTER_LOCK"]
ret.steeringAngleDeg = cp.vl["STEER"]["STEER_ANGLE"] # updated at 100hz and its high resolution
ret.steeringRateDeg = (ret.steeringAngleDeg - self._prev_steering_angle) / DT_CTRL
self._prev_steering_angle = ret.steeringAngleDeg
#ret.steeringRateDeg = cp.vl["STEER"]["STEER_RATE"] # This signal doesn't seem accurate
ret.steeringTorque = cp_body.vl["EPS_FEEDBACK"]["STEER_TORQUE_SENSOR"]
ret.gas = cp_cam.vl["ENGINE_DATA"]["PEDAL_GAS"]
@@ -209,10 +204,19 @@ class CarState(CarStateBase):
ret.steerFaultTemporary = False # TODO locate signal. Car shows light on dash if there is a fault
ret.standstill = cp_cam.vl["SPEED"]["SPEED"] * unit_conversion < 0.1
ret.cruiseState.speed = cp.vl["CRUZE_STATE"]["CRZ_SPEED"] * unit_conversion
ret.cruiseState.enabled = (cp.vl["CRUZE_STATE"]["CRZ_STATE"] >= 2)
ret.cruiseState.available = (cp.vl["CRUZE_STATE"]["CRZ_STATE"] != 0)
ret.cruiseState.standstill = ret.standstill if not self.CP.openpilotLongitudinalControl else False
if self.CP.flags & MazdaFlags.GEN2:
ret.steeringAngleDeg = cp_cam.vl["STEER"]["STEER_ANGLE"]
ret.cruiseState.speed = cp.vl["CRUZE_STATE"]["CRZ_SPEED"] * unit_conversion
ret.cruiseState.enabled = (cp.vl["CRUZE_STATE"]["CRZ_STATE"] >= 2)
ret.cruiseState.available = (cp.vl["CRUZE_STATE"]["CRZ_STATE"] != 0)
else:
ret.steeringAngleDeg = cp.vl["STEER"]["STEER_ANGLE"]
ret.cruiseState.speed = cp_body.vl["CRUZE_STATE"]["CRZ_SPEED"] * unit_conversion
ret.cruiseState.enabled = (cp_body.vl["CRUZE_STATE"]["CRZ_STATE"] >= 3)
ret.cruiseState.available = (cp_body.vl["CRUZE_STATE"]["CRZ_STATE"] >= 2)
ret.cruiseState.standstill = ret.standstill
ret.steeringRateDeg = (ret.steeringAngleDeg - self._prev_steering_angle) / DT_CTRL
self._prev_steering_angle = ret.steeringAngleDeg
self.cp = cp
self.cp_cam = cp_cam
@@ -224,6 +228,7 @@ class CarState(CarStateBase):
return ret, fp_ret
@staticmethod
def get_ti_messages(CP):
messages = []
@@ -231,29 +236,15 @@ class CarState(CarStateBase):
messages += [
("TI_FEEDBACK", 50),
]
elif CP.flags & MazdaFlags.GEN2:
elif CP.flags & (MazdaFlags.GEN2 | MazdaFlags.GEN3):
messages += [
("EPS_FEEDBACK", 50),
("EPS_FEEDBACK2", 50),
("EPS_FEEDBACK3", 50),
]
return messages
@staticmethod
def get_can_parser(CP, FPCP):
messages = []
if not (CP.flags & MazdaFlags.GEN2):
messages += [
# sig_address, frequency
("CRZ_BTNS", 10),
("BLINK_INFO", 10),
("STEER", 67),
("STEER_RATE", 83),
("STEER_TORQUE", 83),
("WHEEL_SPEEDS", 100),
]
if CP.flags & MazdaFlags.GEN1:
messages += [
("ENGINE_DATA", 100),
@@ -264,6 +255,12 @@ class CarState(CarStateBase):
("DOORS", 10),
("GEAR", 20),
("BSM", 10),
("CRZ_BTNS", 10),
("BLINK_INFO", 10),
("STEER", 67),
("STEER_RATE", 83),
("STEER_TORQUE", 83),
("WHEEL_SPEEDS", 100),
]
if not (CP.flags & MazdaFlags.RADAR_INTERCEPTOR) and not (CP.flags & MazdaFlags.NO_MRCC):
@@ -271,14 +268,22 @@ class CarState(CarStateBase):
("CRZ_CTRL", 50),
]
if CP.flags & MazdaFlags.GEN2:
if not CP.flags & MazdaFlags.GEN1:
messages += [
("BRAKE_PEDAL", 5),
("CRUZE_STATE", 10),
("BLINK_INFO", 10),
("ACC", 50),
("SYSTEM_SETTINGS", 10),
("STEER", 100)
("ACC", 50),
]
if CP.flags & MazdaFlags.GEN2:
messages += [
("CRUZE_STATE", 10),
]
if CP.flags & MazdaFlags.GEN3:
messages += [
("STEER", 50),
]
return CANParser(DBC[CP.carFingerprint]["pt"], messages, 0)
@@ -306,14 +311,12 @@ class CarState(CarStateBase):
(msg,10),
]
if CP.flags & MazdaFlags.GEN2:
if not CP.flags & MazdaFlags.GEN1:
messages += [
("ENGINE_DATA", 100),
("STEER_TORQUE", 100),
("WHEEL_SPEEDS", 100),
("SPEED", 50),
]
if CP.flags & MazdaFlags.MANUAL_TRANSMISSION:
messages += [
("MANUAL_GEAR", 50),
@@ -323,8 +326,19 @@ class CarState(CarStateBase):
("GEAR", 40),
]
if CP.flags & MazdaFlags.GEN2:
messages += [
("STEER", 50),
]
return CANParser(DBC[CP.carFingerprint]["pt"], messages, 2)
@staticmethod
def get_body_can_parser(CP):
return CANParser(DBC[CP.carFingerprint]["pt"], CarState.get_ti_messages(CP), 1)
messages = CarState.get_ti_messages(CP)
if CP.flags & MazdaFlags.GEN3:
messages += [
("CRUZE_STATE", 10),
]
return CANParser(DBC[CP.carFingerprint]["pt"], messages, 1)
+7 -1
View File
@@ -351,5 +351,11 @@ FW_VERSIONS = {
b'PX03-21PS1-E\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00',
b'PX4K-21PS1-B\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00',
],
},
}
}
FINGERPRINTS ={
CAR.MAZDA_CX_30_2023: [{
32: 8, 80: 8, 112: 8, 113: 8, 114: 8, 115: 8, 116: 8, 124: 8, 125: 8, 126: 8, 128: 8, 130: 8, 132: 8, 133: 8, 135: 8, 136: 8, 145: 8, 146: 8, 148: 8, 150: 8, 151: 8, 152: 8, 154: 8, 159: 8, 192: 8, 253: 8, 304: 8, 357: 8, 514: 8, 520: 8, 530: 8, 531: 8, 532: 8, 533: 8, 537: 8, 552: 8, 570: 8, 628: 8, 830: 8, 831: 8, 832: 8, 835: 8, 836: 8, 960: 8, 1034: 8, 1044: 8, 1045: 8, 1066: 8, 1068: 8, 1077: 8, 1078: 8, 1081: 8, 1088: 8, 1095: 8, 1096: 8, 1098: 8, 1099: 8, 1106: 8, 1120: 8, 1121: 8, 1170: 8, 1254: 8, 1264: 8, 1324: 8, 1325: 8, 1409: 8, 1430: 8
}],
}
+10 -2
View File
@@ -5,7 +5,7 @@ import numpy as np
from cereal import car, custom
from panda import Panda
from openpilot.common.conversions import Conversions as CV
from openpilot.selfdrive.car.mazda.values import CAR, LKAS_LIMITS, MazdaFlags, GEN1, GEN2
from openpilot.selfdrive.car.mazda.values import CAR, LKAS_LIMITS, MazdaFlags, GEN1, GEN2, GEN3
from openpilot.selfdrive.car import create_button_events, get_safety_config
from openpilot.selfdrive.car.interfaces import CarInterfaceBase, TorqueFromLateralAccelCallbackType, LateralAccelFromTorqueCallbackType
from openpilot.common.params import Params
@@ -17,6 +17,7 @@ EventName = car.CarEvent.EventName
NON_LINEAR_TORQUE_PARAMS = {
CAR.MAZDA_3_2019: (4.6, 0.6, 0.134, 0.3605),
CAR.MAZDA_CX_30: (4.68689, 0.79999, 0.18244, 0.38763),
CAR.MAZDA_CX_30_2023: (4.68689, 0.79999, 0.18244, 0.38763),
CAR.MAZDA_CX_50: (4.68689, 0.79999, 0.18244, 0.38763)
}
@@ -115,11 +116,18 @@ class CarInterface(CarInterfaceBase):
ret.startingState = True
ret.steerActuatorDelay = 0.335
if candidate in GEN3:
ret.safetyConfigs[0].safetyParam |= Panda.FLAG_MAZDA_GEN3
ret.experimentalLongitudinalAvailable = False
ret.openpilotLongitudinalControl = False
if p.get_bool("ManualTransmission"):
ret.flags |= MazdaFlags.MANUAL_TRANSMISSION.value
ret.steerLimitTimer = 0.8
CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning)
if candidate not in (CAR.MAZDA_CX5_2022, CAR.MAZDA_3_2019, CAR.MAZDA_CX_30, CAR.MAZDA_CX_50) and not ret.flags & MazdaFlags.TORQUE_INTERCEPTOR:
if candidate not in (CAR.MAZDA_CX5_2022, CAR.MAZDA_3_2019, CAR.MAZDA_CX_30, CAR.MAZDA_CX_50, CAR.MAZDA_3_2023, CAR.MAZDA_CX_30_2023) and not ret.flags & MazdaFlags.TORQUE_INTERCEPTOR:
ret.minSteerSpeed = LKAS_LIMITS.DISABLE_SPEED * CV.KPH_TO_MS
ret.centerToFront = ret.wheelbase * 0.41
+2 -2
View File
@@ -67,12 +67,12 @@ def create_steering_control(packer, CP, frame, apply_steer, lkas):
}
msgs.append(packer.make_can_msg("CAM_LKAS2", 1, values))
elif CP.flags & MazdaFlags.GEN2:
elif CP.flags & ( MazdaFlags.GEN2 | MazdaFlags.GEN3 ):
bus = 1
sig_name = "EPS_LKAS"
values = {
"LKAS_REQUEST": apply_steer,
"STEER_FEEL": 12000,
"STEER_FEEL": 10000,
}
msgs.append(packer.make_can_msg(sig_name, bus, values))
+21 -7
View File
@@ -31,7 +31,7 @@ class CarControllerParams:
self.TI_STEER_DRIVER_MULTIPLIER = 40 # weight driver torque
self.TI_STEER_DRIVER_FACTOR = 1 # from dbc
self.TI_STEER_ERROR_MAX = 350 # max delta between torque cmd and torque motor
if CP.flags & MazdaFlags.GEN2:
if CP.flags & (MazdaFlags.GEN2 | MazdaFlags.GEN3):
self.STEER_MAX = 8000
self.STEER_DELTA_UP = 45 # torque increase per refresh
self.STEER_DELTA_DOWN = 80 # torque decrease per refresh
@@ -62,16 +62,19 @@ class MazdaFlags(IntFlag):
# Gen 1 hardware: same CAN messages and same camera
GEN1 = 1
GEN2 = 2
TORQUE_INTERCEPTOR = 4
RADAR_INTERCEPTOR = 8
NO_FSC = 16
NO_MRCC = 32
MANUAL_TRANSMISSION = 64
GEN3 = 4
TORQUE_INTERCEPTOR = 8
RADAR_INTERCEPTOR = 16
NO_FSC = 32
NO_MRCC = 64
MANUAL_TRANSMISSION = 128
@dataclass
class MazdaPlatformConfig(PlatformConfig):
dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict('mazda_2017', None))
def init(self):
if self.flags & MazdaFlags.GEN3:
self.dbc_dict = dbc_dict('mazda_2023', None)
if self.flags & MazdaFlags.GEN2:
self.dbc_dict = dbc_dict('mazda_2019', None)
elif self.flags & MazdaFlags.GEN1 and self.flags & MazdaFlags.RADAR_INTERCEPTOR:
@@ -116,7 +119,7 @@ class CAR(Platforms):
flags=MazdaFlags.GEN2,
)
MAZDA_CX_30 = MazdaPlatformConfig(
[MazdaCarDocs("Mazda CX-30 2019-24")],
[MazdaCarDocs("Mazda CX-30 2019-22")],
MazdaCarSpecs(mass=3375 * CV.LB_TO_KG, wheelbase=2.814, steerRatio=15.5),
flags=MazdaFlags.GEN2,
)
@@ -125,6 +128,16 @@ class CAR(Platforms):
MazdaCarSpecs(mass=3375 * CV.LB_TO_KG, wheelbase=2.814, steerRatio=15.5),
flags=MazdaFlags.GEN2,
)
MAZDA_3_2023 = MazdaPlatformConfig(
[MazdaCarDocs("Mazda 3 2024-26")],
MazdaCarSpecs(mass=3000 * CV.LB_TO_KG, wheelbase=2.725, steerRatio=18.8),
flags=MazdaFlags.GEN3,
)
MAZDA_CX_30_2023 = MazdaPlatformConfig(
[MazdaCarDocs("Mazda CX-30 23-26")],
MazdaCarSpecs(mass=3375 * CV.LB_TO_KG, wheelbase=2.814, steerRatio=15.5),
flags=MazdaFlags.GEN3,
)
class LKAS_LIMITS:
@@ -169,3 +182,4 @@ FW_QUERY_CONFIG = FwQueryConfig(
DBC = CAR.create_dbc_map()
GEN1 = CAR.with_flags(MazdaFlags.GEN1)
GEN2 = CAR.with_flags(MazdaFlags.GEN2)
GEN3 = CAR.with_flags(MazdaFlags.GEN3)
+3 -1
View File
@@ -81,5 +81,7 @@ legend = ["LAT_ACCEL_FACTOR", "MAX_LAT_ACCEL_MEASURED", "FRICTION"]
"HONDA_HRV_3G" = [2.5, 1.2, 0.2]
"MAZDA_3_2019" = [1.45, 3.0, 0.33]
"MAZDA_3_2023" = [1.45, 3.0, 0.33]
"MAZDA_CX_30" = [1.45, 3.0, 0.33]
"MAZDA_CX_50" = [1.45, 3.0, 0.33]
"MAZDA_CX_30_2023" = [1.45, 3.0, 0.33]
"MAZDA_CX_50" = [1.45, 3.0, 0.33]