Files
dragonpilot/selfdrive/debug/dump.py

47 lines
1.3 KiB
Python
Raw Normal View History

2017-01-09 20:59:00 -08:00
#!/usr/bin/env python
import sys
import argparse
import zmq
2017-10-31 02:27:39 -07:00
import json
2017-01-09 20:59:00 -08:00
from hexdump import hexdump
import selfdrive.messaging as messaging
2017-05-11 12:41:17 -07:00
from selfdrive.services import service_list
2017-01-09 20:59:00 -08:00
if __name__ == "__main__":
context = zmq.Context()
poller = zmq.Poller()
parser = argparse.ArgumentParser(description='Sniff a communcation socket')
2018-01-18 15:46:12 -08:00
parser.add_argument('--pipe', action='store_true')
2017-01-09 20:59:00 -08:00
parser.add_argument('--raw', action='store_true')
2017-10-31 02:27:39 -07:00
parser.add_argument('--json', action='store_true')
parser.add_argument('--addr', default='127.0.0.1')
2017-05-11 12:41:17 -07:00
parser.add_argument("socket", type=str, nargs='*', help="socket name")
2017-01-09 20:59:00 -08:00
args = parser.parse_args()
2017-05-11 12:41:17 -07:00
for m in args.socket if len(args.socket) > 0 else service_list:
2017-10-31 02:27:39 -07:00
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)
2017-01-09 20:59:00 -08:00
while 1:
polld = poller.poll(timeout=1000)
for sock, mode in polld:
if mode != zmq.POLLIN:
continue
2018-01-18 15:46:12 -08:00
if args.pipe:
sys.stdout.write(sock.recv())
sys.stdout.flush()
elif args.raw:
2017-01-09 20:59:00 -08:00
hexdump(sock.recv())
2017-10-31 02:27:39 -07:00
elif args.json:
print(json.loads(sock.recv()))
2017-01-09 20:59:00 -08:00
else:
2017-09-30 03:07:27 -07:00
print messaging.recv_one(sock)
2017-01-09 20:59:00 -08:00