@ -254,54 +254,7 @@ class CarState(CarStateBase): 
			
		
	
		
		
			
				
					
					    if  CP . carFingerprint  in  PQ_CARS :      if  CP . carFingerprint  in  PQ_CARS :   
			
		
	
		
		
			
				
					
					      return  CarState . get_can_parser_pq ( CP )        return  CarState . get_can_parser_pq ( CP )   
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					    signals  =  [      messages  =  [   
			
				
				
			
		
	
		
		
			
				
					
					      # sig_name, sig_address   
			
		
	
		
		
			
				
					
					      ( " LWI_Lenkradwinkel " ,  " LWI_01 " ) ,            # Absolute steering angle   
			
		
	
		
		
			
				
					
					      ( " LWI_VZ_Lenkradwinkel " ,  " LWI_01 " ) ,         # Steering angle sign   
			
		
	
		
		
			
				
					
					      ( " LWI_Lenkradw_Geschw " ,  " LWI_01 " ) ,          # Absolute steering rate   
			
		
	
		
		
			
				
					
					      ( " LWI_VZ_Lenkradw_Geschw " ,  " LWI_01 " ) ,       # Steering rate sign   
			
		
	
		
		
			
				
					
					      ( " ESP_VL_Radgeschw_02 " ,  " ESP_19 " ) ,          # ABS wheel speed, front left   
			
		
	
		
		
			
				
					
					      ( " ESP_VR_Radgeschw_02 " ,  " ESP_19 " ) ,          # ABS wheel speed, front right   
			
		
	
		
		
			
				
					
					      ( " ESP_HL_Radgeschw_02 " ,  " ESP_19 " ) ,          # ABS wheel speed, rear left   
			
		
	
		
		
			
				
					
					      ( " ESP_HR_Radgeschw_02 " ,  " ESP_19 " ) ,          # ABS wheel speed, rear right   
			
		
	
		
		
			
				
					
					      ( " ESP_Gierrate " ,  " ESP_02 " ) ,                 # Absolute yaw rate   
			
		
	
		
		
			
				
					
					      ( " ESP_VZ_Gierrate " ,  " ESP_02 " ) ,              # Yaw rate sign   
			
		
	
		
		
			
				
					
					      ( " ZV_FT_offen " ,  " Gateway_72 " ) ,              # Door open, driver   
			
		
	
		
		
			
				
					
					      ( " ZV_BT_offen " ,  " Gateway_72 " ) ,              # Door open, passenger   
			
		
	
		
		
			
				
					
					      ( " ZV_HFS_offen " ,  " Gateway_72 " ) ,             # Door open, rear left   
			
		
	
		
		
			
				
					
					      ( " ZV_HBFS_offen " ,  " Gateway_72 " ) ,            # Door open, rear right   
			
		
	
		
		
			
				
					
					      ( " ZV_HD_offen " ,  " Gateway_72 " ) ,              # Trunk or hatch open   
			
		
	
		
		
			
				
					
					      ( " Comfort_Signal_Left " ,  " Blinkmodi_02 " ) ,    # Left turn signal including comfort blink interval   
			
		
	
		
		
			
				
					
					      ( " Comfort_Signal_Right " ,  " Blinkmodi_02 " ) ,   # Right turn signal including comfort blink interval   
			
		
	
		
		
			
				
					
					      ( " AB_Gurtschloss_FA " ,  " Airbag_02 " ) ,         # Seatbelt status, driver   
			
		
	
		
		
			
				
					
					      ( " AB_Gurtschloss_BF " ,  " Airbag_02 " ) ,         # Seatbelt status, passenger   
			
		
	
		
		
			
				
					
					      ( " ESP_Fahrer_bremst " ,  " ESP_05 " ) ,            # Driver applied brake pressure over threshold   
			
		
	
		
		
			
				
					
					      ( " MO_Fahrer_bremst " ,  " Motor_14 " ) ,           # Brake pedal switch   
			
		
	
		
		
			
				
					
					      ( " ESP_Bremsdruck " ,  " ESP_05 " ) ,               # Brake pressure   
			
		
	
		
		
			
				
					
					      ( " MO_Fahrpedalrohwert_01 " ,  " Motor_20 " ) ,     # Accelerator pedal value   
			
		
	
		
		
			
				
					
					      ( " EPS_Lenkmoment " ,  " LH_EPS_03 " ) ,            # Absolute driver torque input   
			
		
	
		
		
			
				
					
					      ( " EPS_VZ_Lenkmoment " ,  " LH_EPS_03 " ) ,         # Driver torque input sign   
			
		
	
		
		
			
				
					
					      ( " EPS_HCA_Status " ,  " LH_EPS_03 " ) ,            # EPS HCA control status   
			
		
	
		
		
			
				
					
					      ( " ESP_Tastung_passiv " ,  " ESP_21 " ) ,           # Stability control disabled   
			
		
	
		
		
			
				
					
					      ( " ESP_Haltebestaetigung " ,  " ESP_21 " ) ,        # ESP hold confirmation   
			
		
	
		
		
			
				
					
					      ( " KBI_Handbremse " ,  " Kombi_01 " ) ,             # Manual handbrake applied   
			
		
	
		
		
			
				
					
					      ( " KBI_Variante " ,  " Kombi_03 " ) ,               # Digital/full-screen instrument cluster installed   
			
		
	
		
		
			
				
					
					      ( " TSK_Status " ,  " TSK_06 " ) ,                   # ACC engagement status from drivetrain coordinator   
			
		
	
		
		
			
				
					
					      ( " GRA_Hauptschalter " ,  " GRA_ACC_01 " ) ,        # ACC button, on/off   
			
		
	
		
		
			
				
					
					      ( " GRA_Abbrechen " ,  " GRA_ACC_01 " ) ,            # ACC button, cancel   
			
		
	
		
		
			
				
					
					      ( " GRA_Tip_Setzen " ,  " GRA_ACC_01 " ) ,           # ACC button, set   
			
		
	
		
		
			
				
					
					      ( " GRA_Tip_Hoch " ,  " GRA_ACC_01 " ) ,             # ACC button, increase or accel   
			
		
	
		
		
			
				
					
					      ( " GRA_Tip_Runter " ,  " GRA_ACC_01 " ) ,           # ACC button, decrease or decel   
			
		
	
		
		
			
				
					
					      ( " GRA_Tip_Wiederaufnahme " ,  " GRA_ACC_01 " ) ,   # ACC button, resume   
			
		
	
		
		
			
				
					
					      ( " GRA_Verstellung_Zeitluecke " ,  " GRA_ACC_01 " ) ,   # ACC button, time gap adj   
			
		
	
		
		
			
				
					
					      ( " GRA_Typ_Hauptschalter " ,  " GRA_ACC_01 " ) ,    # ACC main button type   
			
		
	
		
		
			
				
					
					      ( " GRA_Codierung " ,  " GRA_ACC_01 " ) ,            # ACC button configuration/coding   
			
		
	
		
		
			
				
					
					      ( " GRA_Tip_Stufe_2 " ,  " GRA_ACC_01 " ) ,          # unknown related to stalk type   
			
		
	
		
		
			
				
					
					      ( " GRA_ButtonTypeInfo " ,  " GRA_ACC_01 " ) ,       # unknown related to stalk type   
			
		
	
		
		
			
				
					
					      ( " COUNTER " ,  " GRA_ACC_01 " ) ,                  # GRA_ACC_01 CAN message counter   
			
		
	
		
		
			
				
					
					    ]   
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					    checks  =  [   
			
		
	
		
		
	
		
		
			
				
					
					      # sig_address, frequency        # sig_address, frequency   
			
		
	
		
		
			
				
					
					      ( " LWI_01 " ,  100 ) ,       # From J500 Steering Assist with integrated sensors        ( " LWI_01 " ,  100 ) ,       # From J500 Steering Assist with integrated sensors   
			
		
	
		
		
			
				
					
					      ( " LH_EPS_03 " ,  100 ) ,    # From J500 Steering Assist with integrated sensors        ( " LH_EPS_03 " ,  100 ) ,    # From J500 Steering Assist with integrated sensors   
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
						
					 
					@ -321,108 +274,41 @@ class CarState(CarStateBase): 
			
		
	
		
		
			
				
					
					    ]      ]   
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					    if  CP . transmissionType  ==  TransmissionType . automatic :      if  CP . transmissionType  ==  TransmissionType . automatic :   
			
		
	
		
		
			
				
					
					      signals . append ( ( " GE_Fahrstufe " ,  " Getriebe_11 " ) )   # Auto trans gear selector position        messages . append ( ( " Getriebe_11 " ,  20 ) )   # From J743 Auto transmission control module   
			
				
				
			
		
	
		
		
			
				
					
					      checks . append ( ( " Getriebe_11 " ,  20 ) )   # From J743 Auto transmission control module   
			
		
	
		
		
	
		
		
			
				
					
					    elif  CP . transmissionType  ==  TransmissionType . direct :      elif  CP . transmissionType  ==  TransmissionType . direct :   
			
		
	
		
		
			
				
					
					      signals . append ( ( " GearPosition " ,  " EV_Gearshift " ) )   # EV gear selector position        messages . append ( ( " EV_Gearshift " ,  10 ) )   # From J??? unknown EV control module   
			
				
				
			
		
	
		
		
			
				
					
					      checks . append ( ( " EV_Gearshift " ,  10 ) )   # From J??? unknown EV control module   
			
		
	
		
		
			
				
					
					    elif  CP . transmissionType  ==  TransmissionType . manual :   
			
		
	
		
		
			
				
					
					      signals  + =  [ ( " MO_Kuppl_schalter " ,  " Motor_14 " ) ,   # Clutch switch   
			
		
	
		
		
			
				
					
					                  ( " BCM1_Rueckfahrlicht_Schalter " ,  " Gateway_72 " ) ]   # Reverse light from BCM   
			
		
	
		
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					    if  CP . networkLocation  ==  NetworkLocation . fwdCamera :      if  CP . networkLocation  ==  NetworkLocation . fwdCamera :   
			
		
	
		
		
			
				
					
					      # Radars are here on CANBUS.pt        # Radars are here on CANBUS.pt   
			
		
	
		
		
			
				
					
					      signals  + =  MqbExtraSignals . fwd_radar_signals        messages  + =  MqbExtraSignals . fwd_radar_messages   
			
				
				
			
		
	
		
		
			
				
					
					      checks  + =  MqbExtraSignals . fwd_radar_checks   
			
		
	
		
		
	
		
		
			
				
					
					      if  CP . enableBsm :        if  CP . enableBsm :   
			
		
	
		
		
			
				
					
					        signals  + =  MqbExtraSignals . bsm_radar_signals          messages  + =  MqbExtraSignals . bsm_radar_messages   
			
				
				
			
		
	
		
		
			
				
					
					        checks  + =  MqbExtraSignals . bsm_radar_checks   
			
		
	
		
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					    return  CANParser ( DBC [ CP . carFingerprint ] [ " pt " ] ,  signals ,  check s,  CANBUS . pt )      return  CANParser ( DBC [ CP . carFingerprint ] [ " pt " ] ,  message s,  CANBUS . pt )   
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					  @staticmethod    @staticmethod   
			
		
	
		
		
			
				
					
					  def  get_cam_can_parser ( CP ) :    def  get_cam_can_parser ( CP ) :   
			
		
	
		
		
			
				
					
					    if  CP . carFingerprint  in  PQ_CARS :      if  CP . carFingerprint  in  PQ_CARS :   
			
		
	
		
		
			
				
					
					      return  CarState . get_cam_can_parser_pq ( CP )        return  CarState . get_cam_can_parser_pq ( CP )   
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					    signals  =  [ ]      messages  =  [ ]   
			
				
				
			
		
	
		
		
			
				
					
					    checks  =  [ ]   
			
		
	
		
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					    if  CP . networkLocation  ==  NetworkLocation . fwdCamera :      if  CP . networkLocation  ==  NetworkLocation . fwdCamera :   
			
		
	
		
		
			
				
					
					      signals  + =  [        messages  + =  [   
			
				
				
			
		
	
		
		
			
				
					
					        # sig_name, sig_address   
			
		
	
		
		
			
				
					
					        ( " LDW_SW_Warnung_links " ,  " LDW_02 " ) ,       # Blind spot in warning mode on left side due to lane departure   
			
		
	
		
		
			
				
					
					        ( " LDW_SW_Warnung_rechts " ,  " LDW_02 " ) ,      # Blind spot in warning mode on right side due to lane departure   
			
		
	
		
		
			
				
					
					        ( " LDW_Seite_DLCTLC " ,  " LDW_02 " ) ,           # Direction of most likely lane departure (left or right)   
			
		
	
		
		
			
				
					
					        ( " LDW_DLC " ,  " LDW_02 " ) ,                    # Lane departure, distance to line crossing   
			
		
	
		
		
			
				
					
					        ( " LDW_TLC " ,  " LDW_02 " ) ,                    # Lane departure, time to line crossing   
			
		
	
		
		
			
				
					
					      ]   
			
		
	
		
		
			
				
					
					      checks  + =  [   
			
		
	
		
		
	
		
		
			
				
					
					        # sig_address, frequency          # sig_address, frequency   
			
		
	
		
		
			
				
					
					        ( " LDW_02 " ,  10 )       # From R242 Driver assistance camera          ( " LDW_02 " ,  10 )       # From R242 Driver assistance camera   
			
		
	
		
		
			
				
					
					      ]        ]   
			
		
	
		
		
			
				
					
					    else :      else :   
			
		
	
		
		
			
				
					
					      # Radars are here on CANBUS.cam        # Radars are here on CANBUS.cam   
			
		
	
		
		
			
				
					
					      signals  + =  MqbExtraSignals . fwd_radar_signals        messages  + =  MqbExtraSignals . fwd_radar_messages   
			
				
				
			
		
	
		
		
			
				
					
					      checks  + =  MqbExtraSignals . fwd_radar_checks   
			
		
	
		
		
	
		
		
			
				
					
					      if  CP . enableBsm :        if  CP . enableBsm :   
			
		
	
		
		
			
				
					
					        signals  + =  MqbExtraSignals . bsm_radar_signals          messages  + =  MqbExtraSignals . bsm_radar_messages   
			
				
				
			
		
	
		
		
			
				
					
					        checks  + =  MqbExtraSignals . bsm_radar_checks   
			
		
	
		
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					    return  CANParser ( DBC [ CP . carFingerprint ] [ " pt " ] ,  signals ,  check s,  CANBUS . cam )      return  CANParser ( DBC [ CP . carFingerprint ] [ " pt " ] ,  message s,  CANBUS . cam )   
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					  @staticmethod    @staticmethod   
			
		
	
		
		
			
				
					
					  def  get_can_parser_pq ( CP ) :    def  get_can_parser_pq ( CP ) :   
			
		
	
		
		
			
				
					
					    signals  =  [      messages  =  [   
			
				
				
			
		
	
		
		
			
				
					
					      # sig_name, sig_address, default   
			
		
	
		
		
			
				
					
					      ( " LH3_BLW " ,  " Lenkhilfe_3 " ) ,                 # Absolute steering angle   
			
		
	
		
		
			
				
					
					      ( " LH3_BLWSign " ,  " Lenkhilfe_3 " ) ,             # Steering angle sign   
			
		
	
		
		
			
				
					
					      ( " LH3_LM " ,  " Lenkhilfe_3 " ) ,                  # Absolute driver torque input   
			
		
	
		
		
			
				
					
					      ( " LH3_LMSign " ,  " Lenkhilfe_3 " ) ,              # Driver torque input sign   
			
		
	
		
		
			
				
					
					      ( " LH2_Sta_HCA " ,  " Lenkhilfe_2 " ) ,             # Steering rack HCA status   
			
		
	
		
		
			
				
					
					      ( " Lenkradwinkel_Geschwindigkeit " ,  " Lenkwinkel_1 " ) ,   # Absolute steering rate   
			
		
	
		
		
			
				
					
					      ( " Lenkradwinkel_Geschwindigkeit_S " ,  " Lenkwinkel_1 " ) ,   # Steering rate sign   
			
		
	
		
		
			
				
					
					      ( " Geschwindigkeit_neu__Bremse_1_ " ,  " Bremse_1 " ) ,   # Vehicle speed from ABS   
			
		
	
		
		
			
				
					
					      ( " Radgeschw__VL_4_1 " ,  " Bremse_3 " ) ,          # ABS wheel speed, front left   
			
		
	
		
		
			
				
					
					      ( " Radgeschw__VR_4_1 " ,  " Bremse_3 " ) ,          # ABS wheel speed, front right   
			
		
	
		
		
			
				
					
					      ( " Radgeschw__HL_4_1 " ,  " Bremse_3 " ) ,          # ABS wheel speed, rear left   
			
		
	
		
		
			
				
					
					      ( " Radgeschw__HR_4_1 " ,  " Bremse_3 " ) ,          # ABS wheel speed, rear right   
			
		
	
		
		
			
				
					
					      ( " Giergeschwindigkeit " ,  " Bremse_5 " ) ,        # Absolute yaw rate   
			
		
	
		
		
			
				
					
					      ( " Vorzeichen_der_Giergeschwindigk " ,  " Bremse_5 " ) ,   # Yaw rate sign   
			
		
	
		
		
			
				
					
					      ( " Gurtschalter_Fahrer " ,  " Airbag_1 " ) ,        # Seatbelt status, driver   
			
		
	
		
		
			
				
					
					      ( " Gurtschalter_Beifahrer " ,  " Airbag_1 " ) ,     # Seatbelt status, passenger   
			
		
	
		
		
			
				
					
					      ( " Bremstestschalter " ,  " Motor_2 " ) ,           # Brake pedal pressed (brake light test switch)   
			
		
	
		
		
			
				
					
					      ( " Bremslichtschalter " ,  " Motor_2 " ) ,          # Brakes applied (brake light switch)   
			
		
	
		
		
			
				
					
					      ( " Bremsdruck " ,  " Bremse_5 " ) ,                 # Brake pressure applied   
			
		
	
		
		
			
				
					
					      ( " Vorzeichen_Bremsdruck " ,  " Bremse_5 " ) ,      # Brake pressure applied sign (???)   
			
		
	
		
		
			
				
					
					      ( " Fahrpedal_Rohsignal " ,  " Motor_3 " ) ,         # Accelerator pedal value   
			
		
	
		
		
			
				
					
					      ( " ESP_Passiv_getastet " ,  " Bremse_1 " ) ,        # Stability control disabled   
			
		
	
		
		
			
				
					
					      ( " GRA_Hauptschalter " ,  " Motor_5 " ) ,           # ACC main switch   
			
		
	
		
		
			
				
					
					      ( " GRA_Status " ,  " Motor_2 " ) ,                  # ACC engagement status   
			
		
	
		
		
			
				
					
					      ( " GK1_Fa_Tuerkont " ,  " Gate_Komf_1 " ) ,         # Door open, driver   
			
		
	
		
		
			
				
					
					      ( " BSK_BT_geoeffnet " ,  " Gate_Komf_1 " ) ,        # Door open, passenger   
			
		
	
		
		
			
				
					
					      ( " BSK_HL_geoeffnet " ,  " Gate_Komf_1 " ) ,        # Door open, rear left   
			
		
	
		
		
			
				
					
					      ( " BSK_HR_geoeffnet " ,  " Gate_Komf_1 " ) ,        # Door open, rear right   
			
		
	
		
		
			
				
					
					      ( " BSK_HD_Hauptraste " ,  " Gate_Komf_1 " ) ,       # Trunk or hatch open   
			
		
	
		
		
			
				
					
					      ( " GK1_Blinker_li " ,  " Gate_Komf_1 " ) ,          # Left turn signal on   
			
		
	
		
		
			
				
					
					      ( " GK1_Blinker_re " ,  " Gate_Komf_1 " ) ,          # Right turn signal on   
			
		
	
		
		
			
				
					
					      ( " Bremsinfo " ,  " Kombi_1 " ) ,                   # Manual handbrake applied   
			
		
	
		
		
			
				
					
					      ( " GRA_Hauptschalt " ,  " GRA_Neu " ) ,             # ACC button, on/off   
			
		
	
		
		
			
				
					
					      ( " GRA_Typ_Hauptschalt " ,  " GRA_Neu " ) ,         # ACC button, momentary vs latching   
			
		
	
		
		
			
				
					
					      ( " GRA_Kodierinfo " ,  " GRA_Neu " ) ,              # ACC button, configuration   
			
		
	
		
		
			
				
					
					      ( " GRA_Abbrechen " ,  " GRA_Neu " ) ,               # ACC button, cancel   
			
		
	
		
		
			
				
					
					      ( " GRA_Neu_Setzen " ,  " GRA_Neu " ) ,              # ACC button, set   
			
		
	
		
		
			
				
					
					      ( " GRA_Up_lang " ,  " GRA_Neu " ) ,                 # ACC button, increase or accel, long press   
			
		
	
		
		
			
				
					
					      ( " GRA_Down_lang " ,  " GRA_Neu " ) ,               # ACC button, decrease or decel, long press   
			
		
	
		
		
			
				
					
					      ( " GRA_Up_kurz " ,  " GRA_Neu " ) ,                 # ACC button, increase or accel, short press   
			
		
	
		
		
			
				
					
					      ( " GRA_Down_kurz " ,  " GRA_Neu " ) ,               # ACC button, decrease or decel, short press   
			
		
	
		
		
			
				
					
					      ( " GRA_Recall " ,  " GRA_Neu " ) ,                  # ACC button, resume   
			
		
	
		
		
			
				
					
					      ( " GRA_Zeitluecke " ,  " GRA_Neu " ) ,              # ACC button, time gap adj   
			
		
	
		
		
			
				
					
					      ( " COUNTER " ,  " GRA_Neu " ) ,                     # ACC button, message counter   
			
		
	
		
		
			
				
					
					      ( " GRA_Sender " ,  " GRA_Neu " ) ,                  # ACC button, CAN message originator   
			
		
	
		
		
			
				
					
					    ]   
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					    checks  =  [   
			
		
	
		
		
	
		
		
			
				
					
					      # sig_address, frequency        # sig_address, frequency   
			
		
	
		
		
			
				
					
					      ( " Bremse_1 " ,  100 ) ,     # From J104 ABS/ESP controller        ( " Bremse_1 " ,  100 ) ,     # From J104 ABS/ESP controller   
			
		
	
		
		
			
				
					
					      ( " Bremse_3 " ,  100 ) ,     # From J104 ABS/ESP controller        ( " Bremse_3 " ,  100 ) ,     # From J104 ABS/ESP controller   
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
						
					 
					@ -440,95 +326,55 @@ class CarState(CarStateBase): 
			
		
	
		
		
			
				
					
					    ]      ]   
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					    if  CP . transmissionType  ==  TransmissionType . automatic :      if  CP . transmissionType  ==  TransmissionType . automatic :   
			
		
	
		
		
			
				
					
					      signals  + =  [ ( " Waehlhebelposition__Getriebe_1_ " ,  " Getriebe_1 " ,  0 ) ]   # Auto trans gear selector position        messages  + =  [ ( " Getriebe_1 " ,  100 ) ]   # From J743 Auto transmission control module   
			
				
				
			
		
	
		
		
			
				
					
					      checks  + =  [ ( " Getriebe_1 " ,  100 ) ]   # From J743 Auto transmission control module   
			
		
	
		
		
	
		
		
			
				
					
					    elif  CP . transmissionType  ==  TransmissionType . manual :      elif  CP . transmissionType  ==  TransmissionType . manual :   
			
		
	
		
		
			
				
					
					      signals  + =  [ ( " Kupplungsschalter " ,  " Motor_1 " ,  0 ) ,   # Clutch switch        messages  + =  [ ( " Motor_1 " ,  100 ) ]   # From J623 Engine control module   
			
				
				
			
		
	
		
		
			
				
					
					                  ( " GK1_Rueckfahr " ,  " Gate_Komf_1 " ,  0 ) ]   # Reverse light from BCM   
			
		
	
		
		
			
				
					
					      checks  + =  [ ( " Motor_1 " ,  100 ) ]   # From J623 Engine control module   
			
		
	
		
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					    if  CP . networkLocation  ==  NetworkLocation . fwdCamera :      if  CP . networkLocation  ==  NetworkLocation . fwdCamera :   
			
		
	
		
		
			
				
					
					      # Extended CAN devices other than the camera are here on CANBUS.pt        # Extended CAN devices other than the camera are here on CANBUS.pt   
			
		
	
		
		
			
				
					
					      signals  + =  PqExtraSignals . fwd_radar_signals        messages  + =  PqExtraSignals . fwd_radar_messages   
			
				
				
			
		
	
		
		
			
				
					
					      checks  + =  PqExtraSignals . fwd_radar_checks   
			
		
	
		
		
	
		
		
			
				
					
					      if  CP . enableBsm :        if  CP . enableBsm :   
			
		
	
		
		
			
				
					
					        signals  + =  PqExtraSignals . bsm_radar_signals          messages  + =  PqExtraSignals . bsm_radar_messages   
			
				
				
			
		
	
		
		
			
				
					
					        checks  + =  PqExtraSignals . bsm_radar_checks   
			
		
	
		
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					    return  CANParser ( DBC [ CP . carFingerprint ] [ " pt " ] ,  signals ,  check s,  CANBUS . pt )      return  CANParser ( DBC [ CP . carFingerprint ] [ " pt " ] ,  message s,  CANBUS . pt )   
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					  @staticmethod    @staticmethod   
			
		
	
		
		
			
				
					
					  def  get_cam_can_parser_pq ( CP ) :    def  get_cam_can_parser_pq ( CP ) :   
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					    signals  =  [ ]      messages  =  [ ]   
			
				
				
			
		
	
		
		
			
				
					
					    checks  =  [ ]   
			
		
	
		
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					    if  CP . networkLocation  ==  NetworkLocation . fwdCamera :      if  CP . networkLocation  ==  NetworkLocation . fwdCamera :   
			
		
	
		
		
			
				
					
					      signals  + =  [        messages  + =  [   
			
				
				
			
		
	
		
		
			
				
					
					        # sig_name, sig_address   
			
		
	
		
		
			
				
					
					        ( " LDW_SW_Warnung_links " ,  " LDW_Status " ) ,       # Blind spot in warning mode on left side due to lane departure   
			
		
	
		
		
			
				
					
					        ( " LDW_SW_Warnung_rechts " ,  " LDW_Status " ) ,      # Blind spot in warning mode on right side due to lane departure   
			
		
	
		
		
			
				
					
					        ( " LDW_Seite_DLCTLC " ,  " LDW_Status " ) ,           # Direction of most likely lane departure (left or right)   
			
		
	
		
		
			
				
					
					        ( " LDW_DLC " ,  " LDW_Status " ) ,                    # Lane departure, distance to line crossing   
			
		
	
		
		
			
				
					
					        ( " LDW_TLC " ,  " LDW_Status " ) ,                    # Lane departure, time to line crossing   
			
		
	
		
		
			
				
					
					      ]   
			
		
	
		
		
			
				
					
					      checks  + =  [   
			
		
	
		
		
	
		
		
			
				
					
					        # sig_address, frequency          # sig_address, frequency   
			
		
	
		
		
			
				
					
					        ( " LDW_Status " ,  10 )       # From R242 Driver assistance camera          ( " LDW_Status " ,  10 )       # From R242 Driver assistance camera   
			
		
	
		
		
			
				
					
					      ]        ]   
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					    if  CP . networkLocation  ==  NetworkLocation . gateway :      if  CP . networkLocation  ==  NetworkLocation . gateway :   
			
		
	
		
		
			
				
					
					      # Radars are here on CANBUS.cam        # Radars are here on CANBUS.cam   
			
		
	
		
		
			
				
					
					      signals  + =  PqExtraSignals . fwd_radar_signals        messages  + =  PqExtraSignals . fwd_radar_messages   
			
				
				
			
		
	
		
		
			
				
					
					      checks  + =  PqExtraSignals . fwd_radar_checks   
			
		
	
		
		
	
		
		
			
				
					
					      if  CP . enableBsm :        if  CP . enableBsm :   
			
		
	
		
		
			
				
					
					        signals  + =  PqExtraSignals . bsm_radar_signals          messages  + =  PqExtraSignals . bsm_radar_messages   
			
				
				
			
		
	
		
		
			
				
					
					        checks  + =  PqExtraSignals . bsm_radar_checks   
			
		
	
		
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					    return  CANParser ( DBC [ CP . carFingerprint ] [ " pt " ] ,  signals ,  check s,  CANBUS . cam )      return  CANParser ( DBC [ CP . carFingerprint ] [ " pt " ] ,  message s,  CANBUS . cam )   
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					class  MqbExtraSignals : class  MqbExtraSignals :  
			
		
	
		
		
			
				
					
					  # Additional signal and message lists for optional or bus-portable controllers    # Additional signal and message lists for optional or bus-portable controllers   
			
		
	
		
		
			
				
					
					  fwd_radar_signals  =  [    fwd_radar_messages  =  [   
			
				
				
			
		
	
		
		
			
				
					
					    ( " ACC_Wunschgeschw_02 " ,  " ACC_02 " ) ,            # ACC set speed   
			
		
	
		
		
			
				
					
					    ( " ACC_Typ " ,  " ACC_06 " ) ,                        # Basic vs FtS vs SnG   
			
		
	
		
		
			
				
					
					    ( " AWV2_Freigabe " ,  " ACC_10 " ) ,                  # FCW brake jerk release   
			
		
	
		
		
			
				
					
					    ( " ANB_Teilbremsung_Freigabe " ,  " ACC_10 " ) ,      # AEB partial braking release   
			
		
	
		
		
			
				
					
					    ( " ANB_Zielbremsung_Freigabe " ,  " ACC_10 " ) ,      # AEB target braking release   
			
		
	
		
		
			
				
					
					  ]   
			
		
	
		
		
			
				
					
					  fwd_radar_checks  =  [   
			
		
	
		
		
	
		
		
			
				
					
					    ( " ACC_06 " ,  50 ) ,                               # From J428 ACC radar control module      ( " ACC_06 " ,  50 ) ,                               # From J428 ACC radar control module   
			
		
	
		
		
			
				
					
					    ( " ACC_10 " ,  50 ) ,                               # From J428 ACC radar control module      ( " ACC_10 " ,  50 ) ,                               # From J428 ACC radar control module   
			
		
	
		
		
			
				
					
					    ( " ACC_02 " ,  17 ) ,                               # From J428 ACC radar control module      ( " ACC_02 " ,  17 ) ,                               # From J428 ACC radar control module   
			
		
	
		
		
			
				
					
					  ]    ]   
			
		
	
		
		
			
				
					
					  bsm_radar_signals  =  [    bsm_radar_messages  =  [   
			
				
				
			
		
	
		
		
			
				
					
					    ( " SWA_Infostufe_SWA_li " ,  " SWA_01 " ) ,           # Blind spot object info, left   
			
		
	
		
		
			
				
					
					    ( " SWA_Warnung_SWA_li " ,  " SWA_01 " ) ,             # Blind spot object warning, left   
			
		
	
		
		
			
				
					
					    ( " SWA_Infostufe_SWA_re " ,  " SWA_01 " ) ,           # Blind spot object info, right   
			
		
	
		
		
			
				
					
					    ( " SWA_Warnung_SWA_re " ,  " SWA_01 " ) ,             # Blind spot object warning, right   
			
		
	
		
		
			
				
					
					  ]   
			
		
	
		
		
			
				
					
					  bsm_radar_checks  =  [   
			
		
	
		
		
	
		
		
			
				
					
					    ( " SWA_01 " ,  20 ) ,                               # From J1086 Lane Change Assist      ( " SWA_01 " ,  20 ) ,                               # From J1086 Lane Change Assist   
			
		
	
		
		
			
				
					
					  ]    ]   
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					class  PqExtraSignals : class  PqExtraSignals :  
			
		
	
		
		
			
				
					
					  # Additional signal and message lists for optional or bus-portable controllers    # Additional signal and message lists for optional or bus-portable controllers   
			
		
	
		
		
			
				
					
					  fwd_radar_signals  =  [    fwd_radar_messages  =  [   
			
				
				
			
		
	
		
		
			
				
					
					    ( " ACS_Typ_ACC " ,  " ACC_System " ) ,                # Basic vs FtS (no SnG support on PQ)   
			
		
	
		
		
			
				
					
					    ( " ACA_StaACC " ,  " ACC_GRA_Anzeige " ) ,            # ACC drivetrain coordinator status   
			
		
	
		
		
			
				
					
					    ( " ACA_V_Wunsch " ,  " ACC_GRA_Anzeige " ) ,          # ACC set speed   
			
		
	
		
		
			
				
					
					  ]   
			
		
	
		
		
			
				
					
					  fwd_radar_checks  =  [   
			
		
	
		
		
	
		
		
			
				
					
					    ( " ACC_System " ,  50 ) ,                           # From J428 ACC radar control module      ( " ACC_System " ,  50 ) ,                           # From J428 ACC radar control module   
			
		
	
		
		
			
				
					
					    ( " ACC_GRA_Anzeige " ,  25 ) ,                      # From J428 ACC radar control module      ( " ACC_GRA_Anzeige " ,  25 ) ,                      # From J428 ACC radar control module   
			
		
	
		
		
			
				
					
					  ]    ]   
			
		
	
		
		
			
				
					
					  bsm_radar_signals  =  [    bsm_radar_messages  =  [   
			
				
				
			
		
	
		
		
			
				
					
					    ( " SWA_Infostufe_SWA_li " ,  " SWA_1 " ) ,            # Blind spot object info, left   
			
		
	
		
		
			
				
					
					    ( " SWA_Warnung_SWA_li " ,  " SWA_1 " ) ,              # Blind spot object warning, left   
			
		
	
		
		
			
				
					
					    ( " SWA_Infostufe_SWA_re " ,  " SWA_1 " ) ,            # Blind spot object info, right   
			
		
	
		
		
			
				
					
					    ( " SWA_Warnung_SWA_re " ,  " SWA_1 " ) ,              # Blind spot object warning, right   
			
		
	
		
		
			
				
					
					  ]   
			
		
	
		
		
			
				
					
					  bsm_radar_checks  =  [   
			
		
	
		
		
	
		
		
			
				
					
					    ( " SWA_1 " ,  20 ) ,                                # From J1086 Lane Change Assist      ( " SWA_1 " ,  20 ) ,                                # From J1086 Lane Change Assist   
			
		
	
		
		
			
				
					
					  ]    ]