@@ -75,7 +75,7 @@ def start_juggler(fn=None, dbc=None, layout=None):
75
75
subprocess .call (cmd , shell = True , env = env , cwd = juggle_dir )
76
76
77
77
78
- def juggle_route (route_or_segment_name , segment_count , qlog , can , layout ):
78
+ def juggle_route (route_or_segment_name , segment_count , qlog , can , layout , dbc = None ):
79
79
segment_start = 0
80
80
if 'cabana' in route_or_segment_name :
81
81
query = parse_qs (urlparse (route_or_segment_name ).query )
@@ -113,14 +113,14 @@ def juggle_route(route_or_segment_name, segment_count, qlog, can, layout):
113
113
all_data = [d for d in all_data if d .which () not in ['can' , 'sendcan' ]]
114
114
115
115
# Infer DBC name from logs
116
- dbc = None
117
- for cp in [m for m in all_data if m .which () == 'carParams' ]:
118
- try :
119
- DBC = __import__ (f"selfdrive.car.{ cp .carParams .carName } .values" , fromlist = ['DBC' ]).DBC
120
- dbc = DBC [cp .carParams .carFingerprint ]['pt' ]
121
- except Exception :
122
- pass
123
- break
116
+ if dbc is None :
117
+ for cp in [m for m in all_data if m .which () == 'carParams' ]:
118
+ try :
119
+ DBC = __import__ (f"selfdrive.car.{ cp .carParams .carName } .values" , fromlist = ['DBC' ]).DBC
120
+ dbc = DBC [cp .carParams .carFingerprint ]['pt' ]
121
+ except Exception :
122
+ pass
123
+ break
124
124
125
125
with tempfile .NamedTemporaryFile (suffix = '.rlog' , dir = juggle_dir ) as tmp :
126
126
save_log (tmp .name , all_data , compress = False )
@@ -138,6 +138,7 @@ def juggle_route(route_or_segment_name, segment_count, qlog, can, layout):
138
138
parser .add_argument ("--stream" , action = "store_true" , help = "Start PlotJuggler in streaming mode" )
139
139
parser .add_argument ("--layout" , nargs = '?' , help = "Run PlotJuggler with a pre-defined layout" )
140
140
parser .add_argument ("--install" , action = "store_true" , help = "Install or update PlotJuggler + plugins" )
141
+ parser .add_argument ("--dbc" , help = "Set the DBC name to load for parsing CAN data. If not set, the DBC will be automatically inferred from the logs." )
141
142
parser .add_argument ("route_or_segment_name" , nargs = '?' , help = "The route or segment name to plot (cabana share URL accepted)" )
142
143
parser .add_argument ("segment_count" , type = int , nargs = '?' , help = "The number of segments to plot" )
143
144
@@ -158,4 +159,4 @@ def juggle_route(route_or_segment_name, segment_count, qlog, can, layout):
158
159
start_juggler (layout = args .layout )
159
160
else :
160
161
route_or_segment_name = DEMO_ROUTE if args .demo else args .route_or_segment_name .strip ()
161
- juggle_route (route_or_segment_name , args .segment_count , args .qlog , args .can , args .layout )
162
+ juggle_route (route_or_segment_name , args .segment_count , args .qlog , args .can , args .layout , args . dbc )
0 commit comments