From 3d3d3c05291aebb1ad90d22f9674546347cb96d6 Mon Sep 17 00:00:00 2001
From: Tom Rondeau <trondeau@vt.edu>
Date: Tue, 28 Feb 2012 16:02:16 -0500
Subject: core: pfb channelizer: can now set a channel map to direct the
 channels to a specific output stream.

Now, not all output channels must be connected; can connect M of N channels (M <= N) and use the channel_map to set which channel from the original wideband signal go to which output streams.
---
 .../python/gnuradio/blks2impl/pfb_channelizer.py   | 22 ++++++++--------------
 1 file changed, 8 insertions(+), 14 deletions(-)

(limited to 'gnuradio-core/src/python/gnuradio/blks2impl')

diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/pfb_channelizer.py b/gnuradio-core/src/python/gnuradio/blks2impl/pfb_channelizer.py
index 3ddc1749a7..dea71b2869 100644
--- a/gnuradio-core/src/python/gnuradio/blks2impl/pfb_channelizer.py
+++ b/gnuradio-core/src/python/gnuradio/blks2impl/pfb_channelizer.py
@@ -34,7 +34,7 @@ class pfb_channelizer_ccf(gr.hier_block2):
 				gr.io_signature(1, 1, gr.sizeof_gr_complex), # Input signature
 				gr.io_signature(numchans, numchans, gr.sizeof_gr_complex)) # Output signature
 
-        self._numchans = numchans
+        self._nchans = numchans
         self._oversample_rate = oversample_rate
 
         if taps is not None:
@@ -47,7 +47,7 @@ class pfb_channelizer_ccf(gr.hier_block2):
             made = False
             while not made:
                 try:
-                    self._taps = optfir.low_pass(1, self._numchans, bw, bw+tb, ripple, atten)
+                    self._taps = optfir.low_pass(1, self._nchans, bw, bw+tb, ripple, atten)
                     made = True
                 except RuntimeError:
                     ripple += 0.01
@@ -58,22 +58,16 @@ class pfb_channelizer_ccf(gr.hier_block2):
                     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.s2ss = gr.stream_to_streams(gr.sizeof_gr_complex, self._nchans)
+        self.pfb = gr.pfb_channelizer_ccf(self._nchans, self._taps,
                                           self._oversample_rate)
-        self.v2s = gr.vector_to_streams(gr.sizeof_gr_complex, self._numchans)
-
         self.connect(self, self.s2ss)
 
-        for i in xrange(self._numchans):
+        for i in xrange(self._nchans):
             self.connect((self.s2ss,i), (self.pfb,i))
+            self.connect((self.pfb,i), (self,i))
 
-        # Get independent streams from the filterbank and send them out
-        self.connect(self.pfb, self.v2s)
-
-        for i in xrange(self._numchans):
-            self.connect((self.v2s,i), (self,i))
-
-        
+    def set_channel_map(self, newmap):
+        self.pfb.set_channel_map(newmap)
         
         
-- 
cgit v1.2.3