Merge pull request #1 from EternityLan/devel_lexus-ish-ave30r_v2

Devel lexus ish ave30r v2
This commit is contained in:
EternityLan
2018-09-19 14:05:16 +10:00
committed by GitHub
9 changed files with 73 additions and 88 deletions
+1 -1
View File
@@ -312,7 +312,7 @@ struct CarParams {
hyundai @8;
chrysler @9;
tesla @10;
lexusAve30 @11;
lexusIsh @11;
}
# things about the car in the manual
@@ -54,21 +54,14 @@ BO_ 180 SPEED: 8 XXX
SG_ CHECKSUM : 63|8@0+ (1,0) [0|255] "" XXX
SG_ SPEED : 47|16@0+ (0.01,0) [0|250] "kph" XXX
BO_ 466 PCM_CRUISE: 8 XXX
SG_ GAS_RELEASED : 4|1@0+ (1,0) [0|1] "" XXX
SG_ STANDSTILL_ON : 12|1@0+ (1,0) [0|1] "" XXX
SG_ ACCEL_NET : 23|16@0- (0.001,0) [-20|20] "m/s2" XXX
SG_ CRUISE_STATE : 55|4@0+ (1,0) [0|15] "" XXX
SG_ CHECKSUM : 63|8@0+ (1,0) [0|255] "" XXX
BO_ 552 ACCELEROMETER: 8 XXX
SG_ ACCEL_Z : 22|15@0- (1,0) [0|32767] "" XXX
SG_ ACCEL_X : 6|15@0- (0.001,0) [-20|20] "m/s2" XXX
BO_ 560 BRAKE_MODULE2: 7 XXX
SG_ BRAKE_PRESSED : 26|1@0+ (1,0) [0|1] "" XXX
BO_ 643 PRE_COLLISION: 7 XXX
BO_ 550 BRAKE_MODULE: 8 XXX
SG_ BRAKE_PRESSURE : 0|9@0+ (1,0) [0|511] "" XXX
SG_ BRAKE_POSITION : 16|9@0+ (1,0) [0|511] "" XXX
SG_ BRAKE_PRESSED : 37|1@0+ (1,0) [0|1] "" XXX
BO_ 740 STEERING_LKA: 5 XXX
SG_ LKA_STATE : 31|8@0+ (1,0) [0|255] "" XXX
@@ -175,7 +168,11 @@ BO_ 610 EPS_STATUS: 5 EPS
BO_ 956 GEAR_PACKET: 8 XXX
SG_ GEAR : 13|6@0+ (1,0) [0|63] "" XXX
BO_ 1009 PCM_CRUISE_LEXUS_AVE30: 8 XXX
BO_ 466 PCM_CRUISE: 8 XXX
SG_ GAS_RELEASED : 4|1@0+ (1,0) [0|1] "" XXX
SG_ CRUISE_STATE : 15|3@0+ (1,0) [0|0] "" DS1
BO_ 1009 PCM_CRUISE_LEXUS_ISH: 8 XXX
SG_ MAIN_ON : 13|1@0+ (1,0) [0|3] "" XXX
SG_ CRUISE_STATE : 10|1@0+ (1,0) [0|1] "" XXX
SG_ SET_SPEED : 23|8@0+ (1,0) [0|255] "kph" XXX
+2 -2
View File
@@ -100,7 +100,7 @@ typedef struct {
#define SAFETY_FORD 5
#define SAFETY_CADILLAC 6
#define SAFETY_HYUNDAI 7
#define SAFETY_LEXUS_AVE30 8
#define SAFETY_LEXUS_ISH 8
#define SAFETY_TOYOTA_IPAS 0x1335
#define SAFETY_TOYOTA_NOLIMITS 0x1336
#define SAFETY_ALLOUTPUT 0x1337
@@ -116,7 +116,7 @@ const safety_hook_config safety_hook_registry[] = {
{SAFETY_CADILLAC, &cadillac_hooks},
{SAFETY_HYUNDAI, &hyundai_hooks},
{SAFETY_TOYOTA_NOLIMITS, &toyota_nolimits_hooks},
{SAFETY_LEXUS_AVE30, &lexus_ave30_hooks},
{SAFETY_LEXUS_ISH, &lexus_ish_hooks},
#ifdef PANDA
{SAFETY_TOYOTA_IPAS, &toyota_ipas_hooks},
#endif
+10 -15
View File
@@ -30,8 +30,7 @@ uint32_t toyota_ts_last = 0;
int toyota_cruise_engaged_last = 0; // cruise state
struct sample_t toyota_torque_meas; // last 3 motor torques produced by the eps
uint32_t acc_addr = 0; // acc state address
int is_lexus_ave30 = 0; // is a lexus is300h/ave30 model?
int is_lexus_ish = 0; // is a lexus is hybrid model?
static void toyota_rx_hook(CAN_FIFOMailBox_TypeDef *to_push) {
// get eps motor torque (0.66 factor in dbc)
@@ -50,10 +49,9 @@ static void toyota_rx_hook(CAN_FIFOMailBox_TypeDef *to_push) {
}
// enter controls on rising edge of ACC, exit controls on ACC off
if ((to_push->RIR>>21) == acc_addr) {
// lexus ave30 1 bit: 11
if ((to_push->RIR>>21) == 0x1D2) {
// toyota: 4 bits: 55-52
int cruise_engaged = is_lexus_ave30 == 1? to_push->RDLR & 0x400 : to_push->RDHR & 0xF00000;
int cruise_engaged = is_lexus_ish == 1? to_push->RDLR & 0x2000 : to_push->RDHR & 0xF00000;
if (cruise_engaged && !toyota_cruise_engaged_last) {
controls_allowed = 1;
} else if (!cruise_engaged) {
@@ -154,17 +152,15 @@ static void toyota_init(int16_t param) {
toyota_actuation_limits = 1;
toyota_giraffe_switch_1 = 0;
toyota_dbc_eps_torque_factor = param;
acc_addr = 0x1D2;
is_lexus_ave30 = 0;
is_lexus_ish = 0;
}
static void lexus_ave30_init(int16_t param) {
static void lexus_ish_init(int16_t param) {
controls_allowed = 0;
toyota_actuation_limits = 1;
toyota_giraffe_switch_1 = 0;
toyota_dbc_eps_torque_factor = param;
acc_addr = 0x3F1;
is_lexus_ave30 = 1;
is_lexus_ish = 1;
}
static int toyota_fwd_hook(int bus_num, CAN_FIFOMailBox_TypeDef *to_fwd) {
@@ -192,8 +188,7 @@ static void toyota_nolimits_init(int16_t param) {
toyota_actuation_limits = 0;
toyota_giraffe_switch_1 = 0;
toyota_dbc_eps_torque_factor = param;
acc_addr = 0x1D2;
is_lexus_ave30 = 0;
is_lexus_ish = 0;
}
const safety_hooks toyota_nolimits_hooks = {
@@ -205,11 +200,11 @@ const safety_hooks toyota_nolimits_hooks = {
.fwd = toyota_fwd_hook,
};
const safety_hooks lexus_ave30_hooks = {
.init = lexus_ave30_init,
const safety_hooks lexus_ish_hooks = {
.init = lexus_ish_init,
.rx = toyota_rx_hook,
.tx = toyota_tx_hook,
.tx_lin = toyota_tx_lin_hook,
.tx_lin = nooutput_tx_lin_hook,
.ignition = default_ign_hook,
.fwd = toyota_fwd_hook,
};
+1 -1
View File
@@ -106,7 +106,7 @@ class Panda(object):
SAFETY_HONDA = 1
SAFETY_TOYOTA = 2
SAFETY_HONDA_BOSCH = 4
SAFETY_LEXUS_AVE30 = 8
SAFETY_LEXUS_ISH = 8
SAFETY_TOYOTA_NOLIMITS = 0x1336
SAFETY_ALLOUTPUT = 0x1337
SAFETY_ELM327 = 0xE327
+3 -3
View File
@@ -40,7 +40,7 @@
#define SAFETY_FORD 5
#define SAFETY_CADILLAC 6
#define SAFETY_HYUNDAI 7
#define SAFETY_LEXUS_AVE30 8
#define SAFETY_LEXUS_ISH 8
#define SAFETY_TOYOTA_NOLIMITS 0x1336
#define SAFETY_ALLOUTPUT 0x1337
@@ -118,8 +118,8 @@ void *safety_setter_thread(void *s) {
case (int)cereal::CarParams::SafetyModels::HYUNDAI:
safety_setting = SAFETY_HYUNDAI;
break;
case (int)cereal::CarParams::SafetyModels::LEXUS_AVE30:
safety_setting = SAFETY_LEXUS_AVE30;
case (int)cereal::CarParams::SafetyModels::LEXUS_ISH:
safety_setting = SAFETY_LEXUS_ISH;
break;
default:
LOGE("unknown safety model: %d", safety_model);
+27 -34
View File
@@ -19,6 +19,7 @@ def get_can_parser(CP):
signals = [
# sig_name, sig_address, default
("GEAR", "GEAR_PACKET", 0),
("BRAKE_PRESSED", "BRAKE_MODULE", 0),
("GAS_PEDAL", "GAS_PEDAL", 0),
("WHEEL_SPEED_FL", "WHEEL_SPEEDS", 0),
("WHEEL_SPEED_FR", "WHEEL_SPEEDS", 0),
@@ -33,6 +34,8 @@ def get_can_parser(CP):
("STEER_ANGLE", "STEER_ANGLE_SENSOR", 0),
("STEER_FRACTION", "STEER_ANGLE_SENSOR", 0),
("STEER_RATE", "STEER_ANGLE_SENSOR", 0),
("GAS_RELEASED", "PCM_CRUISE", 0),
("CRUISE_STATE", "PCM_CRUISE", 0),
("STEER_TORQUE_DRIVER", "STEER_TORQUE_SENSOR", 0),
("STEER_TORQUE_EPS", "STEER_TORQUE_SENSOR", 0),
("TURN_SIGNALS", "STEERING_LEVERS", 3), # 3 is no blinkers
@@ -41,44 +44,39 @@ def get_can_parser(CP):
("AUTO_HIGH_BEAM", "LIGHT_STALK", 0),
]
if CP.carFingerprint == CAR.LEXUS_AVE30:
checks = [
("BRAKE_MODULE", 40),
("GAS_PEDAL", 33),
("WHEEL_SPEEDS", 80),
("STEER_ANGLE_SENSOR", 80),
("PCM_CRUISE", 33),
("PCM_CRUISE_2", 33),
("STEER_TORQUE_SENSOR", 50),
("EPS_STATUS", 25),
]
if CP.carFingerprint == CAR.LEXUS_ISH:
signals += [
("BRAKE_PRESSED", "BRAKE_MODULE2", 0),
("GAS_RELEASED", "PCM_CRUISE", 0),
("CRUISE_STATE", "PCM_CRUISE_LEXUS_AVE30", 0),
("MAIN_ON", "PCM_CRUISE_LEXUS_AVE30", 0),
("SET_SPEED", "PCM_CRUISE_LEXUS_AVE30", 0),
("MAIN_ON", "PCM_CRUISE_LEXUS_ISH", 0),
("SET_SPEED", "PCM_CRUISE_LEXUS_ISH", 0),
]
checks = [
("BRAKE_MODULE2", 50),
("BRAKE_MODULE", 50),
("GAS_PEDAL", 50),
("WHEEL_SPEEDS", 80),
("STEER_ANGLE_SENSOR", 80),
("PCM_CRUISE", 33),
("STEER_TORQUE_SENSOR", 50),
("EPS_STATUS", 25),
("PCM_CRUISE_LEXUS_AVE30", 1),
("PCM_CRUISE_LEXUS_ISH", 1),
]
else:
signals += [
("BRAKE_PRESSED", "BRAKE_MODULE", 0),
("GAS_RELEASED", "PCM_CRUISE", 0),
("CRUISE_STATE", "PCM_CRUISE", 0),
("MAIN_ON", "PCM_CRUISE_2", 0),
("SET_SPEED", "PCM_CRUISE_2", 0),
("LOW_SPEED_LOCKOUT", "PCM_CRUISE_2", 0),
("IPAS_STATE", "EPS_STATUS", 1),
]
checks = [
("BRAKE_MODULE", 40),
("GAS_PEDAL", 33),
("WHEEL_SPEEDS", 80),
("STEER_ANGLE_SENSOR", 80),
("PCM_CRUISE", 33),
("PCM_CRUISE_2", 33),
("STEER_TORQUE_SENSOR", 50),
("EPS_STATUS", 25),
]
if CP.carFingerprint == CAR.PRIUS:
signals += [("STATE", "AUTOPARK_STATUS", 0)]
@@ -120,10 +118,7 @@ class CarState(object):
cp.vl["SEATS_DOORS"]['DOOR_OPEN_RL'], cp.vl["SEATS_DOORS"]['DOOR_OPEN_RR']])
self.seatbelt = not cp.vl["SEATS_DOORS"]['SEATBELT_DRIVER_UNLATCHED']
if self.CP.carFingerprint == CAR.LEXUS_AVE30:
self.brake_pressed = cp.vl["BRAKE_MODULE2"]['BRAKE_PRESSED']
else:
self.brake_pressed = cp.vl["BRAKE_MODULE"]['BRAKE_PRESSED']
self.brake_pressed = cp.vl["BRAKE_MODULE"]['BRAKE_PRESSED']
self.pedal_gas = cp.vl["GAS_PEDAL"]['GAS_PEDAL']
self.car_gas = self.pedal_gas
self.esp_disabled = cp.vl["ESP_CONTROL"]['TC_DISABLED']
@@ -149,8 +144,8 @@ class CarState(object):
self.angle_steers_rate = cp.vl["STEER_ANGLE_SENSOR"]['STEER_RATE']
can_gear = int(cp.vl["GEAR_PACKET"]['GEAR'])
self.gear_shifter = parse_gear_shifter(can_gear, self.shifter_values)
if self.CP.carFingerprint == CAR.LEXUS_AVE30:
self.main_on = cp.vl["PCM_CRUISE_LEXUS_AVE30"]['MAIN_ON']
if self.CP.carFingerprint == CAR.LEXUS_ISH:
self.main_on = cp.vl["PCM_CRUISE_LEXUS_ISH"]['MAIN_ON']
else:
self.main_on = cp.vl["PCM_CRUISE_2"]['MAIN_ON']
self.left_blinker_on = cp.vl["STEERING_LEVERS"]['TURN_SIGNALS'] == 1
@@ -159,7 +154,7 @@ class CarState(object):
# 2 is standby, 10 is active. TODO: check that everything else is really a faulty state
self.steer_state = cp.vl["EPS_STATUS"]['LKA_STATE']
self.steer_error = cp.vl["EPS_STATUS"]['LKA_STATE'] not in [1, 5]
if self.CP.carFingerprint == CAR.LEXUS_AVE30:
if self.CP.carFingerprint == CAR.LEXUS_ISH:
self.ipas_active = False
else:
self.ipas_active = cp.vl['EPS_STATUS']['IPAS_STATE'] == 3
@@ -170,15 +165,13 @@ class CarState(object):
self.steer_override = abs(self.steer_torque_driver) > STEER_THRESHOLD
self.user_brake = 0
if self.CP.carFingerprint == CAR.LEXUS_AVE30:
self.v_cruise_pcm = cp.vl["PCM_CRUISE_LEXUS_AVE30"]['SET_SPEED']
self.pcm_acc_status = cp.vl["PCM_CRUISE_LEXUS_AVE30"]['CRUISE_STATE']
self.gas_pressed = not cp.vl["PCM_CRUISE"]['GAS_RELEASED']
self.pcm_acc_status = cp.vl["PCM_CRUISE"]['CRUISE_STATE']
self.gas_pressed = not cp.vl["PCM_CRUISE"]['GAS_RELEASED']
if self.CP.carFingerprint == CAR.LEXUS_ISH:
self.v_cruise_pcm = cp.vl["PCM_CRUISE_LEXUS_ISH"]['SET_SPEED']
self.low_speed_lockout = 0
else:
self.v_cruise_pcm = cp.vl["PCM_CRUISE_2"]['SET_SPEED']
self.pcm_acc_status = cp.vl["PCM_CRUISE"]['CRUISE_STATE']
self.gas_pressed = not cp.vl["PCM_CRUISE"]['GAS_RELEASED']
self.low_speed_lockout = cp.vl["PCM_CRUISE_2"]['LOW_SPEED_LOCKOUT'] == 2
self.brake_lights = bool(cp.vl["ESP_CONTROL"]['BRAKE_LIGHTS_ACC'] or self.brake_pressed)
if self.CP.carFingerprint == CAR.PRIUS:
+4 -4
View File
@@ -54,8 +54,8 @@ class CarInterface(object):
ret.carName = "toyota"
ret.carFingerprint = candidate
if candidate == CAR.LEXUS_AVE30:
ret.safetyModel = car.CarParams.SafetyModels.lexusAve30
if candidate == CAR.LEXUS_ISH:
ret.safetyModel = car.CarParams.SafetyModels.lexusIsh
else:
ret.safetyModel = car.CarParams.SafetyModels.toyota
@@ -140,7 +140,7 @@ class CarInterface(object):
ret.steerKpV, ret.steerKiV = [[0.6], [0.05]]
ret.steerKf = 0.00006
elif candidate == CAR.LEXUS_AVE30:
elif candidate == CAR.LEXUS_ISH:
ret.safetyParam = 66
ret.wheelbase = 2.80 # in spec
ret.steerRatio = 13.3 # in spec
@@ -161,7 +161,7 @@ class CarInterface(object):
if candidate in [CAR.PRIUS, CAR.RAV4H, CAR.LEXUS_RXH, CAR.CHR,
CAR.CHRH, CAR.CAMRY, CAR.CAMRYH, CAR.HIGHLANDERH, CAR.HIGHLANDER]:
ret.minEnableSpeed = -1.
elif candidate in [CAR.RAV4, CAR.COROLLA, CAR.LEXUS_AVE30]: # TODO: hack ICE to do stop and go
elif candidate in [CAR.RAV4, CAR.COROLLA, CAR.LEXUS_ISH]: # TODO: hack ICE to do stop and go
ret.minEnableSpeed = 19. * CV.MPH_TO_MS
centerToRear = ret.wheelbase - ret.centerToFront
+16 -16
View File
@@ -12,7 +12,7 @@ class CAR:
CAMRYH = "TOYOTA CAMRY HYBRID 2018"
HIGHLANDER = "TOYOTA HIGHLANDER 2017"
HIGHLANDERH = "TOYOTA HIGHLANDER HYBRID 2018"
LEXUS_AVE30 = "LEXUS IS HYBRID 2017 AVE30"
LEXUS_ISH = "LEXUS IS HYBRID 2017"
class ECU:
CAM = 0 # camera
@@ -23,25 +23,25 @@ class ECU:
# addr: (ecu, cars, bus, 1/freq*100, vl)
STATIC_MSGS = [
(0x130, ECU.CAM, (CAR.PRIUS, CAR.RAV4H, CAR.LEXUS_RXH, CAR.RAV4, CAR.COROLLA, CAR.HIGHLANDER, CAR.HIGHLANDERH), 1, 100, '\x00\x00\x00\x00\x00\x00\x38'),
(0x130, ECU.CAM, (CAR.LEXUS_AVE30), 1, 100, '\x00\x00\x03\xff\x00\x00\x3a'),
(0x240, ECU.CAM, (CAR.PRIUS, CAR.RAV4H, CAR.LEXUS_RXH, CAR.RAV4, CAR.COROLLA, CAR.HIGHLANDER, CAR.HIGHLANDERH, CAR.LEXUS_AVE30), 1, 5, '\x00\x10\x01\x00\x10\x01\x00'),
(0x241, ECU.CAM, (CAR.PRIUS, CAR.RAV4H, CAR.LEXUS_RXH, CAR.RAV4, CAR.COROLLA, CAR.HIGHLANDER, CAR.HIGHLANDERH, CAR.LEXUS_AVE30), 1, 5, '\x00\x10\x01\x00\x10\x01\x00'),
(0x244, ECU.CAM, (CAR.PRIUS, CAR.RAV4H, CAR.LEXUS_RXH, CAR.RAV4, CAR.COROLLA, CAR.HIGHLANDER, CAR.HIGHLANDERH, CAR.LEXUS_AVE30), 1, 5, '\x00\x10\x01\x00\x10\x01\x00'),
(0x130, ECU.CAM, (CAR.LEXUS_ISH), 1, 100, '\x00\x00\x03\xff\x00\x00\x3a'),
(0x240, ECU.CAM, (CAR.PRIUS, CAR.RAV4H, CAR.LEXUS_RXH, CAR.RAV4, CAR.COROLLA, CAR.HIGHLANDER, CAR.HIGHLANDERH, CAR.LEXUS_ISH), 1, 5, '\x00\x10\x01\x00\x10\x01\x00'),
(0x241, ECU.CAM, (CAR.PRIUS, CAR.RAV4H, CAR.LEXUS_RXH, CAR.RAV4, CAR.COROLLA, CAR.HIGHLANDER, CAR.HIGHLANDERH, CAR.LEXUS_ISH), 1, 5, '\x00\x10\x01\x00\x10\x01\x00'),
(0x244, ECU.CAM, (CAR.PRIUS, CAR.RAV4H, CAR.LEXUS_RXH, CAR.RAV4, CAR.COROLLA, CAR.HIGHLANDER, CAR.HIGHLANDERH, CAR.LEXUS_ISH), 1, 5, '\x00\x10\x01\x00\x10\x01\x00'),
(0x245, ECU.CAM, (CAR.PRIUS, CAR.RAV4H, CAR.LEXUS_RXH, CAR.RAV4, CAR.COROLLA, CAR.HIGHLANDER, CAR.HIGHLANDERH), 1, 5, '\x00\x10\x01\x00\x10\x01\x00'),
(0x245, ECU.CAM, (CAR.LEXUS_AVE30), 1, 5, '\x00\x10\x01\x00'),
(0x245, ECU.CAM, (CAR.LEXUS_ISH), 1, 5, '\x00\x10\x01\x00'),
(0x248, ECU.CAM, (CAR.PRIUS, CAR.RAV4H, CAR.LEXUS_RXH, CAR.RAV4, CAR.COROLLA, CAR.HIGHLANDER, CAR.HIGHLANDERH), 1, 5, '\x00\x00\x00\x00\x00\x00\x01'),
(0x248, ECU.CAM, (CAR.LEXUS_AVE30), 1, 5, '\x00\x01\x00\x00\x00\x00\x00'),
(0x248, ECU.CAM, (CAR.LEXUS_ISH), 1, 5, '\x00\x01\x00\x00\x00\x00\x00'),
(0x367, ECU.CAM, (CAR.PRIUS, CAR.RAV4H, CAR.LEXUS_RXH, CAR.RAV4, CAR.COROLLA, CAR.HIGHLANDER, CAR.HIGHLANDERH), 0, 40, '\x06\x00'),
(0x367, ECU.CAM, (CAR.LEXUS_AVE30), 0, 40, '\x02\x00'),
(0x414, ECU.CAM, (CAR.PRIUS, CAR.RAV4H, CAR.LEXUS_RXH, CAR.RAV4, CAR.COROLLA, CAR.HIGHLANDER, CAR.HIGHLANDERH, CAR.LEXUS_AVE30), 0, 100, '\x00\x00\x00\x00\x00\x00\x17\x00'),
(0x367, ECU.CAM, (CAR.LEXUS_ISH), 0, 40, '\x02\x00'),
(0x414, ECU.CAM, (CAR.PRIUS, CAR.RAV4H, CAR.LEXUS_RXH, CAR.RAV4, CAR.COROLLA, CAR.HIGHLANDER, CAR.HIGHLANDERH, CAR.LEXUS_ISH), 0, 100, '\x00\x00\x00\x00\x00\x00\x17\x00'),
(0x466, ECU.CAM, (CAR.PRIUS, CAR.RAV4H, CAR.LEXUS_RXH, CAR.RAV4, CAR.HIGHLANDER, CAR.HIGHLANDERH), 1, 100, '\x20\x20\xAD'),
(0x466, ECU.CAM, (CAR.COROLLA), 1, 100, '\x24\x20\xB1'),
(0x466, ECU.CAM, (CAR.LEXUS_AVE30), 1, 100, '\x41\x20\xce'),
(0x489, ECU.CAM, (CAR.PRIUS, CAR.RAV4H, CAR.LEXUS_RXH, CAR.RAV4, CAR.COROLLA, CAR.HIGHLANDER, CAR.HIGHLANDERH, CAR.LEXUS_AVE30), 0, 100, '\x00\x00\x00\x00\x00\x00\x00'),
(0x48a, ECU.CAM, (CAR.PRIUS, CAR.RAV4H, CAR.LEXUS_RXH, CAR.RAV4, CAR.COROLLA, CAR.HIGHLANDER, CAR.HIGHLANDERH, CAR.LEXUS_AVE30), 0, 100, '\x00\x00\x00\x00\x00\x00\x00'),
(0x466, ECU.CAM, (CAR.LEXUS_ISH), 1, 100, '\x41\x20\xce'),
(0x489, ECU.CAM, (CAR.PRIUS, CAR.RAV4H, CAR.LEXUS_RXH, CAR.RAV4, CAR.COROLLA, CAR.HIGHLANDER, CAR.HIGHLANDERH, CAR.LEXUS_ISH), 0, 100, '\x00\x00\x00\x00\x00\x00\x00'),
(0x48a, ECU.CAM, (CAR.PRIUS, CAR.RAV4H, CAR.LEXUS_RXH, CAR.RAV4, CAR.COROLLA, CAR.HIGHLANDER, CAR.HIGHLANDERH, CAR.LEXUS_ISH), 0, 100, '\x00\x00\x00\x00\x00\x00\x00'),
(0x48b, ECU.CAM, (CAR.PRIUS, CAR.RAV4H, CAR.LEXUS_RXH, CAR.RAV4, CAR.COROLLA, CAR.HIGHLANDER, CAR.HIGHLANDERH), 0, 100, '\x66\x06\x08\x0a\x02\x00\x00\x00'),
(0x48b, ECU.CAM, (CAR.LEXUS_AVE30), 0, 100, '\x66\x07\x0a\x0f\x01\x00\x00\x00'),
(0x4d3, ECU.CAM, (CAR.PRIUS, CAR.RAV4H, CAR.LEXUS_RXH, CAR.RAV4, CAR.COROLLA, CAR.LEXUS_AVE30), 0, 100, '\x1C\x00\x00\x01\x00\x00\x00\x00'),
(0x48b, ECU.CAM, (CAR.LEXUS_ISH), 0, 100, '\x66\x07\x0a\x0f\x01\x00\x00\x00'),
(0x4d3, ECU.CAM, (CAR.PRIUS, CAR.RAV4H, CAR.LEXUS_RXH, CAR.RAV4, CAR.COROLLA, CAR.LEXUS_ISH), 0, 100, '\x1C\x00\x00\x01\x00\x00\x00\x00'),
(0x128, ECU.DSU, (CAR.PRIUS, CAR.RAV4H, CAR.LEXUS_RXH, CAR.RAV4, CAR.COROLLA), 1, 3, '\xf4\x01\x90\x83\x00\x37'),
(0x128, ECU.DSU, (CAR.HIGHLANDER, CAR.HIGHLANDERH), 1, 3, '\x03\x00\x20\x00\x00\x52'),
@@ -84,7 +84,7 @@ def check_ecu_msgs(fingerprint, ecu):
FINGERPRINTS = {
CAR.LEXUS_AVE30: [{
CAR.LEXUS_ISH: [{
36: 8, 37: 8, 170: 8, 180: 8, 295: 8, 296: 8, 400: 6, 426: 6, 452: 8, 466: 8, 467: 8, 550: 8, 552: 4, 560: 7, 581: 5, 608: 8, 610: 5, 643: 7, 713: 8, 740: 5, 800: 8, 836: 8, 845: 5, 849: 4, 869: 7, 870: 7, 871: 2, 896: 8, 897: 8, 900: 6, 902: 6, 905: 8, 911: 8, 913: 8, 916: 3, 918: 7, 921: 7, 933: 8, 944: 8, 945: 8, 950: 8, 951: 8, 953: 3, 955: 8, 956: 8, 979: 2, 992: 8, 998: 5, 999: 7, 1000: 8, 1001: 8, 1009: 8, 1017: 8, 1020: 8, 1041: 8, 1042: 8, 1043: 8, 1044: 8, 1056: 8, 1057: 8, 1059: 1, 1112: 8, 1114: 8, 1161: 8, 1162: 8, 1163: 8, 1164: 8, 1165: 8, 1166: 8, 1167: 8, 1168: 1, 1176: 8, 1177: 8, 1178: 8, 1179: 8, 1180: 8, 1181: 8, 1184: 8, 1185: 8, 1186: 8, 1187: 8, 1189: 8, 1190: 8, 1191: 8, 1192: 8, 1196: 8, 1197: 8, 1198: 8, 1199: 8, 1206: 8, 1208: 8, 1212: 8, 1227: 8, 1232: 8, 1235: 8, 1279: 8, 1408: 8, 1409: 8, 1410: 8, 1552: 8, 1553: 8, 1554: 8, 1555: 8, 1556: 8, 1557: 8, 1561: 8, 1568: 8, 1569: 8, 1570: 8, 1571: 8, 1572: 8, 1575: 8, 1584: 8, 1589: 8, 1592: 8, 1593: 8, 1595: 8, 1599: 8, 1728: 8, 1779: 8, 1904: 8, 1912: 8, 1990: 8, 1998: 8
}],
CAR.RAV4: [{
@@ -156,7 +156,7 @@ DBC = {
CAR.CAMRYH: dbc_dict('toyota_camry_hybrid_2018_pt_generated', 'toyota_prius_2017_adas'),
CAR.HIGHLANDER: dbc_dict('toyota_highlander_2017_pt_generated', 'toyota_prius_2017_adas'),
CAR.HIGHLANDERH: dbc_dict('toyota_highlander_hybrid_2018_pt_generated', 'toyota_prius_2017_adas'),
CAR.LEXUS_AVE30: dbc_dict('lexus_ave30_2017_pt_generated', 'toyota_prius_2017_adas'),
CAR.LEXUS_ISH: dbc_dict('lexus_ish_2017_pt_generated', 'toyota_prius_2017_adas'),
}
NO_DSU_CAR = [CAR.CHR, CAR.CHRH, CAR.CAMRY, CAR.CAMRYH]