|  |  |  | @ -1,36 +1,24 @@ | 
			
		
	
		
			
				
					|  |  |  |  | import copy | 
			
		
	
		
			
				
					|  |  |  |  | from cereal import car | 
			
		
	
		
			
				
					|  |  |  |  | from selfdrive.car.subaru.values import CAR | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | VisualAlert = car.CarControl.HUDControl.VisualAlert | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | def subaru_checksum(packer, values, addr): | 
			
		
	
		
			
				
					|  |  |  |  |   dat = packer.make_can_msg(addr, 0, values)[2] | 
			
		
	
		
			
				
					|  |  |  |  |   return (sum(dat[1:]) + (addr >> 8) + addr) & 0xff | 
			
		
	
		
			
				
					|  |  |  |  | def create_steering_control(packer, apply_steer, frame, steer_step): | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | def create_steering_control(packer, car_fingerprint, apply_steer, frame, steer_step): | 
			
		
	
		
			
				
					|  |  |  |  |   # counts from 0 to 15 then back to 0 + 16 for enable bit | 
			
		
	
		
			
				
					|  |  |  |  |   idx = ((frame // steer_step) % 16) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   if car_fingerprint == CAR.IMPREZA: | 
			
		
	
		
			
				
					|  |  |  |  |     #counts from 0 to 15 then back to 0 + 16 for enable bit | 
			
		
	
		
			
				
					|  |  |  |  |     idx = ((frame // steer_step) % 16) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     values = { | 
			
		
	
		
			
				
					|  |  |  |  |       "Counter": idx, | 
			
		
	
		
			
				
					|  |  |  |  |       "LKAS_Output": apply_steer, | 
			
		
	
		
			
				
					|  |  |  |  |       "LKAS_Request": 1 if apply_steer != 0 else 0, | 
			
		
	
		
			
				
					|  |  |  |  |       "SET_1": 1 | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  |     values["Checksum"] = subaru_checksum(packer, values, 0x122) | 
			
		
	
		
			
				
					|  |  |  |  |   values = { | 
			
		
	
		
			
				
					|  |  |  |  |     "Counter": idx, | 
			
		
	
		
			
				
					|  |  |  |  |     "LKAS_Output": apply_steer, | 
			
		
	
		
			
				
					|  |  |  |  |     "LKAS_Request": 1 if apply_steer != 0 else 0, | 
			
		
	
		
			
				
					|  |  |  |  |     "SET_1": 1 | 
			
		
	
		
			
				
					|  |  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   return packer.make_can_msg("ES_LKAS", 0, values) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | def create_steering_status(packer, car_fingerprint, apply_steer, frame, steer_step): | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   if car_fingerprint == CAR.IMPREZA: | 
			
		
	
		
			
				
					|  |  |  |  |     values = {} | 
			
		
	
		
			
				
					|  |  |  |  |     values["Checksum"] = subaru_checksum(packer, {}, 0x322) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   return packer.make_can_msg("ES_LKAS_State", 0, values) | 
			
		
	
		
			
				
					|  |  |  |  | def create_steering_status(packer, apply_steer, frame, steer_step): | 
			
		
	
		
			
				
					|  |  |  |  |   return packer.make_can_msg("ES_LKAS_State", 0, {}) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | def create_es_distance(packer, es_distance_msg, pcm_cancel_cmd): | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -38,8 +26,6 @@ def create_es_distance(packer, es_distance_msg, pcm_cancel_cmd): | 
			
		
	
		
			
				
					|  |  |  |  |   if pcm_cancel_cmd: | 
			
		
	
		
			
				
					|  |  |  |  |     values["Main"] = 1 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   values["Checksum"] = subaru_checksum(packer, values, 545) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   return packer.make_can_msg("ES_Distance", 0, values) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | def create_es_lkas(packer, es_lkas_msg, visual_alert, left_line, right_line): | 
			
		
	
	
		
			
				
					|  |  |  | @ -51,6 +37,4 @@ def create_es_lkas(packer, es_lkas_msg, visual_alert, left_line, right_line): | 
			
		
	
		
			
				
					|  |  |  |  |   values["LKAS_Left_Line_Visible"] = int(left_line) | 
			
		
	
		
			
				
					|  |  |  |  |   values["LKAS_Right_Line_Visible"] = int(right_line) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   values["Checksum"] = subaru_checksum(packer, values, 802) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   return packer.make_can_msg("ES_LKAS_State", 0, values) | 
			
		
	
	
		
			
				
					|  |  |  | 
 |