2020-04-06 16:49:42 -07:00
|
|
|
#!/usr/bin/env python3
|
2021-10-01 12:39:05 +02:00
|
|
|
import os
|
2020-05-29 11:52:03 -07:00
|
|
|
import time
|
2021-10-01 12:39:05 +02:00
|
|
|
import threading
|
2024-02-24 21:56:28 +00:00
|
|
|
from typing import Any
|
2020-04-06 16:49:42 -07:00
|
|
|
|
2025-02-21 17:36:23 -08:00
|
|
|
from opendbc.car.structs import CarParams
|
2020-04-06 16:49:42 -07:00
|
|
|
from panda import Panda
|
|
|
|
|
|
2021-10-01 12:39:05 +02:00
|
|
|
JUNGLE = "JUNGLE" in os.environ
|
|
|
|
|
if JUNGLE:
|
2023-08-03 23:55:13 -07:00
|
|
|
from panda import PandaJungle
|
2021-10-01 12:39:05 +02:00
|
|
|
|
2020-04-06 16:49:42 -07:00
|
|
|
# The TX buffers on pandas is 0x100 in length.
|
|
|
|
|
NUM_MESSAGES_PER_BUS = 10000
|
|
|
|
|
|
|
|
|
|
def flood_tx(panda):
|
|
|
|
|
print('Sending!')
|
2020-06-01 01:49:26 -07:00
|
|
|
msg = b"\xaa" * 4
|
2024-07-30 21:20:48 -07:00
|
|
|
packet = [[0xaa, msg, 0], [0xaa, msg, 1], [0xaa, msg, 2]] * NUM_MESSAGES_PER_BUS
|
2021-10-01 13:57:44 +02:00
|
|
|
panda.can_send_many(packet, timeout=10000)
|
2020-04-06 16:49:42 -07:00
|
|
|
print(f"Done sending {3*NUM_MESSAGES_PER_BUS} messages!")
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
|
serials = Panda.list()
|
2021-10-01 12:39:05 +02:00
|
|
|
if JUNGLE:
|
|
|
|
|
sender = Panda()
|
|
|
|
|
receiver = PandaJungle()
|
|
|
|
|
else:
|
|
|
|
|
if len(serials) != 2:
|
|
|
|
|
raise Exception("Connect two pandas to perform this test!")
|
|
|
|
|
sender = Panda(serials[0])
|
2023-08-03 23:55:13 -07:00
|
|
|
receiver = Panda(serials[1]) # type: ignore
|
2025-02-21 17:36:23 -08:00
|
|
|
receiver.set_safety_mode(CarParams.SafetyModel.allOutput)
|
2020-05-29 11:52:03 -07:00
|
|
|
|
2025-02-21 17:36:23 -08:00
|
|
|
sender.set_safety_mode(CarParams.SafetyModel.allOutput)
|
2020-05-29 11:52:03 -07:00
|
|
|
|
2020-04-06 16:49:42 -07:00
|
|
|
# Start transmisson
|
|
|
|
|
threading.Thread(target=flood_tx, args=(sender,)).start()
|
|
|
|
|
|
|
|
|
|
# Receive as much as we can in a few second time period
|
2024-02-24 21:56:28 +00:00
|
|
|
rx: list[Any] = []
|
2020-04-06 16:49:42 -07:00
|
|
|
old_len = 0
|
|
|
|
|
start_time = time.time()
|
2021-10-01 12:39:05 +02:00
|
|
|
while time.time() - start_time < 3 or len(rx) > old_len:
|
2020-04-06 16:49:42 -07:00
|
|
|
old_len = len(rx)
|
2021-10-01 13:57:44 +02:00
|
|
|
print(old_len)
|
2020-04-06 16:49:42 -07:00
|
|
|
rx.extend(receiver.can_recv())
|
|
|
|
|
print(f"Received {len(rx)} messages")
|