@ -4,7 +4,7 @@ from panda import Panda 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					from  common . conversions  import  Conversions  as  CV  
					 
					 
					 
					from  common . conversions  import  Conversions  as  CV  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					from  common . numpy_fast  import  interp  
					 
					 
					 
					from  common . numpy_fast  import  interp  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					from  selfdrive . car . honda . values  import  CarControllerParams ,  CruiseButtons ,  HondaFlags ,  CAR ,  HONDA_BOSCH ,  HONDA_NIDEC_ALT_SCM_MESSAGES ,  HONDA_BOSCH_ALT_BRAKE_SIGNAL  
					 
					 
					 
					from  selfdrive . car . honda . values  import  CarControllerParams ,  CruiseButtons ,  HondaFlags ,  CAR ,  HONDA_BOSCH ,  HONDA_NIDEC_ALT_SCM_MESSAGES ,  HONDA_BOSCH_ALT_BRAKE_SIGNAL  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					from  selfdrive . car  import  STD_CARGO_KG ,  CivicParams ,  scale_rot_inertia ,  scale_tire_stiffness ,  gen_empty_fingerprint ,  get_safety_config  
					 
					 
					 
					from  selfdrive . car  import  STD_CARGO_KG ,  CivicParams ,  create_button_enable_events ,  create_button_event ,  scale_rot_inertia ,  scale_tire_stiffness ,  gen_empty_fingerprint ,  get_safety_config  
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					from  selfdrive . car . interfaces  import  CarInterfaceBase  
					 
					 
					 
					from  selfdrive . car . interfaces  import  CarInterfaceBase  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					from  selfdrive . car . disable_ecu  import  disable_ecu  
					 
					 
					 
					from  selfdrive . car . disable_ecu  import  disable_ecu  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -12,6 +12,8 @@ from selfdrive.car.disable_ecu import disable_ecu 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					ButtonType  =  car . CarState . ButtonEvent . Type  
					 
					 
					 
					ButtonType  =  car . CarState . ButtonEvent . Type  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					EventName  =  car . CarEvent . EventName  
					 
					 
					 
					EventName  =  car . CarEvent . EventName  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					TransmissionType  =  car . CarParams . TransmissionType  
					 
					 
					 
					TransmissionType  =  car . CarParams . TransmissionType  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					BUTTONS_DICT  =  { CruiseButtons . RES_ACCEL :  ButtonType . accelCruise ,  CruiseButtons . DECEL_SET :  ButtonType . decelCruise ,  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                CruiseButtons . MAIN :  ButtonType . altButton3 ,  CruiseButtons . CANCEL :  ButtonType . cancel }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					class  CarInterface ( CarInterfaceBase ) :  
					 
					 
					 
					class  CarInterface ( CarInterfaceBase ) :  
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -334,37 +336,11 @@ class CarInterface(CarInterfaceBase): 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    buttonEvents  =  [ ]   
					 
					 
					 
					    buttonEvents  =  [ ]   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    if  self . CS . cruise_buttons  !=  self . CS . prev_cruise_buttons :   
					 
					 
					 
					    if  self . CS . cruise_buttons  !=  self . CS . prev_cruise_buttons :   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					      be  =  car . CarState . ButtonEvent . new_message ( )   
					 
					 
					 
					      buttonEvents . append ( create_button_event ( self . CS . cruise_buttons ,  self . CS . prev_cruise_buttons ,  BUTTONS_DICT ) )   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					      be . type  =  ButtonType . unknown   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					      if  self . CS . cruise_buttons  !=  0 :   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        be . pressed  =  True   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        but  =  self . CS . cruise_buttons   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					      else :   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        be . pressed  =  False   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        but  =  self . CS . prev_cruise_buttons   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					      if  but  ==  CruiseButtons . RES_ACCEL :   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        be . type  =  ButtonType . accelCruise   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					      elif  but  ==  CruiseButtons . DECEL_SET :   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        be . type  =  ButtonType . decelCruise   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					      elif  but  ==  CruiseButtons . CANCEL :   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        be . type  =  ButtonType . cancel   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					      elif  but  ==  CruiseButtons . MAIN :   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        be . type  =  ButtonType . altButton3   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					      buttonEvents . append ( be )   
					 
					 
					 
					 
				
			 
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    if  self . CS . cruise_setting  !=  self . CS . prev_cruise_setting :   
					 
					 
					 
					    if  self . CS . cruise_setting  !=  self . CS . prev_cruise_setting :   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					      be  =  car . CarState . ButtonEvent . new_message ( )   
					 
					 
					 
					      buttonEvents . append ( create_button_event ( self . CS . cruise_setting ,  self . CS . prev_cruise_setting ,  { 1 :  ButtonType . altButton1 } ) )   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					      be . type  =  ButtonType . unknown   
					 
					 
					 
					
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					      if  self . CS . cruise_setting  !=  0 :   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        be . pressed  =  True   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        but  =  self . CS . cruise_setting   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					      else :   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        be . pressed  =  False   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        but  =  self . CS . prev_cruise_setting   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					      if  but  ==  1 :   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        be . type  =  ButtonType . altButton1   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					      # TODO: more buttons?   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					      buttonEvents . append ( be )   
					 
					 
					 
					 
				
			 
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    ret . buttonEvents  =  buttonEvents   
					 
					 
					 
					    ret . buttonEvents  =  buttonEvents   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    # events   
					 
					 
					 
					    # events   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -391,16 +367,7 @@ class CarInterface(CarInterfaceBase): 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					      events . add ( EventName . manualRestart )   
					 
					 
					 
					      events . add ( EventName . manualRestart )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    # handle button presses   
					 
					 
					 
					    # handle button presses   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    for  b  in  ret . buttonEvents :   
					 
					 
					 
					    events . events . extend ( create_button_enable_events ( ret . buttonEvents ) )   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					      # do enable on both accel and decel buttons   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					      if  not  self . CP . pcmCruise :   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        if  b . type  in  ( ButtonType . accelCruise ,  ButtonType . decelCruise )  and  not  b . pressed :   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					          events . add ( EventName . buttonEnable )   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					      # do disable on button down   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					      if  b . type  ==  ButtonType . cancel  and  b . pressed :   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        events . add ( EventName . buttonCancel )   
					 
					 
					 
					 
				
			 
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ret . events  =  events . to_msg ( )   
					 
					 
					 
					    ret . events  =  events . to_msg ( )