X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=gr-usrp%2Fsrc%2Fflexrf_debug_gui.py;fp=gr-usrp%2Fsrc%2Fflexrf_debug_gui.py;h=ff32900a5c71a3649d73d0b65c7406102818717e;hb=35e43e8d8c271e6842191cac3fc3f2f88a861183;hp=0000000000000000000000000000000000000000;hpb=ea29b08aeb54227e6628f655ccfdb96fe4d8c378;p=debian%2Fgnuradio diff --git a/gr-usrp/src/flexrf_debug_gui.py b/gr-usrp/src/flexrf_debug_gui.py new file mode 100755 index 00000000..ff32900a --- /dev/null +++ b/gr-usrp/src/flexrf_debug_gui.py @@ -0,0 +1,176 @@ +#!/usr/bin/env python +# +# Copyright 2005 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. +# + +import sys +import wx +from gnuradio.wxgui import form + +class flexrf_debug_gui(wx.Frame): + def __init__(self, flexrf, title="Flexrf Debug"): + wx.Frame.__init__(self, None, -1, title) + + self.flexrf = flexrf + + self.CreateStatusBar (1) + + self.panel = wx.Panel(self, -1) + self.vbox = wx.BoxSizer(wx.VERTICAL) + self.panel.SetSizer(self.vbox) + self.panel.SetAutoLayout(True) + + self._create_form() + + self.vbox.Fit(self.panel) + + self.frame_vbox = wx.BoxSizer(wx.VERTICAL) + self.frame_vbox.Add(self.panel, 1, wx.EXPAND) + self.SetSizer(self.frame_vbox) + self.SetAutoLayout(True) + self.frame_vbox.Fit(self) + + def _create_form(self): + self._create_set_freq() + self._create_write_fpga() + self._create_write_all() + self._create_write_it() + #self._create_set_gain() + + # ---------------------------------------------------------------- + + def _create_set_freq(self): + + def _set_freq(kv): + return self.flexrf.set_freq(kv['freq'])[0] + + sbs = wx.StaticBoxSizer(wx.StaticBox(self.panel), wx.HORIZONTAL) + sbs.Add((5,0), 0.1) # stretchy space + #sbs.Add(wx.StaticText(self.panel, -1, "set_freq "), 0, 0) + #sbs.Add((5,0), 0.1) # stretchy space + myform = form.form() + myform['freq'] = form.float_field(self.panel, sbs, "Set Frequency") + sbs.Add((5,0), 0.1) # stretchy space + sbs.Add(form.button_with_callback(self.panel, "Do It!", + self._generic_doit(_set_freq, myform)), 1, wx.EXPAND) + sbs.Add((5,0), 0.1) # stretchy space + self.vbox.Add(sbs, 0, wx.EXPAND) + + + def _create_write_fpga(self): + + def _write_fpga(kv): + return self.flexrf._u._write_fpga_reg(kv['regno'], kv['value']) + + sbs = wx.StaticBoxSizer(wx.StaticBox(self.panel), wx.HORIZONTAL) + sbs.Add((5,0), 0.1) # stretchy space + sbs.Add(wx.StaticText(self.panel, -1, "write_fpga_reg "), 0, 0) + sbs.Add((5,0), 0.1) # stretchy space + myform = form.form() + myform['regno'] = form.int_field(self.panel, sbs, "regno") + sbs.Add((5,0), 0.1) # stretchy space + myform['value'] = form.int_field(self.panel, sbs, "value") + sbs.Add((5,0), 0.1) # stretchy space + sbs.Add(form.button_with_callback(self.panel, "Do It!", + self._generic_doit(_write_fpga, myform)), 1, wx.EXPAND) + sbs.Add((5,0), 0.1) # stretchy space + self.vbox.Add(sbs, 0, wx.EXPAND) + + + def _create_write_all(self): + + def _write_all(kv): + self.flexrf._write_all(kv['R'], kv['control'], kv['N']) # void + return True + + sbs = wx.StaticBoxSizer(wx.StaticBox(self.panel), wx.HORIZONTAL) + sbs.Add((5,0), 0.1) # stretchy space + sbs.Add(wx.StaticText(self.panel, -1, "write_all "), 0, 0) + sbs.Add((5,0), 0.1) # stretchy space + myform = form.form() + myform['R'] = form.int_field(self.panel, sbs, "R") + sbs.Add((5,0), 0.1) # stretchy space + myform['control'] = form.int_field(self.panel, sbs, "control") + sbs.Add((5,0), 0.1) # stretchy space + myform['N'] = form.int_field(self.panel, sbs, "N") + sbs.Add((5,0), 0.1) # stretchy space + sbs.Add(form.button_with_callback(self.panel, "Do It!", + self._generic_doit(_write_all, myform)), 1, wx.EXPAND) + sbs.Add((5,0), 0.1) # stretchy space + self.vbox.Add(sbs, 0, wx.EXPAND) + + + def _create_write_it(self): + + def _write_it(kv): + self.flexrf._write_it(kv['v']) # void + return True + + sbs = wx.StaticBoxSizer(wx.StaticBox(self.panel), wx.HORIZONTAL) + sbs.Add((5,0), 0.1) # stretchy space + sbs.Add(wx.StaticText(self.panel, -1, "write_it "), 0, 0) + sbs.Add((5,0), 0.1) # stretchy space + myform = form.form() + myform['v'] = form.int_field(self.panel, sbs, "24-bit value") + sbs.Add((5,0), 0.1) # stretchy space + sbs.Add(form.button_with_callback(self.panel, "Do It!", + self._generic_doit(_write_it, myform)), 1, wx.EXPAND) + sbs.Add((5,0), 0.1) # stretchy space + self.vbox.Add(sbs, 0, wx.EXPAND) + + + # ---------------------------------------------------------------- + + def _set_status_msg(self, msg): + self.GetStatusBar().SetStatusText(msg, 0) + + def _generic_doit(self, callback, form): + + def button_callback(): + errors = form.check_input_for_errors() + if errors: + self._set_status_msg(errors[0]) + print '\n'.join(tuple(errors)) + else: + kv = form.get_key_vals() + if callback(kv): + self._set_status_msg("OK") + else: + self._set_status_msg("Failed") + + return button_callback + + + +if False and __name__ == '__main__': + + class demo_app (wx.App): + def __init__ (self): + wx.App.__init__(self) + + def OnInit (self): + frame = flexrf_debug_gui(None, "Debug FlexRF TX") + frame.Show(True) + self.SetTopWindow (frame) + return True + + app = demo_app() + app.MainLoop() +