diff options
-rw-r--r-- | gnuradio-runtime/python/gnuradio/gru/freqz.py | 2 | ||||
-rw-r--r-- | gr-analog/grc/analog_nbfm_rx.xml | 80 | ||||
-rw-r--r-- | gr-analog/grc/analog_nbfm_tx.xml | 80 | ||||
-rw-r--r-- | gr-analog/python/analog/nbfm_rx.py | 8 | ||||
-rw-r--r-- | gr-analog/python/analog/nbfm_tx.py | 9 | ||||
-rw-r--r-- | gr-filter/lib/rational_resampler_base_XXX_impl.cc.t | 6 |
6 files changed, 106 insertions, 79 deletions
diff --git a/gnuradio-runtime/python/gnuradio/gru/freqz.py b/gnuradio-runtime/python/gnuradio/gru/freqz.py index 60dca64a58..6d8b94db8b 100644 --- a/gnuradio-runtime/python/gnuradio/gru/freqz.py +++ b/gnuradio-runtime/python/gnuradio/gru/freqz.py @@ -101,7 +101,7 @@ def polyval(p,x): y = 0 else: x = asarray(x) - y = numpy.zeros(x.shape,x.typecode()) + y = numpy.zeros(x.shape,x.dtype) for i in range(len(p)): y = x * y + p[i] return y diff --git a/gr-analog/grc/analog_nbfm_rx.xml b/gr-analog/grc/analog_nbfm_rx.xml index fca1d3a6a5..9250b77b5e 100644 --- a/gr-analog/grc/analog_nbfm_rx.xml +++ b/gr-analog/grc/analog_nbfm_rx.xml @@ -5,44 +5,52 @@ ################################################### --> <block> - <name>NBFM Receive</name> - <key>analog_nbfm_rx</key> - <import>from gnuradio import analog</import> - <make>analog.nbfm_rx( + <name>NBFM Receive</name> + <key>analog_nbfm_rx</key> + <import>from gnuradio import analog</import> + <make>analog.nbfm_rx( audio_rate=$audio_rate, quad_rate=$quad_rate, tau=$tau, max_dev=$max_dev, -)</make> - <param> - <name>Audio Rate</name> - <key>audio_rate</key> - <type>int</type> - </param> - <param> - <name>Quadrature Rate</name> - <key>quad_rate</key> - <type>int</type> - </param> - <param> - <name>Tau</name> - <key>tau</key> - <value>75e-6</value> - <type>real</type> - </param> - <param> - <name>Max Deviation</name> - <key>max_dev</key> - <value>5e3</value> - <type>real</type> - </param> - <check>($quad_rate)%($audio_rate) == 0</check> - <sink> - <name>in</name> - <type>complex</type> - </sink> - <source> - <name>out</name> - <type>float</type> - </source> + )</make> + <callback>set_max_deviation($max_dev)</callback> + + <param> + <name>Audio Rate</name> + <key>audio_rate</key> + <type>int</type> + </param> + + <param> + <name>Quadrature Rate</name> + <key>quad_rate</key> + <type>int</type> + </param> + + <param> + <name>Tau</name> + <key>tau</key> + <value>75e-6</value> + <type>real</type> + </param> + + <param> + <name>Max Deviation</name> + <key>max_dev</key> + <value>5e3</value> + <type>real</type> + </param> + + <check>($quad_rate)%($audio_rate) == 0</check> + + <sink> + <name>in</name> + <type>complex</type> + </sink> + + <source> + <name>out</name> + <type>float</type> + </source> </block> diff --git a/gr-analog/grc/analog_nbfm_tx.xml b/gr-analog/grc/analog_nbfm_tx.xml index 0ec4f489c9..ea13b8f1c9 100644 --- a/gr-analog/grc/analog_nbfm_tx.xml +++ b/gr-analog/grc/analog_nbfm_tx.xml @@ -5,44 +5,52 @@ ################################################### --> <block> - <name>NBFM Transmit</name> - <key>analog_nbfm_tx</key> - <import>from gnuradio import analog</import> - <make>analog.nbfm_tx( + <name>NBFM Transmit</name> + <key>analog_nbfm_tx</key> + <import>from gnuradio import analog</import> + <make>analog.nbfm_tx( audio_rate=$audio_rate, quad_rate=$quad_rate, tau=$tau, max_dev=$max_dev, -)</make> - <param> - <name>Audio Rate</name> - <key>audio_rate</key> - <type>int</type> - </param> - <param> - <name>Quadrature Rate</name> - <key>quad_rate</key> - <type>int</type> - </param> - <param> - <name>Tau</name> - <key>tau</key> - <value>75e-6</value> - <type>real</type> - </param> - <param> - <name>Max Deviation</name> - <key>max_dev</key> - <value>5e3</value> - <type>real</type> - </param> - <check>($quad_rate)%($audio_rate) == 0</check> - <sink> - <name>in</name> - <type>float</type> - </sink> - <source> - <name>out</name> - <type>complex</type> - </source> + )</make> + <callback>set_max_deviation($max_dev)</callback> + + <param> + <name>Audio Rate</name> + <key>audio_rate</key> + <type>int</type> + </param> + + <param> + <name>Quadrature Rate</name> + <key>quad_rate</key> + <type>int</type> + </param> + + <param> + <name>Tau</name> + <key>tau</key> + <value>75e-6</value> + <type>real</type> + </param> + + <param> + <name>Max Deviation</name> + <key>max_dev</key> + <value>5e3</value> + <type>real</type> + </param> + + <check>($quad_rate)%($audio_rate) == 0</check> + + <sink> + <name>in</name> + <type>float</type> + </sink> + + <source> + <name>out</name> + <type>complex</type> + </source> </block> diff --git a/gr-analog/python/analog/nbfm_rx.py b/gr-analog/python/analog/nbfm_rx.py index b2c86db70f..38fbf803c8 100644 --- a/gr-analog/python/analog/nbfm_rx.py +++ b/gr-analog/python/analog/nbfm_rx.py @@ -57,8 +57,8 @@ class nbfm_rx(gr.hier_block2): gr.io_signature(1, 1, gr.sizeof_float)) # Output signature # FIXME audio_rate and quad_rate ought to be exact rationals - audio_rate = int(audio_rate) - quad_rate = int(quad_rate) + self._audio_rate = audio_rate = int(audio_rate) + self._quad_rate = quad_rate = int(quad_rate) if quad_rate % audio_rate != 0: raise ValueError, "quad_rate is not an integer multiple of audio_rate" @@ -88,3 +88,7 @@ class nbfm_rx(gr.hier_block2): self.audio_filter = filter.fir_filter_fff(audio_decim, audio_taps) self.connect(self, self.quad_demod, self.deemph, self.audio_filter, self) + + def set_max_deviation(self, max_dev): + k = self._quad_rate/(2*math.pi*max_dev) + self.quad_demod.set_gain(k) diff --git a/gr-analog/python/analog/nbfm_tx.py b/gr-analog/python/analog/nbfm_tx.py index 62b56bae52..ffd539ec55 100644 --- a/gr-analog/python/analog/nbfm_tx.py +++ b/gr-analog/python/analog/nbfm_tx.py @@ -50,8 +50,8 @@ class nbfm_tx(gr.hier_block2): gr.io_signature(1, 1, gr.sizeof_gr_complex)) # Output signature # FIXME audio_rate and quad_rate ought to be exact rationals - audio_rate = int(audio_rate) - quad_rate = int(quad_rate) + self._audio_rate = audio_rate = int(audio_rate) + self._quad_rate = quad_rate = int(quad_rate) if quad_rate % audio_rate != 0: raise ValueError, "quad_rate is not an integer multiple of audio_rate" @@ -81,6 +81,11 @@ class nbfm_tx(gr.hier_block2): else: self.connect(self, self.preemph, self.modulator, self) + def set_max_deviation(self, max_dev): + k = 2 * math.pi * max_dev / self._quad_rate + self.modulator.set_sensitivity(k) + + class ctcss_gen_f(gr.hier_block2): def __init__(self, sample_rate, tone_freq): diff --git a/gr-filter/lib/rational_resampler_base_XXX_impl.cc.t b/gr-filter/lib/rational_resampler_base_XXX_impl.cc.t index ef98af3037..0b74e60969 100644 --- a/gr-filter/lib/rational_resampler_base_XXX_impl.cc.t +++ b/gr-filter/lib/rational_resampler_base_XXX_impl.cc.t @@ -154,19 +154,21 @@ namespace gr { } unsigned int ctr = d_ctr; + int count = 0; int i = 0; - while(i < noutput_items) { + while((i < noutput_items) && (count < ninput_items[0])) { out[i++] = d_firs[ctr]->filter(in); ctr += decimation(); while(ctr >= interpolation()) { ctr -= interpolation(); in++; + count++; } } d_ctr = ctr; - consume_each(in - (@I_TYPE@*)input_items[0]); + consume_each(count); return i; } |