Imported Upstream version 3.2.2
[debian/gnuradio] / grc / scripts / usrp_probe
1 #!/usr/bin/env python
2 """
3 Copyright 2009 Free Software Foundation, Inc.
4 This file is part of GNU Radio
5
6 GNU Radio Companion is free software; you can redistribute it and/or
7 modify it under the terms of the GNU General Public License
8 as published by the Free Software Foundation; either version 2
9 of the License, or (at your option) any later version.
10
11 GNU Radio Companion is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
19 """
20
21 from gnuradio import usrp
22 import os
23
24 import pygtk
25 pygtk.require('2.0')
26 import gtk
27
28 from gnuradio.grc.gui.Dialogs import TextDisplay
29
30 from gnuradio.grc.python.Platform import Platform
31 platform = Platform()
32
33 from gnuradio.grc.gui.Platform import Platform
34 platform = Platform(platform)
35
36 flow_graph = platform.get_new_flow_graph()
37 block = flow_graph.get_new_block('usrp_probe')
38
39 ##all params
40 usrp_which_param = block.get_param('which')
41 usrp_dboard_param = block.get_param('dboard')
42
43 class USRPProbeWindow(gtk.Window):
44         """
45         The main window for USRP Dignostics.
46         """
47
48         def delete_event(self, widget, event, data=None): return False
49
50         def destroy(self, widget, data=None): gtk.main_quit()
51
52         def __init__(self):
53                 """
54                 USRPProbeWindow contructor.
55                 Create a new gtk Dialog with a close button, USRP input paramaters, and output labels.
56                 """
57                 gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL)
58                 #quit signals
59                 self.connect("delete_event", self.delete_event)
60                 self.connect("destroy", self.destroy)
61                 #set the title
62                 self.set_title('USRP Probe')
63                 #create decorative frame
64                 frame = gtk.Frame()
65                 self.add(frame)
66                 #create vbox for storage
67                 vbox = gtk.VBox()
68                 frame.add(vbox)
69                 vbox.pack_start(usrp_which_param.get_input_object(), False)
70                 vbox.pack_start(usrp_dboard_param.get_input_object(), False)
71                 self.probe_button = gtk.Button('Probe')
72                 self.probe_button.connect('clicked', self._probe_usrp)
73                 vbox.pack_start(self.probe_button, False)
74                 #Create a text box for USRP queries
75                 self.query_buffer = TextDisplay()
76                 self.query_buffer.set_text(block.get_doc())
77                 vbox.pack_start(self.query_buffer)
78                 self.show_all()
79
80         def _probe_usrp(self, widget=None):
81                 """Probe the USRP device and copy the results into the query text box."""
82                 dboard = usrp_dboard_param.evaluate()
83                 side = {'a': 0, 'b': 1}[dboard[-1]]
84                 if dboard.startswith('rx'): make = usrp.source_c
85                 elif dboard.startswith('tx'): make = usrp.sink_c
86                 try:
87                         u = make(which=usrp_which_param.evaluate())
88                         subdev_spec = (side, 0)
89                         subdev = usrp.selected_subdev(u, subdev_spec) #get the subdev
90                         msg = ">>> USRP Probe\n"
91                         msg = "%s\nName:\n\t%s\n"%(msg, str(subdev.name()))
92                         msg = "%s\nConverter Rate:\n\t%s\n"%(msg, u.converter_rate())
93                         msg = "%s\nUses Quadrature:\n\t%s\n"%(msg, str(subdev.is_quadrature()))
94                         gain_min, gain_max, gain_step = subdev.gain_range()
95                         msg = "%s\nGain Range (min, max, step size):\n\t%s\n\t%s\n\t%s\n"%(msg, gain_min, gain_max, gain_step)
96                         freq_min, freq_max, freq_step = subdev.freq_range()
97                         msg = "%s\nFreq Range (min, max, step size):\n\t%s\n\t%s\n\t%s\n"%(msg, freq_min, freq_max, freq_step)
98                         self.query_buffer.set_text(msg)
99                 except Exception, e: #display the error message
100                         self.query_buffer.set_text('''\
101 >>> Error\n%s
102
103 If the USRP cannot be found, make sure that the USRP is plugged-in and restart this program. \
104 If the problem persists, there may be a problem with you gnuradio installation or USB 2.0.
105 '''%str(e))
106
107 if __name__ == '__main__':
108         #setup icon using icon theme
109         try: gtk.window_set_default_icon(gtk.IconTheme().load_icon('gnuradio-grc', 256, 0))
110         except: pass
111         #enter the mainloop
112         USRPProbeWindow()
113         gtk.main()