Full duplex relay difficulties?


#1

I have realized how to implement full duplex with an RFX2400… it
involves
using a function called select_rx_antenna(‘RX2’) to enable the use of
the
second antenna for receiving.

In any case, with that bit of knowledge, I went about working out a
short
segment of code that should work as a relay, sending anything received
back
over the USRP at a different frequency. I attempted this using modified
versions of the benchmark_* files, which I’ve confirmed as working on
separate computers (the receiving USRP using RX2, not TX/RX).

It doesn’t work, though. I specify the receiving frequency as 2.3GHz,
and
the transmitting frequency as 2.8GHz, with the other computer, of
course,
transmitting on 2.3GHz and receiving on 2.8GHz. benchmark_rx runs as
though
it’s waiting when benchmark_tx appears to be transmitting. Is the
difference
in frequency of 0.5GHz not enough to compensate for interference? Or
perhaps
there’s some small mistake in my code that is not making it crash, but
is
making it not function properly. The code for the relay is below:

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

class my_graph(gr.flow_graph):

def __init__(self):
    gr.flow_graph.__init__(self)

    parser = OptionParser(option_class=eng_option)
    parser.add_option("-d", "--decim", type="int", default=256)
    parser.add_option("-f",  "--freq", type="eng_float",

default=2.8e9)
parser.add_option("-g", “–gain”, type=“eng_float”, default=45)
parser.add_option("-a", “–tx-amplitude”, type=“eng_float”,
default=32000)
parser.add_option("-t", “–tx-freq”, type=“eng_float”,
default=2.3e9)
parser.add_option("-i", “–interp”, type=“intx”, default=64)
(options, args) = parser.parse_args()

    src = usrp.source_c (0, options.decim)
    rx_subdev_spec = (1,0)
    src.set_mux(usrp.determine_rx_mux_value(src, rx_subdev_spec))
    rx_subdev = usrp.selected_subdev(src, rx_subdev_spec)
    rx_subdev.select_rx_antenna('RX2')
    r = src.tune(rx_subdev._which, rx_subdev, options.freq)
    print "Using RX board %s" % (rx_subdev.side_and_name())

    self._tx_amplitude = options.tx_amplitude
    self.amp = gr.multiply_const_cc(0)
    self.amp.set_k(self._tx_amplitude)

    dst = usrp.sink_c(0, options.interp)
    tx_subdev_spec = (1,0)
    dst.set_mux(usrp.determine_tx_mux_value (dst, tx_subdev_spec))
    tx_subdev = usrp.selected_subdev(dst, tx_subdev_spec)
    r = dst.tune(tx_subdev._which, tx_subdev, options.tx_freq )
    print "Using TX board %s" % (tx_subdev.side_and_name())

    self.connect(src, self.amp, dst)

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

It is somewhat imperative that I have this functional for tomorrow. So I
will keep plugging at it, but help would be much appreciated.

~ Francesco B.


View this message in context:
http://www.nabble.com/Full-duplex-relay-difficulties--tp21082896p21082896.html
Sent from the GnuRadio mailing list archive at Nabble.com.