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