|  |  | @ -13,19 +13,18 @@ class CarState(CarStateBase): | 
			
		
	
		
		
			
				
					
					|  |  |  |     can_define = CANDefine(DBC[CP.carFingerprint]['pt']) |  |  |  |     can_define = CANDefine(DBC[CP.carFingerprint]['pt']) | 
			
		
	
		
		
			
				
					
					|  |  |  |     self.shifter_values = can_define.dv["GEARBOX"]["GEAR_SHIFTER"] |  |  |  |     self.shifter_values = can_define.dv["GEARBOX"]["GEAR_SHIFTER"] | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |   def update(self, cp, cp_adas, cp_cam): |  |  |  |   def update(self, cp, cp_adas, cp_cam): | 
			
		
	
		
		
			
				
					
					|  |  |  |     ret = car.CarState.new_message() |  |  |  |     ret = car.CarState.new_message() | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     ret.gas = cp.vl["Throttle"]["ThrottlePedal"] |  |  |  |     ret.gas = cp.vl["GAS_PEDAL"]["GAS_PEDAL"] | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     ret.gasPressed = bool(ret.gas) |  |  |  |     ret.gasPressed = bool(ret.gas) | 
			
		
	
		
		
			
				
					
					|  |  |  |     ret.brakePressed = bool(cp.vl["DoorsLights"]["USER_BRAKE_PRESSED"]) |  |  |  |     ret.brakePressed = bool(cp.vl["DOORS_LIGHTS"]["USER_BRAKE_PRESSED"]) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     ret.brakeLights = bool(cp.vl["DoorsLights"]["BRAKE_LIGHT"]) |  |  |  |     ret.brakeLights = bool(cp.vl["DOORS_LIGHTS"]["BRAKE_LIGHT"]) | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     ret.wheelSpeeds.fl = cp.vl["WheelspeedFront"]["FL"] * CV.KPH_TO_MS |  |  |  |     ret.wheelSpeeds.fl = cp.vl["WHEEL_SPEEDS_FRONT"]["WHEEL_SPEED_FL"] * CV.KPH_TO_MS | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     ret.wheelSpeeds.fr = cp.vl["WheelspeedFront"]["FR"] * CV.KPH_TO_MS |  |  |  |     ret.wheelSpeeds.fr = cp.vl["WHEEL_SPEEDS_FRONT"]["WHEEL_SPEED_FR"] * CV.KPH_TO_MS | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     ret.wheelSpeeds.rl = cp.vl["WheelspeedRear"]["RL"] * CV.KPH_TO_MS |  |  |  |     ret.wheelSpeeds.rl = cp.vl["WHEEL_SPEEDS_REAR"]["WHEEL_SPEED_RL"] * CV.KPH_TO_MS | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     ret.wheelSpeeds.rr = cp.vl["WheelspeedRear"]["RR"] * CV.KPH_TO_MS |  |  |  |     ret.wheelSpeeds.rr = cp.vl["WHEEL_SPEEDS_REAR"]["WHEEL_SPEED_RR"] * CV.KPH_TO_MS | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     ret.vEgoRaw = (ret.wheelSpeeds.fl + ret.wheelSpeeds.fr + ret.wheelSpeeds.rl + ret.wheelSpeeds.rr) / 4. |  |  |  |     ret.vEgoRaw = (ret.wheelSpeeds.fl + ret.wheelSpeeds.fr + ret.wheelSpeeds.rl + ret.wheelSpeeds.rr) / 4. | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -36,25 +35,26 @@ class CarState(CarStateBase): | 
			
		
	
		
		
			
				
					
					|  |  |  |     can_gear = int(cp.vl["GEARBOX"]["GEAR_SHIFTER"]) |  |  |  |     can_gear = int(cp.vl["GEARBOX"]["GEAR_SHIFTER"]) | 
			
		
	
		
		
			
				
					
					|  |  |  |     ret.gearShifter = self.parse_gear_shifter(self.shifter_values.get(can_gear, None)) |  |  |  |     ret.gearShifter = self.parse_gear_shifter(self.shifter_values.get(can_gear, None)) | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     ret.leftBlinker = bool(cp.vl["Lights"]["LEFT_BLINKER"]) |  |  |  |     # Don't see this in the drive | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     ret.rightBlinker = bool(cp.vl["Lights"]["RIGHT_BLINKER"]) |  |  |  |     ret.leftBlinker = bool(cp.vl["LIGHTS"]["LEFT_BLINKER"]) | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     ret.rightBlinker = bool(cp.vl["LIGHTS"]["RIGHT_BLINKER"]) | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     ret.seatbeltUnlatched = cp.vl["_SEATBELT"]["DRIVERS_SEATBELT"] == 0 |  |  |  |     ret.seatbeltUnlatched = cp.vl["SEATBELT"]["SEATBELT_DRIVER_UNLATCHED"] == 0 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     ret.cruiseState.enabled = bool(cp_cam.vl["ProPilot"]["CRUISE_ACTIVATED"]) |  |  |  |     ret.cruiseState.enabled = bool(cp_cam.vl["PRO_PILOT"]["CRUISE_ACTIVATED"]) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     ret.cruiseState.available = bool(cp_cam.vl["ProPilot"]["CRUISE_ON"]) |  |  |  |     ret.cruiseState.available = bool(cp_cam.vl["PRO_PILOT"]["CRUISE_ON"]) | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     ret.doorOpen = any([cp.vl["DoorsLights"]["DOOR_OPEN_RR"], |  |  |  |     ret.doorOpen = any([cp.vl["DOORS_LIGHTS"]["DOOR_OPEN_RR"], | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       cp.vl["DoorsLights"]["DOOR_OPEN_RL"], |  |  |  |                         cp.vl["DOORS_LIGHTS"]["DOOR_OPEN_RL"], | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       cp.vl["DoorsLights"]["DOOR_OPEN_FR"], |  |  |  |                         cp.vl["DOORS_LIGHTS"]["DOOR_OPEN_FR"], | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       cp.vl["DoorsLights"]["DOOR_OPEN_FL"]]) |  |  |  |                         cp.vl["DOORS_LIGHTS"]["DOOR_OPEN_FL"]]) | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     ret.steeringPressed = bool(cp.vl["STEER_TORQUE"]["DriverTouchingWheel"]) |  |  |  |     ret.steeringPressed = bool(cp.vl["STEER_TORQUE_SENSOR2"]["STEERING_PRESSED"]) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     ret.steeringTorque = cp.vl["Steering"]["DriverTorque"] |  |  |  |     ret.steeringTorque = cp.vl["STEER_TORQUE_SENSOR"]["STEER_TORQUE_DRIVER"] | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     ret.steeringAngle = cp.vl["SteeringWheel"]["Steering_Angle"] |  |  |  |     ret.steeringAngle = cp.vl["STEER_ANGLE_SENSOR"]["STEER_ANGLE"] | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     ret.espDisabled = bool(cp.vl["_ESP"]["ESP_DISABLED"]) |  |  |  |     ret.espDisabled = bool(cp.vl["ESP"]["ESP_DISABLED"]) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     self.cruise_throttle_msg = copy.copy(cp.vl["CruiseThrottle"]) |  |  |  |     self.cruise_throttle_msg = copy.copy(cp.vl["CRUISE_THROTTLE"]) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     self.lkas_hud_msg = copy.copy(cp_adas.vl["PROPILOT_HUD"]) |  |  |  |     self.lkas_hud_msg = copy.copy(cp_adas.vl["PROPILOT_HUD"]) | 
			
		
	
		
		
			
				
					
					|  |  |  |     self.lkas_hud_info_msg = copy.copy(cp_adas.vl["PROPILOT_HUD_INFO_MSG"]) |  |  |  |     self.lkas_hud_info_msg = copy.copy(cp_adas.vl["PROPILOT_HUD_INFO_MSG"]) | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -65,43 +65,53 @@ class CarState(CarStateBase): | 
			
		
	
		
		
			
				
					
					|  |  |  |     # this function generates lists for signal, messages and initial values |  |  |  |     # this function generates lists for signal, messages and initial values | 
			
		
	
		
		
			
				
					
					|  |  |  |     signals = [ |  |  |  |     signals = [ | 
			
		
	
		
		
			
				
					
					|  |  |  |       # sig_name, sig_address, default |  |  |  |       # sig_name, sig_address, default | 
			
		
	
		
		
			
				
					
					|  |  |  |       ("FL", "WheelspeedFront", 0), |  |  |  |       ("WHEEL_SPEED_FL", "WHEEL_SPEEDS_FRONT", 0), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       ("FR", "WheelspeedFront", 0), |  |  |  |       ("WHEEL_SPEED_FR", "WHEEL_SPEEDS_FRONT", 0), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       ("RL", "WheelspeedRear", 0), |  |  |  |       ("WHEEL_SPEED_RL", "WHEEL_SPEEDS_REAR", 0), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       ("RR", "WheelspeedRear", 0), |  |  |  |       ("WHEEL_SPEED_RR", "WHEEL_SPEEDS_REAR", 0), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       ("DOOR_OPEN_FR", "DoorsLights", 1), |  |  |  | 
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       ("DOOR_OPEN_FL", "DoorsLights", 1), |  |  |  |       ("SEATBELT_DRIVER_UNLATCHED", "SEATBELT", 0), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       ("DOOR_OPEN_RR", "DoorsLights", 1), |  |  |  | 
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       ("DOOR_OPEN_RL", "DoorsLights", 1), |  |  |  |       ("DOOR_OPEN_FR", "DOORS_LIGHTS", 1), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       ("USER_BRAKE_PRESSED", "DoorsLights", 1), |  |  |  |       ("DOOR_OPEN_FL", "DOORS_LIGHTS", 1), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       ("BRAKE_LIGHT", "DoorsLights", 1), |  |  |  |       ("DOOR_OPEN_RR", "DOORS_LIGHTS", 1), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       ("DriverTorque", "Steering", 0), |  |  |  |       ("DOOR_OPEN_RL", "DOORS_LIGHTS", 1), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       ("DriverTouchingWheel", "STEER_TORQUE", 0), |  |  |  | 
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       ("ThrottlePedal", "Throttle", 0), |  |  |  |       ("USER_BRAKE_PRESSED", "DOORS_LIGHTS", 1), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       ("Steering_Angle", "SteeringWheel", 0), |  |  |  |       ("BRAKE_LIGHT", "DOORS_LIGHTS", 1), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       ("RIGHT_BLINKER", "Lights", 0), |  |  |  | 
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       ("LEFT_BLINKER", "Lights", 0), |  |  |  |       ("GAS_PEDAL", "GAS_PEDAL", 0), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       ("PROPILOT_BUTTON", "CruiseThrottle", 0), |  |  |  | 
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       ("CANCEL_BUTTON", "CruiseThrottle", 0), |  |  |  |       ("STEER_TORQUE_DRIVER", "STEER_TORQUE_SENSOR", 0), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       ("GAS_PEDAL_INVERTED", "CruiseThrottle", 0), |  |  |  |       ("STEERING_PRESSED", "STEER_TORQUE_SENSOR2", 0), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       ("unsure2", "CruiseThrottle", 0), |  |  |  | 
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       ("SET_BUTTON", "CruiseThrottle", 0), |  |  |  |       ("STEER_ANGLE", "STEER_ANGLE_SENSOR", 0), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       ("RES_BUTTON", "CruiseThrottle", 0), |  |  |  | 
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       ("FOLLOW_DISTANCE_BUTTON", "CruiseThrottle", 0), |  |  |  |       ("RIGHT_BLINKER", "LIGHTS", 0), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       ("NO_BUTTON_PRESSED", "CruiseThrottle", 0), |  |  |  |       ("LEFT_BLINKER", "LIGHTS", 0), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       ("GAS_PEDAL", "CruiseThrottle", 0), |  |  |  | 
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       ("unsure3", "CruiseThrottle", 0), |  |  |  |       ("PROPILOT_BUTTON", "CRUISE_THROTTLE", 0), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       ("unsure", "CruiseThrottle", 0), |  |  |  |       ("CANCEL_BUTTON", "CRUISE_THROTTLE", 0), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       ("DRIVERS_SEATBELT", "_SEATBELT", 0), |  |  |  |       ("GAS_PEDAL_INVERTED", "CRUISE_THROTTLE", 0), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       ("ESP_DISABLED", "_ESP", 0), |  |  |  |       ("SET_BUTTON", "CRUISE_THROTTLE", 0), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       ("RES_BUTTON", "CRUISE_THROTTLE", 0), | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       ("FOLLOW_DISTANCE_BUTTON", "CRUISE_THROTTLE", 0), | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       ("NO_BUTTON_PRESSED", "CRUISE_THROTTLE", 0), | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       ("GAS_PEDAL", "CRUISE_THROTTLE", 0), | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       ("unsure1", "CRUISE_THROTTLE", 0), | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       ("unsure2", "CRUISE_THROTTLE", 0), | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       ("unsure3", "CRUISE_THROTTLE", 0), | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       # TODO: why are USER_BRAKE_PRESSED, NEW_SIGNAL_2 and GAS_PRESSED_INVERTED  not forwarded | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       ("ESP_DISABLED", "ESP", 0), | 
			
		
	
		
		
			
				
					
					|  |  |  |       ("GEAR_SHIFTER", "GEARBOX", 0), |  |  |  |       ("GEAR_SHIFTER", "GEARBOX", 0), | 
			
		
	
		
		
			
				
					
					|  |  |  |     ] |  |  |  |     ] | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     checks = [ |  |  |  |     checks = [ | 
			
		
	
		
		
			
				
					
					|  |  |  |       # sig_address, frequency |  |  |  |       # sig_address, frequency | 
			
		
	
		
		
			
				
					
					|  |  |  |       ("WheelspeedRear", 50), |  |  |  |       ("WHEEL_SPEEDS_REAR", 50), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       ("WheelspeedFront", 50), |  |  |  |       ("WHEEL_SPEEDS_FRONT", 50), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       ("DoorsLights", 10), |  |  |  |       ("DOORS_LIGHTS", 10), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     ] |  |  |  |     ] | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     return CANParser(DBC[CP.carFingerprint]['pt'], signals, checks, 0) |  |  |  |     return CANParser(DBC[CP.carFingerprint]['pt'], signals, checks, 0) | 
			
		
	
	
		
		
			
				
					|  |  | @ -117,6 +127,7 @@ class CarState(CarStateBase): | 
			
		
	
		
		
			
				
					
					|  |  |  |       ("SET_0x80", "LKAS", 0), |  |  |  |       ("SET_0x80", "LKAS", 0), | 
			
		
	
		
		
			
				
					
					|  |  |  |       ("COUNTER", "LKAS", 0), |  |  |  |       ("COUNTER", "LKAS", 0), | 
			
		
	
		
		
			
				
					
					|  |  |  |       ("LKA_ACTIVE", "LKAS", 0), |  |  |  |       ("LKA_ACTIVE", "LKAS", 0), | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |       # Below are the HUD messages. We copy the stock message and modify |  |  |  |       # Below are the HUD messages. We copy the stock message and modify | 
			
		
	
		
		
			
				
					
					|  |  |  |       ("LARGE_WARNING_FLASHING", "PROPILOT_HUD", 0), |  |  |  |       ("LARGE_WARNING_FLASHING", "PROPILOT_HUD", 0), | 
			
		
	
		
		
			
				
					
					|  |  |  |       ("SIDE_RADAR_ERROR_FLASHING1", "PROPILOT_HUD", 0), |  |  |  |       ("SIDE_RADAR_ERROR_FLASHING1", "PROPILOT_HUD", 0), | 
			
		
	
	
		
		
			
				
					|  |  | @ -141,9 +152,10 @@ class CarState(CarStateBase): | 
			
		
	
		
		
			
				
					
					|  |  |  |       ("unknown31", "PROPILOT_HUD", 0), |  |  |  |       ("unknown31", "PROPILOT_HUD", 0), | 
			
		
	
		
		
			
				
					
					|  |  |  |       ("unknown39", "PROPILOT_HUD", 0), |  |  |  |       ("unknown39", "PROPILOT_HUD", 0), | 
			
		
	
		
		
			
				
					
					|  |  |  |       ("unknown43", "PROPILOT_HUD", 0), |  |  |  |       ("unknown43", "PROPILOT_HUD", 0), | 
			
		
	
		
		
			
				
					
					|  |  |  |       ("unknown8", "PROPILOT_HUD", 0), |  |  |  |       ("unknown08", "PROPILOT_HUD", 0), | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |       ("unknown05", "PROPILOT_HUD", 0), |  |  |  |       ("unknown05", "PROPILOT_HUD", 0), | 
			
		
	
		
		
			
				
					
					|  |  |  |       ("unknown02", "PROPILOT_HUD", 0), |  |  |  |       ("unknown02", "PROPILOT_HUD", 0), | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |       ("NA_HIGH_ACCEL_TEMP", "PROPILOT_HUD_INFO_MSG", 0), |  |  |  |       ("NA_HIGH_ACCEL_TEMP", "PROPILOT_HUD_INFO_MSG", 0), | 
			
		
	
		
		
			
				
					
					|  |  |  |       ("SIDE_RADAR_NA_HIGH_CABIN_TEMP", "PROPILOT_HUD_INFO_MSG", 0), |  |  |  |       ("SIDE_RADAR_NA_HIGH_CABIN_TEMP", "PROPILOT_HUD_INFO_MSG", 0), | 
			
		
	
		
		
			
				
					
					|  |  |  |       ("SIDE_RADAR_MALFUNCTION", "PROPILOT_HUD_INFO_MSG", 0), |  |  |  |       ("SIDE_RADAR_MALFUNCTION", "PROPILOT_HUD_INFO_MSG", 0), | 
			
		
	
	
		
		
			
				
					|  |  | @ -195,9 +207,9 @@ class CarState(CarStateBase): | 
			
		
	
		
		
			
				
					
					|  |  |  |   @staticmethod |  |  |  |   @staticmethod | 
			
		
	
		
		
			
				
					
					|  |  |  |   def get_cam_can_parser(CP): |  |  |  |   def get_cam_can_parser(CP): | 
			
		
	
		
		
			
				
					
					|  |  |  |     signals = [ |  |  |  |     signals = [ | 
			
		
	
		
		
			
				
					
					|  |  |  |       ("CRUISE_ON", "ProPilot", 0), |  |  |  |       ("CRUISE_ON", "PRO_PILOT", 0), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       ("CRUISE_ACTIVATED", "ProPilot", 0), |  |  |  |       ("CRUISE_ACTIVATED", "PRO_PILOT", 0), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       ("STEER_STATUS", "ProPilot", 0), |  |  |  |       ("STEER_STATUS", "PRO_PILOT", 0), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     ] |  |  |  |     ] | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     checks = [ |  |  |  |     checks = [ | 
			
		
	
	
		
		
			
				
					|  |  | 
 |