#!/usr/bin/env python3
import sys
import multiprocessing
import subprocess
from tempfile import NamedTemporaryFile
from tools . lib . route import Route
from tools . lib . logreader import LogReader
from selfdrive . test . process_replay . compare_logs import save_log
from tools . lib . url_file import URLFile
def load_segment ( segment_name ) :
print ( f " Loading { segment_name } " )
lr = LogReader ( segment_name )
r = [ d for d in lr if d . which ( ) not in [ ' can ' , ' sendcan ' ] ]
print ( f " done { segment_name } " )
return r
def juggle_file ( fn ) :
subprocess . call ( f " bin/plotjuggler -d { fn } " , shell = True )
# subprocess.call(f"/home/batman/PlotJuggler/build/bin/plotjuggler -d {fn}", shell=True)
def juggle_route ( route_name ) :
r = Route ( route_name )
all_data = [ ]
pool = multiprocessing . Pool ( 24 )
all_data = [ ]
for d in pool . map ( load_segment , r . log_paths ( ) ) :
all_data + = d
tempfile = NamedTemporaryFile ( suffix = ' .rlog ' )
save_log ( tempfile . name , all_data , compress = False )
del all_data
juggle_file ( tempfile . name )
def juggle_segment ( route_name , segment_nr ) :
r = Route ( route_name )
lp = r . log_paths ( ) [ segment_nr ]
if lp is None :
print ( " This segment does not exist, please try a different one " )
return
uf = URLFile ( lp )
juggle_file ( uf . name )
if __name__ == " __main__ " :
if len ( sys . argv ) == 2 :
juggle_route ( sys . argv [ 1 ] )
elif len ( sys . argv ) == 3 :
juggle_segment ( sys . argv [ 1 ] , int ( sys . argv [ 2 ] ) )