summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gnuradio-core/src/lib/filter/gr_pfb_channelizer_ccf.cc12
-rw-r--r--gnuradio-core/src/lib/filter/gr_pfb_synthesis_filterbank_ccf.cc18
-rw-r--r--grc/blocks/blks2_pfb_channelizer.xml4
-rw-r--r--grc/blocks/gr_pfb_synthesis_filterbank.xml2
4 files changed, 22 insertions, 14 deletions
diff --git a/gnuradio-core/src/lib/filter/gr_pfb_channelizer_ccf.cc b/gnuradio-core/src/lib/filter/gr_pfb_channelizer_ccf.cc
index 24fc35a19..a82d3901c 100644
--- a/gnuradio-core/src/lib/filter/gr_pfb_channelizer_ccf.cc
+++ b/gnuradio-core/src/lib/filter/gr_pfb_channelizer_ccf.cc
@@ -165,12 +165,14 @@ gr_pfb_channelizer_ccf::set_channel_map(const std::vector<int> &map)
{
gruel::scoped_lock guard(d_mutex);
- unsigned int max = (unsigned int)*std::max_element(map.begin(), map.end());
- unsigned int min = (unsigned int)*std::min_element(map.begin(), map.end());
- if((max >= d_numchans) || (min < 0)) {
- throw std::invalid_argument("gr_pfb_channelizer_ccf::set_channel_map: map range out of bounds.\n");
+ if(map.size() > 0) {
+ unsigned int max = (unsigned int)*std::max_element(map.begin(), map.end());
+ unsigned int min = (unsigned int)*std::min_element(map.begin(), map.end());
+ if((max >= d_numchans) || (min < 0)) {
+ throw std::invalid_argument("gr_pfb_channelizer_ccf::set_channel_map: map range out of bounds.\n");
+ }
+ d_channel_map = map;
}
- d_channel_map = map;
}
std::vector<int>
diff --git a/gnuradio-core/src/lib/filter/gr_pfb_synthesis_filterbank_ccf.cc b/gnuradio-core/src/lib/filter/gr_pfb_synthesis_filterbank_ccf.cc
index f999a2b92..55ba2dc3f 100644
--- a/gnuradio-core/src/lib/filter/gr_pfb_synthesis_filterbank_ccf.cc
+++ b/gnuradio-core/src/lib/filter/gr_pfb_synthesis_filterbank_ccf.cc
@@ -203,15 +203,17 @@ gr_pfb_synthesis_filterbank_ccf::set_channel_map(const std::vector<int> &map)
{
gruel::scoped_lock guard(d_mutex);
- unsigned int max = (unsigned int)*std::max_element(map.begin(), map.end());
- unsigned int min = (unsigned int)*std::min_element(map.begin(), map.end());
- if((max >= d_twox*d_numchans) || (min < 0)) {
- throw std::invalid_argument("gr_pfb_synthesis_filterbank_ccf::set_channel_map: map range out of bounds.\n");
- }
- d_channel_map = map;
+ if(map.size() > 0) {
+ unsigned int max = (unsigned int)*std::max_element(map.begin(), map.end());
+ unsigned int min = (unsigned int)*std::min_element(map.begin(), map.end());
+ if((max >= d_twox*d_numchans) || (min < 0)) {
+ throw std::invalid_argument("gr_pfb_synthesis_filterbank_ccf::set_channel_map: map range out of bounds.\n");
+ }
+ d_channel_map = map;
- // Zero out fft buffer so that unused channels are always 0
- memset(d_fft->get_inbuf(), 0,d_twox*d_numchans*sizeof(gr_complex));
+ // Zero out fft buffer so that unused channels are always 0
+ memset(d_fft->get_inbuf(), 0,d_twox*d_numchans*sizeof(gr_complex));
+ }
}
std::vector<int>
diff --git a/grc/blocks/blks2_pfb_channelizer.xml b/grc/blocks/blks2_pfb_channelizer.xml
index 5a1b20edb..0dba6108b 100644
--- a/grc/blocks/blks2_pfb_channelizer.xml
+++ b/grc/blocks/blks2_pfb_channelizer.xml
@@ -14,11 +14,12 @@
$taps,
$osr,
$atten)
+self.$(id).set_channel_map($ch_map)
</make>
<!-- Set taps not implemented yet
<callback>set_taps($taps)</callback>
-->
- <callback>set_channel_map(ch_$map)</callback>
+ <callback>set_channel_map($ch_map)</callback>
<param>
<name>Channels</name>
@@ -46,6 +47,7 @@
<param>
<name>Channel Map</name>
<key>ch_map</key>
+ <value>[]</value>
<type>int_vector</type>
</param>
<sink>
diff --git a/grc/blocks/gr_pfb_synthesis_filterbank.xml b/grc/blocks/gr_pfb_synthesis_filterbank.xml
index 6ea54632c..823eb50c4 100644
--- a/grc/blocks/gr_pfb_synthesis_filterbank.xml
+++ b/grc/blocks/gr_pfb_synthesis_filterbank.xml
@@ -11,6 +11,7 @@
<import>from gnuradio.gr import firdes</import>
<make>gr.pfb_synthesis_filterbank_ccf(
$numchans, $taps, $twox)
+self.$(id).set_channel_map($ch_map)
</make>
<callback>set_taps($taps)</callback>
<callback>set_channel_map($ch_map)</callback>
@@ -41,6 +42,7 @@
<param>
<name>Channel Map</name>
<key>ch_map</key>
+ <value>[]</value>
<type>int_vector</type>
</param>
<sink>