diff --git a/MAVProxy/tools/MAVExplorer.py b/MAVProxy/tools/MAVExplorer.py index f12d15f266..45751582d1 100755 --- a/MAVProxy/tools/MAVExplorer.py +++ b/MAVProxy/tools/MAVExplorer.py @@ -340,15 +340,12 @@ def load_graphs(): if filename.lower().endswith('.xml'): gfiles.append(os.path.join(dirname, filename)) - # list of parameter files to be skipped when loading graph XML - paramfiles = ["ArduSub.xml", "ArduPlane.xml", "APMrover2.xml", "ArduCopter.xml", "AntennaTracker.xml", "Blimp.xml", "Rover.xml"] - # loop though files for file in gfiles: if not os.path.exists(file): continue # skip parameter files. They specify an encoding, and under # Python3 this leads to a warning from etree - if os.path.basename(file) in paramfiles: + if os.path.basename(file) in ["ArduSub.xml", "ArduPlane.xml", "APMrover2.xml", "ArduCopter.xml", "AntennaTracker.xml", "Blimp.xml", "Rover.xml"]: continue graphs = load_graph_xml(open(file).read(), file) if graphs: @@ -1183,41 +1180,48 @@ def cmd_paramchange(args): vmap[pname] = pvalue mestate.mlog.rewind() + def cmd_logmessage(args): '''show log message information''' mlog = mestate.mlog usage = "Usage: logmessage " + # Print usage and return, if we have no arguments if len(args) <= 0: print(usage) return - - if args[0] == 'help': - if len(args) < 2: - print(usage) - return - if hasattr(mlog,'metadata'): - mlog.metadata.print_help(args[1]) - return - if args[0] == 'download': - # download XML files for log messages - folder = mp_util.dot_mavproxy("LogMessages") - mp_util.mkdir_p(folder) - files = [] - for vehicle in ['Rover', 'Copter', 'Plane', 'Tracker', 'Blimp', 'Sub']: - url = 'http://autotest.ardupilot.org/LogMessages/%s/LogMessages.xml.gz' % vehicle - path = os.path.join(folder,"%s.xml" % vehicle) - files.append((url, path)) - try: - child = multiproc.Process(target=mp_util.download_files, args=(files,)) - child.start() - except Exception as e: - print(e) - if hasattr(mlog,'metadata'): - mlog.metadata.reset() + # help: print help for the requested log message + if args[0] == 'help': + if len(args) < 2: + print(usage) return + if hasattr(mlog, 'metadata'): + mlog.metadata.print_help(args[1]) + elif isinstance(mlog, mavutil.mavlogfile): + print("logmessage help is not supported for telemetry log files") + else: + print("Incompatible pymavlink; upgrade pymavlink?") + return + # download: download XML files for log messages + if args[0] == 'download': + folder = mp_util.dot_mavproxy("LogMessages") + mp_util.mkdir_p(folder) + files = [] + for vehicle in ['Rover', 'Copter', 'Plane', 'Tracker', 'Blimp', 'Sub']: + url = 'http://autotest.ardupilot.org/LogMessages/%s/LogMessages.xml.gz' % vehicle + path = os.path.join(folder, "%s.xml" % vehicle) + files.append((url, path)) + try: + child = multiproc.Process(target=mp_util.download_files, args=(files,)) + child.start() + except Exception as e: + print(e) + if hasattr(mlog, 'metadata'): + mlog.metadata.reset() + return # Print usage if we've dropped through the ifs print(usage) + def cmd_mission(args): '''show mission''' if (len(args) == 1):