def __init__(self, files, processed_np_save_path = '/tmp/mav/',raw_np_save_path ='/tmp/mav/raw/', debug = False): self.command_map = { 'graph' : (self.cmd_graph, 'display a graph'), 'set' : (self.cmd_set, 'control settings'), 'reload' : (self.cmd_reload, 'reload graphs'), 'condition' : (self.cmd_condition, 'set graph conditions'), 'param' : (self.cmd_param, 'show parameters'), 'save' : (self.cmd_save, 'save log'), 'json' : (self.cmd_json, 'write json files'), 'load' : (self.cmd_load, 'laod log'), 'nparr' : (self.cmd_write_all_np_arrays, 'save np array'), } self.mestate = MEState() self.mestate.debug = debug self.debug = debug self.mestate.raw_np_save_path = raw_np_save_path self.mestate.processed_np_save_path = processed_np_save_path self.mestate.rl = rline.rline("MAV> ", self.mestate) # make a regular expression to extract the words containing capital letters (msg types) self.re_caps = re.compile('[A-Z_][A-Z0-9_]+') if isinstance(files, list): print("Loading %s...\n" % files[0]) self.mestate.file = files[0] elif isinstance(files, basestring): print("Loading %s...\n" % files) self.mestate.file = files else: sys.exit(1) # support for loading pre-processed folders if os.path.isdir(self.mestate.file): # the file is a folder... self.is_folder = True else: self.is_folder = False
if args.version: #pkg_resources doesn't work in the windows exe build, so read the version file try: version = pkg_resources.require("mavproxy")[0].version except Exception as e: start_script = mp_util.dot_mavproxy("version.txt") f = open(start_script, 'r') version = f.readline() print("MAVExplorer Version: " + version) sys.exit(1) mestate = MEState() setup_file_menu() mestate.rl = rline.rline("MAV> ", mestate) #If specified, open the log file if args.files is not None and len(args.files) != 0: loadfile(args.files) # run main loop as a thread mestate.thread = threading.Thread(target=main_loop, name='main_loop') mestate.thread.daemon = True mestate.thread.start() # input loop while mestate.rl is not None and not mestate.exit: try: try: line = mestate.rl.input()
"*USB_to_UART*", '*Ardu*', '*PX4*', '*FMU*']) if not opts.master: print('Auto-detected serial ports are:') for port in serial_list: print("%s" % port) # container for status information mpstate.settings.target_system = opts.TARGET_SYSTEM mpstate.settings.target_component = opts.TARGET_COMPONENT mpstate.mav_master = [] mpstate.rl = rline.rline("MAV> ", mpstate) def quit_handler(signum = None, frame = None): #print('Signal handler called with signal', signum) if mpstate.status.exit: print('Clean shutdown impossible, forcing an exit') sys.exit(0) else: mpstate.status.exit = True # Listen for kill signals to cleanly shutdown modules fatalsignals = [signal.SIGTERM] try: fatalsignals.append(signal.SIGHUP) fatalsignals.append(signal.SIGQUIT) except Exception:
for p in opts.output: mpstate.mav_outputs.append(mavutil.mavlink_connection(p, baud=opts.baudrate, input=False)) if opts.sitl: mpstate.sitl_output = mavutil.mavudp(opts.sitl, input=False) mpstate.settings.numcells = opts.num_cells mpstate.settings.streamrate = opts.streamrate mpstate.settings.streamrate2 = opts.streamrate msg_period = mavutil.periodic_event(1.0/15) heartbeat_period = mavutil.periodic_event(1) battery_period = mavutil.periodic_event(0.1) heartbeat_check_period = mavutil.periodic_event(0.33) mpstate.rl = rline.rline("MAV> ", mpstate) if opts.setup: mpstate.rl.set_prompt("") if 'HOME' in os.environ and not opts.setup: start_script = os.path.join(os.environ['HOME'], ".mavinit.scr") if os.path.exists(start_script): run_script(start_script) if opts.aircraft is not None: start_script = os.path.join(opts.aircraft, "mavinit.scr") if os.path.exists(start_script): run_script(start_script) else: print("no script %s" % start_script)
'graph' : (cmd_graph, 'display a graph'), 'set' : (cmd_set, 'control settings'), 'reload' : (cmd_reload, 'reload graphs'), 'save' : (cmd_save, 'save a graph'), 'condition' : (cmd_condition, 'set graph conditions'), 'param' : (cmd_param, 'show parameters'), 'map' : (cmd_map, 'show map view'), } def progress_bar(pct): if pct % 2 == 0: mestate.console.write('#') if __name__ == "__main__": mestate = MEState() mestate.rl = rline.rline("MAV> ", mestate) from argparse import ArgumentParser parser = ArgumentParser(description=__doc__) parser.add_argument("files", metavar="<FILE>", nargs="+") args = parser.parse_args() if len(args.files) == 0: print("Usage: MAVExplorer FILE") sys.exit(1) mestate.console.write("Loading %s...\n" % args.files[0]) t0 = time.time() mlog = mavutil.mavlink_connection(args.files[0], notimestamps=False, zero_time_base=False) mestate.mlog = mavmemlog.mavmemlog(mlog, progress_bar)