summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Ettus <matt@ettus.com>2010-12-11 14:42:57 -0800
committerMatt Ettus <matt@ettus.com>2010-12-11 14:42:57 -0800
commit9db640f51b3af0cc73a94471a623b4d394ec2aab (patch)
tree7593455cb995652214daa707bbe241a8138b293a
parent504a2cce5df490bf9a6b2023cc1df568e51da20a (diff)
Create method to set rate on pfb_arb_resamp after it has been created.
Allow it to be called from GRC.
-rw-r--r--gnuradio-core/src/lib/filter/gr_pfb_arb_resampler_ccf.cc3
-rw-r--r--gnuradio-core/src/lib/filter/gr_pfb_arb_resampler_ccf.h6
-rw-r--r--gnuradio-core/src/lib/filter/gr_pfb_arb_resampler_ccf.i1
-rw-r--r--gnuradio-core/src/python/gnuradio/blks2impl/pfb_arb_resampler.py9
-rw-r--r--grc/blocks/blks2_pfb_arb_resampler.xml5
5 files changed, 18 insertions, 6 deletions
diff --git a/gnuradio-core/src/lib/filter/gr_pfb_arb_resampler_ccf.cc b/gnuradio-core/src/lib/filter/gr_pfb_arb_resampler_ccf.cc
index 59b76a6f06..2136dd8430 100644
--- a/gnuradio-core/src/lib/filter/gr_pfb_arb_resampler_ccf.cc
+++ b/gnuradio-core/src/lib/filter/gr_pfb_arb_resampler_ccf.cc
@@ -58,8 +58,7 @@ gr_pfb_arb_resampler_ccf::gr_pfb_arb_resampler_ccf (float rate,
process.
*/
d_int_rate = filter_size;
- d_dec_rate = (unsigned int)floor(d_int_rate/rate);
- d_flt_rate = (d_int_rate/rate) - d_dec_rate;
+ set_rate(rate);
// Store the last filter between calls to work
d_last_filter = 0;
diff --git a/gnuradio-core/src/lib/filter/gr_pfb_arb_resampler_ccf.h b/gnuradio-core/src/lib/filter/gr_pfb_arb_resampler_ccf.h
index cf5a79d4ee..44dd202b96 100644
--- a/gnuradio-core/src/lib/filter/gr_pfb_arb_resampler_ccf.h
+++ b/gnuradio-core/src/lib/filter/gr_pfb_arb_resampler_ccf.h
@@ -161,7 +161,11 @@ public:
* Print all of the filterbank taps to screen.
*/
void print_taps();
-
+ void set_rate (float rate) {
+ d_dec_rate = (unsigned int)floor(d_int_rate/rate);
+ d_flt_rate = (d_int_rate/rate) - d_dec_rate;
+ }
+
int general_work (int noutput_items,
gr_vector_int &ninput_items,
gr_vector_const_void_star &input_items,
diff --git a/gnuradio-core/src/lib/filter/gr_pfb_arb_resampler_ccf.i b/gnuradio-core/src/lib/filter/gr_pfb_arb_resampler_ccf.i
index 4f07af8613..77f28acdfa 100644
--- a/gnuradio-core/src/lib/filter/gr_pfb_arb_resampler_ccf.i
+++ b/gnuradio-core/src/lib/filter/gr_pfb_arb_resampler_ccf.i
@@ -38,4 +38,5 @@ class gr_pfb_arb_resampler_ccf : public gr_block
//void set_taps (const std::vector<float> &taps);
void print_taps();
+ void set_rate (float rate);
};
diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/pfb_arb_resampler.py b/gnuradio-core/src/python/gnuradio/blks2impl/pfb_arb_resampler.py
index cd9289fa5f..74eae58dc1 100644
--- a/gnuradio-core/src/python/gnuradio/blks2impl/pfb_arb_resampler.py
+++ b/gnuradio-core/src/python/gnuradio/blks2impl/pfb_arb_resampler.py
@@ -48,9 +48,14 @@ class pfb_arb_resampler_ccf(gr.hier_block2):
self._taps = gr.firdes.low_pass_2(self._size, self._size, bw, tb, atten)
self.pfb = gr.pfb_arb_resampler_ccf(self._rate, self._taps, self._size)
-
+ #print "PFB has %d taps\n" % (len(self._taps),)
+
self.connect(self, self.pfb)
self.connect(self.pfb, self)
-
+
+ # Note -- set_taps not implemented in base class yet
def set_taps(self, taps):
self.pfb.set_taps(taps)
+
+ def set_rate(self, rate):
+ self.pfb.set_rate(rate)
diff --git a/grc/blocks/blks2_pfb_arb_resampler.xml b/grc/blocks/blks2_pfb_arb_resampler.xml
index 062b0dd98f..b4e09791f3 100644
--- a/grc/blocks/blks2_pfb_arb_resampler.xml
+++ b/grc/blocks/blks2_pfb_arb_resampler.xml
@@ -14,7 +14,10 @@
$taps,
$size,
)</make>
- <callback>set_taps($taps)</callback>
+ <!-- Set taps not implemented yet
+ <callback>set_taps($taps)</callback>
+ -->
+ <callback>set_rate($rate)</callback>
<param>
<name>Resample Rate</name>
<key>rate</key>