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.5 KiB
						
					
					
				
			
		
		
	
	
							49 lines
						
					
					
						
							1.5 KiB
						
					
					
				#!/usr/bin/env python
 | 
						|
import sys
 | 
						|
import argparse
 | 
						|
import zmq
 | 
						|
import json
 | 
						|
from hexdump import hexdump
 | 
						|
 | 
						|
import selfdrive.messaging as messaging
 | 
						|
from selfdrive.services import service_list
 | 
						|
 | 
						|
if __name__ == "__main__":
 | 
						|
  context = zmq.Context()
 | 
						|
  poller = zmq.Poller()
 | 
						|
 | 
						|
  parser = argparse.ArgumentParser(description='Sniff a communcation socket')
 | 
						|
  parser.add_argument('--pipe', action='store_true')
 | 
						|
  parser.add_argument('--raw', action='store_true')
 | 
						|
  parser.add_argument('--json', action='store_true')
 | 
						|
  parser.add_argument('--dump-json', action='store_true')
 | 
						|
  parser.add_argument('--addr', default='127.0.0.1')
 | 
						|
  parser.add_argument("socket", type=str, nargs='*', help="socket name")
 | 
						|
  args = parser.parse_args()
 | 
						|
 | 
						|
  for m in args.socket if len(args.socket) > 0 else service_list:
 | 
						|
    if m in service_list:
 | 
						|
      messaging.sub_sock(context, service_list[m].port, poller, addr=args.addr)
 | 
						|
    elif m.isdigit():
 | 
						|
      messaging.sub_sock(context, int(m), poller, addr=args.addr)
 | 
						|
    else:
 | 
						|
      print("service not found")
 | 
						|
      exit(-1)
 | 
						|
 | 
						|
  while 1:
 | 
						|
    polld = poller.poll(timeout=1000)
 | 
						|
    for sock, mode in polld:
 | 
						|
      if mode != zmq.POLLIN:
 | 
						|
        continue
 | 
						|
      if args.pipe:
 | 
						|
        sys.stdout.write(sock.recv())
 | 
						|
        sys.stdout.flush()
 | 
						|
      elif args.raw:
 | 
						|
        hexdump(sock.recv())
 | 
						|
      elif args.json:
 | 
						|
        print(json.loads(sock.recv()))
 | 
						|
      elif args.dump_json:
 | 
						|
        print json.dumps(messaging.recv_one(sock).to_dict())
 | 
						|
      else:
 | 
						|
        print messaging.recv_one(sock)
 | 
						|
 | 
						|
 |