@ -1,4 +1,5 @@
# flake8: noqa
from collections import defaultdict
from enum import IntFlag
from cereal import car
from selfdrive . car import dbc_dict
@ -18,12 +19,18 @@ class CarControllerParams:
STEER_DELTA_DOWN = 25 # always lower than 45 otherwise the Rav4 faults (Prius seems ok with 50)
STEER_ERROR_MAX = 350 # max delta between torque cmd and torque motor
class ToyotaFlags ( IntFlag ) :
HYBRID = 1
class CAR :
# Toyota
ALPHARD_TSS2 = " TOYOTA ALPHARD 2020 "
AVALON = " TOYOTA AVALON 2016 "
AVALON_2019 = " TOYOTA AVALON 2019 "
AVALONH_2019 = " TOYOTA AVALON HYBRID 2019 "
AVALON_TSS2 = " TOYOTA AVALON 2022 "
CAMRY = " TOYOTA CAMRY 2018 "
CAMRYH = " TOYOTA CAMRY HYBRID 2018 "
CAMRY_TSS2 = " TOYOTA CAMRY 2021 " # TSS 2.5
@ -39,6 +46,7 @@ class CAR:
HIGHLANDERH = " TOYOTA HIGHLANDER HYBRID 2018 "
HIGHLANDERH_TSS2 = " TOYOTA HIGHLANDER HYBRID 2020 "
PRIUS = " TOYOTA PRIUS 2017 "
PRIUS_V = " TOYOTA PRIUS v 2017 "
PRIUS_TSS2 = " TOYOTA PRIUS TSS2 2021 "
RAV4 = " TOYOTA RAV4 2017 "
RAV4H = " TOYOTA RAV4 HYBRID 2017 "
@ -66,25 +74,24 @@ class CAR:
STATIC_DSU_MSGS = [
( 0x128 , ( CAR . PRIUS , CAR . RAV4H , CAR . LEXUS_RXH , CAR . LEXUS_NXH , CAR . LEXUS_NX , CAR . RAV4 , CAR . COROLLA , CAR . AVALON ) , 1 , 3 , b ' \xf4 \x01 \x90 \x83 \x00 \x37 ' ) ,
( 0x128 , ( CAR . HIGHLANDER , CAR . HIGHLANDERH , CAR . SIENNA , CAR . LEXUS_CTH , CAR . LEXUS_ESH ) , 1 , 3 , b ' \x03 \x00 \x20 \x00 \x00 \x52 ' ) ,
( 0x141 , ( CAR . PRIUS , CAR . RAV4H , CAR . LEXUS_RXH , CAR . LEXUS_NXH , CAR . LEXUS_NX , CAR . RAV4 , CAR . COROLLA , CAR . HIGHLANDER , CAR . HIGHLANDERH , CAR . AVALON , CAR . SIENNA , CAR . LEXUS_CTH , CAR . LEXUS_ESH , CAR . LEXUS_RX ) , 1 , 2 , b ' \x00 \x00 \x00 \x46 ' ) ,
( 0x160 , ( CAR . PRIUS , CAR . RAV4H , CAR . LEXUS_RXH , CAR . LEXUS_NXH , CAR . LEXUS_NX , CAR . RAV4 , CAR . COROLLA , CAR . HIGHLANDER , CAR . HIGHLANDERH , CAR . AVALON , CAR . SIENNA , CAR . LEXUS_CTH , CAR . LEXUS_ESH , CAR . LEXUS_RX ) , 1 , 7 , b ' \x00 \x00 \x08 \x12 \x01 \x31 \x9c \x51 ' ) ,
( 0x161 , ( CAR . PRIUS , CAR . RAV4H , CAR . LEXUS_RXH , CAR . LEXUS_NXH , CAR . LEXUS_NX , CAR . RAV4 , CAR . COROLLA , CAR . AVALON , CAR . LEXUS_RX ) , 1 , 7 , b ' \x00 \x1e \x00 \x00 \x00 \x80 \x07 ' ) ,
( 0x141 , ( CAR . PRIUS , CAR . RAV4H , CAR . LEXUS_RXH , CAR . LEXUS_NXH , CAR . LEXUS_NX , CAR . RAV4 , CAR . COROLLA , CAR . HIGHLANDER , CAR . HIGHLANDERH , CAR . AVALON , CAR . SIENNA , CAR . LEXUS_CTH , CAR . LEXUS_ESH , CAR . LEXUS_RX , CAR . PRIUS_V ) , 1 , 2 , b ' \x00 \x00 \x00 \x46 ' ) ,
( 0x160 , ( CAR . PRIUS , CAR . RAV4H , CAR . LEXUS_RXH , CAR . LEXUS_NXH , CAR . LEXUS_NX , CAR . RAV4 , CAR . COROLLA , CAR . HIGHLANDER , CAR . HIGHLANDERH , CAR . AVALON , CAR . SIENNA , CAR . LEXUS_CTH , CAR . LEXUS_ESH , CAR . LEXUS_RX , CAR . PRIUS_V ) , 1 , 7 , b ' \x00 \x00 \x08 \x12 \x01 \x31 \x9c \x51 ' ) ,
( 0x161 , ( CAR . PRIUS , CAR . RAV4H , CAR . LEXUS_RXH , CAR . LEXUS_NXH , CAR . LEXUS_NX , CAR . RAV4 , CAR . COROLLA , CAR . AVALON , CAR . LEXUS_RX , CAR . PRIUS_V ) , 1 , 7 , b ' \x00 \x1e \x00 \x00 \x00 \x80 \x07 ' ) ,
( 0X161 , ( CAR . HIGHLANDERH , CAR . HIGHLANDER , CAR . SIENNA , CAR . LEXUS_CTH , CAR . LEXUS_ESH ) , 1 , 7 , b ' \x00 \x1e \x00 \xd4 \x00 \x00 \x5b ' ) ,
( 0x283 , ( CAR . PRIUS , CAR . RAV4H , CAR . LEXUS_RXH , CAR . LEXUS_NXH , CAR . LEXUS_NX , CAR . RAV4 , CAR . COROLLA , CAR . HIGHLANDER , CAR . HIGHLANDERH , CAR . AVALON , CAR . SIENNA , CAR . LEXUS_CTH , CAR . LEXUS_ESH , CAR . LEXUS_RX ) , 0 , 3 , b ' \x00 \x00 \x00 \x00 \x00 \x00 \x8c ' ) ,
( 0x283 , ( CAR . PRIUS , CAR . RAV4H , CAR . LEXUS_RXH , CAR . LEXUS_NXH , CAR . LEXUS_NX , CAR . RAV4 , CAR . COROLLA , CAR . HIGHLANDER , CAR . HIGHLANDERH , CAR . AVALON , CAR . SIENNA , CAR . LEXUS_CTH , CAR . LEXUS_ESH , CAR . LEXUS_RX , CAR . PRIUS_V ) , 0 , 3 , b ' \x00 \x00 \x00 \x00 \x00 \x00 \x8c ' ) ,
( 0x2E6 , ( CAR . PRIUS , CAR . RAV4H , CAR . LEXUS_RXH ) , 0 , 3 , b ' \xff \xf8 \x00 \x08 \x7f \xe0 \x00 \x4e ' ) ,
( 0x2E7 , ( CAR . PRIUS , CAR . RAV4H , CAR . LEXUS_RXH ) , 0 , 3 , b ' \xa8 \x9c \x31 \x9c \x00 \x00 \x00 \x02 ' ) ,
( 0x33E , ( CAR . PRIUS , CAR . RAV4H , CAR . LEXUS_RXH ) , 0 , 20 , b ' \x0f \xff \x26 \x40 \x00 \x1f \x00 ' ) ,
( 0x344 , ( CAR . PRIUS , CAR . RAV4H , CAR . LEXUS_RXH , CAR . LEXUS_NXH , CAR . LEXUS_NX , CAR . RAV4 , CAR . COROLLA , CAR . HIGHLANDER , CAR . HIGHLANDERH , CAR . AVALON , CAR . SIENNA , CAR . LEXUS_CTH , CAR . LEXUS_ESH , CAR . LEXUS_RX ) , 0 , 5 , b ' \x00 \x00 \x01 \x00 \x00 \x00 \x00 \x50 ' ) ,
( 0x344 , ( CAR . PRIUS , CAR . RAV4H , CAR . LEXUS_RXH , CAR . LEXUS_NXH , CAR . LEXUS_NX , CAR . RAV4 , CAR . COROLLA , CAR . HIGHLANDER , CAR . HIGHLANDERH , CAR . AVALON , CAR . SIENNA , CAR . LEXUS_CTH , CAR . LEXUS_ESH , CAR . LEXUS_RX , CAR . PRIUS_V ) , 0 , 5 , b ' \x00 \x00 \x01 \x00 \x00 \x00 \x00 \x50 ' ) ,
( 0x365 , ( CAR . PRIUS , CAR . LEXUS_RXH , CAR . LEXUS_NXH , CAR . LEXUS_NX , CAR . HIGHLANDERH ) , 0 , 20 , b ' \x00 \x00 \x00 \x80 \x03 \x00 \x08 ' ) ,
( 0x365 , ( CAR . RAV4 , CAR . RAV4H , CAR . COROLLA , CAR . HIGHLANDER , CAR . AVALON , CAR . SIENNA , CAR . LEXUS_CTH , CAR . LEXUS_ESH , CAR . LEXUS_RX ) , 0 , 20 , b ' \x00 \x00 \x00 \x80 \xfc \x00 \x08 ' ) ,
( 0x365 , ( CAR . RAV4 , CAR . RAV4H , CAR . COROLLA , CAR . HIGHLANDER , CAR . AVALON , CAR . SIENNA , CAR . LEXUS_CTH , CAR . LEXUS_ESH , CAR . LEXUS_RX , CAR . PRIUS_V ) , 0 , 20 , b ' \x00 \x00 \x00 \x80 \xfc \x00 \x08 ' ) ,
( 0x366 , ( CAR . PRIUS , CAR . RAV4H , CAR . LEXUS_RXH , CAR . LEXUS_NXH , CAR . LEXUS_NX , CAR . HIGHLANDERH ) , 0 , 20 , b ' \x00 \x00 \x4d \x82 \x40 \x02 \x00 ' ) ,
( 0x366 , ( CAR . RAV4 , CAR . COROLLA , CAR . HIGHLANDER , CAR . AVALON , CAR . SIENNA , CAR . LEXUS_CTH , CAR . LEXUS_ESH , CAR . LEXUS_RX ) , 0 , 20 , b ' \x00 \x72 \x07 \xff \x09 \xfe \x00 ' ) ,
( 0x366 , ( CAR . RAV4 , CAR . COROLLA , CAR . HIGHLANDER , CAR . AVALON , CAR . SIENNA , CAR . LEXUS_CTH , CAR . LEXUS_ESH , CAR . LEXUS_RX , CAR . PRIUS_V ) , 0 , 20 , b ' \x00 \x72 \x07 \xff \x09 \xfe \x00 ' ) ,
( 0x470 , ( CAR . PRIUS , CAR . LEXUS_RXH ) , 1 , 100 , b ' \x00 \x00 \x02 \x7a ' ) ,
( 0x470 , ( CAR . HIGHLANDER , CAR . HIGHLANDERH , CAR . RAV4H , CAR . SIENNA , CAR . LEXUS_CTH , CAR . LEXUS_ESH ) , 1 , 100 , b ' \x00 \x00 \x01 \x79 ' ) ,
( 0x4CB , ( CAR . PRIUS , CAR . RAV4H , CAR . LEXUS_RXH , CAR . LEXUS_NXH , CAR . LEXUS_NX , CAR . RAV4 , CAR . COROLLA , CAR . HIGHLANDERH , CAR . HIGHLANDER , CAR . AVALON , CAR . SIENNA , CAR . LEXUS_CTH , CAR . LEXUS_ESH , CAR . LEXUS_RX ) , 0 , 100 , b ' \x0c \x00 \x00 \x00 \x00 \x00 \x00 \x00 ' ) ,
( 0x470 , ( CAR . HIGHLANDER , CAR . HIGHLANDERH , CAR . RAV4H , CAR . SIENNA , CAR . LEXUS_CTH , CAR . LEXUS_ESH , CAR . PRIUS_V ) , 1 , 100 , b ' \x00 \x00 \x01 \x79 ' ) ,
( 0x4CB , ( CAR . PRIUS , CAR . RAV4H , CAR . LEXUS_RXH , CAR . LEXUS_NXH , CAR . LEXUS_NX , CAR . RAV4 , CAR . COROLLA , CAR . HIGHLANDERH , CAR . HIGHLANDER , CAR . AVALON , CAR . SIENNA , CAR . LEXUS_CTH , CAR . LEXUS_ESH , CAR . LEXUS_RX , CAR . PRIUS_V ) , 0 , 100 , b ' \x0c \x00 \x00 \x00 \x00 \x00 \x00 \x00 ' ) ,
]
FW_VERSIONS = {
CAR . AVALON : {
( Ecu . esp , 0x7b0 , None ) : [
@ -166,6 +173,23 @@ FW_VERSIONS = {
b ' 8646F0702100 \x00 \x00 \x00 \x00 ' ,
] ,
} ,
CAR . AVALON_TSS2 : {
( Ecu . esp , 0x7b0 , None ) : [
b ' \x01 F152607280 \x00 \x00 \x00 \x00 \x00 \x00 ' ,
] ,
( Ecu . eps , 0x7a1 , None ) : [
b ' 8965B41110 \x00 \x00 \x00 \x00 \x00 \x00 ' ,
] ,
( Ecu . engine , 0x700 , None ) : [
b ' \x01 896630742000 \x00 \x00 \x00 \x00 ' ,
] ,
( Ecu . fwdRadar , 0x750 , 0xf ) : [
b ' \x01 8821F6201200 \x00 \x00 \x00 \x00 ' ,
] ,
( Ecu . fwdCamera , 0x750 , 0x6d ) : [
b ' \x02 8646F4104100 \x00 \x00 \x00 \x00 8646G5301200 \x00 \x00 \x00 \x00 ' ,
] ,
} ,
CAR . CAMRY : {
( Ecu . engine , 0x700 , None ) : [
b ' \x01 8966306L3100 \x00 \x00 \x00 \x00 ' ,
@ -344,12 +368,14 @@ FW_VERSIONS = {
b ' \x01 8966306Q5000 \x00 \x00 \x00 \x00 ' ,
b ' \x01 8966306T3100 \x00 \x00 \x00 \x00 ' ,
b ' \x01 8966306T3200 \x00 \x00 \x00 \x00 ' ,
b ' \x01 8966306T4000 \x00 \x00 \x00 \x00 ' ,
b ' \x01 8966306T4100 \x00 \x00 \x00 \x00 ' ,
] ,
( Ecu . fwdRadar , 0x750 , 0xf ) : [
b ' \x01 8821F6201200 \x00 \x00 \x00 \x00 ' ,
] ,
( Ecu . fwdCamera , 0x750 , 0x6d ) : [
b ' \x02 8646F0602100 \x00 \x00 \x00 \x00 8646G5301200 \x00 \x00 \x00 \x00 ' ,
b ' \x02 8646F0602200 \x00 \x00 \x00 \x00 8646G5301200 \x00 \x00 \x00 \x00 ' ,
b ' \x02 8646F3305200 \x00 \x00 \x00 \x00 8646G5301200 \x00 \x00 \x00 \x00 ' ,
b ' \x02 8646F3305300 \x00 \x00 \x00 \x00 8646G5301200 \x00 \x00 \x00 \x00 ' ,
@ -376,6 +402,7 @@ FW_VERSIONS = {
} ,
CAR . CHR : {
( Ecu . engine , 0x700 , None ) : [
b ' \x01 896631021100 \x00 \x00 \x00 \x00 ' ,
b ' \x01 896631017100 \x00 \x00 \x00 \x00 ' ,
b ' \x01 896631017200 \x00 \x00 \x00 \x00 ' ,
b ' \x01 89663F413100 \x00 \x00 \x00 \x00 ' ,
@ -559,6 +586,7 @@ FW_VERSIONS = {
b ' \x03 312N6000 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 A0202000 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 895231203402 \x00 \x00 \x00 \x00 ' ,
b ' \x03 312N6100 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 A0202000 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 895231203302 \x00 \x00 \x00 \x00 ' ,
b ' \x03 312N6100 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 A0202000 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 895231203402 \x00 \x00 \x00 \x00 ' ,
b ' \x02 312K4000 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 A0202000 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 ' ,
] ,
( Ecu . eps , 0x7a1 , None ) : [
b ' \x01 8965B12350 \x00 \x00 \x00 \x00 \x00 \x00 ' ,
@ -570,6 +598,7 @@ FW_VERSIONS = {
b ' \x01 8965B1255000 \x00 \x00 \x00 \x00 ' ,
b ' 8965B12361 \x00 \x00 \x00 \x00 \x00 \x00 ' ,
b ' 8965B16011 \x00 \x00 \x00 \x00 \x00 \x00 ' ,
b ' \x01 8965B12510 \x00 \x00 \x00 \x00 \x00 \x00 '
] ,
( Ecu . esp , 0x7b0 , None ) : [
b ' \x01 F152602280 \x00 \x00 \x00 \x00 \x00 \x00 ' ,
@ -584,11 +613,13 @@ FW_VERSIONS = {
b ' \x01 F152612B51 \x00 \x00 \x00 \x00 \x00 \x00 ' ,
b ' \x01 F152612B60 \x00 \x00 \x00 \x00 \x00 \x00 ' ,
b ' \x01 F152612B61 \x00 \x00 \x00 \x00 \x00 \x00 ' ,
b ' \x01 F152612B62 \x00 \x00 \x00 \x00 \x00 \x00 ' ,
b ' \x01 F152612B71 \x00 \x00 \x00 \x00 \x00 \x00 ' ,
b ' \x01 F152612B81 \x00 \x00 \x00 \x00 \x00 \x00 ' ,
b ' \x01 F152612B90 \x00 \x00 \x00 \x00 \x00 \x00 ' ,
b ' \x01 F152612C00 \x00 \x00 \x00 \x00 \x00 \x00 ' ,
b ' F152602191 \x00 \x00 \x00 \x00 \x00 \x00 ' ,
b ' \x01 F152612862 \x00 \x00 \x00 \x00 \x00 \x00 ' ,
] ,
( Ecu . fwdRadar , 0x750 , 0xf ) : [
b ' \x01 8821F3301100 \x00 \x00 \x00 \x00 ' ,
@ -616,6 +647,7 @@ FW_VERSIONS = {
b ' \x01 896637624000 \x00 \x00 \x00 \x00 ' ,
b ' \x01 896637626000 \x00 \x00 \x00 \x00 ' ,
b ' \x01 896637648000 \x00 \x00 \x00 \x00 ' ,
b ' \x01 896637643000 \x00 \x00 \x00 \x00 ' ,
b ' \x02 896630ZJ5000 \x00 \x00 \x00 \x00 8966A4703000 \x00 \x00 \x00 \x00 ' ,
b ' \x02 896630ZN8000 \x00 \x00 \x00 \x00 8966A4703000 \x00 \x00 \x00 \x00 ' ,
b ' \x02 896630ZQ3000 \x00 \x00 \x00 \x00 8966A4703000 \x00 \x00 \x00 \x00 ' ,
@ -792,9 +824,11 @@ FW_VERSIONS = {
b ' \x01 F15264872300 \x00 \x00 \x00 \x00 ' ,
b ' \x01 F15264872400 \x00 \x00 \x00 \x00 ' ,
b ' \x01 F15264872500 \x00 \x00 \x00 \x00 ' ,
b ' \x01 F15264873500 \x00 \x00 \x00 \x00 ' ,
b ' \x01 F152648C6300 \x00 \x00 \x00 \x00 ' ,
] ,
( Ecu . engine , 0x700 , None ) : [
b ' \x01 896630E67000 \x00 \x00 \x00 \x00 ' ,
b ' \x01 896630EA1000 \x00 \x00 \x00 \x00 ' ,
b ' \x01 896630EE4000 \x00 \x00 \x00 \x00 ' ,
b ' \x01 896630EA1000 \x00 \x00 \x00 \x00 897CF4801001 \x00 \x00 \x00 \x00 ' ,
@ -952,6 +986,23 @@ FW_VERSIONS = {
b ' 8646F4705200 \x00 \x00 \x00 \x00 ' ,
] ,
} ,
CAR . PRIUS_V : {
( Ecu . esp , 0x7b0 , None ) : [
b ' F152647280 \x00 \x00 \x00 \x00 \x00 \x00 ' ,
] ,
( Ecu . engine , 0x7e0 , None ) : [
b ' \x02 34781000 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 A4701000 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 ' ,
] ,
( Ecu . dsu , 0x791 , None ) : [
b ' 881514705100 \x00 \x00 \x00 \x00 ' ,
] ,
( Ecu . fwdRadar , 0x750 , 0xf ) : [
b ' 8821F4702300 \x00 \x00 \x00 \x00 ' ,
] ,
( Ecu . fwdCamera , 0x750 , 0x6d ) : [
b ' 8646F4703300 \x00 \x00 \x00 \x00 ' ,
] ,
} ,
CAR . RAV4 : {
( Ecu . engine , 0x7e0 , None ) : [
b ' \x02 342Q1000 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 54212000 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 ' ,
@ -1504,20 +1555,21 @@ FW_VERSIONS = {
} ,
CAR . LEXUS_RX_TSS2 : {
( Ecu . engine , 0x700 , None ) : [
b ' \x01 896630EC9000 \x00 \x00 \x00 \x00 ' ,
b ' \x01 896634D12000 \x00 \x00 \x00 \x00 ' ,
b ' \x01 896630EB0000 \x00 \x00 \x00 \x00 ' ,
b ' \x01 896630EA9000 \x00 \x00 \x00 \x00 ' ,
b ' \x01 896630EB0000 \x00 \x00 \x00 \x00 ' ,
b ' \x01 896630EC9000 \x00 \x00 \x00 \x00 ' ,
b ' \x01 896630ED0000 \x00 \x00 \x00 \x00 ' ,
b ' \x01 896630ED6000 \x00 \x00 \x00 \x00 ' ,
b ' \x01 8966348W5100 \x00 \x00 \x00 \x00 ' ,
b ' \x01 8966348W9000 \x00 \x00 \x00 \x00 ' ,
b ' \x01 896634D12000 \x00 \x00 \x00 \x00 ' ,
b ' \x01 896634D12100 \x00 \x00 \x00 \x00 ' ,
] ,
( Ecu . esp , 0x7b0 , None ) : [
b ' \x01 F152648801 \x00 \x00 \x00 \x00 \x00 \x00 ' ,
b ' \x01 F15260E031 \x00 \x00 \x00 \x00 \x00 \x00 ' ,
b ' \x01 F15260E041 \x00 \x00 \x00 \x00 \x00 \x00 ' ,
b ' \x01 F152648781 \x00 \x00 \x00 \x00 \x00 \x00 ' ,
b ' \x01 F152648801 \x00 \x00 \x00 \x00 \x00 \x00 ' ,
] ,
( Ecu . eps , 0x7a1 , None ) : [
b ' 8965B48261 \x00 \x00 \x00 \x00 \x00 \x00 ' ,
@ -1529,8 +1581,9 @@ FW_VERSIONS = {
b ' \x01 8821F3301400 \x00 \x00 \x00 \x00 ' ,
] ,
( Ecu . fwdCamera , 0x750 , 0x6d ) : [
b ' \x02 8646F4810200 \x00 \x00 \x00 \x00 8646G2601400 \x00 \x00 \x00 \x00 ' ,
b ' \x02 8646F4810100 \x00 \x00 \x00 \x00 8646G2601200 \x00 \x00 \x00 \x00 ' ,
b ' \x02 8646F4810200 \x00 \x00 \x00 \x00 8646G2601400 \x00 \x00 \x00 \x00 ' ,
b ' \x02 8646F4810300 \x00 \x00 \x00 \x00 8646G2601400 \x00 \x00 \x00 \x00 ' ,
] ,
} ,
CAR . LEXUS_RXH_TSS2 : {
@ -1591,63 +1644,79 @@ FW_VERSIONS = {
( Ecu . fwdCamera , 0x750 , 0x6d ) : [ b ' \x02 8646F6201400 \x00 \x00 \x00 \x00 8646G5301200 \x00 \x00 \x00 \x00 ' , ] ,
} ,
CAR . ALPHARD_TSS2 : {
( Ecu . engine , 0x7e0 , None ) : [ b ' \x02 35883000 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 A0202000 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 ' , ] ,
( Ecu . eps , 0x7a1 , None ) : [ b ' 8965B58040 \x00 \x00 \x00 \x00 \x00 \x00 ' , ] ,
( Ecu . fwdRadar , 0x750 , 0xf ) : [ b ' \x01 8821F3301400 \x00 \x00 \x00 \x00 ' , ] ,
( Ecu . fwdCamera , 0x750 , 0x6d ) : [ b ' \x02 8646F5803200 \x00 \x00 \x00 \x00 8646G2601400 \x00 \x00 \x00 \x00 ' , ] ,
( Ecu . engine , 0x7e0 , None ) : [
b ' \x02 35870000 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 A0202000 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 ' ,
b ' \x02 35883000 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 A0202000 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 ' ,
] ,
( Ecu . eps , 0x7a1 , None ) : [
b ' 8965B58040 \x00 \x00 \x00 \x00 \x00 \x00 ' ,
b ' 8965B58052 \x00 \x00 \x00 \x00 \x00 \x00 ' ,
] ,
( Ecu . fwdRadar , 0x750 , 0xf ) : [
b ' \x01 8821F3301200 \x00 \x00 \x00 \x00 ' ,
b ' \x01 8821F3301400 \x00 \x00 \x00 \x00 ' ,
] ,
( Ecu . fwdCamera , 0x750 , 0x6d ) : [
b ' \x02 8646F58010C0 \x00 \x00 \x00 \x00 8646G26011A0 \x00 \x00 \x00 \x00 ' ,
b ' \x02 8646F5803200 \x00 \x00 \x00 \x00 8646G2601400 \x00 \x00 \x00 \x00 ' ,
] ,
} ,
}
STEER_THRESHOLD = 100
DBC = {
CAR . RAV4H : dbc_dict ( ' toyota_rav4_hybrid_2017_pt_generated ' , ' toyota_adas ' ) ,
CAR . RAV4 : dbc_dict ( ' toyota_rav4_2017_pt_generated ' , ' toyota_adas ' ) ,
CAR . PRIUS : dbc_dict ( ' toyota_prius_2017_pt_generated ' , ' toyota_adas ' ) ,
CAR . COROLLA : dbc_dict ( ' toyota_corolla_2017_pt_generated ' , ' toyota_adas ' ) ,
CAR . LEXUS_RC : dbc_dict ( ' lexus_is_2018_pt_generated ' , ' toyota_adas ' ) ,
CAR . LEXUS_RX : dbc_dict ( ' lexus_rx_350_2016_pt_generated ' , ' toyota_adas ' ) ,
CAR . LEXUS_RXH : dbc_dict ( ' lexus_rx_hybrid_2017_pt_generated ' , ' toyota_adas ' ) ,
CAR . RAV4H : dbc_dict ( ' toyota_tnga_k_pt_generated ' , ' toyota_adas ' ) ,
CAR . RAV4 : dbc_dict ( ' toyota_new_mc_pt_generated ' , ' toyota_adas ' ) ,
CAR . PRIUS : dbc_dict ( ' toyota_nodsu_pt_generated ' , ' toyota_adas ' ) ,
CAR . PRIUS_V : dbc_dict ( ' toyota_new_mc_pt_generated ' , ' toyota_adas ' ) ,
CAR . COROLLA : dbc_dict ( ' toyota_new_mc_pt_generated ' , ' toyota_adas ' ) ,
CAR . LEXUS_RC : dbc_dict ( ' toyota_tnga_k_pt_generated ' , ' toyota_adas ' ) ,
CAR . LEXUS_RX : dbc_dict ( ' toyota_tnga_k_pt_generated ' , ' toyota_adas ' ) ,
CAR . LEXUS_RXH : dbc_dict ( ' toyota_tnga_k_pt_generated ' , ' toyota_adas ' ) ,
CAR . LEXUS_RX_TSS2 : dbc_dict ( ' toyota_nodsu_pt_generated ' , ' toyota_tss2_adas ' ) ,
CAR . LEXUS_RXH_TSS2 : dbc_dict ( ' toyota_nodsu_hybrid_ pt_generated ' , ' toyota_tss2_adas ' ) ,
CAR . LEXUS_RXH_TSS2 : dbc_dict ( ' toyota_nodsu_pt_generated ' , ' toyota_tss2_adas ' ) ,
CAR . CHR : dbc_dict ( ' toyota_nodsu_pt_generated ' , ' toyota_adas ' ) ,
CAR . CHRH : dbc_dict ( ' toyota_nodsu_hybrid_ pt_generated ' , ' toyota_adas ' ) ,
CAR . CHRH : dbc_dict ( ' toyota_nodsu_pt_generated ' , ' toyota_adas ' ) ,
CAR . CAMRY : dbc_dict ( ' toyota_nodsu_pt_generated ' , ' toyota_adas ' ) ,
CAR . CAMRYH : dbc_dict ( ' toyota_nodsu_hybrid_ pt_generated ' , ' toyota_adas ' ) ,
CAR . CAMRYH : dbc_dict ( ' toyota_nodsu_pt_generated ' , ' toyota_adas ' ) ,
CAR . CAMRY_TSS2 : dbc_dict ( ' toyota_nodsu_pt_generated ' , ' toyota_tss2_adas ' ) ,
CAR . CAMRYH_TSS2 : dbc_dict ( ' toyota_nodsu_hybrid_ pt_generated ' , ' toyota_tss2_adas ' ) ,
CAR . HIGHLANDER : dbc_dict ( ' toyota_highlander_2017 _pt_generated ' , ' toyota_adas ' ) ,
CAR . CAMRYH_TSS2 : dbc_dict ( ' toyota_nodsu_pt_generated ' , ' toyota_tss2_adas ' ) ,
CAR . HIGHLANDER : dbc_dict ( ' toyota_tnga_k _pt_generated ' , ' toyota_adas ' ) ,
CAR . HIGHLANDER_TSS2 : dbc_dict ( ' toyota_nodsu_pt_generated ' , ' toyota_tss2_adas ' ) ,
CAR . HIGHLANDERH : dbc_dict ( ' toyota_highlander_hybrid_2018 _pt_generated ' , ' toyota_adas ' ) ,
CAR . HIGHLANDERH_TSS2 : dbc_dict ( ' toyota_nodsu_hybrid_ pt_generated ' , ' toyota_tss2_adas ' ) ,
CAR . AVALON : dbc_dict ( ' toyota_avalon_2017 _pt_generated ' , ' toyota_adas ' ) ,
CAR . HIGHLANDERH : dbc_dict ( ' toyota_tnga_k _pt_generated ' , ' toyota_adas ' ) ,
CAR . HIGHLANDERH_TSS2 : dbc_dict ( ' toyota_nodsu_pt_generated ' , ' toyota_tss2_adas ' ) ,
CAR . AVALON : dbc_dict ( ' toyota_tnga_k _pt_generated ' , ' toyota_adas ' ) ,
CAR . AVALON_2019 : dbc_dict ( ' toyota_nodsu_pt_generated ' , ' toyota_adas ' ) ,
CAR . AVALONH_2019 : dbc_dict ( ' toyota_nodsu_hybrid_pt_generated ' , ' toyota_adas ' ) ,
CAR . AVALONH_2019 : dbc_dict ( ' toyota_nodsu_pt_generated ' , ' toyota_adas ' ) ,
CAR . AVALON_TSS2 : dbc_dict ( ' toyota_nodsu_pt_generated ' , ' toyota_tss2_adas ' ) ,
CAR . RAV4_TSS2 : dbc_dict ( ' toyota_nodsu_pt_generated ' , ' toyota_tss2_adas ' ) ,
CAR . COROLLA_TSS2 : dbc_dict ( ' toyota_nodsu_pt_generated ' , ' toyota_tss2_adas ' ) ,
CAR . COROLLAH_TSS2 : dbc_dict ( ' toyota_nodsu_hybrid_ pt_generated ' , ' toyota_tss2_adas ' ) ,
CAR . COROLLAH_TSS2 : dbc_dict ( ' toyota_nodsu_pt_generated ' , ' toyota_tss2_adas ' ) ,
CAR . LEXUS_ES_TSS2 : dbc_dict ( ' toyota_nodsu_pt_generated ' , ' toyota_tss2_adas ' ) ,
CAR . LEXUS_ESH_TSS2 : dbc_dict ( ' toyota_nodsu_hybrid_ pt_generated ' , ' toyota_tss2_adas ' ) ,
CAR . LEXUS_ESH : dbc_dict ( ' lexus_ct200h_2018 _pt_generated' , ' toyota_adas ' ) ,
CAR . SIENNA : dbc_dict ( ' toyota_sienna_xle_2018 _pt_generated ' , ' toyota_adas ' ) ,
CAR . LEXUS_IS : dbc_dict ( ' lexus_is_2018 _pt_generated' , ' toyota_adas ' ) ,
CAR . LEXUS_CTH : dbc_dict ( ' lexus_ct200h_2018 _pt_generated' , ' toyota_adas ' ) ,
CAR . RAV4H_TSS2 : dbc_dict ( ' toyota_nodsu_hybrid_ pt_generated ' , ' toyota_tss2_adas ' ) ,
CAR . LEXUS_NXH : dbc_dict ( ' lexus_nx300h_2018 _pt_generated' , ' toyota_adas ' ) ,
CAR . LEXUS_NX : dbc_dict ( ' lexus_nx300_2018 _pt_generated' , ' toyota_adas ' ) ,
CAR . LEXUS_ESH_TSS2 : dbc_dict ( ' toyota_nodsu_pt_generated ' , ' toyota_tss2_adas ' ) ,
CAR . LEXUS_ESH : dbc_dict ( ' toyota_new_mc _pt_generated' , ' toyota_adas ' ) ,
CAR . SIENNA : dbc_dict ( ' toyota_tnga_k _pt_generated ' , ' toyota_adas ' ) ,
CAR . LEXUS_IS : dbc_dict ( ' toyota_tnga_k _pt_generated' , ' toyota_adas ' ) ,
CAR . LEXUS_CTH : dbc_dict ( ' toyota_new_mc _pt_generated' , ' toyota_adas ' ) ,
CAR . RAV4H_TSS2 : dbc_dict ( ' toyota_nodsu_pt_generated ' , ' toyota_tss2_adas ' ) ,
CAR . LEXUS_NXH : dbc_dict ( ' toyota_tnga_k _pt_generated' , ' toyota_adas ' ) ,
CAR . LEXUS_NX : dbc_dict ( ' toyota_tnga_k _pt_generated' , ' toyota_adas ' ) ,
CAR . LEXUS_NX_TSS2 : dbc_dict ( ' toyota_nodsu_pt_generated ' , ' toyota_tss2_adas ' ) ,
CAR . PRIUS_TSS2 : dbc_dict ( ' toyota_nodsu_hybrid_ pt_generated ' , ' toyota_tss2_adas ' ) ,
CAR . MIRAI : dbc_dict ( ' toyota_nodsu_hybrid_ pt_generated ' , ' toyota_tss2_adas ' ) ,
CAR . PRIUS_TSS2 : dbc_dict ( ' toyota_nodsu_pt_generated ' , ' toyota_tss2_adas ' ) ,
CAR . MIRAI : dbc_dict ( ' toyota_nodsu_pt_generated ' , ' toyota_tss2_adas ' ) ,
CAR . ALPHARD_TSS2 : dbc_dict ( ' toyota_nodsu_pt_generated ' , ' toyota_tss2_adas ' ) ,
}
# These cars have non-standard EPS torque scale factors. All others are 73
EPS_SCALE = defaultdict ( lambda : 73 , { CAR . PRIUS : 66 , CAR . COROLLA : 88 , CAR . LEXUS_IS : 77 , CAR . LEXUS_RC : 77 , CAR . LEXUS_CTH : 100 , CAR . PRIUS_V : 100 } )
# Toyota/Lexus Safety Sense 2.0 and 2.5
TSS2_CAR = { CAR . RAV4_TSS2 , CAR . COROLLA_TSS2 , CAR . COROLLAH_TSS2 , CAR . LEXUS_ES_TSS2 , CAR . LEXUS_ESH_TSS2 , CAR . RAV4H_TSS2 ,
CAR . LEXUS_RX_TSS2 , CAR . LEXUS_RXH_TSS2 , CAR . HIGHLANDER_TSS2 , CAR . HIGHLANDERH_TSS2 , CAR . PRIUS_TSS2 , CAR . CAMRY_TSS2 , CAR . CAMRYH_TSS2 ,
CAR . MIRAI , CAR . LEXUS_NX_TSS2 , CAR . ALPHARD_TSS2 }
CAR . LEXUS_RX_TSS2 , CAR . LEXUS_RXH_TSS2 , CAR . HIGHLANDER_TSS2 , CAR . HIGHLANDERH_TSS2 , CAR . PRIUS_TSS2 , CAR . CAMRY_TSS2 , CAR . CAMRYH_TSS2 ,
CAR . MIRAI , CAR . LEXUS_NX_TSS2 , CAR . ALPHARD_TSS2 , CAR . AVALON _TSS2 }
NO_DSU_CAR = TSS2_CAR | { CAR . CHR , CAR . CHRH , CAR . CAMRY , CAR . CAMRYH }
# no resume button press required
NO_STOP_TIMER_CAR = TSS2_CAR | { CAR . RAV4H , CAR . HIGHLANDERH , CAR . HIGHLANDER , CAR . SIENNA , CAR . LEXUS_ESH }
NO_STOP_TIMER_CAR = TSS2_CAR | { CAR . PRIUS_V , CAR . RAV4H , CAR . HIGHLANDERH , CAR . HIGHLANDER , CAR . SIENNA , CAR . LEXUS_ESH }