def _create_dac_gain_helper(self, vbox, i_or_q): d = {"1/1": 0xC0, "1/2": 0x40, "1/11": 0x00} def doit(kv): dac_gain = kv['dac_gain'] coarse_s = kv['coarse'] print "dac_gain[%d] = %4d" % (i_or_q, dac_gain) print "coarse = ", coarse_s return self._set_dac_fine_gain(i_or_q, dac_gain, d[coarse_s]) myform = form.form() hbox = wx.BoxSizer(wx.HORIZONTAL) vbox.Add(hbox, 0, wx.EXPAND) myform['coarse'] = form.radiobox_field( parent=self.panel, sizer=hbox, callback=myform.check_input_and_call(doit), choices=['1/11', '1/2', '1/1'], weight=1, value='1/1') myform['dac_gain'] = form.slider_field( parent=self.panel, sizer=hbox, callback=myform.check_input_and_call(doit), min=-32, max=31, value=0, weight=4)
def _build_gui(self, vbox): def _form_set_freq(kv): return self.set_freq(kv['freq']) vbox.Add(self.scope.win, 1, wx.EXPAND) # Proportion used to be 10 # add control area at the bottom self.myform = myform = form.form() hbox = wx.BoxSizer(wx.HORIZONTAL) # Create row sizer hbox.Add((5,0), 0, 0) myform['freq'] = form.float_field( parent=self.panel, sizer=hbox, label="Center freq", weight=1, callback=myform.check_input_and_call(_form_set_freq, self._set_status_msg)) myform['antenna'] = form.radiobox_field(parent=self.panel, sizer=hbox, label="Antenna", value=None, callback=self.set_antenna_callback, choices=["TX/RX", "RX2", "RXA", "RXB", "RXAB"],major_dimension=5, weight=3) hbox.Add((5,0), 0, 0) g = self.subdev.gain_range() myform['gain'] = form.slider_field(parent=self.panel, sizer=hbox, label="Gain", weight=6, # 3 min=int(g[0]), max=int(g[1]), callback=self.set_gain) hbox.Add((5,0), 0, 0) vbox.Add(hbox, 0, wx.EXPAND) self._build_subpanel(vbox)
def _create_dac_gain_helper(self, vbox, i_or_q): d = { "1/1" : 0xC0, "1/2" : 0x40, "1/11" : 0x00 } def doit(kv): dac_gain = kv['dac_gain'] coarse_s = kv['coarse'] print "dac_gain[%d] = %4d" % (i_or_q, dac_gain) print "coarse = ", coarse_s return self._set_dac_fine_gain(i_or_q, dac_gain, d[coarse_s]) myform = form.form() hbox = wx.BoxSizer(wx.HORIZONTAL) vbox.Add(hbox, 0, wx.EXPAND) myform['coarse'] = form.radiobox_field(parent=self.panel, sizer=hbox, callback=myform.check_input_and_call(doit), choices=['1/11', '1/2', '1/1'], weight=1, value='1/1') myform['dac_gain'] = form.slider_field(parent=self.panel, sizer=hbox, callback=myform.check_input_and_call(doit), min=-32, max=31, value=0, weight=4)
def build_gui(self): self.myform = myform = form.form() # Baseband controls bb_sbox = wx.StaticBox(parent=self.panel, label="Baseband Modulation") bb_vbox = wx.StaticBoxSizer( bb_sbox, wx.VERTICAL) # Holds all baseband controls as unit # First row of baseband controls (modulation type) mod_hbox = wx.BoxSizer(wx.HORIZONTAL) mod_hbox.Add((10, 0), 0, 0) myform['type'] = form.radiobox_field( parent=self.panel, label="Type", sizer=mod_hbox, value=None, callback=self.evt_set_waveform_type, weight=1, major_dimension=0, choices=usrp2_siggen.waveforms.values()) bb_vbox.Add((0, 10), 0, 0) bb_vbox.Add(mod_hbox, 0, wx.EXPAND) # Second row of baseband controls (frequencies) bbf_hbox = wx.BoxSizer(wx.HORIZONTAL) bbf_hbox.Add((10, 0), 0, 0) myform['w1freq'] = form.float_field( parent=self.panel, sizer=bbf_hbox, label="Frequency 1 (Hz)", weight=1, callback=myform.check_input_and_call(self.evt_set_freq1, self.evt_set_status_msg)) bbf_hbox.Add((10, 0), 0, 0) myform['w2freq'] = form.float_field( parent=self.panel, sizer=bbf_hbox, label="Frequency 2 (Hz)", weight=1, callback=myform.check_input_and_call(self.evt_set_freq2, self.evt_set_status_msg)) bbf_hbox.Add((10, 0), 0, 0) bb_vbox.Add((0, 10), 0, 0) bb_vbox.Add(bbf_hbox, 0, wx.EXPAND) # Add baseband controls to top window sizer self.vbox.Add((0, 10), 0, 0) self.vbox.Add(bb_vbox, 0, wx.EXPAND) # Frequency controls fc_sbox = wx.StaticBox(parent=self.panel, label="Center Frequency") fc_vbox = wx.StaticBoxSizer( fc_sbox, wx.VERTICAL) # Holds all frequency controls as unit # First row of frequency controls (center frequency) freq_hbox = wx.BoxSizer(wx.HORIZONTAL) freq_hbox.Add((10, 0), 0, 0) myform['freq'] = form.float_field(parent=self.panel, sizer=freq_hbox, label=None, weight=1, callback=myform.check_input_and_call( self.evt_set_freq, self.evt_set_status_msg)) freq_hbox.Add((10, 0), 0, 0) myform['freq_slider'] = form.quantized_slider_field( parent=self.panel, sizer=freq_hbox, label="Min-Max", weight=4, range=(self.min_freq, self.max_freq, self.freq_step), callback=self.evt_set_freq) freq_hbox.Add((10, 0), 0, 0) fc_vbox.Add((10, 0), 0, 0) fc_vbox.Add(freq_hbox, 0, wx.EXPAND) # Second row of frequency controls (results) tr_hbox = wx.BoxSizer(wx.HORIZONTAL) tr_hbox.Add((10, 0), 0, 0) myform['analog'] = form.static_float_field(parent=self.panel, sizer=tr_hbox, label="Daughterboard: (Hz)", weight=1) tr_hbox.Add((10, 0), 0, 0) myform['DDC'] = form.static_float_field(parent=self.panel, sizer=tr_hbox, label="USRP2 DDC (Hz)", weight=1) tr_hbox.Add((10, 0), 0, 0) fc_vbox.Add(tr_hbox, 0, wx.EXPAND) # Add frequency controls to top window sizer self.vbox.Add((0, 10), 0, 0) self.vbox.Add(fc_vbox, 0, wx.EXPAND) # Amplitude row amp_sbox = wx.StaticBox(parent=self.panel, label="Amplitude") amp_hbox = wx.StaticBoxSizer(amp_sbox, wx.HORIZONTAL) amp_hbox.Add((10, 0), 0, 0) myform['amp'] = form.float_field(parent=self.panel, sizer=amp_hbox, label="Linear\n(0.0-1.0)", weight=1, callback=myform.check_input_and_call( self.evt_set_amplitude, self.evt_set_status_msg)) amp_hbox.Add((10, 0), 0, 0) myform['amp_slider'] = form.quantized_slider_field( parent=self.panel, sizer=amp_hbox, label="dB Full Scale\n(-100-0)", weight=4, range=(-100.0, 0.0, 1), callback=self.evt_set_amplitude) amp_hbox.Add((10, 0), 0, 0) self.vbox.Add((0, 10), 0, 0) self.vbox.Add(amp_hbox, 0, wx.EXPAND) # Sample rate row sam_sbox = wx.StaticBox(parent=self.panel, label="Sample Rate") sam_hbox = wx.StaticBoxSizer(sam_sbox, wx.HORIZONTAL) sam_hbox.Add((10, 0), 0, 0) myform['interp'] = form.int_field(parent=self.panel, sizer=sam_hbox, label="Interpolation", weight=1, callback=self.evt_set_interp) sam_hbox.Add((10, 0), 0, 0) myform['eth'] = form.static_float_field(parent=self.panel, sizer=sam_hbox, label="Sample Rate (sps)", weight=1) sam_hbox.Add((10, 0), 0, 0) myform['gbe'] = form.static_float_field(parent=self.panel, sizer=sam_hbox, label="GbE Rate (bits/sec)", weight=1) sam_hbox.Add((10, 0), 0, 0) self.vbox.Add((0, 10), 0, 0) self.vbox.Add(sam_hbox, 0, wx.EXPAND) # USRP2 row u2_sbox = wx.StaticBox(parent=self.panel, label="USRP2 Hardware") u2_hbox = wx.StaticBoxSizer(u2_sbox, wx.HORIZONTAL) u2_hbox.Add((10, 0), 0, 0) myform['ifc'] = form.static_text_field(parent=self.panel, sizer=u2_hbox, label="Interface", weight=2) u2_hbox.Add((10, 0), 0, 0) myform['mac'] = form.static_text_field(parent=self.panel, sizer=u2_hbox, label="MAC Address", weight=2) u2_hbox.Add((10, 0), 0, 0) myform['dbid'] = form.static_text_field(parent=self.panel, sizer=u2_hbox, label="Daughterboard ID", weight=1) self.vbox.Add((0, 10), 0, 0) self.vbox.Add(u2_hbox, 0, wx.EXPAND) self.vbox.Add((0, 20), 0, 0)
def build_gui(self): self.myform = myform = form.form() # Baseband controls bb_sbox = wx.StaticBox(parent=self.panel, label="Baseband Modulation") bb_vbox = wx.StaticBoxSizer(bb_sbox, wx.VERTICAL) # Holds all baseband controls as unit # First row of baseband controls (modulation type) mod_hbox = wx.BoxSizer(wx.HORIZONTAL) mod_hbox.Add((10,0), 0, 0) myform['type'] = form.radiobox_field( parent=self.panel, label="Type", sizer=mod_hbox, value=None, callback=self.evt_set_waveform_type, weight=1, major_dimension=0, choices=usrp2_siggen.waveforms.values() ) bb_vbox.Add((0,10), 0, 0) bb_vbox.Add(mod_hbox, 0, wx.EXPAND) # Second row of baseband controls (frequencies) bbf_hbox = wx.BoxSizer(wx.HORIZONTAL) bbf_hbox.Add((10,0), 0, 0) myform['w1freq'] = form.float_field( parent=self.panel, sizer=bbf_hbox, label="Frequency 1 (Hz)", weight=1, callback=myform.check_input_and_call(self.evt_set_freq1, self.evt_set_status_msg) ) bbf_hbox.Add((10,0), 0, 0) myform['w2freq'] = form.float_field( parent=self.panel, sizer=bbf_hbox, label="Frequency 2 (Hz)", weight=1, callback=myform.check_input_and_call(self.evt_set_freq2, self.evt_set_status_msg) ) bbf_hbox.Add((10,0), 0, 0) bb_vbox.Add((0,10), 0, 0) bb_vbox.Add(bbf_hbox, 0, wx.EXPAND) # Add baseband controls to top window sizer self.vbox.Add((0,10), 0, 0) self.vbox.Add(bb_vbox, 0, wx.EXPAND) # Frequency controls fc_sbox = wx.StaticBox(parent=self.panel, label="Center Frequency") fc_vbox = wx.StaticBoxSizer(fc_sbox, wx.VERTICAL) # Holds all frequency controls as unit # First row of frequency controls (center frequency) freq_hbox = wx.BoxSizer(wx.HORIZONTAL) freq_hbox.Add((10,0), 0, 0) myform['freq'] = form.float_field( parent=self.panel, sizer=freq_hbox, label=None, weight=1, callback=myform.check_input_and_call(self.evt_set_freq, self.evt_set_status_msg) ) freq_hbox.Add((10,0), 0, 0) myform['freq_slider'] = form.quantized_slider_field( parent=self.panel, sizer=freq_hbox, label="Min-Max", weight=4, range = (self.min_freq, self.max_freq, self.freq_step), callback=self.evt_set_freq) freq_hbox.Add((10,0), 0, 0) fc_vbox.Add((10,0), 0, 0) fc_vbox.Add(freq_hbox, 0, wx.EXPAND) # Second row of frequency controls (results) tr_hbox = wx.BoxSizer(wx.HORIZONTAL) tr_hbox.Add((10,0), 0, 0) myform['analog'] = form.static_float_field( parent=self.panel, sizer=tr_hbox, label="Daughterboard: (Hz)", weight=1) tr_hbox.Add((10,0), 0, 0) myform['DDC'] = form.static_float_field( parent=self.panel, sizer=tr_hbox, label="USRP2 DDC (Hz)", weight=1) tr_hbox.Add((10,0), 0, 0) fc_vbox.Add(tr_hbox, 0, wx.EXPAND) # Add frequency controls to top window sizer self.vbox.Add((0,10), 0, 0) self.vbox.Add(fc_vbox, 0, wx.EXPAND) # Amplitude row amp_sbox = wx.StaticBox(parent=self.panel, label="Amplitude") amp_hbox = wx.StaticBoxSizer(amp_sbox, wx.HORIZONTAL) amp_hbox.Add((10,0), 0, 0) myform['amp'] = form.float_field( parent=self.panel, sizer=amp_hbox, label="Linear\n(0.0-1.0)", weight=1, callback=myform.check_input_and_call(self.evt_set_amplitude, self.evt_set_status_msg) ) amp_hbox.Add((10,0), 0, 0) myform['amp_slider'] = form.quantized_slider_field( parent=self.panel, sizer=amp_hbox, label="dB Full Scale\n(-100-0)", weight=4, range=(-100.0, 0.0, 1), callback=self.evt_set_amplitude) amp_hbox.Add((10,0), 0, 0) self.vbox.Add((0,10), 0, 0) self.vbox.Add(amp_hbox, 0, wx.EXPAND) # Sample rate row sam_sbox = wx.StaticBox(parent=self.panel, label="Sample Rate") sam_hbox = wx.StaticBoxSizer(sam_sbox, wx.HORIZONTAL) sam_hbox.Add((10,0), 0, 0) myform['interp'] = form.int_field( parent=self.panel, sizer=sam_hbox, label="Interpolation", weight=1, callback=self.evt_set_interp) sam_hbox.Add((10,0), 0, 0) myform['eth'] = form.static_float_field( parent=self.panel, sizer=sam_hbox, label="Sample Rate (sps)", weight=1) sam_hbox.Add((10,0), 0, 0) myform['gbe'] = form.static_float_field( parent=self.panel, sizer=sam_hbox, label="GbE Rate (bits/sec)", weight=1) sam_hbox.Add((10,0), 0, 0) self.vbox.Add((0,10), 0, 0) self.vbox.Add(sam_hbox, 0, wx.EXPAND) # USRP2 row u2_sbox = wx.StaticBox(parent=self.panel, label="USRP2 Hardware") u2_hbox = wx.StaticBoxSizer(u2_sbox, wx.HORIZONTAL) u2_hbox.Add((10,0), 0, 0) myform['ifc'] = form.static_text_field(parent=self.panel, sizer=u2_hbox, label="Interface", weight=2) u2_hbox.Add((10,0), 0, 0) myform['mac'] = form.static_text_field(parent=self.panel, sizer=u2_hbox, label="MAC Address", weight=2) u2_hbox.Add((10,0), 0, 0) myform['dbid'] = form.static_text_field(parent=self.panel, sizer=u2_hbox, label="Daughterboard ID", weight=1) self.vbox.Add((0,10), 0, 0) self.vbox.Add(u2_hbox, 0, wx.EXPAND) self.vbox.Add((0,20), 0, 0)
def make_control(self): bspace = 10 PyHydra.control.make_control(self) self.AddLocalMacAddress() """ Create MCS choicebox_field """ box = wx.BoxSizer(wx.HORIZONTAL) self.make_label("MCS", box, 35) self.mcsfield = PyHydra.choicebox_field(self, box, \ value="Auto", callback = self.SetMCS, \ choices = MimoControl.MCS_CHOICES) self.mcsfield.f.SetToolTipString("Select Modulation and Coding Scheme") self.AddParam('rate', self.SetMCS) self.AddParam('mcs', self.SetMCS) if self.options.rate<0: self.SetParam('mcs', "Auto") else: self.SetParam('mcs', self.options.rate) self.cbox.Add (box, 0, wx.ALIGN_LEFT|wx.ALL, border = bspace) ## Create divider divider = PyHydra.Divider(self) divider.SetBackgroundColour(wx.Colour(200,200,200) ) self.cbox.AddSpacer((10,10)) self.cbox.Add(divider, 0, wx.EXPAND|wx.GROW) self.cbox.AddSpacer((10,10)) """ Packet Detector Threshold """ box = wx.BoxSizer(wx.VERTICAL) self.pd_threshold = form.slider_field(self, box, \ "Packet Detector Threshold (%)", value=self.options.pd_threshold, callback=self.SetPacketDetectorThreshold, min=20, max=100) self.AddParam('pd_threshold', self.SetPacketDetectorThreshold) self.SetParam('pd_threshold', self.options.pd_threshold) self.cbox.Add(box, 0, wx.ALIGN_LEFT|wx.ALL, border=bspace) """ Enable Beamforming """ box = wx.BoxSizer(wx.HORIZONTAL) self.make_label("Enable Beamforming: ", box, 20) self.enable_beamforming = form.radiobox_field(self, box, label="", \ value = MimoControl.ENABLE_CHOICES[self.options.enable_beamforming], \ callback=self.SetEnableBeamforming, \ choices = MimoControl.ENABLE_CHOICES, major_dimension=0) #box.Hide(1, recursive=True), box.Remove(1) # Remove default form label self.enable_beamforming.f.SetLabel("") self.AddParam('enable_beamforming', self.SetEnableBeamforming) self.SetParam('enable_beamforming', self.options.enable_beamforming) self.cbox.Add(box, 0, wx.ALIGN_LEFT|wx.ALL, border=bspace) """ MAC Monitor Address """ vbox = wx.BoxSizer(wx.VERTICAL) self.monitor = MimoControl.BROADCAST_ADDR f = form.static_text_field(self, vbox, value="Monitoring MAC Address: ") vbox.AddSpacer((10,10) ) box = wx.BoxSizer(wx.HORIZONTAL) self.fmonitor = form.text_field(self, box, \ value="FF:"*(mimo.mac_monitor.MAC_ADDR_SIZE-1)+"FF", \ callback=self.SetMonitor, weight=1) self.AddParam('mac_monitor', self.SetMonitor) box.AddSpacer((10,10) ) self.enable_monitor = form.checkbox_field(self, box, "monitor?", \ value=False, callback=self.SetEnableMonitor, \ weight=0) box.AddSpacer((100,10) ) vbox.Add(box, 0, wx.EXPAND) self.cbox.Add(vbox, 1, wx.EXPAND|wx.ALIGN_LEFT|wx.ALL, border=bspace) self.Fit()