|  |  |  | @ -1,7 +1,9 @@ | 
			
		
	
		
			
				
					|  |  |  |  | from cereal import car | 
			
		
	
		
			
				
					|  |  |  |  | from selfdrive.car.volkswagen.values import CAR, CANBUS, NetworkLocation, TransmissionType, GearShifter | 
			
		
	
		
			
				
					|  |  |  |  | from selfdrive.car import STD_CARGO_KG, scale_rot_inertia, scale_tire_stiffness, gen_empty_fingerprint, get_safety_config | 
			
		
	
		
			
				
					|  |  |  |  | from selfdrive.car import STD_CARGO_KG, create_button_enable_events, scale_rot_inertia, scale_tire_stiffness, \ | 
			
		
	
		
			
				
					|  |  |  |  |                           gen_empty_fingerprint, get_safety_config | 
			
		
	
		
			
				
					|  |  |  |  | from selfdrive.car.interfaces import CarInterfaceBase | 
			
		
	
		
			
				
					|  |  |  |  | from selfdrive.car.volkswagen.values import CAR, CANBUS, NetworkLocation, TransmissionType, GearShifter | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | EventName = car.CarEvent.EventName | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -52,6 +54,13 @@ class CarInterface(CarInterfaceBase): | 
			
		
	
		
			
				
					|  |  |  |  |     ret.lateralTuning.pid.kpV = [0.6] | 
			
		
	
		
			
				
					|  |  |  |  |     ret.lateralTuning.pid.kiV = [0.2] | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     # Global longitudinal tuning defaults, can be overridden per-vehicle | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     ret.pcmCruise = not ret.openpilotLongitudinalControl | 
			
		
	
		
			
				
					|  |  |  |  |     ret.longitudinalActuatorDelayUpperBound = 0.5  # s | 
			
		
	
		
			
				
					|  |  |  |  |     ret.longitudinalTuning.kpV = [0.1] | 
			
		
	
		
			
				
					|  |  |  |  |     ret.longitudinalTuning.kiV = [0.0] | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     # Per-chassis tuning values, override tuning defaults here if desired | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     if candidate == CAR.ARTEON_MK1: | 
			
		
	
	
		
			
				
					|  |  |  | @ -160,7 +169,8 @@ class CarInterface(CarInterfaceBase): | 
			
		
	
		
			
				
					|  |  |  |  |   def _update(self, c): | 
			
		
	
		
			
				
					|  |  |  |  |     ret = self.CS.update(self.cp, self.cp_cam, self.cp_ext, self.CP.transmissionType) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     events = self.create_common_events(ret, extra_gears=[GearShifter.eco, GearShifter.sport, GearShifter.manumatic]) | 
			
		
	
		
			
				
					|  |  |  |  |     events = self.create_common_events(ret, extra_gears=[GearShifter.eco, GearShifter.sport, GearShifter.manumatic], | 
			
		
	
		
			
				
					|  |  |  |  |                                        pcm_enable=not self.CS.CP.openpilotLongitudinalControl) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     # Low speed steer alert hysteresis logic | 
			
		
	
		
			
				
					|  |  |  |  |     if self.CP.minSteerSpeed > 0. and ret.vEgo < (self.CP.minSteerSpeed + 1.): | 
			
		
	
	
		
			
				
					|  |  |  | @ -170,6 +180,13 @@ class CarInterface(CarInterfaceBase): | 
			
		
	
		
			
				
					|  |  |  |  |     if self.low_speed_alert: | 
			
		
	
		
			
				
					|  |  |  |  |       events.add(EventName.belowSteerSpeed) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     if self.CS.CP.openpilotLongitudinalControl: | 
			
		
	
		
			
				
					|  |  |  |  |       if ret.vEgo < self.CP.minEnableSpeed + 2.: | 
			
		
	
		
			
				
					|  |  |  |  |         events.add(EventName.belowEngageSpeed) | 
			
		
	
		
			
				
					|  |  |  |  |       if c.enabled and ret.vEgo < self.CP.minEnableSpeed: | 
			
		
	
		
			
				
					|  |  |  |  |         events.add(EventName.speedTooLow) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     events.events.extend(create_button_enable_events(ret.buttonEvents, pcm_cruise=self.CP.pcmCruise)) | 
			
		
	
		
			
				
					|  |  |  |  |     ret.events = events.to_msg() | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     return ret | 
			
		
	
	
		
			
				
					|  |  |  | 
 |