15
15
from common .params import Params
16
16
from common .timeout import Timeout
17
17
from selfdrive .car .fingerprints import FW_VERSIONS
18
- from selfdrive .car .car_helpers import get_car
18
+ from selfdrive .car .car_helpers import get_car , interfaces
19
19
from selfdrive .test .process_replay .helpers import OpenpilotPrefix
20
20
from selfdrive .manager .process import PythonProcess
21
21
from selfdrive .manager .process_config import managed_processes
@@ -176,14 +176,18 @@ def fingerprint(msgs, fsm, can_sock):
176
176
fsm .update_ready .set ()
177
177
178
178
179
- def get_car_params (msgs , fsm , can_sock ):
180
- can = FakeSocket (wait = False )
181
- sendcan = FakeSocket (wait = False )
179
+ def get_car_params (msgs , fsm , can_sock , fingerprint ):
180
+ if fingerprint :
181
+ CarInterface , _ , _ = interfaces [fingerprint ]
182
+ CP = CarInterface .get_params (fingerprint )
183
+ else :
184
+ can = FakeSocket (wait = False )
185
+ sendcan = FakeSocket (wait = False )
182
186
183
- canmsgs = [msg for msg in msgs if msg .which () == 'can' ]
184
- for m in canmsgs [:300 ]:
185
- can .send (m .as_builder ().to_bytes ())
186
- _ , CP = get_car (can , sendcan )
187
+ canmsgs = [msg for msg in msgs if msg .which () == 'can' ]
188
+ for m in canmsgs [:300 ]:
189
+ can .send (m .as_builder ().to_bytes ())
190
+ _ , CP = get_car (can , sendcan )
187
191
Params ().put ("CarParams" , CP .to_bytes ())
188
192
189
193
def controlsd_rcv_callback (msg , CP , cfg , fsm ):
@@ -336,12 +340,12 @@ def ublox_rcv_callback(msg):
336
340
]
337
341
338
342
339
- def replay_process (cfg , lr ):
343
+ def replay_process (cfg , lr , fingerprint = None ):
340
344
with OpenpilotPrefix ():
341
345
if cfg .fake_pubsubmaster :
342
- return python_replay_process (cfg , lr )
346
+ return python_replay_process (cfg , lr , fingerprint )
343
347
else :
344
- return cpp_replay_process (cfg , lr )
348
+ return cpp_replay_process (cfg , lr , fingerprint )
345
349
346
350
def setup_env (simulation = False , CP = None ):
347
351
params = Params ()
@@ -370,7 +374,7 @@ def setup_env(simulation=False, CP=None):
370
374
os .environ ['SKIP_FW_QUERY' ] = "1"
371
375
os .environ ['FINGERPRINT' ] = CP .carFingerprint
372
376
373
- def python_replay_process (cfg , lr ):
377
+ def python_replay_process (cfg , lr , fingerprint = None ):
374
378
sub_sockets = [s for _ , sub in cfg .pub_sub .items () for s in sub ]
375
379
pub_sockets = [s for s in cfg .pub_sub .keys () if s != 'can' ]
376
380
@@ -384,8 +388,13 @@ def python_replay_process(cfg, lr):
384
388
all_msgs = sorted (lr , key = lambda msg : msg .logMonoTime )
385
389
pub_msgs = [msg for msg in all_msgs if msg .which () in list (cfg .pub_sub .keys ())]
386
390
387
- CP = [m for m in lr if m .which () == 'carParams' ][0 ].carParams
388
- setup_env (CP = CP )
391
+ if fingerprint is not None :
392
+ os .environ ['SKIP_FW_QUERY' ] = "1"
393
+ os .environ ['FINGERPRINT' ] = fingerprint
394
+ setup_env ()
395
+ else :
396
+ CP = [m for m in lr if m .which () == 'carParams' ][0 ].carParams
397
+ setup_env (CP = CP )
389
398
390
399
assert (type (managed_processes [cfg .proc_name ]) is PythonProcess )
391
400
managed_processes [cfg .proc_name ].prepare ()
@@ -398,7 +407,7 @@ def python_replay_process(cfg, lr):
398
407
if cfg .init_callback is not None :
399
408
if 'can' not in list (cfg .pub_sub .keys ()):
400
409
can_sock = None
401
- cfg .init_callback (all_msgs , fsm , can_sock )
410
+ cfg .init_callback (all_msgs , fsm , can_sock , fingerprint )
402
411
403
412
CP = car .CarParams .from_bytes (Params ().get ("CarParams" , block = True ))
404
413
@@ -437,7 +446,7 @@ def python_replay_process(cfg, lr):
437
446
return log_msgs
438
447
439
448
440
- def cpp_replay_process (cfg , lr ):
449
+ def cpp_replay_process (cfg , lr , fingerprint = None ):
441
450
sub_sockets = [s for _ , sub in cfg .pub_sub .items () for s in sub ] # We get responses here
442
451
pm = messaging .PubMaster (cfg .pub_sub .keys ())
443
452
0 commit comments