| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -211,6 +211,7 @@ def thermald_thread(end_event, hw_queue): | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    pandaStates = sm['pandaStates'] | 
					 | 
					 | 
					 | 
					    pandaStates = sm['pandaStates'] | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    peripheralState = sm['peripheralState'] | 
					 | 
					 | 
					 | 
					    peripheralState = sm['peripheralState'] | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    peripheral_panda_present = peripheralState.pandaType != log.PandaState.PandaType.unknown | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    msg = read_thermal(thermal_config) | 
					 | 
					 | 
					 | 
					    msg = read_thermal(thermal_config) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -224,7 +225,7 @@ def thermald_thread(end_event, hw_queue): | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      in_car = pandaState.harnessStatus != log.PandaState.HarnessStatus.notConnected | 
					 | 
					 | 
					 | 
					      in_car = pandaState.harnessStatus != log.PandaState.HarnessStatus.notConnected | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      # Setup fan handler on first connect to panda | 
					 | 
					 | 
					 | 
					      # Setup fan handler on first connect to panda | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      if fan_controller is None and peripheralState.pandaType != log.PandaState.PandaType.unknown: | 
					 | 
					 | 
					 | 
					      if fan_controller is None and peripheral_panda_present: | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        if TICI: | 
					 | 
					 | 
					 | 
					        if TICI: | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          fan_controller = TiciFanController() | 
					 | 
					 | 
					 | 
					          fan_controller = TiciFanController() | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -289,7 +290,7 @@ def thermald_thread(end_event, hw_queue): | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    # Ensure date/time are valid | 
					 | 
					 | 
					 | 
					    # Ensure date/time are valid | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    now = datetime.datetime.utcnow() | 
					 | 
					 | 
					 | 
					    now = datetime.datetime.utcnow() | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    startup_conditions["time_valid"] = now > MIN_DATE | 
					 | 
					 | 
					 | 
					    startup_conditions["time_valid"] = now > MIN_DATE | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    set_offroad_alert_if_changed("Offroad_InvalidTime", (not startup_conditions["time_valid"])) | 
					 | 
					 | 
					 | 
					    set_offroad_alert_if_changed("Offroad_InvalidTime", (not startup_conditions["time_valid"]) and peripheral_panda_present) | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    startup_conditions["up_to_date"] = params.get("Offroad_ConnectivityNeeded") is None or params.get_bool("DisableUpdates") or params.get_bool("SnoozeUpdate") | 
					 | 
					 | 
					 | 
					    startup_conditions["up_to_date"] = params.get("Offroad_ConnectivityNeeded") is None or params.get_bool("DisableUpdates") or params.get_bool("SnoozeUpdate") | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    startup_conditions["not_uninstalling"] = not params.get_bool("DoUninstall") | 
					 | 
					 | 
					 | 
					    startup_conditions["not_uninstalling"] = not params.get_bool("DoUninstall") | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |