Added design for Guassian filters.
[debian/gnuradio] / gr-utils / src / python / gr_filter_design.py
index c69fa26c7cb7be06b0b17842c22b300c9d57b67d..0579d0fe2313d4e792e5c32b4ca8362ee3974c5b 100755 (executable)
@@ -145,8 +145,14 @@ class gr_plot_filter(QtGui.QMainWindow):
             self.gui.filterTypeWidget.setCurrentWidget(self.gui.firbpfPage)
         elif(ftype == "Complex Band Pass"):
             self.gui.filterTypeWidget.setCurrentWidget(self.gui.firbpfPage)
+        elif(ftype == "Band Notch"):
+            self.gui.filterTypeWidget.setCurrentWidget(self.gui.firbnfPage)
         elif(ftype == "High Pass"):
             self.gui.filterTypeWidget.setCurrentWidget(self.gui.firhpfPage)
+        elif(ftype == "Root Raised Cosine"):
+            self.gui.filterTypeWidget.setCurrentWidget(self.gui.rrcPage)
+        elif(ftype == "Gaussian"):
+            self.gui.filterTypeWidget.setCurrentWidget(self.gui.gausPage)
 
         self.design()
         
@@ -197,7 +203,10 @@ class gr_plot_filter(QtGui.QMainWindow):
                 designer = {"Low Pass" : self.design_win_lpf,
                             "Band Pass" : self.design_win_bpf,
                             "Complex Band Pass" : self.design_win_cbpf,
-                            "High Pass" :  self.design_win_hpf}        
+                            "Band Notch" : self.design_win_bnf,
+                            "High Pass" :  self.design_win_hpf,
+                            "Root Raised Cosine" :  self.design_win_rrc,
+                            "Gaussian" :  self.design_win_gaus}
                 wintype = self.filterWindows[winstr]
                 taps,r = designer[ftype](fs, gain, wintype)
 
@@ -264,6 +273,24 @@ class gr_plot_filter(QtGui.QMainWindow):
         else:
             return ([],r)
 
+    def design_win_bnf(self, fs, gain, wintype):
+        ret = True
+        pb1,r = self.gui.startofBnfStopBandEdit.text().toDouble()
+        ret = r and ret
+        pb2,r = self.gui.endofBnfStopBandEdit.text().toDouble()
+        ret = r and ret
+        tb,r  = self.gui.bnfTransitionEdit.text().toDouble()
+        ret = r and ret
+        atten,r = self.gui.bnfStopBandAttenEdit.text().toDouble()
+        ret = r and ret
+
+        if(r):
+            taps = gr.firdes.band_reject_2(gain, fs, pb1, pb2, tb,
+                                           atten, wintype)
+            return (taps,r)
+        else:
+            return ([],r)
+
     def design_win_hpf(self, fs, gain, wintype):
         ret = True
         sb,r = self.gui.endofHpfStopBandEdit.text().toDouble()
@@ -281,7 +308,37 @@ class gr_plot_filter(QtGui.QMainWindow):
         else:
             return ([],r)
 
+    def design_win_rrc(self, fs, gain, wintype):
+        ret = True
+        sr,r = self.gui.rrcSymbolRateEdit.text().toDouble()
+        ret = r and ret
+        alpha,r = self.gui.rrcAlphaEdit.text().toDouble()
+        ret = r and ret
+        ntaps,r = self.gui.rrcNumTapsEdit.text().toInt()
+        ret = r and ret
 
+        if(r):
+            taps = gr.firdes.root_raised_cosine(gain, fs, sr,
+                                                alpha, ntaps)
+            return (taps,r)
+        else:
+            return ([],r)
+
+    def design_win_gaus(self, fs, gain, wintype):
+        ret = True
+        sr,r = self.gui.gausSymbolRateEdit.text().toDouble()
+        ret = r and ret
+        bt,r = self.gui.gausBTEdit.text().toDouble()
+        ret = r and ret
+        ntaps,r = self.gui.gausNumTapsEdit.text().toInt()
+        ret = r and ret
+
+        if(r):
+            spb = fs / sr
+            taps = gr.firdes.gaussian(gain, spb, bt, ntaps)
+            return (taps,r)
+        else:
+            return ([],r)
 
     # Design Functions for Equiripple Filters
     def design_opt_lpf(self, fs, gain, wintype=None):