Imported Upstream version 3.2.2
[debian/gnuradio] / gnuradio-examples / python / usrp / usrp_wfm_rcv2_nogui.py
index 40e7dd754cd36afc1cc1f3168a8976d93b36a620..0103982b8d06f4d170bed64efef9cb7f1a21d968 100755 (executable)
@@ -1,15 +1,47 @@
 #!/usr/bin/env python
+#
+# Copyright 2005,2006,2007 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 optparse import OptionParser
-import usrp_dbid
+from usrpm import usrp_dbid
 import sys
 import math
 
+def calc_dxc_freq(target_freq, baseband_freq, fs):
+   dxc_temp = (target_freq - baseband_freq) % fs
+
+   if dxc_temp < fs/2.0:
+       dxc_freq = - dxc_temp
+       inverted = False
+   else:
+       dxc_freq = fs - dxc_temp
+       inverted = True
+
+   return (dxc_freq, inverted)
+
 def pick_subdevice(u):
     """
     The user didn't specify a subdevice on the command line.
@@ -22,10 +54,10 @@ def pick_subdevice(u):
                                 usrp_dbid.BASIC_RX))
 
 
-class wfm_rx_graph (gr.flow_graph):
+class wfm_rx_block (gr.top_block):
 
     def __init__(self):
-        gr.flow_graph.__init__(self)
+        gr.top_block.__init__(self)
 
         parser=OptionParser(option_class=eng_option)
         parser.add_option("-R", "--rx-subdev-spec", type="subdev", default=None,
@@ -103,17 +135,17 @@ class wfm_rx_graph (gr.flow_graph):
 
         mid_freq = (f[0] + f[1]) / 2
         # set front end PLL to middle frequency
-        ok, baseband_freq = self.subdev.set_freq(mid_freq)
+        tune_result = self.subdev.set_freq(mid_freq)
 
         for n in range(2):
             chan_filt = gr.fir_filter_ccf (chanfilt_decim, chan_filt_coeffs)
-            guts = blks.wfm_rcv (self, demod_rate, audio_decimation)
+            guts = blks2.wfm_rcv (demod_rate, audio_decimation)
             volume_control = gr.multiply_const_ff(self.vol)
             self.connect((di, n), chan_filt)
             self.connect(chan_filt, guts, volume_control)
             self.connect(volume_control, (audio_sink, n))
-            dxc_freq, inverted = usrp.calc_dxc_freq(f[n], baseband_freq,
-                                                    self.u.converter_rate())
+            dxc_freq, inverted = calc_dxc_freq(f[n], tune_result.baseband_freq,
+                                               self.u.converter_rate())
             self.u.set_rx_freq(n, dxc_freq)
         
 
@@ -135,10 +167,13 @@ class wfm_rx_graph (gr.flow_graph):
     def set_gain(self, gain):
         self.subdev.set_gain(gain)
 
+    def __del__(self):
+       # Avoid weak-reference error
+       del self.subdev
     
 if __name__ == '__main__':
-    fg = wfm_rx_graph()
+    tb = wfm_rx_block()
     try:
-        fg.run()
+        tb.run()
     except KeyboardInterrupt:
         pass