From 559e3aa8a0e49d49a927ef20dae54cf9f1068d10 Mon Sep 17 00:00:00 2001 From: Willem Melching Date: Wed, 22 Apr 2020 15:03:37 -0700 Subject: [PATCH] replay many update --- selfdrive/boardd/tests/replay_many.py | 54 ++++++++++++++++----------- 1 file changed, 32 insertions(+), 22 deletions(-) diff --git a/selfdrive/boardd/tests/replay_many.py b/selfdrive/boardd/tests/replay_many.py index 783a549aa5..8a6568a7a2 100755 --- a/selfdrive/boardd/tests/replay_many.py +++ b/selfdrive/boardd/tests/replay_many.py @@ -5,7 +5,7 @@ import time import signal import traceback import usb1 -from panda import Panda +from panda import Panda, PandaDFU from multiprocessing import Pool jungle = "JUNGLE" in os.environ @@ -22,31 +22,31 @@ def initializer(): def send_thread(sender_serial): global jungle - try: - if jungle: - sender = PandaJungle(sender_serial) - else: - sender = Panda(sender_serial) - sender.set_safety_mode(Panda.SAFETY_ALLOUTPUT) - sender.set_can_loopback(False) + while True: + try: + if jungle: + sender = PandaJungle(sender_serial) + else: + sender = Panda(sender_serial) + sender.set_safety_mode(Panda.SAFETY_ALLOUTPUT) - can_sock = messaging.sub_sock('can') + sender.set_can_loopback(False) + can_sock = messaging.sub_sock('can') - while True: - # Send messages one bus 0 and 1 - tsc = messaging.recv_one(can_sock) - snd = can_capnp_to_can_list(tsc.can) - snd = list(filter(lambda x: x[-1] <= 2, snd)) + while True: + tsc = messaging.recv_one(can_sock) + snd = can_capnp_to_can_list(tsc.can) - try: - sender.can_send_many(snd) - except usb1.USBErrorTimeout: - print("Can TX overflow", sender_serial) + try: + sender.can_send_many(snd) + except usb1.USBErrorTimeout: + pass - # Drain panda message buffer - sender.can_recv() - except Exception: - traceback.print_exc() + # Drain panda message buffer + sender.can_recv() + except Exception: + traceback.print_exc() + time.sleep(1) if __name__ == "__main__": if jungle: @@ -55,12 +55,22 @@ if __name__ == "__main__": serials = Panda.list() num_senders = len(serials) + if num_senders == 0: print("No senders found. Exiting") sys.exit(1) else: print("%d senders found. Starting broadcast" % num_senders) + if "FLASH" in os.environ: + for s in PandaDFU.list(): + PandaDFU(s).recover() + + time.sleep(1) + for s in serials: + Panda(s).recover() + Panda(s).flash() + pool = Pool(num_senders, initializer=initializer) pool.map_async(send_thread, serials)