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_buttons = OD([('Reset', reset_cb), ('Write', write_cb)]) data = Data(buttons=ctrl_buttons, io_cb=dev_io_cb) data.add_page('Generator', send=True) data.add('freq', label='Frequency, MHz', wdgt='spin', value={'min':0.1, 'max':12400, 'step':0.1}, text='1451') data.add('amp', label='Amplitude, dBm', wdgt='spin', value={'min':-40, 'max':-6, 'step':0.5}, text='-40') return data
def get_mntr(self): data = Data(name='Monitor') data.add('az', label='Azimuth', wdgt='entry', state='readonly', send=True, cmd_cb=polus_cmd_cb) data.add('el', label='Elevation', wdgt='entry', state='readonly', send=True, cmd_cb=polus_cmd_cb) def add_alarm(k, bit, msg, cmd_cb=None): data.add(k, wdgt='alarm', send=True if cmd_cb else False, cmd_cb=cmd_cb, fmt_cb=lambda val, read: alarm_fmt_cb(val, read, bit), msg=msg, trace_cb=alarm_trace_cb) add_alarm('az+', 0, 'az+', cmd_cb=lambda *args: 'POLUS.status') add_alarm('az-', 1, 'az-') #add_alarm('limaz+', 4, 'limaz+') #add_alarm('limaz-', 5, 'limaz-') add_alarm('el+', 2, 'el+') add_alarm('el-', 3, 'el-') #add_alarm('limel+', 6, 'limel+') #add_alarm('limel-', 7, 'limel-') 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(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_mntr(dev): data = Data(name='mntr', io_cb=lambda d, c: util_io_cb(d, c, prefix='ALT')) data.add('pio', label='IN', wdgt='entry', state='readonly', cmd_cb=alt_cmd_cb, send=True) 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_mntr(dev): data = Data('mntra', send=True, io_cb=dev_serial_io_cb) for ch in range(1, 9): data.add('a%d'%ch,cmd='fetch',wdgt='alarm',msg='CH%d'%ch,fmt_cb=lambda val,read,c=ch:fmt_cb1(val,read,c),send=(ch==1),trace_cb=alarm_trace_cb) data.add_page('mntre', send=True) for ch in range(1, 9): v = data.add('CH%d'%ch, wdgt='entry', label='CH%d'%ch, msg='CH%d'%ch) data.cmds.columns = 4 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_mntr(dev): mntr = Data(io_cb=dev_io_cb) mntr.add_page('mntr', send=True) mntr.add('synth', wdgt='alarm', trace_cb=alarm_trace_cb, fmt_cb=synth_fmt_cb, msg='Synthesizer status') mntr.add('uout', wdgt='entry', state='readonly', msg='Uout, V') return mntr
def get_mntr(dev): mntr = Data('mntr', send=True, io_cb=dev_serial_io_cb) mntr.add('pwr', wdgt='entry', state='readonly', msg='current power reading (in dBm)') mntr.add('temp', wdgt='entry', state='readonly', msg='current temperature reading') return mntr
def __init__(self, dev, title='File IO'): data = Data() data.dev = dev data.buttons = OD() #data.buttons['TX stop'] = self.dma_stop_cb self.add_tx_cmds(data, txcrc32=False) data.add('txstop', wdgt='button', text='TX stop', click_cb=self.dma_stop_cb) self.add_rx_cmds(data) Control.__init__(self, data, dev, title=title) self.fileext = 'pcm' self.center()
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): 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='ctrl', io_cb=lambda d, c: util_io_cb(d, c, prefix='ALT')) data.add('pio', label='PIO', wdgt='spin', value={ 'min': 0, 'max': 0xFF, 'step': 1 }, cmd_cb=alt_cmd_cb, send=True) 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): ctrl = Data(name='Settings', send=True, io_cb=dev_io_cb) ctrl.add('chup', label='Channel UP', wdgt='combo', state='readonly', value=OD([('Channel A', '1'), ('Channel B', '0')])) ctrl.add('chdn', label='Channel DOWN', wdgt='combo', state='readonly', value=OD([('Channel A', '1'), ('Channel B', '0')])) ctrl.add('test', label='Test signal', wdgt='combo', state='readonly', value=OD([('UC-HF', '0'), ('UC-IF', '1'), ('DC-HF', '2'), ('DC-IF', '3')])) 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='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_page('System') ctrl.add('commit', label='EFC commit enable', wdgt='combo', state='readonly', value=['ON', 'OFF'], text='ON') return ctrl
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_mntr(dev): mntr = Data(io_cb=CDM570.cmd_io_cb, send=True) mntr.add_page('mntr0') aa = lambda k, send, msg, fltn: mntr.add(k, wdgt='alarm', send=send, msg=msg, cmd='FLT', fmt_cb=lambda val,read=True: flt_fmt_cb(val, read, fltn=fltn), trace_cb=alarm_trace_cb) aa('FLT0', True, 'Unit fault', 0) aa('FLT1', False, 'Slot 1', 1) aa('FLT2', False, 'Slot 2', 2) aa('FLT3', False, 'Slot 3', 3) aa('FLT4', False, 'Slot 4', 4) mntr.add('TMP', wdgt='entry', msg='Temperature') if dev['devdata'] == 'mod': return mntr if dev['devdata'] == 'demod': mntr1 = CDM570.get_mntr(dev) mntr.add_page(name=mntr1[1].name, cmds=mntr1[1]) return mntr
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_lpf_ctrl(data=None, cmd=None): if not data: data = Data(name='LPF', io_cb=util_io_cb) if not cmd: cmd = 'lpf' data.add(cmd, label='LPF, MHz', wdgt='spin', text='15', value={'min':0, 'max':31, 'step':1}, fmt_cb=lpf_fmt_cb, cmd_cb=lpf_cmd_cb, send=True) data.add('g3', label='Preamplifier gain', wdgt='radio', text=gain_list[2][0], value=gain_list[2], fmt_cb=lambda v,r: gain_fmt_cb(v,r,2), send=False) data.add('g2', label='Postamplifier gain', wdgt='radio', text=gain_list[1][0], value=gain_list[1], fmt_cb=lambda v,r: gain_fmt_cb(v,r,1), send=False) data.add('g1', label='VGA max gain', wdgt='radio', text=gain_list[0][0], value=gain_list[0], fmt_cb=lambda v,r: gain_fmt_cb(v,r,0), send=False)
def get_mntr(dev): mntr = Data(name='status', send=True, io_cb=dev_io_cb) mntr.add('status', wdgt='alarm', trace_cb=alarm_trace_cb, fmt_cb=status_fmt_cb, msg='Power supply') add_status = lambda n, msg: mntr.add('status%d' % n, wdgt='alarm', send=False, trace_cb=alarm_trace_cb, fmt_cb=lambda val, read: status_fmt_cb(val, read, n), msg=msg) add_status(1, 'Synth1 lock detect') add_status(2, 'Synth2 (aux) lock detect') add_status(3, 'Output level < threshold') mntr.add_page('mntr') mntr.add('5_5v', wdgt='entry', label='5.5V', state='readonly', msg='5.5V') mntr.add('txl', wdgt='entry', label='TXL', state='readonly', msg='TX signal level') return mntr
def get_mntr(dev): data = Data('mntra', send=True, io_cb=dev_serial_io_cb) for ch in range(1, 9): data.add('a%d' % ch, cmd='fetch', wdgt='alarm', msg='CH%d' % ch, fmt_cb=lambda val, read, c=ch: fmt_cb1(val, read, c), send=(ch == 1), trace_cb=alarm_trace_cb) data.add_page('mntre', send=True) for ch in range(1, 9): v = data.add('CH%d' % ch, wdgt='entry', label='CH%d' % ch, msg='CH%d' % ch) data.cmds.columns = 4 return data
def get_mntr(dev): mntr = Data(name='status', send=True, io_cb=dev_io_cb) mntr.add('status', wdgt='alarm', trace_cb=alarm_trace_cb, fmt_cb=status_fmt_cb, msg='Power supply') add_status = lambda n, msg: mntr.add('status%d' % n, wdgt='alarm', send=False, trace_cb=alarm_trace_cb, fmt_cb=lambda val, read: status_fmt_cb(val,read,n), msg=msg) add_status(1, 'Ch1 (sig)') add_status(2, 'Ch2 (aux)') add_status(3, 'Ch3 (br)') add_status(4, 'Uch1 (sig) < LVL') add_status(5, 'Uch3 (br) < LVL') mntr.add_page('Vcc') mntr.add('3v', wdgt='entry', label='3V', state='readonly', msg='3V') mntr.add('11v', wdgt='entry', label='11V', state='readonly', msg='11V') mntr.add('2_5v1', wdgt='entry', label='UC 2.5V', state='readonly', msg='UC 2.5V') mntr.add('2_5v2', wdgt='entry', label='DC 2.5V', state='readonly', msg='DC 2.5V') return mntr
def get_mntr(dev): mntr = Data(name='status', send=True, io_cb=dev_io_cb) mntr.add('status', wdgt='alarm', trace_cb=alarm_trace_cb, fmt_cb=status_fmt_cb, msg='Power supply') add_status = lambda n, msg: mntr.add('status%d' % n, wdgt='alarm', send=False, trace_cb=alarm_trace_cb, fmt_cb=lambda val, read: status_fmt_cb(val,read,n), msg=msg) add_status(1, 'Ch1 (sig)') add_status(2, 'Ch2') add_status(3, 'Ch3 (br)') add_status(4, '(RXL < Thrs1) || (RXL > Thrs2)') add_status(5, 'BRL < ThrsB') mntr.add_page('mntr') mntr.add('5_5v', wdgt='entry', label='5.5V', state='readonly', msg='5.5V') mntr.add('rxl', wdgt='entry', label='RXL', state='readonly', msg='RX signal level') mntr.add('brl', wdgt='entry', label='BRL', state='readonly', msg='Beacon signal level') mntr.cmds.columns = 3 return mntr
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 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_mntr(dev): mntr = Data(io_cb=dev_serial_io_cb) mntr.add_page('mntr0', send=True) mntr.add('alarm', wdgt='alarm', msg='Sum Alarm', trace_cb=alarm_trace_cb) mntr.add('temp', wdgt='entry', state='readonly', msg='Temperature') mntr.add('pwr', wdgt='entry', state='readonly', msg='Power level') return mntr
def get_mntr(dev): mntr=Data(io_cb=dev_serial_io_cb, send=True) mntr.add_page('mntr0') aa = lambda k, send, msg: mntr.add(k, wdgt='alarm', send=send, msg=msg, cmd='ALARM', fmt_cb=lambda val,read=True,almn=k: alarm_fmt_cb(val,read,almn), trace_cb=alarm_trace_cb) aa('ALARM0', True, 'General') aa('ALARM1', False, 'TEMP') aa('ALARM2', False, 'PLL') aa('ALARM3', False, 'TX/RX') aa('ALARM4', False, 'PWR') mntr.add('TEMP', wdgt='entry', state='readonly', msg='Temperature', cmd_cb=adc_cmd_cb) mntr.add('TXIN', wdgt='entry', state='readonly', pack_forget=True, msg='TX In', cmd_cb=adc_cmd_cb) mntr.add_page('mntr1') ae = lambda cmd, label: mntr.add(cmd, wdgt='entry', state='readonly', label=label, cmd_cb=adc_cmd_cb, send=True) ae('TXIN', 'TX In') ae('TXOUT', 'TX Out') ae('RXOUT', 'RX Out') ae('OSLPLL', 'OSLPLL') ae('TXPLL', 'TXPLL') ae('RXPLL', 'RXPLL') for i in range(1, 7): ae('PA%d' % i, 'PA%d, V' % i) ae('P12V', '+12V') ae('P5V', '+5V') ae('LNBV', 'LNBV') ae('N5V', '-5V') mntr.cmds.columns=4 return mntr
def get_mntr(dev): mntr = Data(name='status', send=True, io_cb=dev_io_cb) mntr.add('status', wdgt='alarm', trace_cb=alarm_trace_cb, fmt_cb=status_fmt_cb, msg='Power supply') add_status = lambda n, msg: mntr.add('status%d' % n, wdgt='alarm', send=False, trace_cb=alarm_trace_cb, fmt_cb=lambda val, read: status_fmt_cb(val,read,n), msg=msg) add_status(1, 'Synth1 lock detect') add_status(2, 'Synth2 (aux) lock detect') add_status(3, 'Output level < threshold') mntr.add_page('mntr') mntr.add('5_5v', wdgt='entry', label='5.5V', state='readonly', msg='5.5V') mntr.add('txl', wdgt='entry', label='TXL', state='readonly', msg='TX signal level') return mntr
def get_mntr(dev): mntr = Data(name='mntr', send=True, io_cb=dev_io_cb) #mntr.add('temp', wdgt='entry', msg='Temperature') #am('dma0', 'DMA0') #am('dma1', 'DMA1') #am('dma2', 'DMA2') #am('dma3', 'DMA3') avti=lambda k,msg,i,send=False: mntr.add(k,wdgt='alarm',cmd='vtune',send=send,msg=msg,fmt_cb=lambda val,read: vtune_fmt_cb(val,read,i),trace_cb=alarm_trace_cb) avti('txvtuneh', 'TX VTUNE_H', 0, True) avti('txvtunel', 'TX VTUNE_L', 1) avti('rxvtuneh', 'TX VTUNE_H', 2) avti('rxvtunel', 'TX VTUNE_L', 3) return mntr
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 fircalc_cb1(self): cmd = 'read' if self.read else 'write' bdata = self.bank_data() tdata = Data() tdata.add_page('taps', cmds=OD((k, bdata.cmds[k]) for k in ['ntaps', 'nbits'])) tdata.add('nbank', label='bank #', wdgt='combo', state='readonly', text='0', value=['0', '1']) dlg = Control(data=tdata, parent=self.root, title='%s taps' % cmd) dlg.add_buttons_ok_cancel() dlg.center() dlg.do_modal() if not hasattr(dlg, 'kw'): return ntaps = dlg.kw['ntaps'] self.nbits = int(dlg.kw['nbits']) nbank = int(dlg.kw['nbank']) n = ceil(int(ntaps) / 2) offset = n if nbank else 0 dev = self.data.dev if self.read: self.taps = [] for i in range(0, n): self.qo.put('tap ALT.firii %s %s %d' % (dev['ip_addr'], dev['altname'], i + offset)) else: taps = self.get_taps_fmt(fmt=self.nbits) taps[n:] = [] for i in range(0, n): self.qo.put( 'tap ALT.firii %s %s %d %s' % (dev['ip_addr'], dev['altname'], i + offset, taps[i])) self.pb['maximum'] = self.qo.qsize() return True
def get_ctrl(dev): ctrl_buttons = OD([('Reset', reset_cb), ('Write', write_cb)]) data = Data(buttons=ctrl_buttons, io_cb=dev_io_cb) data.add_page('Generator', send=True) data.add('freq', label='Frequency, MHz', wdgt='spin', value={ 'min': 0.1, 'max': 12400, 'step': 0.1 }, text='1451') data.add('amp', label='Amplitude, dBm', wdgt='spin', value={ 'min': -40, 'max': -6, 'step': 0.5 }, text='-40') return data
def get_mntr(dev): mntr = Data(io_cb=dev_io_cb) mntr.add_page('mntr', send=True) mntr.add('synth1', wdgt='alarm', trace_cb=alarm_trace_cb, fmt_cb=synth_fmt_cb, msg='Synthesizer 1') mntr.add('synth2', wdgt='alarm', trace_cb=alarm_trace_cb, fmt_cb=synth_fmt_cb, msg='Synthesizer 2') mntr.add('uout1', wdgt='entry', state='readonly', msg='Uout1, V') mntr.add('uout2', wdgt='entry', state='readonly', msg='Uout2, V') mntr.add('uout3', wdgt='entry', state='readonly', msg='abs(Uout1-Uout2), V') return mntr
def get_ctrl(dev): ctrl = Data(io_cb=dev_serial_io_cb, send=True, name='ctrl') ctrl.add('tx', label='Mute/unmute tx', wdgt='combo', state='readonly', value=OD([('ON', '1'), ('OFF', '0')])) ctrl.add('gain', label='Gain', wdgt='entry') ctrl.add('atten', label='Attenuation', wdgt='entry') 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 add_memory_cb(self): mem = Data(name='mem') mem.add('name', label='Name', wdgt='entry', text='new') mem.add('addr', label='Start address', wdgt='entry', text='00000000') mem.add('sz', label='Size in bytes', wdgt='entry', text='4') dlg = Control(data=mem, parent=self.root, title='Add memory', pady=5) dlg.add_buttons_ok_cancel() dlg.do_modal() if not hasattr(dlg, 'kw'): return if len(dlg.kw.keys()) == 0: return self.add_memory(dlg.kw['name'], dlg.kw['addr'], dlg.kw['sz'])
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 get_ctrl(dev): gnsw_list = ['6dB', '12dB'] gnsw_fmt_cb = lambda val, read=True: gpio_list_fmt_cb(val, read, gnsw_list, 0) gnsw_cmd_cb = lambda dev, cmd, val: gpio_cmd_cb(dev, cmd, val, 0) ofds_list = ['Enable', 'Disable'] ofds_fmt_cb = lambda val, read=True: gpio_list_fmt_cb(val, read, ofds_list, 1) ofds_cmd_cb = lambda dev, cmd, val: gpio_cmd_cb(dev, cmd, val, 1) lpf_cmd_cb = lambda dev, cmd, val: spi_efc_cmd_cb(dev, cmd, val, ncpha='1', cpol='1') data = Data(name='LPF', send=True, io_cb=util_io_cb) data.add('gnsw', label='Gain switch', wdgt='radio', value=gnsw_list, fmt_cb=gnsw_fmt_cb, cmd_cb=gnsw_cmd_cb) data.add('ofds', label='Offset correction loop', wdgt='radio', value=ofds_list, fmt_cb=ofds_fmt_cb, cmd_cb=ofds_cmd_cb) data.add('lpf', label='LPF, MHz', wdgt='spin', value={'min':1, 'max':30, 'step':1}, fmt_cb=lpf_fmt_cb, cmd_cb=lpf_cmd_cb) 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_mntr(dev): mntr = Data(io_cb=dev_io_cb) mntr.add_page('mntr', send=True) mntr.add('synth', wdgt='alarm', trace_cb=alarm_trace_cb, msg='Synthesizer status') mntr.add('uout', wdgt='entry', state='readonly', msg='Uout, V') mntr.add_page('mntr1', send=True) mntr.add('vcm1', label='VCM1', wdgt='entry', state='readonly', msg='VCM1') mntr.add('vcm2', label='VCM2', wdgt='entry', state='readonly', msg='VCM2') mntr.add('5v_1', label='5V_1', wdgt='entry', state='readonly', msg='5V_1') mntr.add('5v_2', label='5V_2', wdgt='entry', state='readonly', msg='5V_2') mntr.add('3v3_1', label='3V3_1', wdgt='entry', state='readonly', msg='3V3_1') mntr.add('3v3_2', label='3V3_2', wdgt='entry', state='readonly', msg='3V3_2') mntr.add('3v3_3', label='3V3_3', wdgt='entry', state='readonly', msg='3V3_3') mntr.add('14v', label='14V', wdgt='entry', state='readonly', msg='14V') mntr.cmds.columns=2 return mntr
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): ctrl = Data(name='CSP', send=True, io_cb=dev_io_cb) ctrl.add('modem1', label='Modem1 antenna', wdgt='combo', state='readonly', value=['Main', 'Reserve'], text='Main', fmt_cb=csp_fmt_cb) ctrl.add('modem2', label='Modem2 antenna', wdgt='combo', state='readonly', value=['Main', 'Reserve'], text='Main', fmt_cb=csp_fmt_cb) return ctrl
def get_mntr(dev, cc=None): mntr = Data(io_cb=lambda d,c,v=None: 'QD2048.cmd %s %s %s' % (d['serial'], d['addr'], c)) mntr.add_page('mntr0') aa = lambda k, send, msg: mntr.add(k, wdgt='alarm', send=send, msg=msg, cmd='FLT', fmt_cb=flt_fmt_cb) aa('CD', True, 'CD') aa('DEC', True, 'DEC') aa('RSYNTH', True, 'RSYNTH') mntr.add('EBNO', wdgt='entry', state='readonly', pack_forget=True, msg='Eb/No') mntr.add('BER', wdgt='entry', state='readonly', pack_forget=True, msg='BER') mntr.add_page('mntr1') mntr.add('EBNO', wdgt='entry', state='readonly', label='Eb/No') mntr.add('BER', wdgt='entry', state='readonly', label='BER') mntr.add('AGC', wdgt='entry', state='readonly', label='AGC') mntr.add('ROFFSET', wdgt='entry', state='readonly', label='ROFFSET') mntr.cmds.columns=2 return mntr
def get_mntr(dev): data = Data('mntr', send=True, io_cb=dev_serial_io_cb) data.add('fetch', wdgt='entry', msg='FETCh?', width=10, fmt_cb=fmt_cb) data.add('diff', wdgt='entry', msg='diff', width=10, fmt_cb=fmt_cb) return data
def get_mntr(dev): data = Data(name='mntr', io_cb=lambda d,c: util_io_cb(d,c,prefix='ALT')) data.add('pio', label='IN', wdgt='entry', state='readonly', cmd_cb=alt_cmd_cb, send=True) return data