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_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_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_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_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_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='AC-DC?') 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, 'MCU power supply') add_status(2, 'Output indicator power supply') add_status(3, 'Fan current') add_status(4, 'PA1 power enable') add_status(5, 'PA1 temperature error') add_status(6, 'PA1 power diagnostics error') add_status(6, 'PA1 DC-DC?') add_status(7, 'PA2 power enable') add_status(8, 'PA2 temperature error') add_status(9, 'PA2 power diagnostics error') add_status(10, 'PA2 DC-DC?') mntr.add_page('Vcc') mntr.add('p_in', wdgt='entry', label='Pin', state='readonly', msg='Input power level, dBm') mntr.add('p_out', wdgt='entry', label='Pout', state='readonly', msg='Output power level, dBm') mntr.add('vswr1', wdgt='entry', label='VSWR1', state='readonly', msg='PA1 VSWR, V') mntr.add('vswr2', wdgt='entry', label='VSWR2', state='readonly', msg='PA2 VSWR, V') mntr.add('5_5v1', wdgt='entry', label='5.5V1', state='readonly', msg='MCU input voltage, V') mntr.add('5_5v2', wdgt='entry', label='5.5V2', state='readonly', msg='Output indicator voltage, V') mntr.add('28v1', wdgt='entry', label='28V1', state='readonly', msg='PA1 input voltage, V') mntr.add('28v2', wdgt='entry', label='28V2', state='readonly', msg='PA2 input voltage, V') mntr.add('26v', wdgt='entry', label='26V', state='readonly', msg='AD-DC? output, V') mntr.add('i_fan', wdgt='entry', label='Ifan', state='readonly', msg='Fan current, A') mntr.add('i1', wdgt='entry', label='I(PA1)', state='readonly', msg='PA1 current, A') mntr.add('i2', wdgt='entry', label='I(PA2)', state='readonly', msg='PA2 current, A') mntr.add('t1', wdgt='entry', label='T(PA1)', state='readonly', msg='PA1 temperature, C') mntr.add('t2', wdgt='entry', label='T(PA2)', state='readonly', msg='PA2 temperature, C') return mntr
def get_ctrl(dev): ctrl = Data(io_cb=dev_io_cb) ctrl.add_page('TX', send=True) ctrl.add('txfreq', label='Frequency, MHz', wdgt='spin', value={ 'min': 232.5, 'max': 3720, 'step': 0.01 }, text='1000') ctrl.add('txlpf', label='LPF, MHz', wdgt='combo', value=LMS6002D.trxlpfbw_list, state='readonly', text='14') ctrl.add('txvga1', label='VGA1 Gain, dB', wdgt='spin', value={ 'min': -35, 'max': -4, 'step': 1 }) ctrl.add('txvga2', label='VGA2 Gain, dB', wdgt='spin', value={ 'min': 0, 'max': 25, 'step': 1 }) ctrl.add_page('RX', send=True) ctrl.add('rxfreq', label='Frequency, MHz', wdgt='spin', value={ 'min': 232.5, 'max': 3720, 'step': 0.01 }) ctrl.add('rxlpf', label='LPF, MHz', wdgt='combo', value=LMS6002D.trxlpfbw_list, state='readonly') ctrl.add('rxvga2', label='VGA2 Gain, dB', wdgt='spin', value={ 'min': 0, 'max': 30, 'step': 3 }) ctrl.menu = get_ctrl_menu(dev) #dev['spi'] = '0' return ctrl
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('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_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(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, '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_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_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(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_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='ChA LNA 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, 'ChB LNA power supply') add_status(2, 'Output switch power supply') add_status(3, 'AC-DC/DC-DC?') add_status(4, 'ChA power supply') add_status(5, 'ChB power supply') add_status(6, 'MCU power supply') mntr.add_page('Vcc') mntr.add('5v1', wdgt='entry', label='5V1', state='readonly', msg='5V, ChA LNA power supply') mntr.add('5v2', wdgt='entry', label='5V2', state='readonly', msg='5V, ChB LNA power supply') mntr.add('2_5v', wdgt='entry', label='2.5V', state='readonly', msg='Output switch power supply') mntr.add('26v', wdgt='entry', label='26V', state='readonly', msg='AC-DC/DC-DC?') mntr.add('12v1', wdgt='entry', label='12V1', state='readonly', msg='ChA power supply') mntr.add('12v2', wdgt='entry', label='12V2', state='readonly', msg='ChB power supply') mntr.add('5_5v', wdgt='entry', label='5_5V', state='readonly', msg='MCU power supply') return mntr
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_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_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_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_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_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(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_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): ctrl = Data(io_cb=dev_io_cb) ctrl.add_page('TX', send=True) ctrl.add('txfreq', label='Frequency, MHz', wdgt='spin', value={'min':232.5, 'max':3720, 'step':0.01}, text='1000') ctrl.add('txlpf', label='LPF, MHz', wdgt='combo', value=LMS6002D.trxlpfbw_list, state='readonly', text='14') ctrl.add('txvga1', label='VGA1 Gain, dB', wdgt='spin', value={'min':-35, 'max':-4, 'step':1}) ctrl.add('txvga2', label='VGA2 Gain, dB', wdgt='spin', value={'min':0, 'max':25, 'step':1}) ctrl.add_page('RX', send=True) ctrl.add('rxfreq', label='Frequency, MHz', wdgt='spin', value={'min':232.5, 'max':3720, 'step':0.01}) ctrl.add('rxlpf', label='LPF, MHz', wdgt='combo', value=LMS6002D.trxlpfbw_list, state='readonly') ctrl.add('rxvga2', label='VGA2 Gain, dB', wdgt='spin', value={'min':0, 'max':30, 'step':3}) ctrl.menu = get_ctrl_menu(dev) #dev['spi'] = '0' return ctrl
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(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_mntr(dev): data = Data('mntr', send=True, io_cb=util_io_cb) data.add('rdy', wdgt='alarm', msg='Status', cmd_cb=rdy_cmd_cb, fmt_cb=rdy_fmt_cb, trace_cb=alarm_trace_cb) data.add_page('mntr1') refin = float(dev[c_refin]) data.add('adc0', wdgt='entry', state='readonly', label='ADC0', cmd_cb=adc_dac_cmd_cb, fmt_cb=lambda val,read=True: adc_dac_fmt_cb(val,read,refin=refin,n=0,a=0x60)) data.add('adc1', wdgt='entry', state='readonly', label='ADC1', cmd_cb=adc_dac_cmd_cb, fmt_cb=lambda val,read=True: adc_dac_fmt_cb(val,read,refin=refin,n=1,a=0x60)) data.add('adc2', wdgt='entry', state='readonly', label='ADC2', cmd_cb=adc_dac_cmd_cb, fmt_cb=lambda val,read=True: adc_dac_fmt_cb(val,read,refin=refin,n=2,a=0x60)) data.add('adc3', wdgt='entry', state='readonly', label='ADC3', cmd_cb=adc_dac_cmd_cb, fmt_cb=lambda val,read=True: adc_dac_fmt_cb(val,read,refin=refin,n=3,a=0x60)) data.add('adc4', wdgt='entry', state='readonly', label='ADC4', cmd_cb=adc_dac_cmd_cb, fmt_cb=lambda val,read=True: adc_dac_fmt_cb(val,read,refin=refin,n=4,a=0x60)) data.add('adc5', wdgt='entry', state='readonly', label='ADC5', cmd_cb=adc_dac_cmd_cb, fmt_cb=lambda val,read=True: adc_dac_fmt_cb(val,read,refin=refin,n=5,a=0x60)) data.add('adc6', wdgt='entry', state='readonly', label='ADC6', cmd_cb=adc_dac_cmd_cb, fmt_cb=lambda val,read=True: adc_dac_fmt_cb(val,read,refin=refin,n=6,a=0x60)) data.add('adc7', wdgt='entry', state='readonly', label='ADC7', cmd_cb=adc_dac_cmd_cb, fmt_cb=lambda val,read=True: adc_dac_fmt_cb(val,read,refin=refin,n=7,a=0x60)) data.add('temp', wdgt='entry', state='readonly', label='TEMP', msg='Temperature', cmd_cb=temp_cmd_cb, fmt_cb=temp_fmt_cb) data.cmds.columns=4 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_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): mntr = Data(io_cb=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, fltn=fltn: flt_fmt_cb(val, read, fltn), trace_cb=alarm_trace_cb) aa('FLT0', True, 'Unit fault', 0) aa('FLT1', False, 'TX fault', 1) aa('FLT2', False, 'RX fault', 2) mntr.add('RSL', wdgt='entry', state='readonly', pack_forget=True, fmt_cb=rsl_fmt_cb, msg='RX Level, dBm') mntr.add('EBN', wdgt='entry', state='readonly', pack_forget=True, fmt_cb=rfo_ebn_fmt_cb, msg='RX Eb/No, dB') mntr.add_page('mntr1') mntr.add('RSL', wdgt='entry', state='readonly', label='RX Level, dBm', fmt_cb=rsl_fmt_cb) mntr.add('EBN', wdgt='entry', state='readonly', label='RX Eb/No, dB', fmt_cb=rfo_ebn_fmt_cb) mntr.add('BFS', wdgt='entry', state='readonly', label='Buffer Fill, %') mntr.add('RFO', wdgt='entry', state='readonly', label='Freq Offset, kHz', fmt_cb=rfo_ebn_fmt_cb) mntr.add('BER', wdgt='entry', state='readonly', label='RX BER') mntr.add('TMP', wdgt='entry', state='readonly', label='Temperature') mntr.columns = 2 return mntr
def get_mntr(dev): mntr = Data(io_cb=cmd_serial_io_cb, send=True) mntr.add_page('mntr0') aa = lambda k, send, fltn, msg: mntr.add(k, wdgt='alarm', send=send, msg=msg, cmd='MFS', fmt_cb=lambda val, read, fltn= fltn: mfs_fmt_cb(val, read, fltn), trace_cb=alarm_trace_cb) aa('MOD', True, 0, 'Modulator') aa('DMD', False, 1, 'Demodulator') aa('TX', False, 2, 'Interface transmit side') aa('IRX', False, 3, 'Interface receive side') aa('CEQ', False, 4, 'Common equipment') mntr.add('EBN0', wdgt='entry', state='readonly', pack_forget=True, msg='Eb/No') mntr.add('CBER', wdgt='entry', state='readonly', pack_forget=True, msg='Corrected BER') mntr.add_page('mntr1') mntr.add('RSL', wdgt='entry', state='readonly', label='RX Level [dBm]', fmt_cb=rsl_fmt_cb) mntr.add('EBN0', wdgt='entry', state='readonly', label='Eb/No') mntr.add('CSV', wdgt='entry', state='readonly', label='Current sweep', fmt_cb=csv_fmt_cb) mntr.add('CBER', wdgt='entry', state='readonly', label='Corrected BER') mntr.add('IBFS', wdgt='entry', state='readonly', label='Buffer fill [%]', fmt_cb=ibfs_fmt_cb) mntr.add('RBER', wdgt='entry', state='readonly', label='Raw BER') mntr.columns = 2 return mntr
def get_mntr(dev): mntr = Data(io_cb=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, fltn=fltn: flt_fmt_cb(val, read, fltn), trace_cb=alarm_trace_cb) aa('FLT0', True, 'Unit fault', 0) aa('FLT1', False, 'TX fault', 1) aa('FLT2', False, 'RX fault', 2) mntr.add('RSL', wdgt='entry', state='readonly', pack_forget=True, fmt_cb=rsl_fmt_cb, msg='RX Level, dBm') mntr.add('EBN', wdgt='entry', state='readonly', pack_forget=True, fmt_cb=rfo_ebn_fmt_cb, msg='RX Eb/No, dB') mntr.add_page('mntr1') mntr.add('RSL', wdgt='entry', state='readonly', label='RX Level, dBm', fmt_cb=rsl_fmt_cb) mntr.add('EBN', wdgt='entry', state='readonly', label='RX Eb/No, dB', fmt_cb=rfo_ebn_fmt_cb) mntr.add('BFS', wdgt='entry', state='readonly', label='Buffer Fill, %') mntr.add('RFO', wdgt='entry', state='readonly', label='Freq Offset, kHz', fmt_cb=rfo_ebn_fmt_cb) mntr.add('BER', wdgt='entry', state='readonly', label='RX BER') mntr.add('TMP', wdgt='entry', state='readonly', label='Temperature') mntr.columns=2 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_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 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='ChA LNA 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, 'ChB LNA power supply') add_status(2, 'Output switch power supply') add_status(3, 'AC-DC/DC-DC?') add_status(4, 'ChA power supply') add_status(5, 'ChB power supply') add_status(6, 'MCU power supply') mntr.add_page('Vcc') mntr.add('5v1', wdgt='entry', label='5V1', state='readonly', msg='5V, ChA LNA power supply') mntr.add('5v2', wdgt='entry', label='5V2', state='readonly', msg='5V, ChB LNA power supply') mntr.add('2_5v', wdgt='entry', label='2.5V', state='readonly', msg='Output switch power supply') mntr.add('26v', wdgt='entry', label='26V', state='readonly', msg='AC-DC/DC-DC?') mntr.add('12v1', wdgt='entry', label='12V1', state='readonly', msg='ChA power supply') mntr.add('12v2', wdgt='entry', label='12V2', state='readonly', msg='ChB power supply') mntr.add('5_5v', wdgt='entry', label='5_5V', state='readonly', msg='MCU power supply') return mntr
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_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_mntr(dev): mntr = Data(io_cb=cmd_serial_io_cb, send=True) mntr.add_page('mntr0') aa = lambda k, send, fltn, msg: mntr.add(k, wdgt='alarm', send=send, msg=msg, cmd='MFS', fmt_cb=lambda val, read, fltn=fltn: mfs_fmt_cb(val, read, fltn), trace_cb=alarm_trace_cb) aa('MOD', True, 0, 'Modulator') aa('DMD', False, 1, 'Demodulator') aa('TX', False, 2, 'Interface transmit side') aa('IRX', False, 3, 'Interface receive side') aa('CEQ', False, 4, 'Common equipment') mntr.add('EBN0', wdgt='entry', state='readonly', pack_forget=True, msg='Eb/No') mntr.add('CBER', wdgt='entry', state='readonly', pack_forget=True, msg='Corrected BER') mntr.add_page('mntr1') mntr.add('RSL', wdgt='entry', state='readonly', label='RX Level [dBm]', fmt_cb=rsl_fmt_cb) mntr.add('EBN0', wdgt='entry', state='readonly', label='Eb/No') mntr.add('CSV', wdgt='entry', state='readonly', label='Current sweep', fmt_cb=csv_fmt_cb) mntr.add('CBER', wdgt='entry', state='readonly', label='Corrected BER') mntr.add('IBFS', wdgt='entry', state='readonly', label='Buffer fill [%]', fmt_cb=ibfs_fmt_cb) mntr.add('RBER', wdgt='entry', state='readonly', label='Raw BER') mntr.columns = 2 return mntr
def get_mntr(dev): if dev['devdata'] == 'mod': mntr_mod = Data(io_cb=hm_SL2048_io_cb) mntr_mod.add_page('mod') mntr_mod.add('TFAULT', wdgt='alarm', msg='TFAULT') return mntr_mod if dev['devdata'] == 'demod': mntr_demod = Data(io_cb=hm_SL2048_io_cb) mntr_demod.add_page('demod') mntr_demod.add('RCD', wdgt='alarm', msg='RCD') mntr_demod.add('RDEC', wdgt='alarm', msg='RDEC') mntr_demod.add('RSYNTH', wdgt='alarm', msg='RSYNTH') mntr_demod.add('REBNO', wdgt='entry', state='readonly', pack_forget=True, msg='Eb/No') mntr_demod.add('RBER', wdgt='entry', state='readonly', pack_forget=True, msg='BER') mntr_demod.add_page('demod1') mntr_demod.add('REBNO', wdgt='entry', state='readonly', label='Eb/No') mntr_demod.add('RBER', wdgt='entry', state='readonly', label='BER') mntr_demod.add('RAGC', wdgt='entry', state='readonly', label='AGC') mntr_demod.add('RROFFSET', wdgt='entry', state='readonly', label='ROFFSET') return mntr_demod
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 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_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_mntr(dev): if 'devdata' not in dev: return if dev['devdata'].find('mod') == 0: mntr_mod = Data(io_cb=cmd_io_cb, send=True) mntr_mod.add_page('Modulator') ''' mod_mntr_pages = [] mod_mntr = OD() #create_alarms('FAULT', mod_mntr, fmt_cb_fault) mod_mntr_pages.append(dict([('cmds',mod_mntr), ('update', True)])) ''' return mntr_mod elif dev['devdata'].find('demod') == 0: mntr_demod = Data(io_cb=cmd_io_cb, send=True) mntr_demod.add_page('demod0') mntr_demod.add('CD', wdgt='alarm', msg='Carrier detect', fmt_cb=cd_fmt_cb, trace_cb=alarm_trace_cb) mntr_demod.add('DEC', wdgt='alarm', msg='Decoder lock', fmt_cb=dec_fmt_cb, trace_cb=alarm_trace_cb) mntr_demod.add_page('demod1') mntr_demod.add('AGC', label='RX Level, dBm', wdgt='entry', state='readonly', fmt_cb=agc_roffset_fmt_cb) mntr_demod.add('EBNO', label='Eb/NO', wdgt='entry', state='readonly', fmt_cb=ebno_ber_fmt_cb) mntr_demod.add('ROFFSET', label='Freq. offset, Hz', wdgt='entry', state='readonly', fmt_cb=agc_roffset_fmt_cb) mntr_demod.add('BER', label='Bit error rate', wdgt='entry', state='readonly', fmt_cb=ebno_ber_fmt_cb) return mntr_demod
def get_ctrl(dev): data = Data(io_cb=dg_io_cb) data.add_page('Channel 1', send=True) data.add('FUNC', label='Function (select SIN)', wdgt='combo', state='readonly', value=['SIN','SQU','RAMP','PULS','NOIS','DC','USER'], fmt_cb=func_fmt_cb) data.add('FREQ', label='Frequency, kHz', wdgt='spin', value={'min':0.001, 'max':25000, 'step':0.001}, fmt_cb=freq_fmt_cb) data.add('VOLT:UNIT', label='Voltage units (select VPP)', wdgt='combo', state='readonly', value=['VPP','VRMS','DBM'], fmt_cb=func_fmt_cb) data.add('VOLT', label='Voltage, V', wdgt='spin', value={'min':0.2, 'max':5, 'step':0.1}, text='0.2', fmt_cb=volt_fmt_cb) data.add('VOLT:OFFS', label='Voltage offset, V', wdgt='spin', value={'min':0, 'max':5, 'step':0.1}, fmt_cb=volt_fmt_cb) data.add('PHAS', label='Phase, deg', wdgt='spin', value={'min':-180, 'max':180, 'step':1}) data.add('OUTP', label='Output enable', wdgt='combo', state='readonly', value=['ON', 'OFF']) data.add_page('Channel 2', cmds=OD((k+':CH2',deepcopy(v)) for k,v in data.cmds.items())) data.add_page('DUAL') data.add('qfreq', label='Frequency, kHz', wdgt='spin', value={'min':0.001, 'max':25000, 'step':0.001}, send=True) data.add('PHAS', label='PHASE:CH2 - PHASE:CH1 = 90', send=False) return data
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 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='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): data = Data(io_cb=dg_io_cb) data.add_page('Channel 1', send=True) data.add('FUNC', label='Function (select SIN)', wdgt='combo', state='readonly', value=['SIN', 'SQU', 'RAMP', 'PULS', 'NOIS', 'DC', 'USER'], fmt_cb=func_fmt_cb) data.add('FREQ', label='Frequency, kHz', wdgt='spin', value={ 'min': 0.001, 'max': 25000, 'step': 0.001 }, fmt_cb=freq_fmt_cb) data.add('VOLT:UNIT', label='Voltage units (select VPP)', wdgt='combo', state='readonly', value=['VPP', 'VRMS', 'DBM'], fmt_cb=func_fmt_cb) data.add('VOLT', label='Voltage, V', wdgt='spin', value={ 'min': 0.2, 'max': 5, 'step': 0.1 }, text='0.2', fmt_cb=volt_fmt_cb) data.add('VOLT:OFFS', label='Voltage offset, V', wdgt='spin', value={ 'min': 0, 'max': 5, 'step': 0.1 }, fmt_cb=volt_fmt_cb) data.add('PHAS', label='Phase, deg', wdgt='spin', value={ 'min': -180, 'max': 180, 'step': 1 }) data.add('OUTP', label='Output enable', wdgt='combo', state='readonly', value=['ON', 'OFF']) data.add_page('Channel 2', cmds=OD( (k + ':CH2', deepcopy(v)) for k, v in data.cmds.items())) data.add_page('DUAL') data.add('qfreq', label='Frequency, kHz', wdgt='spin', value={ 'min': 0.001, 'max': 25000, 'step': 0.001 }, send=True) data.add('PHAS', label='PHASE:CH2 - PHASE:CH1 = 90', send=False) 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, fmt_cb=synth_fmt_cb, msg='Synthesizer status') mntr.add('uout', wdgt='entry', state='readonly', msg='Uout, V') return mntr
def save_fmt_data(self): bdata = self.bank_data() fdata = Data() fdata.add_page('fmt1', cmds=OD((k, bdata.cmds[k]) for k in ['fmt', 'nbits'])) return fdata
class Firfilt(Control): def __init__(self, dev=None, parent=None, title='FIR calc'): data = Data() self.banks = [] self.fileext = 'txt' Control.__init__(self, data=data, dev=dev, parent=parent, title=title) def init_layout(self): self.init_common_layout() self.init_custom_layout() def add_menu_bank(self): menu = OD() mb = OD() mb['Add'] = lambda *args: self.bank_add() mb['Delete'] = lambda *args: self.bank_del() menu['Bank'] = mb return self.add_menus(menu) def update_menu_bank(self): newstate = tk.NORMAL if len(self.data) > 1 else tk.DISABLED self.menu_bank['Bank']['m'].entryconfig(1, state=newstate) def init_common_layout(self): self.add_menu_file(file_save=False) self.menu_bank = self.add_menu_bank() self.fl = tk.Frame(self.frame) self.fl.pack(fill=tk.BOTH, expand=1, side=tk.LEFT) self.fr = tk.Frame(self.frame) self.fr.pack(fill=tk.BOTH, expand=0, side=tk.RIGHT) self.pdata = Data() self.ptabs = ttk.Notebook(self.fl) self.ptabs.pack(fill=tk.BOTH, expand=1, padx=5, pady=5) self.pdata.bind_tab_cb(self.ptabs, self.plot_update) self.tabs = ttk.Notebook(self.fr) self.tabs.pack(fill=tk.BOTH, expand=1, padx=5, pady=5) self.bank_add() self.data.bind_tab_cb(self.tabs, self.plot_update) def plot_add(self, name, plot_init, plot_upd, subplots=2): fp = tk.Frame(self.ptabs) self.ptabs.add(fp, text=name, sticky=tk.NSEW) f = Figure(figsize=(5,4), dpi=100) if subplots == 1: f.add_subplot(111) if subplots == 2: f.add_subplot(211) f.add_subplot(212) f.subplots_adjust(hspace=0.5) plot_init(f) canvas = FigureCanvasTkAgg(f, master=fp) canvas.show() canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.BOTH, expand=1) toolbar = NavigationToolbar2TkAgg(canvas, fp) toolbar.update() canvas._tkcanvas.pack(side=tk.TOP, fill=tk.BOTH, expand=1) self.pdata.add_page(name) self.pdata.add(name, fig=f, init=plot_init, upd=plot_upd) return f def plot_init_impz(self, fig): ax1, ax2 = fig.get_axes() taps = self.get_taps_fmt() for ax in [ax1,ax2]: ax.clear() ax.grid() if len(taps) > 1: ax.set_xlim(0, len(taps)-1) ax1.set_ylabel('Amplitude') ax1.set_xlabel(r'n (samples)') ax1.set_title(r'Impulse response') ax2.set_ylabel('Amplitude') ax2.set_xlabel(r'n (samples)') ax2.set_title(r'Step response') def plot_upd_impz(self, fig, taps, a=1): if not signal: return self.plot_init_impz(fig) ax1, ax2 = fig.get_axes() l = len(taps) impulse = pylab.repeat(0.,l); impulse[0] =1. x = arange(0,l) response = signal.lfilter(taps,a,impulse) ax1.stem(x, response) step = pylab.cumsum(response) ax2.stem(x, step) @taps_dec def plot_update(self, *args): n = self.ptabs.tabs().index(self.ptabs.select()) cmds = self.data.cmds taps = cmds.taps pcmds = self.pdata.cmds p = pcmds[pcmds.name] p.upd(p.fig, taps) pylab.draw() p.fig.canvas.draw() def exit_cb(self, *args): self.root.withdraw() self.root.destroy() sys.exit(0) def bank_data(self): data = Data(name='Bank %d' % len(self.data)) return data def bank_add(self): bdata = self.bank_data() self.data.add_page('Bank %d' % len(self.data), bdata.cmds) cmds = self.data.cmds self.add_tab(cmds, rowconfigure=False) self.tabs.select(cmds.tabid) self.update_menu_bank() r = len(cmds) btn = tk.Button(cmds.f, text='Design filter', command=self.design_filter) btn.grid(row=r, column=0, columnspan=2, sticky=tk.NSEW) f1 = tk.Frame(cmds.f, borderwidth=5) f1.grid(row=r+1, column=0, columnspan=2, sticky=tk.NSEW) cmds.f.rowconfigure(r+1, weight=1) cmds.lb = tk.Listbox(f1) self.add_widget_with_scrolls(f1, cmds.lb) def bank_del(self): if len(self.data) <= 1: return cmds = self.data.cmds self.tabs.forget(cmds.f) self.data.remove_page() self.update_menu_bank() i = 0 for p in self.data: self.tabs.tab(p.tabid, text='Bank %d'%i) i = i + 1 @taps_dec def bank_update(self, page=None): taps = self.get_taps_fmt() if not taps: return lb = self.data.cmds.lb lb.delete(0, tk.END) for t in taps: lb.insert(tk.END, t) def design_filter(self): return def get_int_taps(self, taps, nbits): return ['%d' % round(t*(1 << (nbits - 1))) for t in taps] @taps_dec def get_taps_fmt(self, fmt=None): taps = self.data.cmds.taps if fmt == None: fmt = self.data.get_value('fmt') if fmt == 'int': fmt = self.data.get_value('nbits') if fmt in ['double', 'dbl']: return ['%f' % t for t in taps] elif type(fmt) == str: try: nbits = int(fmt.replace('b', '')) except: return elif type(fmt) == int: nbits = fmt else: print('!!! bad fmt: ', fmt) return self.get_int_taps(taps, nbits)