@ -10,6 +10,12 @@ from opendbc.can.parser import CANParser
from selfdrive . car . interfaces import CarStateBase
from selfdrive . car . toyota . values import ToyotaFlags , CAR , DBC , STEER_THRESHOLD , NO_STOP_TIMER_CAR , TSS2_CAR , RADAR_ACC_CAR , EPS_SCALE , UNSUPPORTED_DSU_CAR
# Steering fault definitions:
# - high steer rate fault: goes to 21 or 25 for 1 frame, then 9 for 2 seconds
# - lka msg drop out: goes to 9 then 11 for a combined total of 2 seconds, then 3
# - initializing: catch-all
TEMP_STEER_FAULTS = ( 0 , 9 , 11 , 21 , 25 )
class CarState ( CarStateBase ) :
def __init__ ( self , CP ) :
@ -88,11 +94,11 @@ class CarState(CarStateBase):
ret . steeringTorqueEps = cp . vl [ " STEER_TORQUE_SENSOR " ] [ " STEER_TORQUE_EPS " ] * self . eps_torque_scale
# we could use the override bit from dbc, but it's triggered at too high torque values
ret . steeringPressed = abs ( ret . steeringTorque ) > STEER_THRESHOLD
# steer rate fault: goes to 21 or 25 for 1 frame, then 9 for 2 seconds
# lka msg drop out: goes to 9 then 11 for a combined total of 2 second s
ret . steerFaultTemporary = cp . vl [ " EPS_STATUS " ] [ " LKA_STATE " ] in ( 0 , 9 , 11 , 21 , 25 )
# 17 is a fault from a prolonged high torque delta between cmd and user
# 3 is a fault from the lka command message not being received by the EPS
# Check EPS LKA fault statu s
ret . steerFaultTemporary = cp . vl [ " EPS_STATUS " ] [ " LKA_STATE " ] in TEMP_STEER_FAULTS
# 3 is a fault from the lka command message not being received by the EPS (recoverable)
# 17 is a fault from a prolonged high torque delta between cmd and user (permanent)
ret . steerFaultPermanent = cp . vl [ " EPS_STATUS " ] [ " LKA_STATE " ] in ( 3 , 17 )
if self . CP . carFingerprint in UNSUPPORTED_DSU_CAR :