| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -6,7 +6,6 @@ ExitHandler do_exit; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					struct LoggerdState { | 
					 | 
					 | 
					 | 
					struct LoggerdState { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  LoggerState logger = {}; | 
					 | 
					 | 
					 | 
					  LoggerState logger = {}; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  char segment_path[4096]; | 
					 | 
					 | 
					 | 
					  char segment_path[4096]; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  std::mutex rotate_lock; | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  std::atomic<int> rotate_segment; | 
					 | 
					 | 
					 | 
					  std::atomic<int> rotate_segment; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  std::atomic<double> last_camera_seen_tms; | 
					 | 
					 | 
					 | 
					  std::atomic<double> last_camera_seen_tms; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  std::atomic<int> ready_to_rotate;  // count of encoders ready to rotate
 | 
					 | 
					 | 
					 | 
					  std::atomic<int> ready_to_rotate;  // count of encoders ready to rotate
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -15,15 +14,12 @@ struct LoggerdState { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}; | 
					 | 
					 | 
					 | 
					}; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					void logger_rotate(LoggerdState *s) { | 
					 | 
					 | 
					 | 
					void logger_rotate(LoggerdState *s) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  { | 
					 | 
					 | 
					 | 
					  int segment = -1; | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    std::unique_lock lk(s->rotate_lock); | 
					 | 
					 | 
					 | 
					  int err = logger_next(&s->logger, LOG_ROOT.c_str(), s->segment_path, sizeof(s->segment_path), &segment); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    int segment = -1; | 
					 | 
					 | 
					 | 
					  assert(err == 0); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    int err = logger_next(&s->logger, LOG_ROOT.c_str(), s->segment_path, sizeof(s->segment_path), &segment); | 
					 | 
					 | 
					 | 
					  s->rotate_segment = segment; | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    assert(err == 0); | 
					 | 
					 | 
					 | 
					  s->ready_to_rotate = 0; | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    s->rotate_segment = segment; | 
					 | 
					 | 
					 | 
					  s->last_rotate_tms = millis_since_boot(); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    s->ready_to_rotate = 0; | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    s->last_rotate_tms = millis_since_boot(); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  } | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  LOGW((s->logger.part == 0) ? "logging to %s" : "rotated to %s", s->segment_path); | 
					 | 
					 | 
					 | 
					  LOGW((s->logger.part == 0) ? "logging to %s" : "rotated to %s", s->segment_path); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					} | 
					 | 
					 | 
					 | 
					} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |