X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=gnuradio-examples%2Fpython%2Fdigital%2Fbenchmark_tx.py;h=73c4a3901547cde7229149ed54c628e16eb31b30;hb=ea29b08aeb54227e6628f655ccfdb96fe4d8c378;hp=d683a70c7f418f841254e24018b9519410118f2a;hpb=09a1e803a9e6587c78d20cdf16891e5295874668;p=debian%2Fgnuradio diff --git a/gnuradio-examples/python/digital/benchmark_tx.py b/gnuradio-examples/python/digital/benchmark_tx.py index d683a70c..73c4a390 100755 --- a/gnuradio-examples/python/digital/benchmark_tx.py +++ b/gnuradio-examples/python/digital/benchmark_tx.py @@ -1,6 +1,6 @@ #!/usr/bin/env python # -# Copyright 2005, 2006 Free Software Foundation, Inc. +# Copyright 2005,2006,2007,2009 Free Software Foundation, Inc. # # This file is part of GNU Radio # @@ -29,19 +29,19 @@ from optparse import OptionParser import random, time, struct, sys # from current dir -from transmit_path import transmit_path -import fusb_options +import usrp_transmit_path #import os #print os.getpid() #raw_input('Attach and press enter') +class my_top_block(gr.top_block): + def __init__(self, modulator, options): + gr.top_block.__init__(self) -class my_graph(gr.flow_graph): - def __init__(self, modulator_class, options): - gr.flow_graph.__init__(self) - self.txpath = transmit_path(self, modulator_class, options) + self.txpath = usrp_transmit_path.usrp_transmit_path(modulator, options) + self.connect(self.txpath) # ///////////////////////////////////////////////////////////////////////////// # main @@ -50,7 +50,7 @@ class my_graph(gr.flow_graph): def main(): def send_pkt(payload='', eof=False): - return fg.txpath.send_pkt(payload, eof) + return tb.txpath.send_pkt(payload, eof) def rx_callback(ok, payload): print "ok = %r, payload = '%s'" % (ok, payload) @@ -71,13 +71,14 @@ def main(): help="set megabytes to transmit [default=%default]") parser.add_option("","--discontinuous", action="store_true", default=False, help="enable discontinous transmission (bursts of 5 packets)") + parser.add_option("","--from-file", default=None, + help="use file for packet contents") - transmit_path.add_options(parser, expert_grp) + usrp_transmit_path.add_options(parser, expert_grp) for mod in mods.values(): mod.add_options(expert_grp) - fusb_options.add_options(expert_grp) (options, args) = parser.parse_args () if len(args) != 0: @@ -89,16 +90,18 @@ def main(): parser.print_help(sys.stderr) sys.exit(1) + if options.from_file is not None: + source_file = open(options.from_file, 'r') + # build the graph - fg = my_graph(mods[options.modulation], options) + tb = my_top_block(mods[options.modulation], options) r = gr.enable_realtime_scheduling() if r != gr.RT_OK: print "Warning: failed to enable realtime scheduling" - fg.start() # start flow graph - - + tb.start() # start flow graph + # generate and send packets nbytes = int(1e6 * options.megabytes) n = 0 @@ -106,15 +109,24 @@ def main(): pkt_size = int(options.size) while n < nbytes: - send_pkt(struct.pack('!H', pktno) + (pkt_size - 2) * chr(pktno & 0xff)) - n += pkt_size + if options.from_file is None: + data = (pkt_size - 2) * chr(pktno & 0xff) + else: + data = source_file.read(pkt_size - 2) + if data == '': + break; + + payload = struct.pack('!H', pktno & 0xffff) + data + send_pkt(payload) + n += len(payload) sys.stderr.write('.') if options.discontinuous and pktno % 5 == 4: time.sleep(1) pktno += 1 send_pkt(eof=True) - fg.wait() # wait for it to finish + + tb.wait() # wait for it to finish if __name__ == '__main__': try: