def add_parser_options(parser): if not parser.has_option("-v"): parser.add_option( "-v", "--verbose", type="int", default=default_mimo_mpif_setup.d_options["verbose"], help="set verbose level of output [default=%default]", ) if not parser.has_option("--debug"): parser.add_option( "", "--debug", type="int", default=default_mimo_mpif_setup.d_options["debug"], help="set debug level of system [default=%default]", ) if not parser.has_option("--enable-socket"): parser.add_option( "", "--enable-socket", action="store_true", default=default_mimo_mpif_setup.d_options["enable_socket"], help="enable socket communication for MAC/PHY interface [default=%default]", ) if not parser.has_option("--mac-addr"): parser.add_option( "-A", "--mac-addr", type="string", default=default_mimo_mpif_setup.d_options["mac_addr"], help="set address for MAC [default=%default]", ) if not parser.has_option("--mac-port"): parser.add_option( "-P", "--mac-port", type="int", default=default_mimo_mpif_setup.d_options["mac_port"], help="set base port used for MAC/PHY interface [default=%default]", ) if not parser.has_option("--mtu"): parser.add_option( "", "--mtu", type="int", default=default_mimo_mpif_setup.d_options["mtu"], help="set maximum transmission unit default=%default]", ) if not parser.has_option("-R"): parser.add_option( "-R", "--rate", type="int", default=default_mimo_mpif_setup.d_options["rate"], help='set PHY data rate (use -1 for auto-rate) [default="auto"]', ) MimoTransceiver.add_parser_options(parser)
def main(): """ Parser Options """ parser = OptionParser(option_class=eng_option) MimoManager.add_parser_options(parser) Channel.add_parser_options(parser) (options, args) = parser.parse_args() if len(args) != 0: parser.print_help() sys.exit(1) # overwrite fake_rf when --enable-channel is used if options.enable_channel: options.fake_rf = True mgr = MimoManager(options) phy = MimoTransceiver(options) phy.rx.packet_detector().set_debug(options.debug) phy.rx.packet_detector().set_window(64) phy.rx.packet_detector().set_delay(16) # phy.rx.packet_detector().set_thresh(0.70) phy.rx.packet_detector().set_nchannels(options.nchannels) """ """ sys.stderr.write("phy.rx.packet_detector().window() = %s\n" % (phy.rx.packet_detector().window())) sys.stderr.write("phy.rx.packet_detector().delay() = %s\n" % (phy.rx.packet_detector().delay())) sys.stderr.write("phy.rx.packet_detector().nchannels() = %s\n" % (phy.rx.packet_detector().nchannels())) # phy.rx.set_max_buffer_load(0.0) sys.stderr.write("phy.rx.nrx() = %s\n" % (phy.rx.nrx())) sys.stderr.write("phy.tx.nrx() = %s\n" % (phy.tx.ntx())) sys.stderr.write("phy.rx.max_buffer_size() = %s\n" % (phy.rx.max_buffer_size())) phy.txpath.pad.set_npre(2) phy.txpath.pad.set_npost(2) mpif = MimoMPIF(options) mpif.set_transceiver(phy) global RATE_LIMIT if options.nchannels == 4: RATE_LIMIT = 32 elif options.nchannels == 2: RATE_LIMIT = 16 elif options.nchannels == 1: RATE_LIMIT = 8 mpif.start() phy.start() mgr.SetMPIF(mpif) ch = None if options.fake_rf and options.enable_channel: Nodb = 10 chmodel = hydra.phy.channel_model() chmodel.set_noise_power_db(Nodb) ch = Channel(chmodel, options) ch.connect_phy(phy) ch.start() if not options.enable_socket: f = FuncThread(bar, "bar", mpif) f.setDaemon(1) f.start() elif mpif.tx.socket_enable(): sys.stderr.write("MPIF TXPORT = %s\n" % (mpif.tx.port())) sys.stderr.write("MPIF RXPORT = %s\n" % (mpif.rx.port())) # mgr.run() g = mgr.start() if options.disable_gui: sys.stderr.write("Press Ctrl-c to quit\n") try: while 1: time.sleep(4) except KeyboardInterrupt: sys.stderr.write("exiting ...\n") else: if g is not None: g.join() mgr.stop() """ if (len(TxData)>0): plot(numpy.abs(TxData) ) grid() show() """ if ch is not None: sys.stderr.write("CALLING Channel.stop()\n") ch.stop() sys.stderr.write("CALLING mpif.shutdown()\n") mpif.shutdown() for dd in range(8): time.sleep(0.5) sys.stderr.write(".") sys.stderr.write("\n") p = persist() # start a persitent thread