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.
		
		
		
		
			
				
					65 lines
				
				1.5 KiB
			
		
		
			
		
	
	
					65 lines
				
				1.5 KiB
			| 
											8 years ago
										 | #!/usr/bin/env python
 | ||
|  | from __future__ import print_function
 | ||
|  | import os
 | ||
|  | import sys
 | ||
|  | import struct
 | ||
|  | import time
 | ||
|  | from tqdm import tqdm
 | ||
|  | 
 | ||
|  | sys.path.append(os.path.join(os.path.dirname(os.path.realpath(__file__)), ".."))
 | ||
|  | from panda import Panda, PandaWifiStreaming
 | ||
|  | 
 | ||
|  | # test throughput between USB and wifi
 | ||
|  | 
 | ||
|  | if __name__ == "__main__":
 | ||
|  |   print(Panda.list())
 | ||
|  |   p_out = Panda("108018800f51363038363036")
 | ||
|  |   print(p_out.get_serial())
 | ||
|  |   #p_in = Panda("02001b000f51363038363036")
 | ||
|  |   p_in = Panda("WIFI")
 | ||
|  |   print(p_in.get_serial())
 | ||
|  | 
 | ||
|  |   p_in = PandaWifiStreaming()
 | ||
|  | 
 | ||
|  |   #while True:
 | ||
|  |   #  p_in.can_recv()
 | ||
|  |   #sys.exit(0)
 | ||
|  | 
 | ||
|  |   p_out.set_controls_allowed(True)
 | ||
|  | 
 | ||
|  |   set_out, set_in = set(), set()
 | ||
|  | 
 | ||
|  |   # drain
 | ||
|  |   p_out.can_recv()
 | ||
|  |   p_in.can_recv()
 | ||
|  | 
 | ||
|  |   BATCH_SIZE = 16
 | ||
|  |   for a in tqdm(range(0, 10000, BATCH_SIZE)):
 | ||
|  |     for b in range(0, BATCH_SIZE):
 | ||
|  |       msg = b"\xaa"*4 + struct.pack("I", a+b)
 | ||
|  |       if a%1 == 0:
 | ||
|  |         p_out.can_send(0xaa, msg, 0)
 | ||
|  | 
 | ||
|  |     dat_out, dat_in = p_out.can_recv(), p_in.can_recv()
 | ||
|  |     if len(dat_in) != 0:
 | ||
|  |       print(len(dat_in))
 | ||
|  | 
 | ||
|  |     num_out = [struct.unpack("I", i[4:])[0] for _, _, i, _ in dat_out]
 | ||
|  |     num_in = [struct.unpack("I", i[4:])[0] for _, _, i, _ in dat_in]
 | ||
|  | 
 | ||
|  |     set_in.update(num_in)
 | ||
|  |     set_out.update(num_out)
 | ||
|  | 
 | ||
|  |   # swag
 | ||
|  |   print("waiting for packets")
 | ||
|  |   time.sleep(2.0)
 | ||
|  |   dat_in = p_in.can_recv()
 | ||
|  |   print(len(dat_in))
 | ||
|  |   num_in = [struct.unpack("I", i[4:])[0] for _, _, i, _ in dat_in]
 | ||
|  |   set_in.update(num_in)
 | ||
|  | 
 | ||
|  |   if len(set_out - set_in):
 | ||
|  |     print("MISSING %d" % len(set_out - set_in))
 | ||
|  |     if len(set_out - set_in) < 256:
 | ||
|  |       print(map(hex, sorted(list(set_out - set_in))))
 |