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.
		
		
		
		
			
				
					49 lines
				
				1.1 KiB
			
		
		
			
		
	
	
					49 lines
				
				1.1 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								#!/usr/bin/env python3
							 | 
						||
| 
								 | 
							
								import time
							 | 
						||
| 
								 | 
							
								import unittest
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import cereal.messaging as messaging
							 | 
						||
| 
								 | 
							
								from panda import Panda
							 | 
						||
| 
								 | 
							
								from selfdrive.test.helpers import phone_only
							 | 
						||
| 
								 | 
							
								from selfdrive.manager.process_config import managed_processes
							 | 
						||
| 
								 | 
							
								from system.hardware import HARDWARE
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class TestPandad(unittest.TestCase):
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  def tearDown(self):
							 | 
						||
| 
								 | 
							
								    managed_processes['pandad'].stop()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  def _wait_for_boardd(self):
							 | 
						||
| 
								 | 
							
								    sm = messaging.SubMaster(['peripheralState'])
							 | 
						||
| 
								 | 
							
								    for _ in range(30):
							 | 
						||
| 
								 | 
							
								      sm.update(1000)
							 | 
						||
| 
								 | 
							
								      if sm.updated['peripheralState']:
							 | 
						||
| 
								 | 
							
								        break
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if not sm.updated['peripheralState']:
							 | 
						||
| 
								 | 
							
								      raise Exception("boardd failed to start")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  @phone_only
							 | 
						||
| 
								 | 
							
								  def test_in_dfu(self):
							 | 
						||
| 
								 | 
							
								    HARDWARE.recover_internal_panda()
							 | 
						||
| 
								 | 
							
								    time.sleep(1)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    managed_processes['pandad'].start()
							 | 
						||
| 
								 | 
							
								    self._wait_for_boardd()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  @phone_only
							 | 
						||
| 
								 | 
							
								  def test_in_bootstub(self):
							 | 
						||
| 
								 | 
							
								    with Panda() as p:
							 | 
						||
| 
								 | 
							
								      p.reset(enter_bootstub=True)
							 | 
						||
| 
								 | 
							
								      assert p.bootstub
							 | 
						||
| 
								 | 
							
								    managed_processes['pandad'].start()
							 | 
						||
| 
								 | 
							
								    self._wait_for_boardd()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  #def test_out_of_date_fw(self):
							 | 
						||
| 
								 | 
							
								  #  pass
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if __name__ == "__main__":
							 | 
						||
| 
								 | 
							
								  unittest.main()
							 |