mirror of
https://github.com/svpcom/wfb-ng.git
synced 2025-03-19 04:54:11 -03:00
53 lines
1.6 KiB
Python
53 lines
1.6 KiB
Python
#!/usr/bin/env python3
|
|
|
|
import sys
|
|
import time
|
|
import msgpack
|
|
import struct
|
|
import gzip
|
|
from pprint import pformat
|
|
from .mavlink_protocol import unpack_mavlink
|
|
|
|
|
|
def main():
|
|
for f in sys.argv[1:]:
|
|
with gzip.GzipFile(f, 'rb') as fd:
|
|
while True:
|
|
hdr = fd.read(4)
|
|
|
|
if len(hdr) < 4:
|
|
break
|
|
|
|
data_len = struct.unpack('!I', hdr)[0]
|
|
data = fd.read(data_len)
|
|
|
|
if len(data) < data_len:
|
|
break
|
|
|
|
msg = msgpack.unpackb(data, strict_map_key=False, use_list=False)
|
|
ts = msg.pop('timestamp')
|
|
mtype = msg.pop('type')
|
|
|
|
if mtype == 'mavlink':
|
|
seq, sys_id, comp_id, msg_id = msg.pop('hdr')
|
|
msg['sys_id'] = sys_id
|
|
msg['comp_id'] = comp_id
|
|
msg['seq'] = seq
|
|
|
|
mav_message = msg.pop('msg')
|
|
try:
|
|
k, v = unpack_mavlink(msg_id, mav_message)
|
|
msg[k] = v
|
|
except Exception as v:
|
|
msg['msg'] = mav_message
|
|
msg['parse_error'] = v
|
|
|
|
ts_txt = time.strftime('%Y-%m-%d %H:%M:%S.{} %Z'.format(('%.3f' % ((ts % 1),))[2:]), time.localtime(ts))
|
|
msg_pp = ('\n%s\t%s\t' % (' ' * len(ts_txt), ' ' * len(mtype)))\
|
|
.join(pformat(msg, compact=True, sort_dicts=False).split('\n'))
|
|
print('%s\t%s\t%s' % (ts_txt, mtype, msg_pp))
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|