51 lines
1.5 KiB
Python
Executable File
51 lines
1.5 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
import unittest
|
|
from panda import Panda
|
|
from panda.tests.safety import libpandasafety_py
|
|
from panda.tests.safety.common import make_msg, test_spam_can_buses
|
|
from panda.tests.safety.test_honda import HONDA_BG_HW, HONDA_BH_HW
|
|
|
|
MAX_BRAKE = 255
|
|
|
|
H_TX_MSGS = [[0xE4, 0], [0x296, 1], [0x33D, 0]] # Bosch Harness
|
|
G_TX_MSGS = [[0xE4, 2], [0x296, 0], [0x33D, 2]] # Bosch Giraffe
|
|
|
|
|
|
class TestHondaSafety(unittest.TestCase):
|
|
@classmethod
|
|
def setUp(cls):
|
|
cls.safety = libpandasafety_py.libpandasafety
|
|
cls.safety.set_safety_hooks(Panda.SAFETY_HONDA_BOSCH_GIRAFFE, 0)
|
|
cls.safety.init_tests_honda()
|
|
|
|
def test_spam_can_buses(self):
|
|
for hw in [HONDA_BG_HW, HONDA_BH_HW]:
|
|
self.safety.set_honda_hw(hw)
|
|
test_spam_can_buses(self, H_TX_MSGS if hw == HONDA_BH_HW else G_TX_MSGS)
|
|
|
|
def test_fwd_hook(self):
|
|
buss = range(0x0, 0x3)
|
|
msgs = range(0x1, 0x800)
|
|
for hw in [HONDA_BG_HW, HONDA_BH_HW]:
|
|
self.safety.set_honda_hw(hw)
|
|
bus_rdr_cam = 2 if hw == HONDA_BH_HW else 1
|
|
bus_rdr_car = 0 if hw == HONDA_BH_HW else 2
|
|
bus_pt = 1 if hw == HONDA_BH_HW else 0
|
|
|
|
blocked_msgs = [0xE4, 0x33D]
|
|
for b in buss:
|
|
for m in msgs:
|
|
if b == bus_pt:
|
|
fwd_bus = -1
|
|
elif b == bus_rdr_cam:
|
|
fwd_bus = -1 if m in blocked_msgs else bus_rdr_car
|
|
elif b == bus_rdr_car:
|
|
fwd_bus = bus_rdr_cam
|
|
|
|
# assume len 8
|
|
self.assertEqual(fwd_bus, self.safety.safety_fwd_hook(b, make_msg(b, m, 8)))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|