@ -12,7 +12,7 @@ def dmonitoringd_thread(sm=None, pm=None): 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    pm  =  messaging . PubMaster ( [ ' dMonitoringState ' ] )   
					 
					 
					 
					    pm  =  messaging . PubMaster ( [ ' dMonitoringState ' ] )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					  if  sm  is  None :   
					 
					 
					 
					  if  sm  is  None :   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    sm  =  messaging . SubMaster ( [ ' driverState ' ,  ' liveCalibration ' ,  ' carState ' ,  ' model ' ] ,  poll = [ ' driverState ' ] )   
					 
					 
					 
					    sm  =  messaging . SubMaster ( [ ' driverState ' ,  ' liveCalibration ' ,  ' carState ' ,  ' controlsState ' ,  '  model' ] ,  poll = [ ' driverState ' ] )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					  driver_status  =  DriverStatus ( )   
					 
					 
					 
					  driver_status  =  DriverStatus ( )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					  driver_status . is_rhd_region  =  Params ( ) . get ( " IsRHD " )  ==  b " 1 "   
					 
					 
					 
					  driver_status . is_rhd_region  =  Params ( ) . get ( " IsRHD " )  ==  b " 1 "   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -22,7 +22,6 @@ def dmonitoringd_thread(sm=None, pm=None): 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					  sm [ ' liveCalibration ' ] . calStatus  =  Calibration . INVALID   
					 
					 
					 
					  sm [ ' liveCalibration ' ] . calStatus  =  Calibration . INVALID   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					  sm [ ' liveCalibration ' ] . rpyCalib  =  [ 0 ,  0 ,  0 ]   
					 
					 
					 
					  sm [ ' liveCalibration ' ] . rpyCalib  =  [ 0 ,  0 ,  0 ]   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					  sm [ ' carState ' ] . vEgo  =  0.   
					 
					 
					 
					  sm [ ' carState ' ] . vEgo  =  0.   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					  sm [ ' carState ' ] . cruiseState . enabled  =  False   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					  sm [ ' carState ' ] . cruiseState . speed  =  0.   
					 
					 
					 
					  sm [ ' carState ' ] . cruiseState . speed  =  0.   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					  sm [ ' carState ' ] . buttonEvents  =  [ ]   
					 
					 
					 
					  sm [ ' carState ' ] . buttonEvents  =  [ ]   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					  sm [ ' carState ' ] . steeringPressed  =  False   
					 
					 
					 
					  sm [ ' carState ' ] . steeringPressed  =  False   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -47,7 +46,7 @@ def dmonitoringd_thread(sm=None, pm=None): 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                        sm [ ' carState ' ] . steeringPressed  or  \  
					 
					 
					 
					                        sm [ ' carState ' ] . steeringPressed  or  \  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                        sm [ ' carState ' ] . gasPressed   
					 
					 
					 
					                        sm [ ' carState ' ] . gasPressed   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					      if  driver_engaged :   
					 
					 
					 
					      if  driver_engaged :   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        driver_status . update ( Events ( ) ,  True ,  sm [ ' car State ' ] . cruiseState . enabled ,  sm [ ' carState ' ] . standstill )   
					 
					 
					 
					        driver_status . update ( Events ( ) ,  True ,  sm [ ' controls State ' ] . enabled ,  sm [ ' carState ' ] . standstill )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					      v_cruise_last  =  v_cruise   
					 
					 
					 
					      v_cruise_last  =  v_cruise   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    if  sm . updated [ ' model ' ] :   
					 
					 
					 
					    if  sm . updated [ ' model ' ] :   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -55,14 +54,14 @@ def dmonitoringd_thread(sm=None, pm=None): 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    # Get data from dmonitoringmodeld   
					 
					 
					 
					    # Get data from dmonitoringmodeld   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    events  =  Events ( )   
					 
					 
					 
					    events  =  Events ( )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    driver_status . get_pose ( sm [ ' driverState ' ] ,  sm [ ' liveCalibration ' ] . rpyCalib ,  sm [ ' carState ' ] . vEgo ,  sm [ ' car State ' ] . cruiseState . enabled )   
					 
					 
					 
					    driver_status . get_pose ( sm [ ' driverState ' ] ,  sm [ ' liveCalibration ' ] . rpyCalib ,  sm [ ' carState ' ] . vEgo ,  sm [ ' controls State ' ] . enabled )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    # Block engaging after max number of distrations   
					 
					 
					 
					    # Block engaging after max number of distrations   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    if  driver_status . terminal_alert_cnt  > =  MAX_TERMINAL_ALERTS  or  driver_status . terminal_time  > =  MAX_TERMINAL_DURATION :   
					 
					 
					 
					    if  driver_status . terminal_alert_cnt  > =  MAX_TERMINAL_ALERTS  or  driver_status . terminal_time  > =  MAX_TERMINAL_DURATION :   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					      events . add ( car . CarEvent . EventName . tooDistracted )   
					 
					 
					 
					      events . add ( car . CarEvent . EventName . tooDistracted )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    # Update events from driver state   
					 
					 
					 
					    # Update events from driver state   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    driver_status . update ( events ,  driver_engaged ,  sm [ ' car State ' ] . cruiseState . enabled ,  sm [ ' carState ' ] . standstill )   
					 
					 
					 
					    driver_status . update ( events ,  driver_engaged ,  sm [ ' controls State ' ] . enabled ,  sm [ ' carState ' ] . standstill )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    # build dMonitoringState packet   
					 
					 
					 
					    # build dMonitoringState packet   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    dat  =  messaging . new_message ( ' dMonitoringState ' )   
					 
					 
					 
					    dat  =  messaging . new_message ( ' dMonitoringState ' )