From fe3150d5e5a0bb7bf98b5f44ad0b68a107bd7f9a Mon Sep 17 00:00:00 2001 From: Tom Rondeau Date: Mon, 8 Feb 2010 21:12:39 -0800 Subject: Adding a pick bitrate calculation for new tx/rx modulators with arbitrary samples per second to allow and real valued bitrate. --- gnuradio-examples/python/digital/pick_bitrate2.py | 64 ++++++++++++++++++++++ .../python/digital/usrp_receive_path.py | 19 ++++--- .../python/digital/usrp_transmit_path.py | 16 +++--- 3 files changed, 84 insertions(+), 15 deletions(-) create mode 100644 gnuradio-examples/python/digital/pick_bitrate2.py (limited to 'gnuradio-examples') diff --git a/gnuradio-examples/python/digital/pick_bitrate2.py b/gnuradio-examples/python/digital/pick_bitrate2.py new file mode 100644 index 000000000..c0188dc3c --- /dev/null +++ b/gnuradio-examples/python/digital/pick_bitrate2.py @@ -0,0 +1,64 @@ +from gnuradio import eng_notation + +def pick_rx_bitrate(bitrate, bits_per_symbol, + converter_rate, possible_decims): + """ + Given the 4 input parameters, return at configuration that matches + + @param bitrate: desired bitrate or None + @type bitrate: number or None + @param bits_per_symbol: E.g., BPSK -> 1, QPSK -> 2, 8-PSK -> 3 + @type bits_per_symbol: integer >= 1 + @param converter_rate: converter sample rate in Hz + @type converter_rate: number + @param possible_decims: a list of possible rates + @type possible_decims: a list of integers + + @returns tuple (bitrate, samples_per_symbol, decim_rate) + """ + + rates = list(possible_decims) + rates.sort() + + for i in xrange(len(rates)): + if((converter_rate / float(bits_per_symbol) / rates[i]) >= 2*bitrate): + decim = rates[i] + else: + break + + sps = converter_rate / float(bits_per_symbol) / decim / bitrate + br = converter_rate / float(bits_per_symbol) / decim / sps + + return (br, sps, int(decim)) + + +def pick_tx_bitrate(bitrate, bits_per_symbol, + converter_rate, possible_interps): + """ + Given the 4 input parameters, return at configuration that matches + + @param bitrate: desired bitrate or None + @type bitrate: number or None + @param bits_per_symbol: E.g., BPSK -> 1, QPSK -> 2, 8-PSK -> 3 + @type bits_per_symbol: integer >= 1 + @param converter_rate: converter sample rate in Hz + @type converter_rate: number + @param possible_interps: a list of possible rates + @type possible_interps: a list of integers + + @returns tuple (bitrate, samples_per_symbol, interp_rate) + """ + + rates = list(possible_interps) + rates.sort() + + for i in xrange(len(rates)): + if((converter_rate / float(bits_per_symbol) / rates[i]) >= 2*bitrate): + interp = rates[i] + else: + break + + sps = converter_rate / float(bits_per_symbol) / interp / bitrate + br = converter_rate / float(bits_per_symbol) / interp / sps + + return (br, sps, int(interp)) diff --git a/gnuradio-examples/python/digital/usrp_receive_path.py b/gnuradio-examples/python/digital/usrp_receive_path.py index 517825cc1..2d3d648a0 100644 --- a/gnuradio-examples/python/digital/usrp_receive_path.py +++ b/gnuradio-examples/python/digital/usrp_receive_path.py @@ -22,7 +22,7 @@ from gnuradio import gr from gnuradio import usrp_options import receive_path -from pick_bitrate import pick_rx_bitrate +from pick_bitrate2 import pick_rx_bitrate from gnuradio import eng_notation def add_freq_option(parser): @@ -81,16 +81,19 @@ class usrp_receive_path(gr.hier_block2): self.rs_rate = options.bitrate if options.verbose: print 'USRP Source:', self.u + + + #(self._bitrate, self._samples_per_symbol, self._decim) = \ + # pick_rx_bitrate(options.bitrate, self._demod_class.bits_per_symbol(), \ + # options.samples_per_symbol, options.decim, adc_rate, \ + # self.u.get_decim_rates()) (self._bitrate, self._samples_per_symbol, self._decim) = \ pick_rx_bitrate(options.bitrate, self._demod_class.bits_per_symbol(), \ - options.samples_per_symbol, options.decim, adc_rate, \ - self.u.get_decim_rates()) + adc_rate, self.u.get_decim_rates()) + + print "USRP Decimation: ", self._decim + print "Samples Per Symbol: ", self._samples_per_symbol - # Calculate resampler rate based on requested and actual rates - self.rs_rate = 1.0 /(self._bitrate / self.rs_rate) - - print "Resampling by %f to get bitrate of %ssps" % ( self.rs_rate, eng_notation.num_to_str(self._bitrate/self.rs_rate)) - self.u.set_decim(self._decim) if not self.u.set_center_freq(options.rx_freq): diff --git a/gnuradio-examples/python/digital/usrp_transmit_path.py b/gnuradio-examples/python/digital/usrp_transmit_path.py index ee63dcd2b..4244c33f2 100644 --- a/gnuradio-examples/python/digital/usrp_transmit_path.py +++ b/gnuradio-examples/python/digital/usrp_transmit_path.py @@ -22,7 +22,7 @@ from gnuradio import gr from gnuradio import usrp_options import transmit_path -from pick_bitrate import pick_tx_bitrate +from pick_bitrate2 import pick_tx_bitrate from gnuradio import eng_notation def add_freq_option(parser): @@ -84,15 +84,17 @@ class usrp_transmit_path(gr.hier_block2): self.rs_rate = options.bitrate # Store requested bit rate if options.verbose: print 'USRP Sink:', self.u + #(self._bitrate, self._samples_per_symbol, self._interp) = \ + # pick_tx_bitrate(options.bitrate, self._modulator_class.bits_per_symbol(), \ + # options.samples_per_symbol, options.interp, dac_rate, \ + # self.u.get_interp_rates()) (self._bitrate, self._samples_per_symbol, self._interp) = \ pick_tx_bitrate(options.bitrate, self._modulator_class.bits_per_symbol(), \ - options.samples_per_symbol, options.interp, dac_rate, \ - self.u.get_interp_rates()) - - # Calculate resampler rate based on requested and actual rates - self.rs_rate = self._bitrate / self.rs_rate - print "Resampling by %f to get bitrate of %ssps" % (self.rs_rate, eng_notation.num_to_str(self._bitrate/self.rs_rate)) + dac_rate, self.u.get_interp_rates()) + print "USRP Interpolation: ", self._interp + print "Samples Per Symbol: ", self._samples_per_symbol + self.u.set_interp(self._interp) self.u.set_auto_tr(True) -- cgit From f6010974b8f0af65a8b1a875587bb4a7810565ce Mon Sep 17 00:00:00 2001 From: Tom Rondeau Date: Mon, 8 Feb 2010 21:30:09 -0800 Subject: Setting up code to handle setting of samples per symbol properly. Still buggy in the transmitter due to the make packet padding to 512 bytes. --- gnuradio-examples/python/digital/receive_path.py | 2 +- gnuradio-examples/python/digital/transmit_path.py | 2 +- gnuradio-examples/python/digital/usrp_receive_path.py | 15 ++++++++------- gnuradio-examples/python/digital/usrp_transmit_path.py | 13 +++++++------ 4 files changed, 17 insertions(+), 15 deletions(-) (limited to 'gnuradio-examples') diff --git a/gnuradio-examples/python/digital/receive_path.py b/gnuradio-examples/python/digital/receive_path.py index c229aa9e4..7aeeedab0 100644 --- a/gnuradio-examples/python/digital/receive_path.py +++ b/gnuradio-examples/python/digital/receive_path.py @@ -135,4 +135,4 @@ class receive_path(gr.hier_block2): print "\nReceive Path:" print "modulation: %s" % (self._demod_class.__name__) print "bitrate: %sb/s" % (eng_notation.num_to_str(self._bitrate)) - print "samples/symbol: %3d" % (self._samples_per_symbol) + print "samples/symbol: %.4f" % (self._samples_per_symbol) diff --git a/gnuradio-examples/python/digital/transmit_path.py b/gnuradio-examples/python/digital/transmit_path.py index 9badcdc08..a23f8d191 100644 --- a/gnuradio-examples/python/digital/transmit_path.py +++ b/gnuradio-examples/python/digital/transmit_path.py @@ -114,5 +114,5 @@ class transmit_path(gr.hier_block2): print "Tx amplitude %s" % (self._tx_amplitude) print "modulation: %s" % (self._modulator_class.__name__) print "bitrate: %sb/s" % (eng_notation.num_to_str(self._bitrate)) - print "samples/symbol: %3d" % (self._samples_per_symbol) + print "samples/symbol: %.4f" % (self._samples_per_symbol) diff --git a/gnuradio-examples/python/digital/usrp_receive_path.py b/gnuradio-examples/python/digital/usrp_receive_path.py index 2d3d648a0..1375a2349 100644 --- a/gnuradio-examples/python/digital/usrp_receive_path.py +++ b/gnuradio-examples/python/digital/usrp_receive_path.py @@ -59,15 +59,16 @@ class usrp_receive_path(gr.hier_block2): if options.rx_freq is None: sys.stderr.write("-f FREQ or --freq FREQ or --rx-freq FREQ must be specified\n") raise SystemExit - rx_path = receive_path.receive_path(demod_class, rx_callback, options) - for attr in dir(rx_path): #forward the methods - if not attr.startswith('_') and not hasattr(self, attr): - setattr(self, attr, getattr(rx_path, attr)) #setup usrp self._demod_class = demod_class self._setup_usrp_source(options) + rx_path = receive_path.receive_path(demod_class, rx_callback, options) + for attr in dir(rx_path): #forward the methods + if not attr.startswith('_') and not hasattr(self, attr): + setattr(self, attr, getattr(rx_path, attr)) + # Set up resampler based on rate determined by _setup_usrp_source rs_taps = gr.firdes.low_pass_2(32, 32, 0.45, 0.1, 60) self.resampler = gr.pfb_arb_resampler_ccf(self.rs_rate, rs_taps) @@ -91,9 +92,9 @@ class usrp_receive_path(gr.hier_block2): pick_rx_bitrate(options.bitrate, self._demod_class.bits_per_symbol(), \ adc_rate, self.u.get_decim_rates()) - print "USRP Decimation: ", self._decim - print "Samples Per Symbol: ", self._samples_per_symbol - + options.samples_per_symbol = self._samples_per_symbol + options.decim = self._decim + self.u.set_decim(self._decim) if not self.u.set_center_freq(options.rx_freq): diff --git a/gnuradio-examples/python/digital/usrp_transmit_path.py b/gnuradio-examples/python/digital/usrp_transmit_path.py index 4244c33f2..f4bddf5a8 100644 --- a/gnuradio-examples/python/digital/usrp_transmit_path.py +++ b/gnuradio-examples/python/digital/usrp_transmit_path.py @@ -58,15 +58,16 @@ class usrp_transmit_path(gr.hier_block2): if options.tx_freq is None: sys.stderr.write("-f FREQ or --freq FREQ or --tx-freq FREQ must be specified\n") raise SystemExit - tx_path = transmit_path.transmit_path(modulator_class, options) - for attr in dir(tx_path): #forward the methods - if not attr.startswith('_') and not hasattr(self, attr): - setattr(self, attr, getattr(tx_path, attr)) #setup usrp self._modulator_class = modulator_class self._setup_usrp_sink(options) + tx_path = transmit_path.transmit_path(modulator_class, options) + for attr in dir(tx_path): #forward the methods + if not attr.startswith('_') and not hasattr(self, attr): + setattr(self, attr, getattr(tx_path, attr)) + # Set up resampler based on rate determined by _setup_usrp_sink rs_taps = gr.firdes.low_pass_2(32, 32, 0.45, 0.1, 60) self.resampler = gr.pfb_arb_resampler_ccf(self.rs_rate, rs_taps) @@ -92,8 +93,8 @@ class usrp_transmit_path(gr.hier_block2): pick_tx_bitrate(options.bitrate, self._modulator_class.bits_per_symbol(), \ dac_rate, self.u.get_interp_rates()) - print "USRP Interpolation: ", self._interp - print "Samples Per Symbol: ", self._samples_per_symbol + options.interp = self._interp + options.samples_per_symbol = self._samples_per_symbol self.u.set_interp(self._interp) self.u.set_auto_tr(True) -- cgit From 33a573f76291a32585f85df0c8a5a9f894bd27fd Mon Sep 17 00:00:00 2001 From: Tom Rondeau Date: Tue, 9 Feb 2010 09:58:11 -0800 Subject: Removing resampler from usrp transmit path as its taken care of in the modulators. --- gnuradio-examples/python/digital/usrp_transmit_path.py | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) (limited to 'gnuradio-examples') diff --git a/gnuradio-examples/python/digital/usrp_transmit_path.py b/gnuradio-examples/python/digital/usrp_transmit_path.py index f4bddf5a8..5d841d3e6 100644 --- a/gnuradio-examples/python/digital/usrp_transmit_path.py +++ b/gnuradio-examples/python/digital/usrp_transmit_path.py @@ -68,12 +68,8 @@ class usrp_transmit_path(gr.hier_block2): if not attr.startswith('_') and not hasattr(self, attr): setattr(self, attr, getattr(tx_path, attr)) - # Set up resampler based on rate determined by _setup_usrp_sink - rs_taps = gr.firdes.low_pass_2(32, 32, 0.45, 0.1, 60) - self.resampler = gr.pfb_arb_resampler_ccf(self.rs_rate, rs_taps) - #connect - self.connect(tx_path, self.resampler, self.u) + self.connect(tx_path, self.u) def _setup_usrp_sink(self, options): """ @@ -85,10 +81,7 @@ class usrp_transmit_path(gr.hier_block2): self.rs_rate = options.bitrate # Store requested bit rate if options.verbose: print 'USRP Sink:', self.u - #(self._bitrate, self._samples_per_symbol, self._interp) = \ - # pick_tx_bitrate(options.bitrate, self._modulator_class.bits_per_symbol(), \ - # options.samples_per_symbol, options.interp, dac_rate, \ - # self.u.get_interp_rates()) + (self._bitrate, self._samples_per_symbol, self._interp) = \ pick_tx_bitrate(options.bitrate, self._modulator_class.bits_per_symbol(), \ dac_rate, self.u.get_interp_rates()) -- cgit From 9f966c1f5123de5a16c810c52c2895ba0db8e2dc Mon Sep 17 00:00:00 2001 From: Tom Rondeau Date: Tue, 9 Feb 2010 12:27:30 -0800 Subject: Arbitrary bit rates seems to be working. --- gnuradio-examples/python/digital/benchmark_qt_rx2.py | 11 +++++------ gnuradio-examples/python/digital/usrp_receive_path.py | 11 +---------- 2 files changed, 6 insertions(+), 16 deletions(-) (limited to 'gnuradio-examples') diff --git a/gnuradio-examples/python/digital/benchmark_qt_rx2.py b/gnuradio-examples/python/digital/benchmark_qt_rx2.py index cabbecb6f..d6338f853 100755 --- a/gnuradio-examples/python/digital/benchmark_qt_rx2.py +++ b/gnuradio-examples/python/digital/benchmark_qt_rx2.py @@ -33,7 +33,7 @@ import sys # from current dir from receive_path import receive_path -from pick_bitrate import pick_rx_bitrate +from pick_bitrate2 import pick_rx_bitrate try: from gnuradio.qtgui import qtgui @@ -242,8 +242,8 @@ class my_top_block(gr.top_block): # Connect to the QT sinks # FIXME: make better exposure to receiver from rxpath - #self.receiver = self.rxpath.packet_receiver._demodulator.phase_recov - self.receiver = self.rxpath.packet_receiver._demodulator.freq_recov + self.receiver = self.rxpath.packet_receiver._demodulator.phase_recov + #self.receiver = self.rxpath.packet_receiver._demodulator.freq_recov self.connect(self.u, self.snk_rxin) self.connect(self.receiver, self.snk_rx) @@ -267,9 +267,8 @@ class my_top_block(gr.top_block): self.u.set_decim(self._decim) (self._bitrate, self._samples_per_symbol, self._decim) = \ - pick_rx_bitrate(self._bitrate, self._demod_class.bits_per_symbol(), \ - self._samples_per_symbol, self._decim, adc_rate, \ - self.u.get_decim_rates()) + pick_rx_bitrate(options.bitrate, self._demod_class.bits_per_symbol(), \ + adc_rate, self.u.get_decim_rates()) self.u.set_decim(self._decim) self.set_auto_tr(True) # enable Auto Transmit/Receive switching diff --git a/gnuradio-examples/python/digital/usrp_receive_path.py b/gnuradio-examples/python/digital/usrp_receive_path.py index 1375a2349..c7b70fb2d 100644 --- a/gnuradio-examples/python/digital/usrp_receive_path.py +++ b/gnuradio-examples/python/digital/usrp_receive_path.py @@ -69,12 +69,8 @@ class usrp_receive_path(gr.hier_block2): if not attr.startswith('_') and not hasattr(self, attr): setattr(self, attr, getattr(rx_path, attr)) - # Set up resampler based on rate determined by _setup_usrp_source - rs_taps = gr.firdes.low_pass_2(32, 32, 0.45, 0.1, 60) - self.resampler = gr.pfb_arb_resampler_ccf(self.rs_rate, rs_taps) - #connect - self.connect(self.u, self.resampler, rx_path) + self.connect(self.u, rx_path) def _setup_usrp_source(self, options): self.u = usrp_options.create_usrp_source(options) @@ -83,11 +79,6 @@ class usrp_receive_path(gr.hier_block2): if options.verbose: print 'USRP Source:', self.u - - #(self._bitrate, self._samples_per_symbol, self._decim) = \ - # pick_rx_bitrate(options.bitrate, self._demod_class.bits_per_symbol(), \ - # options.samples_per_symbol, options.decim, adc_rate, \ - # self.u.get_decim_rates()) (self._bitrate, self._samples_per_symbol, self._decim) = \ pick_rx_bitrate(options.bitrate, self._demod_class.bits_per_symbol(), \ adc_rate, self.u.get_decim_rates()) -- cgit From b845770e33b584a88150dc97b45c7b0807791693 Mon Sep 17 00:00:00 2001 From: Tom Rondeau Date: Wed, 10 Feb 2010 16:12:32 -0800 Subject: Working on pick_bitrate. --- gnuradio-examples/python/digital/pick_bitrate2.py | 92 +++++++++++++++++------ 1 file changed, 67 insertions(+), 25 deletions(-) (limited to 'gnuradio-examples') diff --git a/gnuradio-examples/python/digital/pick_bitrate2.py b/gnuradio-examples/python/digital/pick_bitrate2.py index c0188dc3c..b678f7254 100644 --- a/gnuradio-examples/python/digital/pick_bitrate2.py +++ b/gnuradio-examples/python/digital/pick_bitrate2.py @@ -1,39 +1,74 @@ +# +# Copyright 2010 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 eng_notation -def pick_rx_bitrate(bitrate, bits_per_symbol, - converter_rate, possible_decims): +_default_bitrate = 500e3 + +def _pick_bitrate(bitrate, bits_per_symbol, samples_per_symbol, + xrate, converter_rate, xrates, gen_info): + """ + @returns tuple (bitrate, samples_per_symbol, interp_rate_or_decim_rate) """ - Given the 4 input parameters, return at configuration that matches - @param bitrate: desired bitrate or None - @type bitrate: number or None - @param bits_per_symbol: E.g., BPSK -> 1, QPSK -> 2, 8-PSK -> 3 - @type bits_per_symbol: integer >= 1 - @param converter_rate: converter sample rate in Hz - @type converter_rate: number - @param possible_decims: a list of possible rates - @type possible_decims: a list of integers + if not isinstance(bits_per_symbol, int) or bits_per_symbol < 1: + raise ValueError, "bits_per_symbol must be an int >= 1" + + if samples_per_symbol is not None and xrate is not None: # completely determined + return (float(converter_rate) / xrate / samples_per_symbol, + samples_per_symbol, xrate) - @returns tuple (bitrate, samples_per_symbol, decim_rate) - """ + # If no parameters are give, use the default bit rate + if bitrate is None and samples_per_symbol is None and xrate is None: + bitrate = _default_bitrate - rates = list(possible_decims) - rates.sort() + # If only bitrate is specified, return max xrate and appropriate + # samples per symbol to reach bit rate + if samples_per_symbol is None and xrate is None: + xrates.sort() + for i in xrange(len(xrates)): + if((converter_rate / float(bits_per_symbol) / xrates[i]) >= 2*bitrate): + decim = xrates[i] + else: + break + + sps = converter_rate / float(bits_per_symbol) / decim / bitrate + br = converter_rate / float(bits_per_symbol) / decim / sps + + return (br, sps, int(decim)) - for i in xrange(len(rates)): - if((converter_rate / float(bits_per_symbol) / rates[i]) >= 2*bitrate): - decim = rates[i] - else: - break - sps = converter_rate / float(bits_per_symbol) / decim / bitrate - br = converter_rate / float(bits_per_symbol) / decim / sps + # now we have a target bitrate and possibly an xrate or + # samples_per_symbol constraint, but not both of them. + ret = _pick_best(bitrate, bits_per_symbol, + _filter_info(gen_info(converter_rate, xrates), + samples_per_symbol, xrate)) - return (br, sps, int(decim)) + print "Actual Bitrate:", eng_notation.num_to_str(ret[0]) + return ret -def pick_tx_bitrate(bitrate, bits_per_symbol, - converter_rate, possible_interps): + +def pick_tx_bitrate(bitrate, bits_per_symbol, samples_per_symbol, + interp_rate, converter_rate, possible_interps): """ Given the 4 input parameters, return at configuration that matches @@ -41,6 +76,10 @@ def pick_tx_bitrate(bitrate, bits_per_symbol, @type bitrate: number or None @param bits_per_symbol: E.g., BPSK -> 1, QPSK -> 2, 8-PSK -> 3 @type bits_per_symbol: integer >= 1 + @param samples_per_symbol: samples/baud (aka samples/symbol) + @type samples_per_symbol: number or None + @param interp_rate: USRP interpolation factor + @type interp_rate: integer or None @param converter_rate: converter sample rate in Hz @type converter_rate: number @param possible_interps: a list of possible rates @@ -49,6 +88,9 @@ def pick_tx_bitrate(bitrate, bits_per_symbol, @returns tuple (bitrate, samples_per_symbol, interp_rate) """ + return _pick_bitrate(bitrate, bits_per_symbol, samples_per_symbol, + interp_rate, converter_rate, possible_interps, _gen_tx_info) + rates = list(possible_interps) rates.sort() -- cgit From 7d5e47e14126e37ad78164df448d0fcc4b04c558 Mon Sep 17 00:00:00 2001 From: Tom Rondeau Date: Mon, 15 Feb 2010 15:31:52 -0800 Subject: New pick_bitrate2 will take any combination of bitrate, samples per symbol, and converter rate. --- gnuradio-examples/python/digital/pick_bitrate2.py | 88 ++++++++++++++--------- 1 file changed, 55 insertions(+), 33 deletions(-) (limited to 'gnuradio-examples') diff --git a/gnuradio-examples/python/digital/pick_bitrate2.py b/gnuradio-examples/python/digital/pick_bitrate2.py index b678f7254..a951c4a65 100644 --- a/gnuradio-examples/python/digital/pick_bitrate2.py +++ b/gnuradio-examples/python/digital/pick_bitrate2.py @@ -24,47 +24,58 @@ from gnuradio import eng_notation _default_bitrate = 500e3 def _pick_bitrate(bitrate, bits_per_symbol, samples_per_symbol, - xrate, converter_rate, xrates, gen_info): + xrate, converter_rate, xrates): """ @returns tuple (bitrate, samples_per_symbol, interp_rate_or_decim_rate) """ if not isinstance(bits_per_symbol, int) or bits_per_symbol < 1: raise ValueError, "bits_per_symbol must be an int >= 1" - - if samples_per_symbol is not None and xrate is not None: # completely determined - return (float(converter_rate) / xrate / samples_per_symbol, - samples_per_symbol, xrate) + + converter_rate = float(converter_rate) + bits_per_symbol = float(bits_per_symbol) + + # completely determined; if bitrate is specified, this overwrites it + if (samples_per_symbol is not None) and (xrate is not None): + bitrate = converter_rate / bits_per_symbol / xrate / samples_per_symbol + + # If only SPS is given + if (bitrate is None) and (samples_per_symbol is not None) and (xrate is None): + xrate = max(xrates) + bitrate = converter_rate / bits_per_symbol / xrate / samples_per_symbol + + # If only xrate is given + if (bitrate is None) and (samples_per_symbol is None) and (xrate is not None): + samples_per_symbol = 2.0 + bitrate = converter_rate / bits_per_symbol / xrate / samples_per_symbol # If no parameters are give, use the default bit rate - if bitrate is None and samples_per_symbol is None and xrate is None: + if (bitrate is None) and (samples_per_symbol is None) and (xrate is None): bitrate = _default_bitrate # If only bitrate is specified, return max xrate and appropriate - # samples per symbol to reach bit rate - if samples_per_symbol is None and xrate is None: + # samples per symbol (minimum of 2.0) to reach bit rate + if (samples_per_symbol is None) and (xrate is None): xrates.sort() for i in xrange(len(xrates)): - if((converter_rate / float(bits_per_symbol) / xrates[i]) >= 2*bitrate): - decim = xrates[i] + if((converter_rate / bits_per_symbol / xrates[i]) >= 2*bitrate): + rate = xrates[i] else: break - - sps = converter_rate / float(bits_per_symbol) / decim / bitrate - br = converter_rate / float(bits_per_symbol) / decim / sps - return (br, sps, int(decim)) + xrate = rate + samples_per_symbol = converter_rate / bits_per_symbol / rate / bitrate + bitrate = converter_rate / bits_per_symbol / xrate / samples_per_symbol + # If bitrate and xrate are specified + if(samples_per_symbol is None): + samples_per_symbol = converter_rate / xrate / bits_per_symbol / bitrate - # now we have a target bitrate and possibly an xrate or - # samples_per_symbol constraint, but not both of them. - ret = _pick_best(bitrate, bits_per_symbol, - _filter_info(gen_info(converter_rate, xrates), - samples_per_symbol, xrate)) - - print "Actual Bitrate:", eng_notation.num_to_str(ret[0]) - return ret + # If bitrate and SPS are specified + if(xrate is None): + xrate = converter_rate / samples_per_symbol / bits_per_symbol / bitrate + return (bitrate, samples_per_symbol, int(xrate)) def pick_tx_bitrate(bitrate, bits_per_symbol, samples_per_symbol, @@ -89,18 +100,29 @@ def pick_tx_bitrate(bitrate, bits_per_symbol, samples_per_symbol, """ return _pick_bitrate(bitrate, bits_per_symbol, samples_per_symbol, - interp_rate, converter_rate, possible_interps, _gen_tx_info) + interp_rate, converter_rate, possible_interps) - rates = list(possible_interps) - rates.sort() - for i in xrange(len(rates)): - if((converter_rate / float(bits_per_symbol) / rates[i]) >= 2*bitrate): - interp = rates[i] - else: - break +def pick_rx_bitrate(bitrate, bits_per_symbol, samples_per_symbol, + decim_rate, converter_rate, possible_decims): + """ + Given the 4 input parameters, return at configuration that matches - sps = converter_rate / float(bits_per_symbol) / interp / bitrate - br = converter_rate / float(bits_per_symbol) / interp / sps + @param bitrate: desired bitrate or None + @type bitrate: number or None + @param bits_per_symbol: E.g., BPSK -> 1, QPSK -> 2, 8-PSK -> 3 + @type bits_per_symbol: integer >= 1 + @param samples_per_symbol: samples/baud (aka samples/symbol) + @type samples_per_symbol: number or None + @param decim_rate: USRP decimation factor + @type decim_rate: integer or None + @param converter_rate: converter sample rate in Hz + @type converter_rate: number + @param possible_decims: a list of possible rates + @type possible_decims: a list of integers + + @returns tuple (bitrate, samples_per_symbol, decim_rate) + """ - return (br, sps, int(interp)) + return _pick_bitrate(bitrate, bits_per_symbol, samples_per_symbol, + decim_rate, converter_rate, possible_decims) -- cgit From 85aad96915db5f53897f91257794c85eb67f39d4 Mon Sep 17 00:00:00 2001 From: Tom Rondeau Date: Thu, 25 Feb 2010 18:50:24 -0500 Subject: Fixing pick_bitrate2 for transmit side with all cases tested. --- gnuradio-examples/python/digital/pick_bitrate2.py | 33 ++++++++++++++++++++-- gnuradio-examples/python/digital/transmit_path.py | 2 +- .../python/digital/usrp_transmit_path.py | 10 +++++-- 3 files changed, 38 insertions(+), 7 deletions(-) (limited to 'gnuradio-examples') diff --git a/gnuradio-examples/python/digital/pick_bitrate2.py b/gnuradio-examples/python/digital/pick_bitrate2.py index a951c4a65..23081117c 100644 --- a/gnuradio-examples/python/digital/pick_bitrate2.py +++ b/gnuradio-examples/python/digital/pick_bitrate2.py @@ -22,6 +22,8 @@ from gnuradio import eng_notation _default_bitrate = 500e3 +_sps_min = 2 +_sps_max = 100 def _pick_bitrate(bitrate, bits_per_symbol, samples_per_symbol, xrate, converter_rate, xrates): @@ -44,7 +46,7 @@ def _pick_bitrate(bitrate, bits_per_symbol, samples_per_symbol, xrate = max(xrates) bitrate = converter_rate / bits_per_symbol / xrate / samples_per_symbol - # If only xrate is given + # If only xrate is given, just set SPS to 2 and calculate bitrate if (bitrate is None) and (samples_per_symbol is None) and (xrate is not None): samples_per_symbol = 2.0 bitrate = converter_rate / bits_per_symbol / xrate / samples_per_symbol @@ -63,7 +65,12 @@ def _pick_bitrate(bitrate, bits_per_symbol, samples_per_symbol, else: break - xrate = rate + try: + xrate = rate + except UnboundLocalError: + print "Requested bitrate out of bounds" + sys.exit(1) + samples_per_symbol = converter_rate / bits_per_symbol / rate / bitrate bitrate = converter_rate / bits_per_symbol / xrate / samples_per_symbol @@ -74,7 +81,27 @@ def _pick_bitrate(bitrate, bits_per_symbol, samples_per_symbol, # If bitrate and SPS are specified if(xrate is None): xrate = converter_rate / samples_per_symbol / bits_per_symbol / bitrate - + if((xrate in xrates) == False): + # Find the closest avaiable rate larger than the calculated one + xrates.sort() + for x in xrates: + if(x > xrate): + xrate = x + break + if(xrate > max(xrates)): + xrate = max(xrates) + + bitrate = converter_rate / bits_per_symbol / xrate / samples_per_symbol + print "Could not find suitable rate for specified SPS and Bitrate" + print "Using rate = %d for bitrate of %sbps" % \ + (xrate, (eng_notation.num_to_str(bitrate))) + + if((xrate in xrates) == False): + raise ValueError(("Invalid rate (rate = %d)" % xrate)) + if((samples_per_symbol < _sps_min) or (samples_per_symbol > _sps_max)): + raise ValueError(("Invalid samples per symbol (sps = %.2f). Must be in [%.0f, %.0f]." \ + % (xrate, _sps_min, _sps_max))) + return (bitrate, samples_per_symbol, int(xrate)) diff --git a/gnuradio-examples/python/digital/transmit_path.py b/gnuradio-examples/python/digital/transmit_path.py index a23f8d191..ba0c434da 100644 --- a/gnuradio-examples/python/digital/transmit_path.py +++ b/gnuradio-examples/python/digital/transmit_path.py @@ -99,7 +99,7 @@ class transmit_path(gr.hier_block2): help="set transmitter digital amplitude: 0 <= AMPL < 1 [default=%default]") normal.add_option("-v", "--verbose", action="store_true", default=False) - expert.add_option("-S", "--samples-per-symbol", type="int", default=2, + expert.add_option("-S", "--samples-per-symbol", type="int", default=None, help="set samples/symbol [default=%default]") expert.add_option("", "--log", action="store_true", default=False, help="Log all parts of flow graph to file (CAUTION: lots of data)") diff --git a/gnuradio-examples/python/digital/usrp_transmit_path.py b/gnuradio-examples/python/digital/usrp_transmit_path.py index 5d841d3e6..2a2765bcd 100644 --- a/gnuradio-examples/python/digital/usrp_transmit_path.py +++ b/gnuradio-examples/python/digital/usrp_transmit_path.py @@ -79,15 +79,19 @@ class usrp_transmit_path(gr.hier_block2): self.u = usrp_options.create_usrp_sink(options) dac_rate = self.u.dac_rate() self.rs_rate = options.bitrate # Store requested bit rate - if options.verbose: - print 'USRP Sink:', self.u (self._bitrate, self._samples_per_symbol, self._interp) = \ - pick_tx_bitrate(options.bitrate, self._modulator_class.bits_per_symbol(), \ + pick_tx_bitrate(options.bitrate, self._modulator_class.bits_per_symbol(), + options.samples_per_symbol, options.interp, dac_rate, self.u.get_interp_rates()) options.interp = self._interp options.samples_per_symbol = self._samples_per_symbol + options.bitrate = self._bitrate + + if options.verbose: + print 'USRP Sink:', self.u + print "Interpolation Rate: ", self._interp self.u.set_interp(self._interp) self.u.set_auto_tr(True) -- cgit From 93c51f5c02311f89dc6eb47923b34b13038c805c Mon Sep 17 00:00:00 2001 From: Tom Rondeau Date: Fri, 26 Feb 2010 09:58:39 -0500 Subject: Fixes pick_bitrate2 for use on receiver side. --- gnuradio-examples/python/digital/receive_path.py | 2 +- gnuradio-examples/python/digital/usrp_receive_path.py | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) (limited to 'gnuradio-examples') diff --git a/gnuradio-examples/python/digital/receive_path.py b/gnuradio-examples/python/digital/receive_path.py index 7aeeedab0..7df945ed0 100644 --- a/gnuradio-examples/python/digital/receive_path.py +++ b/gnuradio-examples/python/digital/receive_path.py @@ -119,7 +119,7 @@ class receive_path(gr.hier_block2): normal.add_option("-r", "--bitrate", type="eng_float", default=100e3, help="specify bitrate [default=%default].") normal.add_option("-v", "--verbose", action="store_true", default=False) - expert.add_option("-S", "--samples-per-symbol", type="int", default=2, + expert.add_option("-S", "--samples-per-symbol", type="int", default=None, help="set samples/symbol [default=%default]") expert.add_option("", "--log", action="store_true", default=False, help="Log all parts of flow graph to files (CAUTION: lots of data)") diff --git a/gnuradio-examples/python/digital/usrp_receive_path.py b/gnuradio-examples/python/digital/usrp_receive_path.py index c7b70fb2d..de017651e 100644 --- a/gnuradio-examples/python/digital/usrp_receive_path.py +++ b/gnuradio-examples/python/digital/usrp_receive_path.py @@ -76,13 +76,16 @@ class usrp_receive_path(gr.hier_block2): self.u = usrp_options.create_usrp_source(options) adc_rate = self.u.adc_rate() self.rs_rate = options.bitrate - if options.verbose: - print 'USRP Source:', self.u (self._bitrate, self._samples_per_symbol, self._decim) = \ pick_rx_bitrate(options.bitrate, self._demod_class.bits_per_symbol(), \ + options.samples_per_symbol, options.decim, adc_rate, self.u.get_decim_rates()) + if options.verbose: + print 'USRP Source:', self.u + print 'Decimation: ', self._decim + options.samples_per_symbol = self._samples_per_symbol options.decim = self._decim -- cgit From 598924aa8be0740583d9d32f99269e1e55134b6e Mon Sep 17 00:00:00 2001 From: Tom Rondeau Date: Fri, 26 Feb 2010 10:11:39 -0500 Subject: Fixing a few bugs in handling of real samples per symbol. --- gnuradio-examples/python/digital/pick_bitrate2.py | 5 ++--- gnuradio-examples/python/digital/receive_path.py | 2 +- gnuradio-examples/python/digital/transmit_path.py | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) (limited to 'gnuradio-examples') diff --git a/gnuradio-examples/python/digital/pick_bitrate2.py b/gnuradio-examples/python/digital/pick_bitrate2.py index 23081117c..92539560c 100644 --- a/gnuradio-examples/python/digital/pick_bitrate2.py +++ b/gnuradio-examples/python/digital/pick_bitrate2.py @@ -68,8 +68,7 @@ def _pick_bitrate(bitrate, bits_per_symbol, samples_per_symbol, try: xrate = rate except UnboundLocalError: - print "Requested bitrate out of bounds" - sys.exit(1) + raise ValueError("Requested bitrate out of bounds") samples_per_symbol = converter_rate / bits_per_symbol / rate / bitrate bitrate = converter_rate / bits_per_symbol / xrate / samples_per_symbol @@ -100,7 +99,7 @@ def _pick_bitrate(bitrate, bits_per_symbol, samples_per_symbol, raise ValueError(("Invalid rate (rate = %d)" % xrate)) if((samples_per_symbol < _sps_min) or (samples_per_symbol > _sps_max)): raise ValueError(("Invalid samples per symbol (sps = %.2f). Must be in [%.0f, %.0f]." \ - % (xrate, _sps_min, _sps_max))) + % (samples_per_symbol, _sps_min, _sps_max))) return (bitrate, samples_per_symbol, int(xrate)) diff --git a/gnuradio-examples/python/digital/receive_path.py b/gnuradio-examples/python/digital/receive_path.py index 7df945ed0..0024d6941 100644 --- a/gnuradio-examples/python/digital/receive_path.py +++ b/gnuradio-examples/python/digital/receive_path.py @@ -119,7 +119,7 @@ class receive_path(gr.hier_block2): normal.add_option("-r", "--bitrate", type="eng_float", default=100e3, help="specify bitrate [default=%default].") normal.add_option("-v", "--verbose", action="store_true", default=False) - expert.add_option("-S", "--samples-per-symbol", type="int", default=None, + expert.add_option("-S", "--samples-per-symbol", type="float", default=None, help="set samples/symbol [default=%default]") expert.add_option("", "--log", action="store_true", default=False, help="Log all parts of flow graph to files (CAUTION: lots of data)") diff --git a/gnuradio-examples/python/digital/transmit_path.py b/gnuradio-examples/python/digital/transmit_path.py index ba0c434da..86ebf75c3 100644 --- a/gnuradio-examples/python/digital/transmit_path.py +++ b/gnuradio-examples/python/digital/transmit_path.py @@ -99,7 +99,7 @@ class transmit_path(gr.hier_block2): help="set transmitter digital amplitude: 0 <= AMPL < 1 [default=%default]") normal.add_option("-v", "--verbose", action="store_true", default=False) - expert.add_option("-S", "--samples-per-symbol", type="int", default=None, + expert.add_option("-S", "--samples-per-symbol", type="float", default=None, help="set samples/symbol [default=%default]") expert.add_option("", "--log", action="store_true", default=False, help="Log all parts of flow graph to file (CAUTION: lots of data)") -- cgit From b532f4b7b6030665cbd03a19dd776932d31a1734 Mon Sep 17 00:00:00 2001 From: Tom Rondeau Date: Sat, 27 Feb 2010 17:37:45 -0500 Subject: Fixing use of pick_bitrate2 in QT Rx2. --- gnuradio-examples/python/digital/benchmark_qt_rx2.py | 1 + 1 file changed, 1 insertion(+) (limited to 'gnuradio-examples') diff --git a/gnuradio-examples/python/digital/benchmark_qt_rx2.py b/gnuradio-examples/python/digital/benchmark_qt_rx2.py index d6338f853..3285d8e4a 100755 --- a/gnuradio-examples/python/digital/benchmark_qt_rx2.py +++ b/gnuradio-examples/python/digital/benchmark_qt_rx2.py @@ -268,6 +268,7 @@ class my_top_block(gr.top_block): (self._bitrate, self._samples_per_symbol, self._decim) = \ pick_rx_bitrate(options.bitrate, self._demod_class.bits_per_symbol(), \ + options.samples_per_symbol, options.decim, adc_rate, self.u.get_decim_rates()) self.u.set_decim(self._decim) -- cgit From ff876f7cc310bbdf1c5d05f85daba0afdb33561a Mon Sep 17 00:00:00 2001 From: Tom Rondeau Date: Sat, 6 Mar 2010 17:15:33 -0500 Subject: Fixing how new pick_bitrate is used. --- gnuradio-examples/python/digital/benchmark_qt_rx2.py | 1 + 1 file changed, 1 insertion(+) (limited to 'gnuradio-examples') diff --git a/gnuradio-examples/python/digital/benchmark_qt_rx2.py b/gnuradio-examples/python/digital/benchmark_qt_rx2.py index d6338f853..4de15e480 100755 --- a/gnuradio-examples/python/digital/benchmark_qt_rx2.py +++ b/gnuradio-examples/python/digital/benchmark_qt_rx2.py @@ -268,6 +268,7 @@ class my_top_block(gr.top_block): (self._bitrate, self._samples_per_symbol, self._decim) = \ pick_rx_bitrate(options.bitrate, self._demod_class.bits_per_symbol(), \ + options.samples_per_symbol, options.decim, \ adc_rate, self.u.get_decim_rates()) self.u.set_decim(self._decim) -- cgit From ebd5449ebf8c08f78cada720eb47769bdfaa4bde Mon Sep 17 00:00:00 2001 From: Tom Rondeau Date: Sat, 6 Mar 2010 17:16:19 -0500 Subject: Small fixes for loopback with new code. --- gnuradio-examples/python/digital/benchmark_loopback.py | 5 +++++ gnuradio-examples/python/digital/benchmark_qt_loopback2.py | 7 +++++++ 2 files changed, 12 insertions(+) (limited to 'gnuradio-examples') diff --git a/gnuradio-examples/python/digital/benchmark_loopback.py b/gnuradio-examples/python/digital/benchmark_loopback.py index 4cc4a7bee..47e4f2028 100755 --- a/gnuradio-examples/python/digital/benchmark_loopback.py +++ b/gnuradio-examples/python/digital/benchmark_loopback.py @@ -44,6 +44,11 @@ class my_top_block(gr.top_block): noise_power = power_in_signal/SNR noise_voltage = math.sqrt(noise_power) + # With new interface, sps does not get set by default, but + # in the loopback, we don't recalculate it; so just force it here + if(options.samples_per_symbol == None): + options.samples_per_symbol = 2 + self.txpath = transmit_path(mod_class, options) self.throttle = gr.throttle(gr.sizeof_gr_complex, options.sample_rate) self.rxpath = receive_path(demod_class, rx_callback, options) diff --git a/gnuradio-examples/python/digital/benchmark_qt_loopback2.py b/gnuradio-examples/python/digital/benchmark_qt_loopback2.py index 1cb95198e..1f236fd7f 100755 --- a/gnuradio-examples/python/digital/benchmark_qt_loopback2.py +++ b/gnuradio-examples/python/digital/benchmark_qt_loopback2.py @@ -223,6 +223,11 @@ class my_top_block(gr.top_block): self._noise_voltage = self.get_noise_voltage(self._snr_dB) + # With new interface, sps does not get set by default, but + # in the loopback, we don't recalculate it; so just force it here + if(options.samples_per_symbol == None): + options.samples_per_symbol = 2 + self.txpath = transmit_path(mod_class, options) self.throttle = gr.throttle(gr.sizeof_gr_complex, self.sample_rate()) self.rxpath = receive_path(demod_class, rx_callback, options) @@ -269,6 +274,7 @@ class my_top_block(gr.top_block): self.phase_recov = self.rxpath.packet_receiver._demodulator.phase_recov self.time_recov = self.rxpath.packet_receiver._demodulator.time_recov self.freq_recov.set_alpha(self._gain_freq) + self.freq_recov.set_beta(self._gain_freq/10.0) self.phase_recov.set_alpha(self._gain_phase) self.phase_recov.set_beta(0.25*self._gain_phase*self._gain_phase) self.time_recov.set_alpha(self._gain_clock) @@ -367,6 +373,7 @@ class my_top_block(gr.top_block): self._gain_freq = gain_freq #self._gain_freq_beta = .25 * self._gain_freq * self._gain_freq self.rxpath.packet_receiver._demodulator.freq_recov.set_alpha(self._gain_freq) + self.rxpath.packet_receiver._demodulator.freq_recov.set_beta(self._gain_freq/10.0) #self.rxpath.packet_receiver._demodulator.freq_recov.set_beta(self._gain_fre_beta) -- cgit From 1ba78b5f4c6bc2468b6fb798f41837a8ab2be89b Mon Sep 17 00:00:00 2001 From: Tom Rondeau Date: Sat, 6 Mar 2010 17:17:29 -0500 Subject: Changing FLL parameter range for use with new code. --- gnuradio-examples/grc/demod/digital_freq_lock.grc | 210 ++++++++++---------- gnuradio-examples/grc/demod/pam_sync.grc | 222 +++++++++++----------- 2 files changed, 216 insertions(+), 216 deletions(-) (limited to 'gnuradio-examples') diff --git a/gnuradio-examples/grc/demod/digital_freq_lock.grc b/gnuradio-examples/grc/demod/digital_freq_lock.grc index 37ee8123e..36037febb 100644 --- a/gnuradio-examples/grc/demod/digital_freq_lock.grc +++ b/gnuradio-examples/grc/demod/digital_freq_lock.grc @@ -1,6 +1,6 @@ - Fri Jan 29 18:10:00 2010 + Sat Mar 6 17:17:12 2010 options @@ -980,54 +980,50 @@ - variable_slider + root_raised_cosine_filter id - alpha + root_raised_cosine_filter_0 _enabled True - label - Freq Alpha - - - value - 0 + type + interp_fir_filter_ccf - min - 0 + decim + 1 - max - 0.001 + interp + spb_gen - num_steps - 1000 + gain + 2*spb_gen - style - wx.SL_HORIZONTAL + samp_rate + 1.0 - converver - float_converter + sym_rate + 1./spb_gen - grid_pos - + alpha + rolloff - notebook - + ntaps + 44 _coordinate - (552, 4) + (978, 157) _rotation @@ -1035,105 +1031,81 @@ - variable_slider + gr_fll_band_edge_cc id - beta + gr_fll_band_edge_cc_0 _enabled True - label - Freq Beta - - - value - 0 - - - min - 0.0 - - - max - 0.0001 + type + cc - num_steps - 1000 + samps_per_sym + spb_gen - style - wx.SL_HORIZONTAL + rolloff + rolloff - converver - float_converter + filter_size + 44 - grid_pos - + alpha + alpha - notebook - + beta + beta _coordinate - (668, 5) + (874, 664) _rotation - 180 + 0 - root_raised_cosine_filter + gr_channel_model id - root_raised_cosine_filter_0 + gr_channel_model_0 _enabled True - type - interp_fir_filter_ccf - - - decim - 1 - - - interp - spb_gen + noise_voltage + noise_amp - gain - 2*spb_gen + freq_offset + freq_offset - samp_rate + epsilon 1.0 - sym_rate - 1./spb_gen - - - alpha - rolloff + taps + 1.0 - ntaps - 44 + seed + 42 _coordinate - (978, 157) + (618, 376) _rotation @@ -1141,81 +1113,109 @@ - gr_fll_band_edge_cc + variable_slider id - gr_fll_band_edge_cc_0 + beta _enabled True - type - cc + label + Freq Beta - samps_per_sym - spb_gen + value + 0 - rolloff - rolloff + min + 0.0 - filter_size - 44 + max + 0.01 - alpha - alpha + num_steps + 1000 - beta - beta + style + wx.SL_HORIZONTAL + + + converver + float_converter + + + grid_pos + + + + notebook + _coordinate - (874, 664) + (668, 5) _rotation - 0 + 180 - gr_channel_model + variable_slider id - gr_channel_model_0 + alpha _enabled True - noise_voltage - noise_amp + label + Freq Alpha - freq_offset - freq_offset + value + 0 - epsilon - 1.0 + min + 0 - taps - 1.0 + max + 0.1 - seed - 42 + num_steps + 1000 + + + style + wx.SL_HORIZONTAL + + + converver + float_converter + + + grid_pos + + + + notebook + _coordinate - (618, 376) + (552, 4) _rotation diff --git a/gnuradio-examples/grc/demod/pam_sync.grc b/gnuradio-examples/grc/demod/pam_sync.grc index 80a7aef0c..8571995a5 100644 --- a/gnuradio-examples/grc/demod/pam_sync.grc +++ b/gnuradio-examples/grc/demod/pam_sync.grc @@ -1,6 +1,6 @@ - Mon Feb 1 18:58:32 2010 + Sat Mar 6 17:17:22 2010 options @@ -709,116 +709,6 @@ 0 - - variable_slider - - id - freq_beta - - - _enabled - True - - - label - Freq Beta - - - value - 0 - - - min - 0.0 - - - max - 0.0001 - - - num_steps - 1000 - - - style - wx.SL_HORIZONTAL - - - converver - float_converter - - - grid_pos - - - - notebook - - - - _coordinate - (836, 9) - - - _rotation - 180 - - - - variable_slider - - id - freq_alpha - - - _enabled - True - - - label - Freq Alpha - - - value - 0 - - - min - 0 - - - max - 0.001 - - - num_steps - 1000 - - - style - wx.SL_HORIZONTAL - - - converver - float_converter - - - grid_pos - - - - notebook - - - - _coordinate - (734, 10) - - - _rotation - 0 - - variable_slider @@ -1621,6 +1511,116 @@ 0 + + variable_slider + + id + freq_alpha + + + _enabled + True + + + label + Freq Alpha + + + value + 0 + + + min + 0 + + + max + 0.1 + + + num_steps + 1000 + + + style + wx.SL_HORIZONTAL + + + converver + float_converter + + + grid_pos + + + + notebook + + + + _coordinate + (734, 10) + + + _rotation + 0 + + + + variable_slider + + id + freq_beta + + + _enabled + True + + + label + Freq Beta + + + value + 0 + + + min + 0.0 + + + max + 0.01 + + + num_steps + 1000 + + + style + wx.SL_HORIZONTAL + + + converver + float_converter + + + grid_pos + + + + notebook + + + + _coordinate + (836, 9) + + + _rotation + 180 + + random_source_x_0 gr_uchar_to_float_0 -- cgit From 52ae8be371d71f8c0817b2a88593ff6c378b9613 Mon Sep 17 00:00:00 2001 From: Tom Rondeau Date: Sat, 13 Mar 2010 20:08:02 -0500 Subject: Making a version 2 of transmit path so as not to affect old dbpsk and dqpsk operations. --- gnuradio-examples/python/digital/benchmark_tx2.py | 135 +++++++++++++++++++++ .../python/digital/usrp_transmit_path.py | 2 +- .../python/digital/usrp_transmit_path2.py | 101 +++++++++++++++ 3 files changed, 237 insertions(+), 1 deletion(-) create mode 100755 gnuradio-examples/python/digital/benchmark_tx2.py create mode 100644 gnuradio-examples/python/digital/usrp_transmit_path2.py (limited to 'gnuradio-examples') diff --git a/gnuradio-examples/python/digital/benchmark_tx2.py b/gnuradio-examples/python/digital/benchmark_tx2.py new file mode 100755 index 000000000..a79ac7cc3 --- /dev/null +++ b/gnuradio-examples/python/digital/benchmark_tx2.py @@ -0,0 +1,135 @@ +#!/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_path2 + +#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_path2.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_path2.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 diff --git a/gnuradio-examples/python/digital/usrp_transmit_path.py b/gnuradio-examples/python/digital/usrp_transmit_path.py index 2a2765bcd..f0f467599 100644 --- a/gnuradio-examples/python/digital/usrp_transmit_path.py +++ b/gnuradio-examples/python/digital/usrp_transmit_path.py @@ -22,7 +22,7 @@ from gnuradio import gr from gnuradio import usrp_options import transmit_path -from pick_bitrate2 import pick_tx_bitrate +from pick_bitrate import pick_tx_bitrate from gnuradio import eng_notation def add_freq_option(parser): diff --git a/gnuradio-examples/python/digital/usrp_transmit_path2.py b/gnuradio-examples/python/digital/usrp_transmit_path2.py new file mode 100644 index 000000000..2a2765bcd --- /dev/null +++ b/gnuradio-examples/python/digital/usrp_transmit_path2.py @@ -0,0 +1,101 @@ +# +# Copyright 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 +from gnuradio import usrp_options +import transmit_path +from pick_bitrate2 import pick_tx_bitrate +from gnuradio import eng_notation + +def add_freq_option(parser): + """ + Hackery that has the -f / --freq option set both tx_freq and rx_freq + """ + def freq_callback(option, opt_str, value, parser): + parser.values.rx_freq = value + parser.values.tx_freq = value + + if not parser.has_option('--freq'): + parser.add_option('-f', '--freq', type="eng_float", + action="callback", callback=freq_callback, + help="set Tx and/or Rx frequency to FREQ [default=%default]", + metavar="FREQ") + +def add_options(parser, expert): + add_freq_option(parser) + usrp_options.add_tx_options(parser) + transmit_path.transmit_path.add_options(parser, expert) + expert.add_option("", "--tx-freq", type="eng_float", default=None, + help="set transmit frequency to FREQ [default=%default]", metavar="FREQ") + parser.add_option("-v", "--verbose", action="store_true", default=False) + +class usrp_transmit_path(gr.hier_block2): + def __init__(self, modulator_class, options): + ''' + See below for what options should hold + ''' + gr.hier_block2.__init__(self, "usrp_transmit_path", + gr.io_signature(0, 0, 0), # Input signature + gr.io_signature(0, 0, 0)) # Output signature + if options.tx_freq is None: + sys.stderr.write("-f FREQ or --freq FREQ or --tx-freq FREQ must be specified\n") + raise SystemExit + + #setup usrp + self._modulator_class = modulator_class + self._setup_usrp_sink(options) + + tx_path = transmit_path.transmit_path(modulator_class, options) + for attr in dir(tx_path): #forward the methods + if not attr.startswith('_') and not hasattr(self, attr): + setattr(self, attr, getattr(tx_path, attr)) + + #connect + self.connect(tx_path, self.u) + + def _setup_usrp_sink(self, options): + """ + Creates a USRP sink, determines the settings for best bitrate, + and attaches to the transmitter's subdevice. + """ + self.u = usrp_options.create_usrp_sink(options) + dac_rate = self.u.dac_rate() + self.rs_rate = options.bitrate # Store requested bit rate + + (self._bitrate, self._samples_per_symbol, self._interp) = \ + pick_tx_bitrate(options.bitrate, self._modulator_class.bits_per_symbol(), + options.samples_per_symbol, options.interp, + dac_rate, self.u.get_interp_rates()) + + options.interp = self._interp + options.samples_per_symbol = self._samples_per_symbol + options.bitrate = self._bitrate + + if options.verbose: + print 'USRP Sink:', self.u + print "Interpolation Rate: ", self._interp + + self.u.set_interp(self._interp) + self.u.set_auto_tr(True) + + if not self.u.set_center_freq(options.tx_freq): + print "Failed to set Rx frequency to %s" % (eng_notation.num_to_str(options.tx_freq)) + raise ValueError, eng_notation.num_to_str(options.tx_freq) -- cgit From ec8e9c7e113046c66176498f12ec79f11d3da65e Mon Sep 17 00:00:00 2001 From: Tom Rondeau Date: Sat, 13 Mar 2010 20:08:50 -0500 Subject: Adding version 2 of receive path so as not to affect old dbpsk and dqpsk operations. --- .../python/digital/benchmark_qt_rx2.py | 2 + gnuradio-examples/python/digital/benchmark_rx2.py | 114 +++++++++++++++++++++ .../python/digital/usrp_receive_path.py | 2 +- .../python/digital/usrp_receive_path2.py | 96 +++++++++++++++++ 4 files changed, 213 insertions(+), 1 deletion(-) create mode 100644 gnuradio-examples/python/digital/benchmark_rx2.py create mode 100644 gnuradio-examples/python/digital/usrp_receive_path2.py (limited to 'gnuradio-examples') diff --git a/gnuradio-examples/python/digital/benchmark_qt_rx2.py b/gnuradio-examples/python/digital/benchmark_qt_rx2.py index 4de15e480..e4d398a8c 100755 --- a/gnuradio-examples/python/digital/benchmark_qt_rx2.py +++ b/gnuradio-examples/python/digital/benchmark_qt_rx2.py @@ -352,7 +352,9 @@ class my_top_block(gr.top_block): def set_rx_gain_freq(self, gain_freq): self._gain_freq = gain_freq #self._gain_freq_beta = .25 * self._gain_freq * self._gain_freq + print self._gain_freq self.rxpath.packet_receiver._demodulator.freq_recov.set_alpha(self._gain_freq) + self.rxpath.packet_receiver._demodulator.freq_recov.set_beta(self._gain_freq/10.0) #self.rxpath.packet_receiver._demodulator.freq_recov.set_beta(self._gain_fre_beta) diff --git a/gnuradio-examples/python/digital/benchmark_rx2.py b/gnuradio-examples/python/digital/benchmark_rx2.py new file mode 100644 index 000000000..458279ef8 --- /dev/null +++ b/gnuradio-examples/python/digital/benchmark_rx2.py @@ -0,0 +1,114 @@ +#!/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 +import struct +import sys + +# from current dir +import usrp_receive_path2 + +#import os +#print os.getpid() +#raw_input('Attach and press enter: ') + +class my_top_block(gr.top_block): + def __init__(self, demodulator, rx_callback, options): + gr.top_block.__init__(self) + + # Set up receive path + self.rxpath = usrp_receive_path.usrp_receive_path(demodulator, rx_callback, options) + + self.connect(self.rxpath) + +# ///////////////////////////////////////////////////////////////////////////// +# main +# ///////////////////////////////////////////////////////////////////////////// + +global n_rcvd, n_right + +def main(): + global n_rcvd, n_right + + n_rcvd = 0 + n_right = 0 + + def rx_callback(ok, payload): + global n_rcvd, n_right + (pktno,) = struct.unpack('!H', payload[0:2]) + n_rcvd += 1 + if ok: + n_right += 1 + + print "ok = %5s pktno = %4d n_rcvd = %4d n_right = %4d" % ( + ok, pktno, n_rcvd, n_right) + + + demods = modulation_utils.type_1_demods() + + # Create Options Parser: + parser = OptionParser (option_class=eng_option, conflict_handler="resolve") + expert_grp = parser.add_option_group("Expert") + + parser.add_option("-m", "--modulation", type="choice", choices=demods.keys(), + default='gmsk', + help="Select modulation from: %s [default=%%default]" + % (', '.join(demods.keys()),)) + + usrp_receive_path.add_options(parser, expert_grp) + + for mod in demods.values(): + mod.add_options(expert_grp) + + (options, args) = parser.parse_args () + + if len(args) != 0: + parser.print_help(sys.stderr) + sys.exit(1) + + if options.rx_freq is None: + sys.stderr.write("You must specify -f FREQ or --freq FREQ\n") + parser.print_help(sys.stderr) + sys.exit(1) + + + # build the graph + tb = my_top_block(demods[options.modulation], rx_callback, options) + + r = gr.enable_realtime_scheduling() + if r != gr.RT_OK: + print "Warning: Failed to enable realtime scheduling." + + tb.start() # start flow graph + tb.wait() # wait for it to finish + +if __name__ == '__main__': + try: + main() + except KeyboardInterrupt: + pass diff --git a/gnuradio-examples/python/digital/usrp_receive_path.py b/gnuradio-examples/python/digital/usrp_receive_path.py index de017651e..a8f16e28a 100644 --- a/gnuradio-examples/python/digital/usrp_receive_path.py +++ b/gnuradio-examples/python/digital/usrp_receive_path.py @@ -22,7 +22,7 @@ from gnuradio import gr from gnuradio import usrp_options import receive_path -from pick_bitrate2 import pick_rx_bitrate +from pick_bitrate import pick_rx_bitrate from gnuradio import eng_notation def add_freq_option(parser): diff --git a/gnuradio-examples/python/digital/usrp_receive_path2.py b/gnuradio-examples/python/digital/usrp_receive_path2.py new file mode 100644 index 000000000..de017651e --- /dev/null +++ b/gnuradio-examples/python/digital/usrp_receive_path2.py @@ -0,0 +1,96 @@ +# +# Copyright 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 +from gnuradio import usrp_options +import receive_path +from pick_bitrate2 import pick_rx_bitrate +from gnuradio import eng_notation + +def add_freq_option(parser): + """ + Hackery that has the -f / --freq option set both tx_freq and rx_freq + """ + def freq_callback(option, opt_str, value, parser): + parser.values.rx_freq = value + parser.values.tx_freq = value + + if not parser.has_option('--freq'): + parser.add_option('-f', '--freq', type="eng_float", + action="callback", callback=freq_callback, + help="set Tx and/or Rx frequency to FREQ [default=%default]", + metavar="FREQ") + +def add_options(parser, expert): + add_freq_option(parser) + usrp_options.add_rx_options(parser) + receive_path.receive_path.add_options(parser, expert) + expert.add_option("", "--rx-freq", type="eng_float", default=None, + help="set Rx frequency to FREQ [default=%default]", metavar="FREQ") + parser.add_option("-v", "--verbose", action="store_true", default=False) + +class usrp_receive_path(gr.hier_block2): + + def __init__(self, demod_class, rx_callback, options): + ''' + See below for what options should hold + ''' + gr.hier_block2.__init__(self, "usrp_receive_path", + gr.io_signature(0, 0, 0), # Input signature + gr.io_signature(0, 0, 0)) # Output signature + if options.rx_freq is None: + sys.stderr.write("-f FREQ or --freq FREQ or --rx-freq FREQ must be specified\n") + raise SystemExit + + #setup usrp + self._demod_class = demod_class + self._setup_usrp_source(options) + + rx_path = receive_path.receive_path(demod_class, rx_callback, options) + for attr in dir(rx_path): #forward the methods + if not attr.startswith('_') and not hasattr(self, attr): + setattr(self, attr, getattr(rx_path, attr)) + + #connect + self.connect(self.u, rx_path) + + def _setup_usrp_source(self, options): + self.u = usrp_options.create_usrp_source(options) + adc_rate = self.u.adc_rate() + self.rs_rate = options.bitrate + + (self._bitrate, self._samples_per_symbol, self._decim) = \ + pick_rx_bitrate(options.bitrate, self._demod_class.bits_per_symbol(), \ + options.samples_per_symbol, options.decim, + adc_rate, self.u.get_decim_rates()) + + if options.verbose: + print 'USRP Source:', self.u + print 'Decimation: ', self._decim + + options.samples_per_symbol = self._samples_per_symbol + options.decim = self._decim + + self.u.set_decim(self._decim) + + if not self.u.set_center_freq(options.rx_freq): + print "Failed to set Rx frequency to %s" % (eng_notation.num_to_str(options.rx_freq)) + raise ValueError, eng_notation.num_to_str(options.rx_freq) -- cgit From 6a617516e0678df0c6cb94319cb5980556d49793 Mon Sep 17 00:00:00 2001 From: Tom Rondeau Date: Sat, 13 Mar 2010 20:13:01 -0500 Subject: Fixing call to usrp_receive_path2. --- gnuradio-examples/python/digital/benchmark_qt_rx2.py | 1 - gnuradio-examples/python/digital/benchmark_rx2.py | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) mode change 100644 => 100755 gnuradio-examples/python/digital/benchmark_rx2.py (limited to 'gnuradio-examples') diff --git a/gnuradio-examples/python/digital/benchmark_qt_rx2.py b/gnuradio-examples/python/digital/benchmark_qt_rx2.py index e4d398a8c..d9d58e537 100755 --- a/gnuradio-examples/python/digital/benchmark_qt_rx2.py +++ b/gnuradio-examples/python/digital/benchmark_qt_rx2.py @@ -352,7 +352,6 @@ class my_top_block(gr.top_block): def set_rx_gain_freq(self, gain_freq): self._gain_freq = gain_freq #self._gain_freq_beta = .25 * self._gain_freq * self._gain_freq - print self._gain_freq self.rxpath.packet_receiver._demodulator.freq_recov.set_alpha(self._gain_freq) self.rxpath.packet_receiver._demodulator.freq_recov.set_beta(self._gain_freq/10.0) #self.rxpath.packet_receiver._demodulator.freq_recov.set_beta(self._gain_fre_beta) diff --git a/gnuradio-examples/python/digital/benchmark_rx2.py b/gnuradio-examples/python/digital/benchmark_rx2.py old mode 100644 new mode 100755 index 458279ef8..cc3dd6727 --- a/gnuradio-examples/python/digital/benchmark_rx2.py +++ b/gnuradio-examples/python/digital/benchmark_rx2.py @@ -42,7 +42,7 @@ class my_top_block(gr.top_block): gr.top_block.__init__(self) # Set up receive path - self.rxpath = usrp_receive_path.usrp_receive_path(demodulator, rx_callback, options) + self.rxpath = usrp_receive_path2.usrp_receive_path(demodulator, rx_callback, options) self.connect(self.rxpath) @@ -80,7 +80,7 @@ def main(): help="Select modulation from: %s [default=%%default]" % (', '.join(demods.keys()),)) - usrp_receive_path.add_options(parser, expert_grp) + usrp_receive_path2.add_options(parser, expert_grp) for mod in demods.values(): mod.add_options(expert_grp) -- cgit From b53bc1395bd2e8b1ad8a34c583d36fb4ddda7629 Mon Sep 17 00:00:00 2001 From: Tom Rondeau Date: Sun, 14 Mar 2010 17:32:23 -0400 Subject: Making old and new digital modulations completely seperable by adding modulation_utils2 so only new modulator blocks work with the version 2 of everything. Also changed some internal names for clarity. --- gnuradio-examples/python/digital/benchmark_qt_loopback2.py | 8 ++++---- gnuradio-examples/python/digital/benchmark_qt_rx2.py | 8 ++++---- gnuradio-examples/python/digital/benchmark_rx2.py | 6 +++--- gnuradio-examples/python/digital/benchmark_tx2.py | 6 +++--- 4 files changed, 14 insertions(+), 14 deletions(-) (limited to 'gnuradio-examples') diff --git a/gnuradio-examples/python/digital/benchmark_qt_loopback2.py b/gnuradio-examples/python/digital/benchmark_qt_loopback2.py index 1f236fd7f..acf370cfd 100755 --- a/gnuradio-examples/python/digital/benchmark_qt_loopback2.py +++ b/gnuradio-examples/python/digital/benchmark_qt_loopback2.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -from gnuradio import gr, gru, modulation_utils +from gnuradio import gr, gru, modulation_utils2 from gnuradio import eng_notation from gnuradio.eng_option import eng_option from optparse import OptionParser @@ -438,15 +438,15 @@ def main(): def send_pkt(payload='', eof=False): return tb.txpath.send_pkt(payload, eof) - mods = modulation_utils.type_1_mods() - demods = modulation_utils.type_1_demods() + mods = modulation_utils2.type_1_mods() + demods = modulation_utils2.type_1_demods() parser = OptionParser(option_class=eng_option, conflict_handler="resolve") expert_grp = parser.add_option_group("Expert") channel_grp = parser.add_option_group("Channel") parser.add_option("-m", "--modulation", type="choice", choices=mods.keys(), - default='dbpsk', + default='dbpsk2', help="Select modulation from: %s [default=%%default]" % (', '.join(mods.keys()),)) diff --git a/gnuradio-examples/python/digital/benchmark_qt_rx2.py b/gnuradio-examples/python/digital/benchmark_qt_rx2.py index d9d58e537..6fad31a94 100755 --- a/gnuradio-examples/python/digital/benchmark_qt_rx2.py +++ b/gnuradio-examples/python/digital/benchmark_qt_rx2.py @@ -20,7 +20,7 @@ # Boston, MA 02110-1301, USA. # -from gnuradio import gr, gru, modulation_utils +from gnuradio import gr, gru, modulation_utils2 from gnuradio import usrp from gnuradio import eng_notation from gnuradio.eng_option import eng_option @@ -219,7 +219,7 @@ class my_top_block(gr.top_block): # FIXME: do better exposure to lower issues for control self._gain_clock = self.rxpath.packet_receiver._demodulator._timing_alpha - self._gain_phase = self.rxpath.packet_receiver._demodulator._costas_alpha + self._gain_phase = self.rxpath.packet_receiver._demodulator._phase_alpha self._gain_freq = self.rxpath.packet_receiver._demodulator._freq_alpha self.connect(self.u, self.rxpath) @@ -424,14 +424,14 @@ def main(): ok, pktno, n_rcvd, n_right) - demods = modulation_utils.type_1_demods() + demods = modulation_utils2.type_1_demods() # Create Options Parser: parser = OptionParser (option_class=eng_option, conflict_handler="resolve") expert_grp = parser.add_option_group("Expert") parser.add_option("-m", "--modulation", type="choice", choices=demods.keys(), - default='dbpsk', + default='dbpsk2', help="Select modulation from: %s [default=%%default]" % (', '.join(demods.keys()),)) diff --git a/gnuradio-examples/python/digital/benchmark_rx2.py b/gnuradio-examples/python/digital/benchmark_rx2.py index cc3dd6727..ed6d4f0f5 100755 --- a/gnuradio-examples/python/digital/benchmark_rx2.py +++ b/gnuradio-examples/python/digital/benchmark_rx2.py @@ -20,7 +20,7 @@ # Boston, MA 02110-1301, USA. # -from gnuradio import gr, gru, modulation_utils +from gnuradio import gr, gru, modulation_utils2 from gnuradio import usrp from gnuradio import eng_notation from gnuradio.eng_option import eng_option @@ -69,14 +69,14 @@ def main(): ok, pktno, n_rcvd, n_right) - demods = modulation_utils.type_1_demods() + demods = modulation_utils2.type_1_demods() # Create Options Parser: parser = OptionParser (option_class=eng_option, conflict_handler="resolve") expert_grp = parser.add_option_group("Expert") parser.add_option("-m", "--modulation", type="choice", choices=demods.keys(), - default='gmsk', + default='dbpsk2', help="Select modulation from: %s [default=%%default]" % (', '.join(demods.keys()),)) diff --git a/gnuradio-examples/python/digital/benchmark_tx2.py b/gnuradio-examples/python/digital/benchmark_tx2.py index a79ac7cc3..670c4052c 100755 --- a/gnuradio-examples/python/digital/benchmark_tx2.py +++ b/gnuradio-examples/python/digital/benchmark_tx2.py @@ -20,7 +20,7 @@ # Boston, MA 02110-1301, USA. # -from gnuradio import gr, gru, modulation_utils +from gnuradio import gr, gru, modulation_utils2 from gnuradio import usrp from gnuradio import eng_notation from gnuradio.eng_option import eng_option @@ -55,13 +55,13 @@ def main(): def rx_callback(ok, payload): print "ok = %r, payload = '%s'" % (ok, payload) - mods = modulation_utils.type_1_mods() + mods = modulation_utils2.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', + default='dbpsk2', help="Select modulation from: %s [default=%%default]" % (', '.join(mods.keys()),)) -- cgit From c11ce18def574dabf46532baba924429d421b565 Mon Sep 17 00:00:00 2001 From: Tom Rondeau Date: Sun, 14 Mar 2010 17:36:37 -0400 Subject: Fixing copyright dates. --- gnuradio-examples/python/digital/benchmark_qt_rx2.py | 2 +- gnuradio-examples/python/digital/benchmark_rx2.py | 2 +- gnuradio-examples/python/digital/benchmark_tx2.py | 2 +- gnuradio-examples/python/digital/usrp_receive_path2.py | 2 +- gnuradio-examples/python/digital/usrp_transmit_path2.py | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) (limited to 'gnuradio-examples') diff --git a/gnuradio-examples/python/digital/benchmark_qt_rx2.py b/gnuradio-examples/python/digital/benchmark_qt_rx2.py index 6fad31a94..85de6a036 100755 --- a/gnuradio-examples/python/digital/benchmark_qt_rx2.py +++ b/gnuradio-examples/python/digital/benchmark_qt_rx2.py @@ -1,6 +1,6 @@ #!/usr/bin/env python # -# Copyright 2005,2006,2007,2009 Free Software Foundation, Inc. +# Copyright 2005,2006,2007,2009,2010 Free Software Foundation, Inc. # # This file is part of GNU Radio # diff --git a/gnuradio-examples/python/digital/benchmark_rx2.py b/gnuradio-examples/python/digital/benchmark_rx2.py index ed6d4f0f5..fe422be83 100755 --- a/gnuradio-examples/python/digital/benchmark_rx2.py +++ b/gnuradio-examples/python/digital/benchmark_rx2.py @@ -1,6 +1,6 @@ #!/usr/bin/env python # -# Copyright 2005,2006,2007,2009 Free Software Foundation, Inc. +# Copyright 2010 Free Software Foundation, Inc. # # This file is part of GNU Radio # diff --git a/gnuradio-examples/python/digital/benchmark_tx2.py b/gnuradio-examples/python/digital/benchmark_tx2.py index 670c4052c..6093dba61 100755 --- a/gnuradio-examples/python/digital/benchmark_tx2.py +++ b/gnuradio-examples/python/digital/benchmark_tx2.py @@ -1,6 +1,6 @@ #!/usr/bin/env python # -# Copyright 2005,2006,2007,2009 Free Software Foundation, Inc. +# Copyright 2010 Free Software Foundation, Inc. # # This file is part of GNU Radio # diff --git a/gnuradio-examples/python/digital/usrp_receive_path2.py b/gnuradio-examples/python/digital/usrp_receive_path2.py index de017651e..d20017204 100644 --- a/gnuradio-examples/python/digital/usrp_receive_path2.py +++ b/gnuradio-examples/python/digital/usrp_receive_path2.py @@ -1,5 +1,5 @@ # -# Copyright 2009 Free Software Foundation, Inc. +# Copyright 2010 Free Software Foundation, Inc. # # This file is part of GNU Radio # diff --git a/gnuradio-examples/python/digital/usrp_transmit_path2.py b/gnuradio-examples/python/digital/usrp_transmit_path2.py index 2a2765bcd..54930e5a0 100644 --- a/gnuradio-examples/python/digital/usrp_transmit_path2.py +++ b/gnuradio-examples/python/digital/usrp_transmit_path2.py @@ -1,5 +1,5 @@ # -# Copyright 2009 Free Software Foundation, Inc. +# Copyright 2010 Free Software Foundation, Inc. # # This file is part of GNU Radio # -- cgit From 6de98961cf9b93c486c8c6825789de94dc79afae Mon Sep 17 00:00:00 2001 From: Tom Rondeau Date: Sun, 14 Mar 2010 18:37:23 -0400 Subject: Fixing copyright of a couple of stragglers. --- .../python/digital/benchmark_qt_loopback2.py | 20 ++++++++++++++++++++ gnuradio-examples/python/digital/benchmark_qt_rx2.py | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) (limited to 'gnuradio-examples') diff --git a/gnuradio-examples/python/digital/benchmark_qt_loopback2.py b/gnuradio-examples/python/digital/benchmark_qt_loopback2.py index acf370cfd..56c6c7f52 100755 --- a/gnuradio-examples/python/digital/benchmark_qt_loopback2.py +++ b/gnuradio-examples/python/digital/benchmark_qt_loopback2.py @@ -1,4 +1,24 @@ #!/usr/bin/env python +# +# Copyright 2010 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_utils2 from gnuradio import eng_notation diff --git a/gnuradio-examples/python/digital/benchmark_qt_rx2.py b/gnuradio-examples/python/digital/benchmark_qt_rx2.py index 85de6a036..0c37f4c6a 100755 --- a/gnuradio-examples/python/digital/benchmark_qt_rx2.py +++ b/gnuradio-examples/python/digital/benchmark_qt_rx2.py @@ -1,6 +1,6 @@ #!/usr/bin/env python # -# Copyright 2005,2006,2007,2009,2010 Free Software Foundation, Inc. +# Copyright 2010 Free Software Foundation, Inc. # # This file is part of GNU Radio # -- cgit