41 lines
1.2 KiB
Python
41 lines
1.2 KiB
Python
#!/usr/bin/env python
|
|
|
|
'''
|
|
search a set of log files for a condition
|
|
'''
|
|
from __future__ import print_function
|
|
|
|
from pymavlink import mavutil
|
|
|
|
from argparse import ArgumentParser
|
|
parser = ArgumentParser(description=__doc__)
|
|
parser.add_argument("--condition", default=None, help="conditional check on log")
|
|
parser.add_argument("--types", default=None, help="message types to look for (comma separated)")
|
|
parser.add_argument("--stop", action='store_true', help="stop when message type found")
|
|
parser.add_argument("--stopcondition", action='store_true', help="stop when condition met")
|
|
parser.add_argument("logs", metavar="LOG", nargs="+")
|
|
|
|
args = parser.parse_args()
|
|
|
|
def mavsearch(filename):
|
|
print("Loading %s ..." % filename)
|
|
mlog = mavutil.mavlink_connection(filename)
|
|
if args.types is not None:
|
|
types = args.types.split(',')
|
|
else:
|
|
types = None
|
|
while True:
|
|
m = mlog.recv_match(type=types)
|
|
if m is None:
|
|
break
|
|
if mlog.check_condition(args.condition):
|
|
print(m)
|
|
if args.stopcondition:
|
|
break
|
|
if args.stop:
|
|
break
|
|
|
|
|
|
for f in args.logs:
|
|
mavsearch(f)
|