| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -21,18 +21,16 @@ class CarInterface(CarInterfaceBase): | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      self.cp_ext = self.cp_cam | 
					 | 
					 | 
					 | 
					      self.cp_ext = self.cp_cam | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  @staticmethod | 
					 | 
					 | 
					 | 
					  @staticmethod | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  def _get_params(ret, candidate, fingerprint, car_fw, experimental_long): | 
					 | 
					 | 
					 | 
					  def _get_params(ret, candidate, fingerprint, car_fw, experimental_long, docs): | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    ret.carName = "volkswagen" | 
					 | 
					 | 
					 | 
					    ret.carName = "volkswagen" | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    ret.radarUnavailable = True | 
					 | 
					 | 
					 | 
					    ret.radarUnavailable = True | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    use_off_car_defaults = len(fingerprint[0]) == 0  # Pick sensible carParams during offline doc generation/CI jobs | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    if candidate in PQ_CARS: | 
					 | 
					 | 
					 | 
					    if candidate in PQ_CARS: | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      # Set global PQ35/PQ46/NMS parameters | 
					 | 
					 | 
					 | 
					      # Set global PQ35/PQ46/NMS parameters | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      ret.safetyConfigs = [get_safety_config(car.CarParams.SafetyModel.volkswagenPq)] | 
					 | 
					 | 
					 | 
					      ret.safetyConfigs = [get_safety_config(car.CarParams.SafetyModel.volkswagenPq)] | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      ret.enableBsm = 0x3BA in fingerprint[0]  # SWA_1 | 
					 | 
					 | 
					 | 
					      ret.enableBsm = 0x3BA in fingerprint[0]  # SWA_1 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      if 0x440 in fingerprint[0] or use_off_car_defaults:  # Getriebe_1 | 
					 | 
					 | 
					 | 
					      if 0x440 in fingerprint[0] or docs:  # Getriebe_1 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        ret.transmissionType = TransmissionType.automatic | 
					 | 
					 | 
					 | 
					        ret.transmissionType = TransmissionType.automatic | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      else: | 
					 | 
					 | 
					 | 
					      else: | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        ret.transmissionType = TransmissionType.manual | 
					 | 
					 | 
					 | 
					        ret.transmissionType = TransmissionType.manual | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -55,7 +53,7 @@ class CarInterface(CarInterfaceBase): | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      ret.safetyConfigs = [get_safety_config(car.CarParams.SafetyModel.volkswagen)] | 
					 | 
					 | 
					 | 
					      ret.safetyConfigs = [get_safety_config(car.CarParams.SafetyModel.volkswagen)] | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      ret.enableBsm = 0x30F in fingerprint[0]  # SWA_01 | 
					 | 
					 | 
					 | 
					      ret.enableBsm = 0x30F in fingerprint[0]  # SWA_01 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      if 0xAD in fingerprint[0] or use_off_car_defaults:  # Getriebe_11 | 
					 | 
					 | 
					 | 
					      if 0xAD in fingerprint[0] or docs:  # Getriebe_11 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        ret.transmissionType = TransmissionType.automatic | 
					 | 
					 | 
					 | 
					        ret.transmissionType = TransmissionType.automatic | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      elif 0x187 in fingerprint[0]:  # EV_Gearshift | 
					 | 
					 | 
					 | 
					      elif 0x187 in fingerprint[0]:  # EV_Gearshift | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        ret.transmissionType = TransmissionType.direct | 
					 | 
					 | 
					 | 
					        ret.transmissionType = TransmissionType.direct | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -80,7 +78,7 @@ class CarInterface(CarInterfaceBase): | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    # Global longitudinal tuning defaults, can be overridden per-vehicle | 
					 | 
					 | 
					 | 
					    # Global longitudinal tuning defaults, can be overridden per-vehicle | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    ret.experimentalLongitudinalAvailable = ret.networkLocation == NetworkLocation.gateway or use_off_car_defaults | 
					 | 
					 | 
					 | 
					    ret.experimentalLongitudinalAvailable = ret.networkLocation == NetworkLocation.gateway or docs | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    if experimental_long: | 
					 | 
					 | 
					 | 
					    if experimental_long: | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      # Proof-of-concept, prep for E2E only. No radar points available. Panda ALLOW_DEBUG firmware required. | 
					 | 
					 | 
					 | 
					      # Proof-of-concept, prep for E2E only. No radar points available. Panda ALLOW_DEBUG firmware required. | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      ret.openpilotLongitudinalControl = True | 
					 | 
					 | 
					 | 
					      ret.openpilotLongitudinalControl = True | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |