3 from gnuradio import gr, gru, eng_notation
4 from gnuradio import usrp
5 from gnuradio.eng_option import eng_option
6 from optparse import OptionParser
12 def make_filename(dir, freq, decim, nchan, suffix):
13 t = time.strftime('%Y%m%d-%H%M%S')
14 f = 'R%s-%s-%d-%d.%s' % (
15 t, eng_notation.num_to_str(freq), decim, nchan, suffix)
16 return os.path.join(dir, f)
18 class radar_graph(gr.flow_graph):
21 gr.flow_graph.__init__(self)
23 parser = OptionParser (option_class=eng_option)
24 #parser.add_option("-S", "--subdev", type="subdev", default=(0, None),
25 # help="select USRP Rx side A or B (default=A)")
26 parser.add_option("-d", "--decim", type="int", default=64,
27 help="set fgpa decimation rate to DECIM (default=64)")
28 parser.add_option("-f", "--freq", type="eng_float", default=104.5e6,
29 help="set frequency to FREQ (default=104.5M)", metavar="FREQ")
30 parser.add_option("", "--gain0", type="eng_float", default=0,
31 help="set gain in dB (default 0)")
32 parser.add_option("", "--gain1", type="eng_float", default=11,
33 help="set gain in dB (default 11)")
34 parser.add_option("-F", "--filename", default=None)
35 parser.add_option("-D", "--dir", default=None)
36 (options, args) = parser.parse_args()
42 if options.filename is None and options.dir is None:
43 sys.stderr.write('Must specify either -F FILENAME or -D DIR\n')
49 # if filename was given, use it, otherwise build one.
50 if options.filename is None:
51 options.filename = make_filename(options.dir, options.freq,
52 options.decim, nchan, 'srd')
54 self.u = usrp.source_s(0, options.decim, nchan, 0, 0)
55 self.subdev = self.u.db[0]
57 if self.u.db[0][0].dbid() != usrp_dbid.BASIC_RX:
58 sys.stderr.write('This code requires a Basic Rx board on Side A\n')
61 # self.u.set_mux(usrp.determine_rx_mux_value(self.u, options.subdev))
62 self.u.set_mux(gru.hexint(0xf0f0f1f0))
64 dst = gr.file_sink (gr.sizeof_short, options.filename)
65 self.connect (self.u, dst)
67 self.subdev[0].set_gain(options.gain0)
68 self.subdev[1].set_gain(options.gain1)
69 self.set_freq(options.freq)
72 def set_freq(self, target_freq):
74 for i in range(len(self.subdev)):
75 r = usrp.tune(self.u, i, self.subdev[i], target_freq)
78 print "set_freq: failed to set subdev[%d] freq to %f" % (
84 if __name__ == '__main__':
88 except KeyboardInterrupt: