@ -94,12 +94,11 @@ class CarState(CarStateBase):
ret . cruiseState . available = cp . vl [ " PCM_CRUISE_2 " ] [ " MAIN_ON " ] != 0
ret . cruiseState . speed = cp . vl [ " PCM_CRUISE_2 " ] [ " SET_SPEED " ] * CV . KPH_TO_MS
if self . CP . carFingerprint in RADAR_ACC_CAR :
self . acc_type = cp . vl [ " ACC_CONTROL " ] [ " ACC_TYPE " ]
ret . stockFcw = bool ( cp . vl [ " ACC_HUD " ] [ " FCW " ] )
elif self . CP . carFingerprint in TSS2_CAR :
self . acc_type = cp_cam . vl [ " ACC_CONTROL " ] [ " ACC_TYPE " ]
ret . stockFcw = bool ( cp_cam . vl [ " ACC_HUD " ] [ " FCW " ] )
cp_acc = cp_cam if self . CP . carFingerprint in ( TSS2_CAR - RADAR_ACC_CAR ) else cp
if self . CP . carFingerprint in ( TSS2_CAR | RADAR_ACC_CAR ) :
self . acc_type = cp_acc . vl [ " ACC_CONTROL " ] [ " ACC_TYPE " ]
ret . stockFcw = bool ( cp_acc . vl [ " ACC_HUD " ] [ " FCW " ] )
# some TSS2 cars have low speed lockout permanently set, so ignore on those cars
# these cars are identified by an ACC_TYPE value of 2.
@ -120,10 +119,11 @@ class CarState(CarStateBase):
ret . cruiseState . nonAdaptive = cp . vl [ " PCM_CRUISE " ] [ " CRUISE_STATE " ] in ( 1 , 2 , 3 , 4 , 5 , 6 )
ret . genericToggle = bool ( cp . vl [ " LIGHT_STALK " ] [ " AUTO_HIGH_BEAM " ] )
ret . stockAeb = bool ( cp_cam . vl [ " PRE_COLLISION " ] [ " PRECOLLISION_ACTIVE " ] and cp_cam . vl [ " PRE_COLLISION " ] [ " FORCE " ] < - 1e-5 )
ret . espDisabled = cp . vl [ " ESP_CONTROL " ] [ " TC_DISABLED " ] != 0
if not self . CP . enableDsu :
ret . stockAeb = bool ( cp_acc . vl [ " PRE_COLLISION " ] [ " PRECOLLISION_ACTIVE " ] and cp_acc . vl [ " PRE_COLLISION " ] [ " FORCE " ] < - 1e-5 )
if self . CP . enableBsm :
ret . leftBlindspot = ( cp . vl [ " BSM " ] [ " L_ADJACENT " ] == 1 ) or ( cp . vl [ " BSM " ] [ " L_APPROACHING " ] == 1 )
ret . rightBlindspot = ( cp . vl [ " BSM " ] [ " R_ADJACENT " ] == 1 ) or ( cp . vl [ " BSM " ] [ " R_APPROACHING " ] == 1 )
@ -219,25 +219,31 @@ class CarState(CarStateBase):
( " ACC_HUD " , 1 ) ,
]
if CP . carFingerprint not in ( TSS2_CAR - RADAR_ACC_CAR ) and not CP . enableDsu :
signals + = [
( " FORCE " , " PRE_COLLISION " ) ,
( " PRECOLLISION_ACTIVE " , " PRE_COLLISION " ) ,
]
checks + = [
( " PRE_COLLISION " , 33 ) ,
]
return CANParser ( DBC [ CP . carFingerprint ] [ " pt " ] , signals , checks , 0 )
@staticmethod
def get_cam_can_parser ( CP ) :
signals = [
( " FORCE " , " PRE_COLLISION " ) ,
( " PRECOLLISION_ACTIVE " , " PRE_COLLISION " ) ,
]
checks = [
( " PRE_COLLISION " , 0 ) , # TODO: figure out why freq is inconsistent
]
signals = [ ]
checks = [ ]
if CP . carFingerprint in ( TSS2_CAR - RADAR_ACC_CAR ) :
signals + = [
( " PRECOLLISION_ACTIVE " , " PRE_COLLISION " ) ,
( " FORCE " , " PRE_COLLISION " ) ,
( " ACC_TYPE " , " ACC_CONTROL " ) ,
( " FCW " , " ACC_HUD " ) ,
]
checks + = [
( " PRE_COLLISION " , 33 ) ,
( " ACC_CONTROL " , 33 ) ,
( " ACC_HUD " , 1 ) ,
]