11#!/usr/bin/env python3
2+ import logging
23import threading
34import time
45from enum import IntFlag
1314from openpilot .tools .replay .seg_mgr import SegmentManager , ReplayFlags
1415from openpilot .tools .replay .timeline import Timeline , FindFlag
1516
17+ log = logging .getLogger ("replay" )
18+
1619DEMO_ROUTE = "a2a0ccea32023010|2023-07-27--13-01-19"
1720
1821
@@ -66,10 +69,10 @@ def __init__(self, route: str, allow: list[str] = None, block: list[str] = None,
6669
6770 def __del__ (self ):
6871 if hasattr (self , '_stream_thread' ) and self ._stream_thread is not None and self ._stream_thread .is_alive ():
69- print ("shutdown: in progress..." )
72+ log . info ("shutdown: in progress..." )
7073 self ._interrupt_stream (lambda : setattr (self , '_exit' , True ) or False )
7174 self ._stream_thread .join ()
72- print ("shutdown: done" )
75+ log . info ("shutdown: done" )
7376
7477 def _setup_services (self , allow : list [str ], block : list [str ]) -> None :
7578 active_services = []
@@ -83,7 +86,7 @@ def _setup_services(self, allow: list[str], block: list[str]) -> None:
8386 else :
8487 self ._sockets [name ] = False
8588
86- print (f"active services: { ', ' .join (active_services )} " )
89+ log . info (f"active services: { ', ' .join (active_services )} " )
8790 if not self ._sm :
8891 self ._pm = messaging .PubMaster (active_services )
8992
@@ -159,7 +162,7 @@ def install_event_filter(self, filter_fn: Callable) -> None:
159162 self ._event_filter = filter_fn
160163
161164 def load (self ) -> bool :
162- print (f"loading route { self ._seg_mgr ._route_name } " )
165+ log . info (f"loading route { self ._seg_mgr ._route_name } " )
163166 if not self ._seg_mgr .load ():
164167 return False
165168
@@ -175,7 +178,7 @@ def start(self, seconds: int = 0) -> None:
175178 def pause (self , pause : bool ) -> None :
176179 if self ._user_paused != pause :
177180 def update ():
178- print (f"{ 'paused...' if pause else 'resuming' } at { self .current_seconds :.2f} s" )
181+ log . info (f"{ 'paused...' if pause else 'resuming' } at { self .current_seconds :.2f} s" )
179182 self ._user_paused = pause
180183 return not pause
181184 self ._interrupt_stream (update )
@@ -191,10 +194,10 @@ def seek_to(self, seconds: float, relative: bool) -> None:
191194 target_segment = int (target_time / 60 )
192195
193196 if not self ._seg_mgr .has_segment (target_segment ):
194- print (f"Invalid seek to { target_time :.2f} s (segment { target_segment } )" )
197+ log . warning (f"Invalid seek to { target_time :.2f} s (segment { target_segment } )" )
195198 return
196199
197- print (f"Seeking to { int (target_time )} s, segment { target_segment } " )
200+ log . info (f"Seeking to { int (target_time )} s, segment { target_segment } " )
198201 if self .on_seeking :
199202 self .on_seeking (target_time )
200203
@@ -272,7 +275,7 @@ def _start_stream(self, segment) -> None:
272275 params .put ("CarParams" , car_params_bytes )
273276 params .put ("CarParamsPersistent" , car_params_bytes )
274277 except Exception as e :
275- print (f"failed to write CarParams: { e } " )
278+ log . warning (f"failed to write CarParams: { e } " )
276279 break
277280
278281 # Start camera server
@@ -314,7 +317,7 @@ def _stream_thread_fn(self) -> None:
314317 first_idx = i
315318 break
316319 else :
317- print ("waiting for events..." )
320+ log . info ("waiting for events..." )
318321 self ._events_ready = False
319322 continue
320323
@@ -328,7 +331,7 @@ def _stream_thread_fn(self) -> None:
328331 if last_idx >= len (events ) and not self .has_flag (ReplayFlags .NO_LOOP ):
329332 segments = list (self ._seg_mgr ._segments .keys ())
330333 if segments and event_data .is_segment_loaded (max (segments )):
331- print ("reaches the end of route, restart from beginning" )
334+ log . info ("reaches the end of route, restart from beginning" )
332335 self ._stream_lock .release ()
333336 self .seek_to (self ._min_seconds , relative = False )
334337 self ._stream_lock .acquire ()
@@ -395,7 +398,7 @@ def _publish_message(self, evt) -> None:
395398 msg_bytes = evt .as_builder ().to_bytes ()
396399 self ._pm .send (which , msg_bytes )
397400 except Exception as e :
398- print (f"stop publishing { which } due to error: { e } " )
401+ log . warning (f"stop publishing { which } due to error: { e } " )
399402 self ._sockets [which ] = False
400403
401404 def _publish_frame (self , evt , which : str ) -> None :
0 commit comments