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-difficulti... Sent from the GnuRadio mailing list archive at Nabble.com.
on 2008-12-19 01:46