summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Rondeau2010-12-28 13:08:55 -0500
committerTom Rondeau2010-12-28 13:08:55 -0500
commit2fa7c997559e173c59227ee14a154e4b462d46bd (patch)
tree1f76c23251fcb04b6c63e5b4476fa6bf1a8ddd6a
parent3f32342fc5c82d53e7c94afbccb01d38280db733 (diff)
downloadgnuradio-2fa7c997559e173c59227ee14a154e4b462d46bd.tar.gz
gnuradio-2fa7c997559e173c59227ee14a154e4b462d46bd.tar.bz2
gnuradio-2fa7c997559e173c59227ee14a154e4b462d46bd.zip
Under extreme circumstances, optfir might never produce an answer (atten>300), so this puts in a check on the ripple; if it gets too large, stop trying.
-rw-r--r--gnuradio-core/src/python/gnuradio/blks2impl/pfb_arb_resampler.py4
-rw-r--r--gnuradio-core/src/python/gnuradio/blks2impl/pfb_channelizer.py4
-rw-r--r--gnuradio-core/src/python/gnuradio/blks2impl/pfb_decimator.py4
-rw-r--r--gnuradio-core/src/python/gnuradio/blks2impl/pfb_interpolator.py6
4 files changed, 17 insertions, 1 deletions
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 c4e496c45..5e4e06871 100644
--- a/gnuradio-core/src/python/gnuradio/blks2impl/pfb_arb_resampler.py
+++ b/gnuradio-core/src/python/gnuradio/blks2impl/pfb_arb_resampler.py
@@ -57,6 +57,10 @@ class pfb_arb_resampler_ccf(gr.hier_block2):
made = False
print("Warning: set ripple to %.4f dB. If this is a problem, adjust the attenuation or create your own filter taps." % (ripple))
+ # Build in an exit strategy; if we've come this far, it ain't working.
+ if(ripple >= 1.0):
+ raise RuntimeError("optfir could not generate an appropriate filter.")
+
self.pfb = gr.pfb_arb_resampler_ccf(self._rate, self._taps, self._size)
self.connect(self, self.pfb)
diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/pfb_channelizer.py b/gnuradio-core/src/python/gnuradio/blks2impl/pfb_channelizer.py
index ecbdd2047..3ddc1749a 100644
--- a/gnuradio-core/src/python/gnuradio/blks2impl/pfb_channelizer.py
+++ b/gnuradio-core/src/python/gnuradio/blks2impl/pfb_channelizer.py
@@ -54,6 +54,10 @@ class pfb_channelizer_ccf(gr.hier_block2):
made = False
print("Warning: set ripple to %.4f dB. If this is a problem, adjust the attenuation or create your own filter taps." % (ripple))
+ # Build in an exit strategy; if we've come this far, it ain't working.
+ if(ripple >= 1.0):
+ raise RuntimeError("optfir could not generate an appropriate filter.")
+
self.s2ss = gr.stream_to_streams(gr.sizeof_gr_complex, self._numchans)
self.pfb = gr.pfb_channelizer_ccf(self._numchans, self._taps,
self._oversample_rate)
diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/pfb_decimator.py b/gnuradio-core/src/python/gnuradio/blks2impl/pfb_decimator.py
index 103980da0..2e36e7bc1 100644
--- a/gnuradio-core/src/python/gnuradio/blks2impl/pfb_decimator.py
+++ b/gnuradio-core/src/python/gnuradio/blks2impl/pfb_decimator.py
@@ -54,6 +54,10 @@ class pfb_decimator_ccf(gr.hier_block2):
made = False
print("Warning: set ripple to %.4f dB. If this is a problem, adjust the attenuation or create your own filter taps." % (ripple))
+ # Build in an exit strategy; if we've come this far, it ain't working.
+ if(ripple >= 1.0):
+ raise RuntimeError("optfir could not generate an appropriate filter.")
+
self.s2ss = gr.stream_to_streams(gr.sizeof_gr_complex, self._decim)
self.pfb = gr.pfb_decimator_ccf(self._decim, self._taps, self._channel)
diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/pfb_interpolator.py b/gnuradio-core/src/python/gnuradio/blks2impl/pfb_interpolator.py
index a210e3de8..a6094f7f4 100644
--- a/gnuradio-core/src/python/gnuradio/blks2impl/pfb_interpolator.py
+++ b/gnuradio-core/src/python/gnuradio/blks2impl/pfb_interpolator.py
@@ -45,7 +45,7 @@ class pfb_interpolator_ccf(gr.hier_block2):
# Create a filter that covers the full bandwidth of the input signal
bw = 0.4
tb = 0.2
- ripple = 0.1
+ ripple = 0.99
made = False
while not made:
try:
@@ -56,6 +56,10 @@ class pfb_interpolator_ccf(gr.hier_block2):
made = False
print("Warning: set ripple to %.4f dB. If this is a problem, adjust the attenuation or create your own filter taps." % (ripple))
+ # Build in an exit strategy; if we've come this far, it ain't working.
+ if(ripple >= 1.0):
+ raise RuntimeError("optfir could not generate an appropriate filter.")
+
self.pfb = gr.pfb_interpolator_ccf(self._interp, self._taps)
self.connect(self, self.pfb)