Benchmark_rx/tx.py

Hi,

I am trying to do DBPSK modulation/demodulation using USRP1 and
RFX1800. I run benchmark_tx at the transmitter side and rx at the
receiver side. It worked great but I could not understand what packages
I sent. So I am not sure about the modulation which I run , is correct
or not ?
Does anybody know how can I see the packages that I sent by using
benchmark_tx ??

Code :

#!/usr/bin/env python

Copyright 2005,2006,2007,2009 Free Software Foundation, Inc.

This file is part of GNU Radio

GNU Radio is free software; you can redistribute it and/or modify

it under the terms of the GNU General Public License as published by

the Free Software Foundation; either version 3, or (at your option)

any later version.

GNU Radio is distributed in the hope that it will be useful,

but WITHOUT ANY WARRANTY; without even the implied warranty of

MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

GNU General Public License for more details.

You should have received a copy of the GNU General Public License

along with GNU Radio; see the file COPYING. If not, write to

the Free Software Foundation, Inc., 51 Franklin Street,

Boston, MA 02110-1301, USA.

from gnuradio import gr, gru, modulation_utils
from gnuradio import usrp
from gnuradio import eng_notation
from gnuradio.eng_option import eng_option
from optparse import OptionParser

import random, time, struct, sys

from current dir

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)

    self.txpath = usrp_transmit_path.usrp_transmit_path(modulator, 

options)

    self.connect(self.txpath)

/////////////////////////////////////////////////////////////////////////////

main

/////////////////////////////////////////////////////////////////////////////

def main():

def send_pkt(payload='', eof=False):
    return tb.txpath.send_pkt(payload, eof)

def rx_callback(ok, payload):
    print "ok = %r, payload = '%s'" % (ok, payload)

mods = modulation_utils.type_1_mods()

parser = OptionParser(option_class=eng_option, 

conflict_handler=“resolve”)
expert_grp = parser.add_option_group(“Expert”)

parser.add_option("-m", "--modulation", type="choice", 

choices=mods.keys(),
default=‘gmsk’,
help=“Select modulation from: %s
[default=%%default]”
% (’, '.join(mods.keys()),))

parser.add_option("-s", "--size", type="eng_float", default=1500,
                  help="set packet size [default=%default]")
parser.add_option("-M", "--megabytes", type="eng_float", 

default=1.0,
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”)

usrp_transmit_path.add_options(parser, expert_grp)

for mod in mods.values():
    mod.add_options(expert_grp)

(options, args) = parser.parse_args ()

if len(args) != 0:
    parser.print_help()
    sys.exit(1)

if options.tx_freq is None:
    sys.stderr.write("You must specify -f FREQ or --freq FREQ\n")
    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
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"

tb.start()                       # start flow graph

# generate and send packets
nbytes = int(1e6 * options.megabytes)
n = 0
pktno = 0
pkt_size = int(options.size)

while n < nbytes:
    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)

tb.wait()                       # wait for it to finish

if name == ‘main’:
try:
main()
except KeyboardInterrupt:
pass

MERVE....