@ -131,26 +131,7 @@ class CarController: 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					          self . accel_last  =  accel   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      else :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        # button presses   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( self . frame  -  self . last_button_frame )  *  DT_CTRL  >  0.25 :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					          # cruise cancel   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					          if  CC . cruiseControl . cancel :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if  self . CP . flags  &  HyundaiFlags . CANFD_ALT_BUTTONS :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					              can_sends . append ( hyundaicanfd . create_acc_cancel ( self . packer ,  self . CP ,  self . CAN ,  CS . cruise_info ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					              self . last_button_frame  =  self . frame   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            else :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					              for  _  in  range ( 20 ) :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                can_sends . append ( hyundaicanfd . create_buttons ( self . packer ,  self . CP ,  self . CAN ,  CS . buttons_counter + 1 ,  Buttons . CANCEL ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					              self . last_button_frame  =  self . frame   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					          # cruise standstill resume   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					          elif  CC . cruiseControl . resume :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if  self . CP . flags  &  HyundaiFlags . CANFD_ALT_BUTTONS :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					              # TODO: resume for alt button cars   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					              pass   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            else :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					              for  _  in  range ( 20 ) :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                can_sends . append ( hyundaicanfd . create_buttons ( self . packer ,  self . CP ,  self . CAN ,  CS . buttons_counter + 1 ,  Buttons . RES_ACCEL ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					              self . last_button_frame  =  self . frame   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        can_sends . extend ( self . create_button_messages ( CC ,  CS ,  use_clu11 = False ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    else :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      can_sends . append ( hyundaican . create_lkas11 ( self . packer ,  self . frame ,  self . car_fingerprint ,  apply_steer ,  apply_steer_req ,   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                                torque_fault ,  CS . lkas11 ,  sys_warning ,  sys_state ,  CC . enabled ,   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -158,15 +139,7 @@ class CarController: 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                                left_lane_warning ,  right_lane_warning ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      if  not  self . CP . openpilotLongitudinalControl :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  CC . cruiseControl . cancel :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					          can_sends . append ( hyundaican . create_clu11 ( self . packer ,  self . frame ,  CS . clu11 ,  Buttons . CANCEL ,  self . CP . carFingerprint ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        elif  CC . cruiseControl . resume :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					          # send resume at a max freq of 10Hz   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					          if  ( self . frame  -  self . last_button_frame )  *  DT_CTRL  >  0.1 :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            # send 25 messages at a time to increases the likelihood of resume being accepted   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            can_sends . extend ( [ hyundaican . create_clu11 ( self . packer ,  self . frame ,  CS . clu11 ,  Buttons . RES_ACCEL ,  self . CP . carFingerprint ) ]  *  25 )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if  ( self . frame  -  self . last_button_frame )  *  DT_CTRL  > =  0.15 :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					              self . last_button_frame  =  self . frame   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        can_sends . extend ( self . create_button_messages ( CC ,  CS ,  use_clu11 = True ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      if  self . frame  %  2  ==  0  and  self . CP . openpilotLongitudinalControl :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        # TODO: unclear if this is needed   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -195,3 +168,39 @@ class CarController: 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    self . frame  + =  1   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    return  new_actuators ,  can_sends   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  def  create_button_messages ( self ,  CC :  car . CarControl ,  CS :  car . CarState ,  use_clu11 :  bool ) :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    can_sends  =  [ ]   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  use_clu11 :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      if  CC . cruiseControl . cancel :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        can_sends . append ( hyundaican . create_clu11 ( self . packer ,  self . frame ,  CS . clu11 ,  Buttons . CANCEL ,  self . CP . carFingerprint ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      elif  CC . cruiseControl . resume :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        # send resume at a max freq of 10Hz   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( self . frame  -  self . last_button_frame )  *  DT_CTRL  >  0.1 :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					          # send 25 messages at a time to increases the likelihood of resume being accepted   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					          can_sends . extend ( [ hyundaican . create_clu11 ( self . packer ,  self . frame ,  CS . clu11 ,  Buttons . RES_ACCEL ,  self . CP . carFingerprint ) ]  *  25 )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					          if  ( self . frame  -  self . last_button_frame )  *  DT_CTRL  > =  0.15 :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            self . last_button_frame  =  self . frame   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    else :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      if  ( self . frame  -  self . last_button_frame )  *  DT_CTRL  >  0.25 :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        # cruise cancel   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  CC . cruiseControl . cancel :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					          if  self . CP . flags  &  HyundaiFlags . CANFD_ALT_BUTTONS :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            can_sends . append ( hyundaicanfd . create_acc_cancel ( self . packer ,  self . CP ,  self . CAN ,  CS . cruise_info ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            self . last_button_frame  =  self . frame   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					          else :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            for  _  in  range ( 20 ) :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					              can_sends . append ( hyundaicanfd . create_buttons ( self . packer ,  self . CP ,  self . CAN ,  CS . buttons_counter + 1 ,  Buttons . CANCEL ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            self . last_button_frame  =  self . frame   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        # cruise standstill resume   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        elif  CC . cruiseControl . resume :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					          if  self . CP . flags  &  HyundaiFlags . CANFD_ALT_BUTTONS :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            # TODO: resume for alt button cars   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            pass   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					          else :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            for  _  in  range ( 20 ) :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					              can_sends . append ( hyundaicanfd . create_buttons ( self . packer ,  self . CP ,  self . CAN ,  CS . buttons_counter + 1 ,  Buttons . RES_ACCEL ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            self . last_button_frame  =  self . frame   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    return  can_sends