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
			
		
		
			
		
	
	
					71 lines
				
				1.7 KiB
			| 
											3 years ago
										 | #!/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()
 |