Example #1
0
    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
Example #2
0
    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()
Example #3
0
          "*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:
Example #4
0
    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)
Example #5
0
    '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)