From 5d6fcbb422fa6fca59aecc39df2d2a80ed740ae6 Mon Sep 17 00:00:00 2001 From: Robbe Date: Thu, 11 Jun 2020 16:44:37 -0700 Subject: [PATCH] gmlan harness test --- tests/gmlan_harness_test.py | 84 +++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100755 tests/gmlan_harness_test.py diff --git a/tests/gmlan_harness_test.py b/tests/gmlan_harness_test.py new file mode 100755 index 0000000..76f9d47 --- /dev/null +++ b/tests/gmlan_harness_test.py @@ -0,0 +1,84 @@ +#!/usr/bin/env python3 + +import os +import sys +import time +import random +import argparse + +from hexdump import hexdump +from itertools import permutations + +sys.path.append(os.path.join(os.path.dirname(os.path.realpath(__file__)), "..")) +from panda import Panda # noqa: E402 + +WHITE_GMLAN_BUS = 3 +OTHER_GMLAN_BUS = 1 + +def set_gmlan(p): + if p.is_white(): + p.set_gmlan(2) + else: + p.set_obd(True) + +def set_speed_kbps(p, speed): + if p.is_white(): + p.set_can_speed_kbps(WHITE_GMLAN_BUS, speed) + else: + p.set_can_speed_kbps(OTHER_GMLAN_BUS, speed) + +def send(p, id, msg): + if p.is_white(): + p.can_send(id, msg, WHITE_GMLAN_BUS) + else: + p.can_send(id, msg, OTHER_GMLAN_BUS) + +if __name__ == "__main__": + pl = Panda.list() + assert(len(pl) == 2) + p0 = Panda(pl[1]) + p1 = Panda(pl[0]) + + p0.set_safety_mode(Panda.SAFETY_ALLOUTPUT) + p1.set_safety_mode(Panda.SAFETY_ALLOUTPUT) + + print("0: ", p0.get_type()) + print("1: ", p1.get_type()) + + set_gmlan(p0) + set_gmlan(p1) + + p0.can_clear(0xFFFF) + p1.can_clear(0xFFFF) + + loops = 0 + while True: + for speed in [33.3, 83.3]: + set_speed_kbps(p0, speed) + set_speed_kbps(p1, speed) + p0.can_clear(0xFFFF) + p1.can_clear(0xFFFF) + + print(f"Speed: {speed}") + time.sleep(0.1) + + print("Send 1 -> 0") + send(p1, 1, b"1to0:" + bytes(str(loops%100), "utf-8")) + time.sleep(0.05) + rx = list(filter(lambda x: x[3] < 128, p0.can_recv())) + #print(rx) + assert(len(rx) == 1) + + print("Send 0 -> 1") + send(p0, 1, b"0to1:" + bytes(str(loops%100), "utf-8")) + time.sleep(0.05) + rx = list(filter(lambda x: x[3] < 128, p1.can_recv())) + #print(rx) + assert(len(rx) == 1) + + time.sleep(0.5) + + + loops += 1 + print(f"Completed {loops} loops") + #time.sleep(2)