#!/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.
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,
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)
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