diff options
-rw-r--r-- | gnuradio-core/src/lib/filter/gr_pfb_channelizer_ccf.cc | 12 | ||||
-rw-r--r-- | gnuradio-core/src/lib/filter/gr_pfb_synthesis_filterbank_ccf.cc | 18 | ||||
-rw-r--r-- | grc/blocks/blks2_pfb_channelizer.xml | 4 | ||||
-rw-r--r-- | grc/blocks/gr_pfb_synthesis_filterbank.xml | 2 |
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> |