@ -13,6 +13,7 @@ import psutil 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					import  cereal . messaging  as  messaging  
					 
					 
					 
					import  cereal . messaging  as  messaging  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					from  cereal  import  log  
					 
					 
					 
					from  cereal  import  log  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					from  cereal . services  import  SERVICE_LIST  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					from  openpilot . common . dict_helpers  import  strip_deprecated_keys  
					 
					 
					 
					from  openpilot . common . dict_helpers  import  strip_deprecated_keys  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					from  openpilot . common . time  import  MIN_DATE  
					 
					 
					 
					from  openpilot . common . time  import  MIN_DATE  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					from  openpilot . common . filter_simple  import  FirstOrderFilter  
					 
					 
					 
					from  openpilot . common . filter_simple  import  FirstOrderFilter  
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -33,7 +34,7 @@ NetworkStrength = log.DeviceState.NetworkStrength 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					CURRENT_TAU  =  15.    # 15s time constant  
					 
					 
					 
					CURRENT_TAU  =  15.    # 15s time constant  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					TEMP_TAU  =  5.    # 5s time constant  
					 
					 
					 
					TEMP_TAU  =  5.    # 5s time constant  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					DISCONNECT_TIMEOUT  =  5.   # wait 5 seconds before going offroad after disconnect so you get an alert  
					 
					 
					 
					DISCONNECT_TIMEOUT  =  5.   # wait 5 seconds before going offroad after disconnect so you get an alert  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					PANDA_STATES_TIMEOUT  =  int ( 1000  *  1.5  *  DT_TRML )   # 1.5x the expected pandaState frequency  
					 
					 
					 
					PANDA_STATES_TIMEOUT  =  round ( 1000  /  SERVICE_LIST [ ' pandaStates ' ] . frequency  *  1.5 )   # 1.5x the expected pandaState frequency  
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					ThermalBand  =  namedtuple ( " ThermalBand " ,  [ ' min_temp ' ,  ' max_temp ' ] )  
					 
					 
					 
					ThermalBand  =  namedtuple ( " ThermalBand " ,  [ ' min_temp ' ,  ' max_temp ' ] )  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					HardwareState  =  namedtuple ( " HardwareState " ,  [ ' network_type ' ,  ' network_info ' ,  ' network_strength ' ,  ' network_stats ' ,  
					 
					 
					 
					HardwareState  =  namedtuple ( " HardwareState " ,  [ ' network_type ' ,  ' network_info ' ,  ' network_strength ' ,  ' network_stats ' ,  
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -210,6 +211,10 @@ def thermald_thread(end_event, hw_queue) -> None: 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					  while  not  end_event . is_set ( ) :   
					 
					 
					 
					  while  not  end_event . is_set ( ) :   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    sm . update ( PANDA_STATES_TIMEOUT )   
					 
					 
					 
					    sm . update ( PANDA_STATES_TIMEOUT )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    # Run at 2Hz   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    if  sm . frame  %  round ( SERVICE_LIST [ ' pandaStates ' ] . frequency  *  DT_TRML )  !=  0 :   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					      continue   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    pandaStates  =  sm [ ' pandaStates ' ]   
					 
					 
					 
					    pandaStates  =  sm [ ' pandaStates ' ]   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    peripheralState  =  sm [ ' peripheralState ' ]   
					 
					 
					 
					    peripheralState  =  sm [ ' peripheralState ' ]   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    peripheral_panda_present  =  peripheralState . pandaType  !=  log . PandaState . PandaType . unknown   
					 
					 
					 
					    peripheral_panda_present  =  peripheralState . pandaType  !=  log . PandaState . PandaType . unknown