You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							49 lines
						
					
					
						
							2.3 KiB
						
					
					
				
			
		
		
	
	
							49 lines
						
					
					
						
							2.3 KiB
						
					
					
				| # CAN controls for MQB platform Volkswagen, Audi, Skoda and SEAT.
 | |
| # PQ35/PQ46/NMS, and any future MLB, to come later.
 | |
| 
 | |
| def create_mqb_steering_control(packer, bus, apply_steer, idx, lkas_enabled):
 | |
|   values = {
 | |
|     "SET_ME_0X3": 0x3,
 | |
|     "Assist_Torque": abs(apply_steer),
 | |
|     "Assist_Requested": lkas_enabled,
 | |
|     "Assist_VZ": 1 if apply_steer < 0 else 0,
 | |
|     "HCA_Available": 1,
 | |
|     "HCA_Standby": not lkas_enabled,
 | |
|     "HCA_Active": lkas_enabled,
 | |
|     "SET_ME_0XFE": 0xFE,
 | |
|     "SET_ME_0X07": 0x07,
 | |
|   }
 | |
|   return packer.make_can_msg("HCA_01", bus, values, idx)
 | |
| 
 | |
| def create_mqb_hud_control(packer, bus, enabled, steering_pressed, hud_alert, left_lane_visible, right_lane_visible,
 | |
|                            ldw_stock_values, left_lane_depart, right_lane_depart):
 | |
|   # Lane color reference:
 | |
|   # 0 (LKAS disabled) - off
 | |
|   # 1 (LKAS enabled, no lane detected) - dark gray
 | |
|   # 2 (LKAS enabled, lane detected) - light gray on VW, green or white on Audi depending on year or virtual cockpit.  On a color MFD on a 2015 A3 TDI it is white, virtual cockpit on a 2018 A3 e-Tron its green.
 | |
|   # 3 (LKAS enabled, lane departure detected) - white on VW, red on Audi
 | |
|   values = ldw_stock_values.copy()
 | |
|   values.update({
 | |
|     "LDW_Status_LED_gelb": 1 if enabled and steering_pressed else 0,
 | |
|     "LDW_Status_LED_gruen": 1 if enabled and not steering_pressed else 0,
 | |
|     "LDW_Lernmodus_links": 3 if left_lane_depart else 1 + left_lane_visible,
 | |
|     "LDW_Lernmodus_rechts": 3 if right_lane_depart else 1 + right_lane_visible,
 | |
|     "LDW_Texte": hud_alert,
 | |
|   })
 | |
|   return packer.make_can_msg("LDW_02", bus, values)
 | |
| 
 | |
| def create_mqb_acc_buttons_control(packer, bus, buttonStatesToSend, CS, idx):
 | |
|   values = {
 | |
|     "GRA_Hauptschalter": CS.graHauptschalter,
 | |
|     "GRA_Abbrechen": buttonStatesToSend["cancel"],
 | |
|     "GRA_Tip_Setzen": buttonStatesToSend["setCruise"],
 | |
|     "GRA_Tip_Hoch": buttonStatesToSend["accelCruise"],
 | |
|     "GRA_Tip_Runter": buttonStatesToSend["decelCruise"],
 | |
|     "GRA_Tip_Wiederaufnahme": buttonStatesToSend["resumeCruise"],
 | |
|     "GRA_Verstellung_Zeitluecke": 3 if buttonStatesToSend["gapAdjustCruise"] else 0,
 | |
|     "GRA_Typ_Hauptschalter": CS.graTypHauptschalter,
 | |
|     "GRA_Codierung": 2,
 | |
|     "GRA_Tip_Stufe_2": CS.graTipStufe2,
 | |
|     "GRA_ButtonTypeInfo": CS.graButtonTypeInfo
 | |
|   }
 | |
|   return packer.make_can_msg("GRA_ACC_01", bus, values, idx)
 | |
| 
 |