def get_ctrl(dev): ctrl = Data(name='CH1', send=True, io_cb=dev_io_cb) ctrl.add('freq', label='Frequency, MHz', wdgt='spin', value=Data.spn(1350, 1750, 0.01)) ctrl.add('rfgain', label='RF Gain, dB', wdgt='spin', value=Data.spn(0, 31.5, 0.5)) ctrl.add('bbgain', label='BB Gain, dB', wdgt='spin', value=Data.spn(0, 50, 0.1)) ctrl.add('lpf', label='Filter, MHz', wdgt='combo', state='readonly', value=['2', '4', '10', '20'], text='10') ctrl.add('commit', label='EFC commit enable', wdgt='combo', state='readonly', value=['ON', 'OFF'], text='ON') return ctrl
def get_calc_data(): data = RegsData(sz=16) data.add_page('calc0') data.add('label0', label='Fmix = Fvco / DIV') data.add_page('calc1') data.add('Fmix', wdgt='spin', value=Data.spn(356.25, 2850, 0.01), text='1440', msg='Fmix', src=Fmix_src_cb) data.add('Fvco1', wdgt='entry', state='readonly', msg='Fvco', src=Fvco_src_cb) data.add('DIV', wdgt='combo', state='readonly', text='2', value=['2', '4', '8'], msg='DIV', src=lambda d,v: d.list_src('R22', 3, 4, ['2', '4', '8'], v)) data.add_page('calc2') data.add('label1', label='Fvco = 2 x Fpfd x (INT + FRAC/MOD )') data.add_page('calc3') data.add('Fvco', wdgt='entry', state='readonly', msg='Fvco', src=Fvco_src_cb) data.add('Fpfd1', wdgt='entry', state='readonly', msg='Fpfd', src=Fpfd_src_cb) data.add('INT', wdgt='spin', value=Data.spn(21, 123), msg='INT', src=lambda d,v: d.bits_src('R02', 0, 10, v)) data.add('FRAC', wdgt='spin', value=Data.spn(0, 63535), msg='FRAC', src=lambda d,v: d.bits_src('R03', 0, 15, v)) data.add('MOD', wdgt='spin', value=Data.spn(1, 63535), msg='MOD', src=lambda d,v: d.bits_src('R04', 0, 15, v)) data.add_page('calc4') data.add('label0', label='Fpfd = REFin x REFSEL') data.add_page('calc5') data.add('Fpfd', wdgt='entry', state='readonly', msg='Fpfd', src=Fpfd_src_cb) data.add('REFin', wdgt='entry', state='readonly', msg='REFin', src=lambda d,v: d.dev_src('refin')) data.add('REFSEL', wdgt='combo', state='readonly', value=refsel_list, msg='REFSEL', src=lambda d,v: d.list_src('R21', 0, 2, refsel_list, v)) data.add_page('calc6') data.add('MUXOUT', wdgt='combo', state='readonly', value=muxout_list, label='MUXOUT', width=30, src=lambda d,v: d.list_src('R21', 4, 6, muxout_list, v)) data.add_page('calc7') data.add('VCOSEL', wdgt='combo', state='readonly', value=vcosel_list, label='VCOSEL', src=lambda d,v: d.list_src('R22', 0, 2, vcosel_list, v)) return data
def get_ctrl(dev): ctrl = Data(name='Settings', send=True, io_cb=dev_io_cb) ctrl.add('channel', label='Channel selection', wdgt='radio', value=OD([('Channel A', '1'), ('Channel B', '0')])) ctrl.add('tx', label='TX enable', wdgt='radio', value=OD([('ON', '1'), ('OFF', '0')])) ctrl.add('fan', label='FAN enable', wdgt='radio', value=OD([('ON', '1'), ('OFF', '0')])) ctrl.add('thrt1', label='Threshold1, C', wdgt='spin', value=Data.spn(0, 100, 1)) ctrl.add('thrt2', label='Threshold2, C', wdgt='spin', value=Data.spn(0, 100, 1)) ctrl.add_page('System') ctrl.add('commit', label='EFC commit enable', wdgt='combo', state='readonly', value=['ON', 'OFF'], text='ON') return ctrl
def get_ctrl(dev): ctrl = Data(name='ctrl', send=True, io_cb=dev_io_cb) ctrl.add('test', label='TEST output', wdgt='radio', value=OD([('Synth1(679-957MHz)', '0'), ('XTAL(26MHz)', '1'), ('Synth2(151MHz)', '2')])) ctrl.add('freq', label='Output frequency, MHz', wdgt='spin', value=Data.spn(805, 831, 0.01), cmd_cb=freq_cmd_cb) ctrl.add('inv', label='Inversion', wdgt='check', fmt_cb=inv_fmt_cb, trace_cb=inv_trace_cb) ctrl.add('gain', label='Gain, dB', wdgt='spin', value=Data.spn(-10.5, 15, 0.5)) ctrl.add('thrs', label='Threshold, dBm', wdgt='spin', value=Data.spn(-40, 20, 1)) return ctrl
def get_ctrl(dev): ctrl = Data(io_cb=dev_io_cb) for i in [1, 2]: ctrl.add_page('CH%d' % i, send=True) ctrl.add('freq%d' % i, label='Frequency, MHz', wdgt='spin', value=Data.spn(950, 2150, 0.01)) ctrl.add('rfgain%d' % i, label='RF Gain, dB', wdgt='spin', value=Data.spn(0, 31.5, 0.5)) ctrl.add('bbgain%d' % i, label='BB Gain, dB', wdgt='spin', value=Data.spn(0, 50, 0.1)) ctrl.add('bblpf%d' % i, label='BB Filter, MHz', wdgt='spin', value=Data.spn(1, 30)) ctrl.add_page('Other', send=True) ctrl.add('commit', label='EFC commit enable', wdgt='combo', state='readonly', value=['ON', 'OFF']) ctrl.add('dlpf', label='Digital LPF, MHz', wdgt='combo', state='readonly', value=['0.1', '0.2', '0.5', '1', '1.5', '2', '5', '10', '20']) return ctrl
def get_ctrl(dev): ctrl = Data(io_cb=cmd_serial_io_cb, send=True, name='ctrl') ctrl.add('TX', label='TX', wdgt='radio', value=['ON', 'OFF']) #ctrl.add('TXCHAN', label='TX chan', wdgt='spin', value=Data.spn(1, 501), trace_cb=chan_trace_cb) ctrl.add('TXFREQ', label='TX freq [MHz]', wdgt='spin', value=Data.spn(5925, 6475), fmt_cb=freq_gain_fmt_cb) ctrl.add('TXGAIN', label='TX gain [dB]', wdgt='spin', value=Data.spn(38, 74), fmt_cb=freq_gain_fmt_cb) #ctrl.add('RXCHAN', label='RX chan', wdgt='spin', value=Data.spn(1, 501), trace_cb=lambda k,d: chan_trace_cb(k,d,'R',3579)) ctrl.add('RXFREQ', label='RX freq [MHz]', wdgt='spin', value=Data.spn(3650, 4200), fmt_cb=freq_gain_fmt_cb) ctrl.add('RXGAIN', label='RX gain [dB]', wdgt='spin', value=Data.spn(80, 105), fmt_cb=freq_gain_fmt_cb) return ctrl
def get_ctrl(dev): ctrl = Data(name='CH1', send=True, io_cb=dev_io_cb) ctrl.add('freq', label='Frequency, MHz', wdgt='spin', value=Data.spn(1350, 1750, 0.01)) ctrl.add('rfgain', label='RF Gain, dB', wdgt='spin', value=Data.spn(0, 31.5, 0.5)) ctrl.add('bbgain', label='BB Gain, dB', wdgt='spin', value=Data.spn(0, 50, 0.1)) ctrl.add('lpf', label='Filter, MHz', wdgt='combo', state='readonly', value=['2', '4', '10', '20'], text='10') ctrl.add('commit', label='EFC commit enable', wdgt='combo', state='readonly', value=['ON', 'OFF'], text='ON') return ctrl
def get_ctrl(dev): ctrl = Data(name='ctrl', send=True, io_cb=dev_io_cb) ctrl.add('test', label='TEST output', wdgt='radio', value=OD([('Synth1(679-957MHz)', '0'), ('XTAL(26MHz)', '1'), ('Synth2(151MHz)', '2')])) ctrl.add('freq', label='Output frequency, MHz', wdgt='spin', value=Data.spn(805, 831, 0.01), cmd_cb=freq_cmd_cb) ctrl.add('inv', label='Inversion', wdgt='check', fmt_cb=inv_fmt_cb, trace_cb=inv_trace_cb) ctrl.add('gain', label='Gain, dB', wdgt='spin', value=Data.spn(-10.5, 15, 0.5)) ctrl.add('thrs', label='Threshold, dBm', wdgt='spin', value=Data.spn(-40, 20, 1)) return ctrl
def get_ctrl(dev): ctrl = Data(name='Settings', send=True, io_cb=dev_io_cb) ctrl.add('channel', label='Channel selection', wdgt='radio', value=OD([('Channel A', '1'), ('Channel B', '0')])) ctrl.add('tx', label='TX enable', wdgt='radio', value=OD([('ON', '1'), ('OFF', '0')])) ctrl.add('fan', label='FAN enable', wdgt='radio', value=OD([('ON', '1'), ('OFF', '0')])) ctrl.add('thrt1', label='Threshold1, C', wdgt='spin', value=Data.spn(0, 100, 1)) ctrl.add('thrt2', label='Threshold2, C', wdgt='spin', value=Data.spn(0, 100, 1)) ctrl.add_page('System') ctrl.add('commit', label='EFC commit enable', wdgt='combo', state='readonly', value=['ON', 'OFF'], text='ON') return ctrl
def get_ctrl(dev): data = Data(name='DAC', send=True, io_cb=util_io_cb) refin = dev[c_refin] data.add('ref', label='Vref, V', wdgt='entry', state='readonly', send=False, text=refin) refin = float(refin) data.add('dac0', label='DAC0 Uout, V', wdgt='spin', value=Data.spn(0, refin, .01), cmd_cb=adc_dac_cmd_cb, fmt_cb=lambda val,read=True: adc_dac_fmt_cb(val,read,refin=refin,n=0,a=0x50)) data.add('dac1', label='DAC1 Uout, V', wdgt='spin', value=Data.spn(0, refin, .01), cmd_cb=adc_dac_cmd_cb, fmt_cb=lambda val,read=True: adc_dac_fmt_cb(val,read,refin=refin,n=1,a=0x50)) data.add('dac2', label='DAC2 Uout, V', wdgt='spin', value=Data.spn(0, refin, .01), cmd_cb=adc_dac_cmd_cb, fmt_cb=lambda val,read=True: adc_dac_fmt_cb(val,read,refin=refin,n=2,a=0x50)) data.add('dac3', label='DAC3 Uout, V', wdgt='spin', value=Data.spn(0, refin, .01), cmd_cb=adc_dac_cmd_cb, fmt_cb=lambda val,read=True: adc_dac_fmt_cb(val,read,refin=refin,n=3,a=0x50)) return data
def get_ctrl(dev): ctrl = Data(io_cb=cmd_serial_io_cb, send=True, name='ctrl') ctrl.add('TX', label='TX', wdgt='radio', value=['ON', 'OFF']) #ctrl.add('TXCHAN', label='TX chan', wdgt='spin', value=Data.spn(1, 501), trace_cb=chan_trace_cb) ctrl.add('TXFREQ', label='TX freq [MHz]', wdgt='spin', value=Data.spn(5925, 6475), fmt_cb=freq_gain_fmt_cb) ctrl.add('TXGAIN', label='TX gain [dB]', wdgt='spin', value=Data.spn(38, 74), fmt_cb=freq_gain_fmt_cb) #ctrl.add('RXCHAN', label='RX chan', wdgt='spin', value=Data.spn(1, 501), trace_cb=lambda k,d: chan_trace_cb(k,d,'R',3579)) ctrl.add('RXFREQ', label='RX freq [MHz]', wdgt='spin', value=Data.spn(3650, 4200), fmt_cb=freq_gain_fmt_cb) ctrl.add('RXGAIN', label='RX gain [dB]', wdgt='spin', value=Data.spn(80, 105), fmt_cb=freq_gain_fmt_cb) return ctrl
def get_ctrl(dev): ctrl = Data(io_cb=dev_io_cb) for i in [1, 2]: ctrl.add_page('CH%d' % i, send=True) ctrl.add('freq%d'%i, label='Frequency, MHz', wdgt='spin', value=Data.spn(950, 2150, 0.01)) ctrl.add('rfgain%d'%i, label='RF Gain, dB', wdgt='spin', value=Data.spn(0, 31.5, 0.5)) ctrl.add('bbgain%d'%i, label='BB Gain, dB', wdgt='spin', value=Data.spn(0, 50, 0.1)) ctrl.add('bblpf%d'%i, label='BB Filter, MHz', wdgt='spin', value=Data.spn(1, 30)) ctrl.add_page('Other', send=True) ctrl.add('commit', label='EFC commit enable', wdgt='combo', state='readonly', value=['ON', 'OFF']) ctrl.add('dlpf', label='Digital LPF, MHz', wdgt='combo', state='readonly', value=['0.1','0.2','0.5','1','1.5','2','5','10','20']) return ctrl
def get_ctrl(dev): ctrl = Data(name='RF', send=True, io_cb=dev_io_cb) ctrl.add('freq', label='Frequency, MHz', wdgt='spin', value=Data.spn(356.25, 2850, 0.01)) ctrl.add('rfgain', label='RF Gain, dB', wdgt='spin', text='0.0', value=Data.spn(-13.5, 18, 0.5)) ctrl.add_page('BB') ctrl.add('bbgain', label='Analog Gain, dB', wdgt='spin', value=Data.spn(0, 64.5, 0.5)) get_lpf_ctrl(ctrl, 'bblpf') ctrl.add_page('DSP') ctrl.add('dsplpf', label='Filter, MHz', wdgt='combo', state='readonly', value=['10', '20'], text='10') ctrl.add_page('TEST') ctrl.add('test', label='Nothing', send=False) return ctrl
def get_ctrl(dev): ctrl = Data(name='LNAHPSU.c', send=True, io_cb=dev_io_cb) ctrl.add('outen', label='Output enable', wdgt='combo', state='readonly', value=OD([('ON', '1'), ('OFF', '0')]), text='OFF') ctrl.add('thri1', label='I threshold, mA', wdgt='spin', state='readonly', value=Data.spn(500, 1700, 100), text='1200') ctrl.add('thri2', label='I threshold, mA', wdgt='spin', state='readonly', value=Data.spn(1, 10), text='6') ctrl.add('thri3', label='I threshold, mA', wdgt='spin', state='readonly', value=Data.spn(10, 50), text='20') ctrl.add('thru1', label='U threshold1, V', wdgt='spin', state='readonly', value=Data.spn(7, 36), text='7') ctrl.add('thru2', label='U threshold2, V', wdgt='spin', state='readonly', value=Data.spn(7, 36), text='23') ctrl.add('thru3', label='U threshold3, V', wdgt='spin', state='readonly', value=Data.spn(7, 36), text='25') ctrl.add('thru4', label='U threshold4, V', wdgt='spin', state='readonly', value=Data.spn(7, 36), text='36') ctrl.add('thru4', label='U threshold4, V', wdgt='spin', state='readonly', value=Data.spn(7, 36), text='36') ctrl.add('umi0', label='I0, mA', wdgt='spin', value=Data.spn(1, 100, 0.1), text='13.5') ctrl.add('kmi', label='I coef', wdgt='spin', value=Data.spn(0.5, 1.5, 0.000001), text='1.0') return ctrl
def get_ctrl(dev): data = Data(name='Voltage', send=True, io_cb=util_io_cb) ref = dev[c_refin].split(',') ref0 = ref[0] if len(ref) == 1: data.add('ref', label='Vref, V', wdgt='entry', state='readonly', send=False, text=ref0) else: data.add('ref0', label='Vref1, V', wdgt='entry', state='readonly', send=False, text=ref0) ref0 = float(ref0) cmd_cb = lambda dev, cmd, val: dac_cmd_cb(dev, cmd, val, dac='0') data.add( 'dac1', label='DAC1 Uout, V', wdgt='spin', value=Data.spn(0, ref0, .01), cmd_cb=cmd_cb, fmt_cb=lambda val, read=True: dac_fmt_cb(val, read, ref=ref0, dac=0)) if len(ref) == 2: ref1 = ref[1] data.add('ref1', label='Vref2, V', wdgt='entry', state='readonly', send=False, text=ref1) ref1 = float(ref1) else: ref1 = ref0 cmd_cb = lambda dev, cmd, val: dac_cmd_cb(dev, cmd, val, dac='1') data.add( 'dac2', label='DAC2 Uout, V', wdgt='spin', value=Data.spn(0, ref1, .01), cmd_cb=cmd_cb, fmt_cb=lambda val, read=True: dac_fmt_cb(val, read, ref=ref1, dac=1)) return data
def get_ctrl(dev): spn_max, spn_step = 2.5, 0.05 if dev['type'] == 'AD5620_2_5V': spn_max = 5 data = Data(name='Voltage', send=True, io_cb=util_io_cb) fmt_cb = lambda val, read, spn_max=spn_max: float_fmt_cb(val, read, spn_max) cmd_cb = lambda dev, cmd, val: spi_efc_cmd_cb(dev, cmd, val, ncpha='0', cpol='0') data.add('out', label='OUT, V', wdgt='spin', value=Data.spn(0, spn_max, spn_step), fmt_cb=fmt_cb, cmd_cb=cmd_cb) return data
def get_ctrl(dev): ctrl_buttons = OD([('Read', read_cb), ('Write', write_cb), ('Stop', stop_cb)]) ctrl = Data(name='Setup', buttons=ctrl_buttons) ctrl.add('limaz', label='Azimuth max.', wdgt='spin', value=Data.spn(0, 16383), send=True, fmt_cb=lambda val, read: ae0_fmt_cb(val, read, e=0), cmd_cb=polus_cmd_cb) ctrl.add('limaz2', label='Azimuth min.', wdgt='spin', value=Data.spn(0, 16383), fmt_cb=lambda val, read: ae0_fmt_cb(val, read, e=1)) ctrl.add('limel', label='Elevation max.', wdgt='spin', value=Data.spn(0, 16383), send=True, fmt_cb=lambda val, read: ae0_fmt_cb(val, read, e=2), cmd_cb=polus_cmd_cb) ctrl.add('limel2', label='Elevation min.', wdgt='spin', value=Data.spn(0, 16383), fmt_cb=lambda val, read: ae0_fmt_cb(val, read, e=3)) ctrl.add('ae0', label='New azimuth', wdgt='spin', value=Data.spn(0, 16383), send=True, fmt_cb=lambda val, read: ae0_fmt_cb(val, read, e=4), cmd_cb=polus_cmd_cb) ctrl.add('ae02', label='New elevation', wdgt='spin', value=Data.spn(0, 16383), fmt_cb=lambda val, read: ae0_fmt_cb(val, read, e=5)) ctrl.add_page('Move') ctrl.add('az', label='Azimuth', wdgt='spin', value=Data.spn(0, 16383), send=True, cmd_cb=polus_cmd_cb) ctrl.add('el', label='Elevation', wdgt='spin', value=Data.spn(0, 16383), send=True, cmd_cb=polus_cmd_cb) return ctrl
def get_ctrl(dev): data = Data(name='Voltage', send=True, io_cb=util_io_cb) ref = dev[c_refin].split(',') ref0 = ref[0] if len(ref) == 1: data.add('ref', label='Vref, V', wdgt='entry', state='readonly', send=False, text=ref0) else: data.add('ref0', label='Vref1, V', wdgt='entry', state='readonly', send=False, text=ref0) ref0 = float(ref0) cmd_cb = lambda dev, cmd, val: dac_cmd_cb(dev, cmd, val, dac='0') data.add('dac1', label='DAC1 Uout, V', wdgt='spin', value=Data.spn(0, ref0, .01), cmd_cb=cmd_cb, fmt_cb=lambda val,read=True: dac_fmt_cb(val,read,ref=ref0,dac=0)) if len(ref) == 2: ref1 = ref[1] data.add('ref1', label='Vref2, V', wdgt='entry', state='readonly', send=False, text=ref1) ref1 = float(ref1) else: ref1 = ref0 cmd_cb = lambda dev, cmd, val: dac_cmd_cb(dev, cmd, val, dac='1') data.add('dac2', label='DAC2 Uout, V', wdgt='spin', value=Data.spn(0, ref1, .01), cmd_cb=cmd_cb, fmt_cb=lambda val,read=True: dac_fmt_cb(val,read,ref=ref1,dac=1)) return data
def get_ctrl(dev): ctrl_buttons = OD([('Read', read_cb), ('Write', write_cb), ('Stop', stop_cb)]) ctrl = Data(name='Setup', buttons=ctrl_buttons) ctrl.add('limaz', label='Azimuth max.', wdgt='spin', value=Data.spn(0, 16383), send=True, fmt_cb=lambda val, read: ae0_fmt_cb(val, read, e=0), cmd_cb=polus_cmd_cb) ctrl.add('limaz2', label='Azimuth min.', wdgt='spin', value=Data.spn(0, 16383), fmt_cb=lambda val, read: ae0_fmt_cb(val, read, e=1)) ctrl.add('limel', label='Elevation max.', wdgt='spin', value=Data.spn(0, 16383), send=True, fmt_cb=lambda val, read: ae0_fmt_cb(val, read, e=2), cmd_cb=polus_cmd_cb) ctrl.add('limel2', label='Elevation min.', wdgt='spin', value=Data.spn(0, 16383), fmt_cb=lambda val, read: ae0_fmt_cb(val, read, e=3)) ctrl.add('ae0', label='New azimuth', wdgt='spin', value=Data.spn(0, 16383), send=True, fmt_cb=lambda val, read: ae0_fmt_cb(val, read, e=4), cmd_cb=polus_cmd_cb) ctrl.add('ae02', label='New elevation', wdgt='spin', value=Data.spn(0, 16383), fmt_cb=lambda val, read: ae0_fmt_cb(val, read, e=5)) ctrl.add_page('Move') ctrl.add('az', label='Azimuth', wdgt='spin', value=Data.spn(0, 16383), send=True, cmd_cb=polus_cmd_cb) ctrl.add('el', label='Elevation', wdgt='spin', value=Data.spn(0, 16383), send=True, cmd_cb=polus_cmd_cb) return ctrl
def get_ctrl(dev): ctrl = Data('ctrl', send=True, io_cb=dev_serial_io_cb) ctrl.add('freq', label='Frequency, GHz', wdgt='spin', value=Data.spn(0.010, 18, 0.0001)) ctrl.add('chold', label='Sensor state', wdgt='radio', value=OD([('Run', '0'), ('Hold', '1')])) ctrl.add('avgtyp', label='Averaging type', wdgt='radio', value=OD([('Moving', '0'), ('Repeat', '1')])) ctrl.add('avgcnt', label='Average count', wdgt='spin', value=Data.spn(1, 200), text='10') return ctrl
def bank_data(self): data = Data(name='Bank %d' % len(self.data)) data.add('cutoff', label='cutoff', wdgt='spin', text='0.3', value=Data.spn(.1, .9, .1)) data.add('ntaps', label='# of taps', wdgt='spin', text=33, value=Data.spn(1, 127)) windows = [ 'boxcar', 'triang', 'blackman', 'hamming', 'hann', 'bartlett', 'flattop', 'parzen', 'bohman', 'blackmanharris', 'nuttall', 'barthann' ] data.add('window', label='window', wdgt='combo', state='readonly', text='hamming', value=windows) data.add('fmt', label='format', wdgt='combo', state='readonly', text='double', value=['double', 'int'], trace_cb=lambda *args: self.bank_update()) data.add('nbits', label='# of bits', wdgt='spin', value=Data.spn(4, 16), text='8', trace_cb=lambda *args: self.bank_update()) if len(self.data): data.cmds['fmt'].text = self.data.get_value('fmt') data.cmds['nbits'].text = self.data.get_value('nbits') data.cmds['ntaps'].text = self.data.get_value('ntaps') return data
def get_ctrl(dev): data = Data(name='atten', send=True, io_cb=util_io_cb) cmd_cb = lambda dev, cmd, val: spi_efc_cmd_cb( dev, cmd, val, cpha='0', cpol='0') data.add('atten', label='Attenuation, dB', wdgt='spin', text='0', value=Data.spn(-13.5, 18, 0.5), fmt_cb=fmt_cb, cmd_cb=cmd_cb) return data
def get_ctrl(dev): data = Data(name='DAC', send=True, io_cb=util_io_cb) refin = dev[c_refin] data.add('ref', label='Vref, V', wdgt='entry', state='readonly', send=False, text=refin) refin = float(refin) data.add('dac0', label='DAC0 Uout, V', wdgt='spin', value=Data.spn(0, refin, .01), cmd_cb=adc_dac_cmd_cb, fmt_cb=lambda val, read=True: adc_dac_fmt_cb( val, read, refin=refin, n=0, a=0x50)) data.add('dac1', label='DAC1 Uout, V', wdgt='spin', value=Data.spn(0, refin, .01), cmd_cb=adc_dac_cmd_cb, fmt_cb=lambda val, read=True: adc_dac_fmt_cb( val, read, refin=refin, n=1, a=0x50)) data.add('dac2', label='DAC2 Uout, V', wdgt='spin', value=Data.spn(0, refin, .01), cmd_cb=adc_dac_cmd_cb, fmt_cb=lambda val, read=True: adc_dac_fmt_cb( val, read, refin=refin, n=2, a=0x50)) data.add('dac3', label='DAC3 Uout, V', wdgt='spin', value=Data.spn(0, refin, .01), cmd_cb=adc_dac_cmd_cb, fmt_cb=lambda val, read=True: adc_dac_fmt_cb( val, read, refin=refin, n=3, a=0x50)) return data
def get_ctrl(dev): data = Data(name='atten', send=True, buttons=OD([('Write', write_cb)]), io_cb=util_io_cb) cmd_cb = lambda dev, cmd, val: spi_efc_cmd_cb( dev, cmd, val, ncpha='1', cpol='0') data.add('atten', label='Attenuation, dB', wdgt='spin', value=Data.spn(0, 31.5, .5), fmt_cb=fmt_cb, cmd_cb=cmd_cb) return data
def get_ctrl(dev): spn_max, spn_step = 2.5, 0.05 if dev['type'] == 'AD5620_2_5V': spn_max = 5 data = Data(name='Voltage', send=True, io_cb=util_io_cb) fmt_cb = lambda val, read, spn_max=spn_max: float_fmt_cb( val, read, spn_max) cmd_cb = lambda dev, cmd, val: spi_efc_cmd_cb( dev, cmd, val, ncpha='0', cpol='0') data.add('out', label='OUT, V', wdgt='spin', value=Data.spn(0, spn_max, spn_step), fmt_cb=fmt_cb, cmd_cb=cmd_cb) return data
def get_ctrl(dev): ctrl = Data(name='Settings', send=True, io_cb=dev_io_cb) ctrl.add('agc_en', label='AGC Enable', wdgt='radio', value=OD([('ON', '1'), ('OFF', '0')])) ctrl.add('agc_lvl', label='AGC Level', wdgt='spin', value=Data.spn(0, 2.5, 0.1)) ctrl.add('bpf', label='Band Pass Filter', wdgt='combo', state='readonly', value=OD([('11MHz', '0'), ('5.5MHz', '2'), ('250kHz', '3')])) ctrl.add('bas', label='BAS output', wdgt='radio', value=OD([('Ch1 (sig)', '0'), ('Ch3 (br)', '1')])) ctrl.add('test', label='TEST output', wdgt='combo', state='readonly', value=OD([('Synth1(835-1140,1MHz)', '3'), ('Synth2(150,7MHz)', '1'), ('Synth3(1125-1140,1MHz)', '0'), ('XTAL(26MHz)', '2')])) ctrl.add('freq', label='Channel1 freq', wdgt='spin', value=Data.spn(975, 1000, 0.01), cmd_cb=freq_cmd_cb) ctrl.add('inv', label='Channel1 inv', wdgt='check', fmt_cb=inv_fmt_cb, trace_cb=inv_trace_cb) ctrl.add('gain', label='Channel1 gain', wdgt='spin', value=Data.spn(19, 65, 0.5)) ctrl.add('freqbr', label='Channel3(br) freq', wdgt='spin', value=Data.spn(975, 1000.1, 0.01)) ctrl.add('gainbr', label='Channel3(br) gain', wdgt='spin', value=Data.spn(29.5, 77.5, 0.5)) ctrl.add('thrs1', label='Threshold1', wdgt='spin', value=Data.spn(0, 200, 1)) ctrl.add('thrs2', label='Threshold2', wdgt='spin', value=Data.spn(0, 200, 1)) ctrl.add('thrsb', label='Threshold (br)', wdgt='spin', value=Data.spn(0, 10, 0.1)) ctrl.add_page('System') ctrl.add('commit', label='EFC commit enable', wdgt='combo', state='readonly', value=['ON', 'OFF'], text='ON') return ctrl
def bank_data(self): data = Data(name='Bank %d' % len(self.data)) data.add('R', label='(R) Decimation factor', wdgt='spin', text=100, value=Data.spn(1,127), trace_cb=self.Fo_upd_trace_cb) data.add('M', label='(M) Differential delay', wdgt='spin', text=1, value=Data.spn(1,127)) data.add('N', label='(N) Number of stages', wdgt='spin', text=5, value=Data.spn(1,127), msg='number of cascaded filters') data.add('Fs', label='Fs, MHz', wdgt='spin', text=5, value=Data.spn(1,100,.1), msg='Sampling freq in MHz before decimation', trace_cb=self.Fo_upd_trace_cb) data.add('Fc', label='Fc, kHz', wdgt='spin', text=1, value=Data.spn(1,1000,1), msg='Pass band edge in kHz', trace_cb=self.Fo_upd_trace_cb) data.add('Fo', label='Fo', wdgt='entry', state='readonly', msg='Fo = R*Fc/Fs; Normalized Cutoff freq; 0<Fo<=0.5/M') data.add('L', label='(L) Filter order', wdgt='spin', text=32, value=Data.spn(2,128,2), msg='Filter order; must be even') data.add('fmt', label='format', wdgt='combo', state='readonly', text='double', value=['double', 'int'], trace_cb=lambda *args: self.bank_update()) data.add('nbits', label='# of bits', wdgt='spin', value=Data.spn(4, 16), text='8', trace_cb=lambda *args: self.bank_update()) self.Fo_upd_trace_cb('R', data) if len(self.data): data.cmds['fmt'].text = self.data.get_value('fmt') data.cmds['nbits'].text = self.data.get_value('nbits') data.cmds['ntaps'].text = self.data.get_value('ntaps') return data
def get_ctrl(dev): ctrl = Data(io_cb=cmd_serial_io_cb) ctrl.add_page('Modulator', send=True) ctrl.add('RF', label='RF Output', wdgt='radio', value=['ON', 'OFF']) ctrl.add('MF', label='Modulator Frequency, MHz', wdgt='spin', value=Data.spn(50, 180, .001), fmt_cb=mf_fmt_cb) ctrl.add('AMRV', label='Modulation type', wdgt='radio', value=OD([('QPSK 1/2','1/2'),('QPSK 3/4','3/4'),('QPSK 7/8','7/8'),('BPSK 1/2','BP12')]), fmt_cb=amrv_fmt_cb) ctrl.add('AMRV2', label='Data rate, kbps', wdgt='spin', value=Data.spn(2.4, 5000, .1), fmt_cb=lambda val, read: amrv_fmt_cb(val, read, 1), send=False) ctrl.add('MOP', label='Power Level, dBm', wdgt='spin', value=Data.spn(-30, -5), fmt_cb=mop_fmt_cb) ctrl.add('SE', label='Scrambler Enable', wdgt='radio', value=['ON', 'OFF']) ctrl.add('DENC', label='Dif Decoder Enable', wdgt='radio', value=['ON', 'OFF']) ctrl.add_page('Demodulator', send=True) ctrl.add('DF', label='Demodulator Frequency', wdgt='spin', value=Data.spn(50, 180, .001), fmt_cb=mf_fmt_cb) ctrl.add('ADRV', label='Modulation type', wdgt='radio', value=OD([('QPSK 1/2','1/2'),('QPSK 3/4','3/4'),('QPSK 7/8','7/8'),('BPSK 1/2','BP12')]), fmt_cb=lambda val, read: amrv_fmt_cb(val, read, 2)) ctrl.add('ADRV2', label='Data rate, kbps', wdgt='spin', value=Data.spn(2.4, 5000, .1), fmt_cb=lambda val, read: amrv_fmt_cb(val, read, 3), send=False) ctrl.add('SWR', label='Sweep Width, Hz', wdgt='spin', value=Data.spn(0, 70000), fmt_cb=swr_fmt_cb) ctrl.add('SR', label='Sweep Reacquision, s', wdgt='spin', value=Data.spn(0, 999)) ctrl.add('DE', label='Descrambler enable', wdgt='radio', value=['ON', 'OFF']) ctrl.add('DDEC', label='Differential decoder', wdgt='radio', value=['ON', 'OFF']) return ctrl
def get_ctrl(dev): ctrl = Data(send=True, io_cb=cmd_io_cb) ctrl.add_page('Modulator') ctrl.add('EID', label='Turbo', wdgt='entry', state='readonly', text='???', cmd_cb=turbo_cmd_cb, fmt_cb=turbo_fmt_cb, trace_cb=turbo_trace_cb) ctrl.add('TFT', label='Tx FEC Type', wdgt='radio', value=OD([('Viterbi','1'),('Turbo','6')]), trace_cb=ft_trace_cb) ctrl.add('TMD', label='Tx Modulation Type', wdgt='radio', value=OD([('BPSK',0),('QPSK',1),('16QAM',4)]), trace_cb=md_trace_cb) ctrl.add('TCR', label='Tx FEC Code Rate', wdgt='radio', value=OD([('1/2',2),('3/4',4),('7/8',5),('19/20',6),('21/44',1),('5/16',0)])) ctrl.add('TXO', label='Tx Carrier State', wdgt='radio', value=OD([('ON',1),('OFF',0)])) ctrl.add('TDR', label='Tx Data Rate, kbps', wdgt='spin', value=Data.spn(2.4, 9980, .001), fmt_cb=dr_fmt_cb) ctrl.add('TFQ', label='Tx Frequency, MHz', wdgt='spin', value=Data.spn(50, 90, .001), fmt_cb=fq_fmt_cb) ctrl.add('TPL', label='Tx Power Level', wdgt='spin', value=Data.spn(-40, 0, .1), fmt_cb=tpl_fmt_cb) ctrl.add('TSC', label='Tx Scrambler', wdgt='radio', value=OD([('ON',1),('OFF','0')])) ctrl.add_page('Demodulator') ctrl.add('EID', label='Turbo', wdgt='entry', state='readonly', text='???', cmd_cb=turbo_cmd_cb, fmt_cb=turbo_fmt_cb, trace_cb=lambda k,d: turbo_trace_cb(k,d,'R')) ctrl.add('RFT', label='Rx FEC Type', wdgt='radio', value=OD([('Viterbi',1),('Turbo',6)]), trace_cb=lambda k,d: ft_trace_cb(k,d,'R')) ctrl.add('RMD', label='Rx Demod type', wdgt='radio', value=OD([('BPSK',0),('QPSK',1),('16QAM',4)]), trace_cb=lambda k,d: md_trace_cb(k,d,'R')) ctrl.add('RCR', label='Rx FEC Code Rate', wdgt='radio', value=OD([('1/2',2),('3/4',4),('7/8',5),('19/20',6),('21/44',1),('5/16',0)])) ctrl.add('RDR', label='Rx Data Rate, kbps', wdgt='spin', value=Data.spn(2.4, 9980, .01), fmt_cb=dr_fmt_cb) ctrl.add('RFQ', label='Rx Frequency, MHz', wdgt='spin', value=Data.spn(50, 90, .001), fmt_cb=fq_fmt_cb) ctrl.add('RSW', label='Rx Sweep Width, kHz', wdgt='spin', value=Data.spn(1, 32), fmt_cb=rsw_fmt_cb) ctrl.add('RDS', label='Rx Scrambler', wdgt='radio', value=OD([('ON',1),('OFF',0)])) return ctrl
def get_ctrl(dev): ctrl = Data(io_cb=cmd_serial_io_cb) ctrl.add_page('Modulator', send=True) ctrl.add('RF', label='RF Output', wdgt='radio', value=['ON', 'OFF']) ctrl.add('MF', label='Modulator Frequency, MHz', wdgt='spin', value=Data.spn(50, 180, .001), fmt_cb=mf_fmt_cb) ctrl.add('AMRV', label='Modulation type', wdgt='radio', value=OD([('QPSK 1/2', '1/2'), ('QPSK 3/4', '3/4'), ('QPSK 7/8', '7/8'), ('BPSK 1/2', 'BP12')]), fmt_cb=amrv_fmt_cb) ctrl.add('AMRV2', label='Data rate, kbps', wdgt='spin', value=Data.spn(2.4, 5000, .1), fmt_cb=lambda val, read: amrv_fmt_cb(val, read, 1), send=False) ctrl.add('MOP', label='Power Level, dBm', wdgt='spin', value=Data.spn(-30, -5), fmt_cb=mop_fmt_cb) ctrl.add('SE', label='Scrambler Enable', wdgt='radio', value=['ON', 'OFF']) ctrl.add('DENC', label='Dif Decoder Enable', wdgt='radio', value=['ON', 'OFF']) ctrl.add_page('Demodulator', send=True) ctrl.add('DF', label='Demodulator Frequency', wdgt='spin', value=Data.spn(50, 180, .001), fmt_cb=mf_fmt_cb) ctrl.add('ADRV', label='Modulation type', wdgt='radio', value=OD([('QPSK 1/2', '1/2'), ('QPSK 3/4', '3/4'), ('QPSK 7/8', '7/8'), ('BPSK 1/2', 'BP12')]), fmt_cb=lambda val, read: amrv_fmt_cb(val, read, 2)) ctrl.add('ADRV2', label='Data rate, kbps', wdgt='spin', value=Data.spn(2.4, 5000, .1), fmt_cb=lambda val, read: amrv_fmt_cb(val, read, 3), send=False) ctrl.add('SWR', label='Sweep Width, Hz', wdgt='spin', value=Data.spn(0, 70000), fmt_cb=swr_fmt_cb) ctrl.add('SR', label='Sweep Reacquision, s', wdgt='spin', value=Data.spn(0, 999)) ctrl.add('DE', label='Descrambler enable', wdgt='radio', value=['ON', 'OFF']) ctrl.add('DDEC', label='Differential decoder', wdgt='radio', value=['ON', 'OFF']) return ctrl
def get_ctrl(dev): if 'devdata' not in dev: return if dev['devdata'].find('mod') == 0: ctrl_mod = Data(io_cb=cmd_io_cb, send=True) ctrl_mod.add_page('Modulator') if dev['devdata'][-1] == 't': ctrl_mod.add('CODE', label='FEC codec', wdgt='radio', value=['Turbo', 'Viterbi']) ctrl_mod.add('MOD', label='TX output', wdgt='radio', value=['Enable', 'Disable']) ctrl_mod.add('MT', label='Modulation', wdgt='radio', value=['BPSK', 'QPSK', '8PSK', '16QAM']) ctrl_mod.add('RATE', label='Encoder', wdgt='radio', value=['1/2', '3/4', 'C3/4', '7/8', '19/20']) ctrl_mod.add('DATA', label='Data rate,kbps', wdgt='spin', value=Data.spn(9.6, 10000, .1), fmt_cb=data_fmt_cb) ctrl_mod.add( 'CARRIER', label='Modulator Frequency,MHz', wdgt='spin', value=Data.spn(52, 176, .001), fmt_cb=lambda val, read=True: data_fmt_cb(val, read, coef=1000000)) ctrl_mod.add('SCRAM', label='Scrabler', wdgt='radio', value=['Enable', 'Disable']) return ctrl_mod if dev['devdata'].find('demod') == 0: ctrl_demod = Data(io_cb=cmd_io_cb, send=True) ctrl_demod.add_page('Demodulator') if dev['devdata'][-1] == 't': ctrl_demod.add('CODE', label='FEC codec', wdgt='radio', value=['Turbo', 'Viterbi']) ctrl_demod.add('ACQ', label='Acquisition', wdgt='radio', value=['FFT', 'SWEEP', 'FFT-SWEEP']) ctrl_demod.add('MT', label='Demodulation', wdgt='radio', value=['BPSK', 'QPSK', '8PSK', '16QAM']) ctrl_demod.add('RATE', label='Encoder', wdgt='radio', value=['1/2', '3/4', 'C3/4', '7/8', '19/20']) ctrl_demod.add('DATA', label='Data rate,kbps', wdgt='spin', value=Data.spn(9.6, 10000, .1), fmt_cb=data_fmt_cb) ctrl_demod.add( 'CARRIER', label='Modulator Frequency,MHz', wdgt='spin', value=Data.spn(52, 176, .001), fmt_cb=lambda val, read=True: data_fmt_cb(val, read, coef=1000000)) ctrl_demod.add('SWEEP', label='Sweep width,khz', wdgt='spin', value=Data.spn(1, 512, .001), fmt_cb=data_fmt_cb) ctrl_demod.add('DESC', label='Descrabler', wdgt='radio', value=['Enable', 'Disable']) ctrl_demod.add('DIFF', label='Differential decoder', wdgt='radio', value=['Enable', 'Disable']) ctrl_demod.add('DESMODE', label='Descrambler mode', wdgt='radio', value=['IESS', 'CCITT'], fmt_cb=desmode_fmt_cb) return ctrl_demod
def __init__(self, dev): data = get_mntr(dev) data.add('step', wdgt='spin', value=Data.spn(1, 100), msg='Step') Monitor.__init__(self, data=data, dev=dev)
def get_calc_data(): data = RegsData(sz=16) data.add_page('calc0') data.add('label0', label='Fmix = Fvco / DIV') data.add_page('calc1') data.add('Fmix', wdgt='spin', value=Data.spn(356.25, 2850, 0.01), text='1440', msg='Fmix', src=Fmix_src_cb) data.add('Fvco1', wdgt='entry', state='readonly', msg='Fvco', src=Fvco_src_cb) data.add('DIV', wdgt='combo', state='readonly', text='2', value=['2', '4', '8'], msg='DIV', src=lambda d, v: d.list_src('R22', 3, 4, ['2', '4', '8'], v)) data.add_page('calc2') data.add('label1', label='Fvco = 2 x Fpfd x (INT + FRAC/MOD )') data.add_page('calc3') data.add('Fvco', wdgt='entry', state='readonly', msg='Fvco', src=Fvco_src_cb) data.add('Fpfd1', wdgt='entry', state='readonly', msg='Fpfd', src=Fpfd_src_cb) data.add('INT', wdgt='spin', value=Data.spn(21, 123), msg='INT', src=lambda d, v: d.bits_src('R02', 0, 10, v)) data.add('FRAC', wdgt='spin', value=Data.spn(0, 63535), msg='FRAC', src=lambda d, v: d.bits_src('R03', 0, 15, v)) data.add('MOD', wdgt='spin', value=Data.spn(1, 63535), msg='MOD', src=lambda d, v: d.bits_src('R04', 0, 15, v)) data.add_page('calc4') data.add('label0', label='Fpfd = REFin x REFSEL') data.add_page('calc5') data.add('Fpfd', wdgt='entry', state='readonly', msg='Fpfd', src=Fpfd_src_cb) data.add('REFin', wdgt='entry', state='readonly', msg='REFin', src=lambda d, v: d.dev_src('refin')) data.add('REFSEL', wdgt='combo', state='readonly', value=refsel_list, msg='REFSEL', src=lambda d, v: d.list_src('R21', 0, 2, refsel_list, v)) data.add_page('calc6') data.add('MUXOUT', wdgt='combo', state='readonly', value=muxout_list, label='MUXOUT', width=30, src=lambda d, v: d.list_src('R21', 4, 6, muxout_list, v)) data.add_page('calc7') data.add('VCOSEL', wdgt='combo', state='readonly', value=vcosel_list, label='VCOSEL', src=lambda d, v: d.list_src('R22', 0, 2, vcosel_list, v)) return data
def get_ctrl(dev): ctrl = Data(name='ATTEN', send=True, io_cb=dev_io_cb) ctrl.add('atten1', label='Attenuation', wdgt='spin', value=Data.spn(0, 31), text='16', fmt_cb=atten_fmt_cb) return ctrl
def get_ctrl(dev): ctrl_buttons = OD([('Reset', reset_cb), ('Read', read_cb), ('Write', write_cb)]) data = Data(buttons=ctrl_buttons, io_cb=dev_io_cb) data.add_page('Mode', send=True) data.add('COMMON', label='Mode', wdgt='combo', state='readonly', value=['INDEPENDENT', 'PARALLEL', 'SERIES', 'DOUBLE'], fmt_cb=common_fmt_cb) data.add_page('Independent', send=True) data.add('SCH1V', label='Channel1, V', wdgt='spin', value=Data.spn(0,30,.01), fmt_cb=odp_fmt_cb) data.add('SCH1C', label='Channel1, A', wdgt='spin', value=Data.spn(0,3,.01), fmt_cb=odp_fmt_cb) data.add('SW1', label='Output1 enable', wdgt='combo', state='readonly', value=OD([('ON','0'), ('OFF','1')])) data.add('SCH2V', label='Channel2, V', wdgt='spin', value=Data.spn(0,30,.01), fmt_cb=odp_fmt_cb) data.add('SCH2C', label='Channel2, A', wdgt='spin', value=Data.spn(0,3,.01), fmt_cb=odp_fmt_cb) data.add('SW2', label='Output2 enable', wdgt='combo', state='readonly', value=OD([('ON','0'), ('OFF','1')])) data.add_page('Parallel', send=True) data.add('SPARAV', label='Output, V', wdgt='spin', value=Data.spn(0,30,.01), fmt_cb=odp_fmt_cb) data.add('SPARAC', label='Output, A', wdgt='spin', value=Data.spn(0,6,.01), fmt_cb=odp_fmt_cb) data.add('SW1', label='Output enable', wdgt='combo', state='readonly', value=OD([('ON','0'), ('OFF','1')])) data.add_page('Series', send=True) data.add('SSERIV', label='Output, V', wdgt='spin', value=Data.spn(0,60,.01), fmt_cb=odp_fmt_cb) data.add('SSERIC', label='Output, A', wdgt='spin', value=Data.spn(0,3,.01), fmt_cb=odp_fmt_cb) data.add('SW1', label='Output enable', wdgt='combo', state='readonly', value=OD([('ON','0'), ('OFF','1')])) data.add_page('PlusMinus', send=True) data.add('SDUAL1V', label='Output1, V', wdgt='spin', value=Data.spn(0,30,.01), fmt_cb=odp_fmt_cb) data.add('SDUAL1C', label='Output1, A', wdgt='spin', value=Data.spn(0,3,.01), fmt_cb=odp_fmt_cb) data.add('SDUAL2V', label='Output2, V', wdgt='spin', value=Data.spn(0,30,.01), fmt_cb=odp_fmt_cb) data.add('SDUAL2C', label='Output2, A', wdgt='spin', value=Data.spn(0,3,.01), fmt_cb=odp_fmt_cb) data.add('SW1', label='Output enable', wdgt='combo', state='readonly', value=OD([('ON','0'), ('OFF','1')])) return data
def get_ctrl(dev): data = Data(name='atten', send=True, io_cb=util_io_cb) cmd_cb = lambda dev, cmd, val: spi_efc_cmd_cb(dev, cmd, val, cpha='0', cpol='0') data.add('atten', label='Attenuation, dB', wdgt='spin', text='0', value=Data.spn(-13.5, 18, 0.5), fmt_cb=fmt_cb, cmd_cb=cmd_cb) return data
def get_ctrl(dev): data = Data(name='atten', send=True, buttons=OD([('Write', write_cb)]), io_cb=util_io_cb) cmd_cb = lambda dev, cmd, val: spi_efc_cmd_cb(dev, cmd, val, ncpha='1', cpol='0') data.add('atten', label='Attenuation, dB', wdgt='spin', value=Data.spn(0, 31.5, .5), fmt_cb=fmt_cb, cmd_cb=cmd_cb) return data
def __init__(self, dev): data = get_mntr(dev) data.add('step', wdgt='spin', value=Data.spn(1,100), msg='Step') Monitor.__init__(self, data=data, dev=dev)
def get_ctrl(dev): ctrl_buttons = OD([('Reset', reset_cb), ('Read', read_cb), ('Write', write_cb)]) data = Data(buttons=ctrl_buttons, io_cb=dev_io_cb) data.add_page('Mode', send=True) data.add('COMMON', label='Mode', wdgt='combo', state='readonly', value=['INDEPENDENT', 'PARALLEL', 'SERIES', 'DOUBLE'], fmt_cb=common_fmt_cb) data.add_page('Independent', send=True) data.add('SCH1V', label='Channel1, V', wdgt='spin', value=Data.spn(0, 30, .01), fmt_cb=odp_fmt_cb) data.add('SCH1C', label='Channel1, A', wdgt='spin', value=Data.spn(0, 3, .01), fmt_cb=odp_fmt_cb) data.add('SW1', label='Output1 enable', wdgt='combo', state='readonly', value=OD([('ON', '0'), ('OFF', '1')])) data.add('SCH2V', label='Channel2, V', wdgt='spin', value=Data.spn(0, 30, .01), fmt_cb=odp_fmt_cb) data.add('SCH2C', label='Channel2, A', wdgt='spin', value=Data.spn(0, 3, .01), fmt_cb=odp_fmt_cb) data.add('SW2', label='Output2 enable', wdgt='combo', state='readonly', value=OD([('ON', '0'), ('OFF', '1')])) data.add_page('Parallel', send=True) data.add('SPARAV', label='Output, V', wdgt='spin', value=Data.spn(0, 30, .01), fmt_cb=odp_fmt_cb) data.add('SPARAC', label='Output, A', wdgt='spin', value=Data.spn(0, 6, .01), fmt_cb=odp_fmt_cb) data.add('SW1', label='Output enable', wdgt='combo', state='readonly', value=OD([('ON', '0'), ('OFF', '1')])) data.add_page('Series', send=True) data.add('SSERIV', label='Output, V', wdgt='spin', value=Data.spn(0, 60, .01), fmt_cb=odp_fmt_cb) data.add('SSERIC', label='Output, A', wdgt='spin', value=Data.spn(0, 3, .01), fmt_cb=odp_fmt_cb) data.add('SW1', label='Output enable', wdgt='combo', state='readonly', value=OD([('ON', '0'), ('OFF', '1')])) data.add_page('PlusMinus', send=True) data.add('SDUAL1V', label='Output1, V', wdgt='spin', value=Data.spn(0, 30, .01), fmt_cb=odp_fmt_cb) data.add('SDUAL1C', label='Output1, A', wdgt='spin', value=Data.spn(0, 3, .01), fmt_cb=odp_fmt_cb) data.add('SDUAL2V', label='Output2, V', wdgt='spin', value=Data.spn(0, 30, .01), fmt_cb=odp_fmt_cb) data.add('SDUAL2C', label='Output2, A', wdgt='spin', value=Data.spn(0, 3, .01), fmt_cb=odp_fmt_cb) data.add('SW1', label='Output enable', wdgt='combo', state='readonly', value=OD([('ON', '0'), ('OFF', '1')])) return data
def get_ctrl(dev): data = Data('ctrl', send=True, io_cb=dev_io_cb) data.add('freq', label='Frequency, MHz', wdgt='spin', value=Data.spn(0.1, 12400, 0.1), text='1000') data.add('offset', label='TG - MA, MHz', wdgt='spin', value=Data.spn(0.1, 12400, 0.1), text='140') return data
def get_ctrl(dev): ctrl = Data(send=True, io_cb=cmd_io_cb) ctrl.add_page('Modulator') ctrl.add('EID', label='Turbo', wdgt='entry', state='readonly', text='???', cmd_cb=turbo_cmd_cb, fmt_cb=turbo_fmt_cb, trace_cb=turbo_trace_cb) ctrl.add('TFT', label='Tx FEC Type', wdgt='radio', value=OD([('Viterbi', '1'), ('Turbo', '6')]), trace_cb=ft_trace_cb) ctrl.add('TMD', label='Tx Modulation Type', wdgt='radio', value=OD([('BPSK', 0), ('QPSK', 1), ('16QAM', 4)]), trace_cb=md_trace_cb) ctrl.add('TCR', label='Tx FEC Code Rate', wdgt='radio', value=OD([('1/2', 2), ('3/4', 4), ('7/8', 5), ('19/20', 6), ('21/44', 1), ('5/16', 0)])) ctrl.add('TXO', label='Tx Carrier State', wdgt='radio', value=OD([('ON', 1), ('OFF', 0)])) ctrl.add('TDR', label='Tx Data Rate, kbps', wdgt='spin', value=Data.spn(2.4, 9980, .001), fmt_cb=dr_fmt_cb) ctrl.add('TFQ', label='Tx Frequency, MHz', wdgt='spin', value=Data.spn(50, 90, .001), fmt_cb=fq_fmt_cb) ctrl.add('TPL', label='Tx Power Level', wdgt='spin', value=Data.spn(-40, 0, .1), fmt_cb=tpl_fmt_cb) ctrl.add('TSC', label='Tx Scrambler', wdgt='radio', value=OD([('ON', 1), ('OFF', '0')])) ctrl.add_page('Demodulator') ctrl.add('EID', label='Turbo', wdgt='entry', state='readonly', text='???', cmd_cb=turbo_cmd_cb, fmt_cb=turbo_fmt_cb, trace_cb=lambda k, d: turbo_trace_cb(k, d, 'R')) ctrl.add('RFT', label='Rx FEC Type', wdgt='radio', value=OD([('Viterbi', 1), ('Turbo', 6)]), trace_cb=lambda k, d: ft_trace_cb(k, d, 'R')) ctrl.add('RMD', label='Rx Demod type', wdgt='radio', value=OD([('BPSK', 0), ('QPSK', 1), ('16QAM', 4)]), trace_cb=lambda k, d: md_trace_cb(k, d, 'R')) ctrl.add('RCR', label='Rx FEC Code Rate', wdgt='radio', value=OD([('1/2', 2), ('3/4', 4), ('7/8', 5), ('19/20', 6), ('21/44', 1), ('5/16', 0)])) ctrl.add('RDR', label='Rx Data Rate, kbps', wdgt='spin', value=Data.spn(2.4, 9980, .01), fmt_cb=dr_fmt_cb) ctrl.add('RFQ', label='Rx Frequency, MHz', wdgt='spin', value=Data.spn(50, 90, .001), fmt_cb=fq_fmt_cb) ctrl.add('RSW', label='Rx Sweep Width, kHz', wdgt='spin', value=Data.spn(1, 32), fmt_cb=rsw_fmt_cb) ctrl.add('RDS', label='Rx Scrambler', wdgt='radio', value=OD([('ON', 1), ('OFF', 0)])) return ctrl
def get_ctrl(dev): data = Data('ctrl', send=True, io_cb=dev_io_cb) data.add('ctrl1', label='Test ctrl value1', wdgt='spin', value=Data.spn(0, 10), text='0') return data