Imported Upstream version 3.2.2
[debian/gnuradio] / gnuradio-examples / python / usrp / usrp_wfm_rcv.py
index 2029107677c2ab09be71cbb48a886ff8f2db3672..098897cfe2345d73bf745b03419ab3b67b3272b0 100755 (executable)
@@ -1,14 +1,34 @@
 #!/usr/bin/env python
+#
+# Copyright 2005,2006,2007,2009 Free Software Foundation, Inc.
+# 
+# This file is part of GNU Radio
+# 
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+# 
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING.  If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+# 
 
 from gnuradio import gr, gru, eng_notation, optfir
 from gnuradio import audio
 from gnuradio import usrp
-from gnuradio import blks
+from gnuradio import blks2
 from gnuradio.eng_option import eng_option
 from gnuradio.wxgui import slider, powermate
-from gnuradio.wxgui import stdgui, fftsink, form
+from gnuradio.wxgui import stdgui2, fftsink2, form
 from optparse import OptionParser
-import usrp_dbid
+from usrpm import usrp_dbid
 import sys
 import math
 import wx
@@ -22,12 +42,13 @@ def pick_subdevice(u):
     """
     return usrp.pick_subdev(u, (usrp_dbid.TV_RX,
                                 usrp_dbid.TV_RX_REV_2,
+                               usrp_dbid.TV_RX_REV_3,
                                 usrp_dbid.BASIC_RX))
 
 
-class wfm_rx_graph (stdgui.gui_flow_graph):
+class wfm_rx_block (stdgui2.std_top_block):
     def __init__(self,frame,panel,vbox,argv):
-        stdgui.gui_flow_graph.__init__ (self,frame,panel,vbox,argv)
+        stdgui2.std_top_block.__init__ (self,frame,panel,vbox,argv)
 
         parser=OptionParser(option_class=eng_option)
         parser.add_option("-R", "--rx-subdev-spec", type="subdev", default=None,
@@ -72,7 +93,14 @@ class wfm_rx_graph (stdgui.gui_flow_graph):
         self.u.set_mux(usrp.determine_rx_mux_value(self.u, options.rx_subdev_spec))
         self.subdev = usrp.selected_subdev(self.u, options.rx_subdev_spec)
         print "Using RX d'board %s" % (self.subdev.side_and_name(),)
-
+        dbid = self.subdev.dbid()
+        if not (dbid == usrp_dbid.BASIC_RX or
+                dbid == usrp_dbid.TV_RX or
+                dbid == usrp_dbid.TV_RX_REV_2 or
+                dbid == usrp_dbid.TV_RX_REV_3):
+            print "This daughterboard does not cover the required frequency range"
+            print "for this application.  Please use a BasicRX or TVRX daughterboard."
+            raw_input("Press ENTER to continue anyway, or Ctrl-C to exit.")
 
         chan_filt_coeffs = optfir.low_pass (1,           # gain
                                             usrp_rate,   # sampling rate
@@ -83,7 +111,7 @@ class wfm_rx_graph (stdgui.gui_flow_graph):
         #print len(chan_filt_coeffs)
         chan_filt = gr.fir_filter_ccf (chanfilt_decim, chan_filt_coeffs)
 
-        self.guts = blks.wfm_rcv (self, demod_rate, audio_decimation)
+        self.guts = blks2.wfm_rcv (demod_rate, audio_decimation)
 
         self.volume_control = gr.multiply_const_ff(self.vol)
 
@@ -128,20 +156,21 @@ class wfm_rx_graph (stdgui.gui_flow_graph):
 
 
         if 1:
-            self.src_fft = fftsink.fft_sink_c (self, self.panel, title="Data from USRP",
-                                               fft_size=512, sample_rate=usrp_rate)
+            self.src_fft = fftsink2.fft_sink_c(self.panel, title="Data from USRP",
+                                               fft_size=512, sample_rate=usrp_rate,
+                                              ref_scale=32768.0, ref_level=0, y_divs=12)
             self.connect (self.u, self.src_fft)
             vbox.Add (self.src_fft.win, 4, wx.EXPAND)
 
         if 1:
-            post_filt_fft = fftsink.fft_sink_f (self, self.panel, title="Post Demod", 
+            post_filt_fft = fftsink2.fft_sink_f(self.panel, title="Post Demod", 
                                                 fft_size=1024, sample_rate=usrp_rate,
                                                 y_per_div=10, ref_level=0)
             self.connect (self.guts.fm_demod, post_filt_fft)
             vbox.Add (post_filt_fft.win, 4, wx.EXPAND)
 
         if 0:
-            post_deemph_fft = fftsink.fft_sink_f (self, self.panel, title="Post Deemph",
+            post_deemph_fft = fftsink2.fft_sink_f(self.panel, title="Post Deemph",
                                                   fft_size=512, sample_rate=audio_rate,
                                                   y_per_div=10, ref_level=-20)
             self.connect (self.guts.deemph, post_deemph_fft)
@@ -265,5 +294,5 @@ class wfm_rx_graph (stdgui.gui_flow_graph):
         
 
 if __name__ == '__main__':
-    app = stdgui.stdapp (wfm_rx_graph, "USRP WFM RX")
+    app = stdgui2.stdapp (wfm_rx_block, "USRP WFM RX")
     app.MainLoop ()