|
|
|
@ -19,6 +19,9 @@ SteerControlType = car.CarParams.SteerControlType |
|
|
|
|
# - initializing: LTA can report 0 as long as STEER_TORQUE_SENSOR->STEER_ANGLE_INITIALIZING is 1, |
|
|
|
|
# and is a catch-all for LKA |
|
|
|
|
TEMP_STEER_FAULTS = (0, 9, 11, 21, 25) |
|
|
|
|
# - lka/lta msg drop out: 3 (recoverable) |
|
|
|
|
# - prolonged high driver torque: 17 (permanent) |
|
|
|
|
PERM_STEER_FAULTS = (3, 17) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class CarState(CarStateBase): |
|
|
|
@ -101,13 +104,11 @@ class CarState(CarStateBase): |
|
|
|
|
|
|
|
|
|
# Check EPS LKA/LTA fault status |
|
|
|
|
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) |
|
|
|
|
ret.steerFaultPermanent = cp.vl["EPS_STATUS"]["LKA_STATE"] in PERM_STEER_FAULTS |
|
|
|
|
|
|
|
|
|
if self.CP.steerControlType == SteerControlType.angle: |
|
|
|
|
ret.steerFaultTemporary = ret.steerFaultTemporary or cp.vl["EPS_STATUS"]["LTA_STATE"] in TEMP_STEER_FAULTS |
|
|
|
|
ret.steerFaultPermanent = ret.steerFaultPermanent or cp.vl["EPS_STATUS"]["LTA_STATE"] in (3,) |
|
|
|
|
ret.steerFaultPermanent = ret.steerFaultPermanent or cp.vl["EPS_STATUS"]["LTA_STATE"] in PERM_STEER_FAULTS |
|
|
|
|
|
|
|
|
|
if self.CP.carFingerprint in UNSUPPORTED_DSU_CAR: |
|
|
|
|
# TODO: find the bit likely in DSU_CRUISE that describes an ACC fault. one may also exist in CLUTCH |
|
|
|
|