openpilot is an open source driver assistance system. openpilot performs the functions of Automated Lane Centering and Adaptive Cruise Control for over 200 supported car makes and models.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

71 lines
1.7 KiB

#!/usr/bin/env python3
import time
import random
import unittest
import subprocess
from panda import Panda
from system.hardware import TICI
from system.hardware.tici.hardware import Tici
from system.hardware.tici.amplifier import Amplifier
class TestAmplifier(unittest.TestCase):
@classmethod
def setUpClass(cls):
if not TICI:
raise unittest.SkipTest
def setUp(self):
# clear dmesg
subprocess.check_call("sudo dmesg -C", shell=True)
self.panda = Panda()
self.panda.reset()
def tearDown(self):
self.panda.reset(reconnect=False)
def _check_for_i2c_errors(self, expected):
dmesg = subprocess.check_output("dmesg", shell=True, encoding='utf8')
i2c_lines = [l for l in dmesg.strip().splitlines() if 'i2c_geni a88000.i2c' in l]
i2c_str = '\n'.join(i2c_lines)
if not expected:
assert len(i2c_lines) == 0
else:
assert "i2c error :-107" in i2c_str or "Bus arbitration lost" in i2c_str
def test_init(self):
amp = Amplifier(debug=True)
r = amp.initialize_configuration(Tici().model)
assert r
self._check_for_i2c_errors(False)
def test_shutdown(self):
amp = Amplifier(debug=True)
for _ in range(10):
r = amp.set_global_shutdown(True)
r = amp.set_global_shutdown(False)
assert r
self._check_for_i2c_errors(False)
def test_init_while_siren_play(self):
for _ in range(5):
self.panda.set_siren(False)
time.sleep(0.1)
self.panda.set_siren(True)
time.sleep(random.randint(0, 5))
amp = Amplifier(debug=True)
r = amp.initialize_configuration(Tici().model)
assert r
# make sure we're a good test
self._check_for_i2c_errors(True)
if __name__ == "__main__":
unittest.main()