def __init__(self, snkTx, snkRx, fg, parent=None): QtGui.QWidget.__init__(self, parent) self.gui = Ui_DigitalWindow() self.gui.setupUi(self) self.fg = fg self.set_sample_rate(self.fg.sample_rate()) self.set_snr(self.fg.snr()) self.set_frequency(self.fg.frequency_offset()) self.set_time_offset(self.fg.timing_offset()) self.set_gain_clock(self.fg.rx_gain_clock()) self.set_gain_phase(self.fg.rx_gain_phase()) self.set_gain_freq(self.fg.rx_gain_freq()) # Add the qtsnk widgets to the hlayout box self.gui.sinkLayout.addWidget(snkTx) self.gui.sinkLayout.addWidget(snkRx) # Connect up some signals self.connect(self.gui.pauseButton, QtCore.SIGNAL("clicked()"), self.pauseFg) self.connect(self.gui.sampleRateEdit, QtCore.SIGNAL("editingFinished()"), self.sampleRateEditText) self.connect(self.gui.snrEdit, QtCore.SIGNAL("editingFinished()"), self.snrEditText) self.connect(self.gui.freqEdit, QtCore.SIGNAL("editingFinished()"), self.freqEditText) self.connect(self.gui.timeEdit, QtCore.SIGNAL("editingFinished()"), self.timeEditText) self.connect(self.gui.gainClockEdit, QtCore.SIGNAL("editingFinished()"), self.gainClockEditText) self.connect(self.gui.gainPhaseEdit, QtCore.SIGNAL("editingFinished()"), self.gainPhaseEditText) self.connect(self.gui.gainFreqEdit, QtCore.SIGNAL("editingFinished()"), self.gainFreqEditText) # Build a timer to update the packet number and PER fields self.update_delay = 250 # time between updating packet rate fields self.pkt_timer = QtCore.QTimer(self) self.connect(self.pkt_timer, QtCore.SIGNAL("timeout()"), self.updatePacketInfo) self.pkt_timer.start(self.update_delay)
class dialog_box(QtGui.QMainWindow): def __init__(self, snkTx, snkRx, fg, parent=None): QtGui.QWidget.__init__(self, parent) self.gui = Ui_DigitalWindow() self.gui.setupUi(self) self.fg = fg self.set_sample_rate(self.fg.sample_rate()) self.set_snr(self.fg.snr()) self.set_frequency(self.fg.frequency_offset()) self.set_time_offset(self.fg.timing_offset()) self.set_gain_clock(self.fg.rx_gain_clock()) self.set_gain_phase(self.fg.rx_gain_phase()) self.set_gain_freq(self.fg.rx_gain_freq()) # Add the qtsnk widgets to the hlayout box self.gui.sinkLayout.addWidget(snkTx) self.gui.sinkLayout.addWidget(snkRx) # Connect up some signals self.connect(self.gui.pauseButton, QtCore.SIGNAL("clicked()"), self.pauseFg) self.connect(self.gui.sampleRateEdit, QtCore.SIGNAL("editingFinished()"), self.sampleRateEditText) self.connect(self.gui.snrEdit, QtCore.SIGNAL("editingFinished()"), self.snrEditText) self.connect(self.gui.freqEdit, QtCore.SIGNAL("editingFinished()"), self.freqEditText) self.connect(self.gui.timeEdit, QtCore.SIGNAL("editingFinished()"), self.timeEditText) self.connect(self.gui.gainClockEdit, QtCore.SIGNAL("editingFinished()"), self.gainClockEditText) self.connect(self.gui.gainPhaseEdit, QtCore.SIGNAL("editingFinished()"), self.gainPhaseEditText) self.connect(self.gui.gainFreqEdit, QtCore.SIGNAL("editingFinished()"), self.gainFreqEditText) # Build a timer to update the packet number and PER fields self.update_delay = 250 # time between updating packet rate fields self.pkt_timer = QtCore.QTimer(self) self.connect(self.pkt_timer, QtCore.SIGNAL("timeout()"), self.updatePacketInfo) self.pkt_timer.start(self.update_delay) def pauseFg(self): if(self.gui.pauseButton.text() == "Pause"): self.fg.stop() self.fg.wait() self.gui.pauseButton.setText("Unpause") else: self.fg.start() self.gui.pauseButton.setText("Pause") # Accessor functions for Gui to manipulate system parameters def set_sample_rate(self, sr): ssr = eng_notation.num_to_str(sr) self.gui.sampleRateEdit.setText(QtCore.QString("%1").arg(ssr)) def sampleRateEditText(self): try: rate = self.gui.sampleRateEdit.text().toAscii() srate = eng_notation.str_to_num(rate) #self.fg.set_sample_rate(srate) except RuntimeError: pass # Accessor functions for Gui to manipulate channel model def set_snr(self, snr): self.gui.snrEdit.setText(QtCore.QString("%1").arg(snr)) def set_frequency(self, fo): self.gui.freqEdit.setText(QtCore.QString("%1").arg(fo)) def set_time_offset(self, to): self.gui.timeEdit.setText(QtCore.QString("%1").arg(to)) def snrEditText(self): try: snr = self.gui.snrEdit.text().toDouble()[0] self.fg.set_snr(snr) except RuntimeError: pass def freqEditText(self): try: freq = self.gui.freqEdit.text().toDouble()[0] self.fg.set_frequency_offset(freq) except RuntimeError: pass def timeEditText(self): try: to = self.gui.timeEdit.text().toDouble()[0] self.fg.set_timing_offset(to) except RuntimeError: pass # Accessor functions for Gui to manipulate receiver parameters def set_gain_clock(self, gain): self.gui.gainClockEdit.setText(QtCore.QString("%1").arg(gain)) def set_gain_phase(self, gain_phase): self.gui.gainPhaseEdit.setText(QtCore.QString("%1").arg(gain_phase)) def set_gain_freq(self, gain_freq): self.gui.gainFreqEdit.setText(QtCore.QString("%1").arg(gain_freq)) def set_alpha_time(self, alpha): self.gui.alphaTimeEdit.setText(QtCore.QString("%1").arg(alpha)) def set_beta_time(self, beta): self.gui.betaTimeEdit.setText(QtCore.QString("%1").arg(beta)) def set_alpha_phase(self, alpha): self.gui.alphaPhaseEdit.setText(QtCore.QString("%1").arg(alpha)) def gainPhaseEditText(self): try: gain_phase = self.gui.gainPhaseEdit.text().toDouble()[0] self.fg.set_rx_gain_phase(gain_phase) except RuntimeError: pass def gainClockEditText(self): try: gain = self.gui.gainClockEdit.text().toDouble()[0] self.fg.set_rx_gain_clock(gain) except RuntimeError: pass def gainFreqEditText(self): try: gain = self.gui.gainFreqEdit.text().toDouble()[0] self.fg.set_rx_gain_freq(gain) except RuntimeError: pass # Accessor functions for packet error reporting def updatePacketInfo(self): # Pull these globals in from the main thread global n_rcvd, n_right, pktno if(pktno > 0): per = float(n_rcvd - n_right)/float(pktno) else: per = 0 self.gui.pktsRcvdEdit.setText(QtCore.QString("%1").arg(n_rcvd)) self.gui.pktsCorrectEdit.setText(QtCore.QString("%1").arg(n_right)) self.gui.perEdit.setText(QtCore.QString("%1").arg(float(per), 0, 'e', 4))
class dialog_box(QtGui.QMainWindow): def __init__(self, snkTx, snkRx, fg, parent=None): QtGui.QWidget.__init__(self, parent) self.gui = Ui_DigitalWindow() self.gui.setupUi(self) self.fg = fg self.set_sample_rate(self.fg.sample_rate()) self.set_snr(self.fg.snr()) self.set_frequency(self.fg.frequency_offset()) self.set_time_offset(self.fg.timing_offset()) self.set_gain_clock(self.fg.rx_gain_clock()) self.set_gain_phase(self.fg.rx_gain_phase()) self.set_gain_freq(self.fg.rx_gain_freq()) # Add the qtsnk widgets to the hlayout box self.gui.sinkLayout.addWidget(snkTx) self.gui.sinkLayout.addWidget(snkRx) # Connect up some signals self.connect(self.gui.pauseButton, QtCore.SIGNAL("clicked()"), self.pauseFg) self.connect(self.gui.sampleRateEdit, QtCore.SIGNAL("editingFinished()"), self.sampleRateEditText) self.connect(self.gui.snrEdit, QtCore.SIGNAL("editingFinished()"), self.snrEditText) self.connect(self.gui.freqEdit, QtCore.SIGNAL("editingFinished()"), self.freqEditText) self.connect(self.gui.timeEdit, QtCore.SIGNAL("editingFinished()"), self.timeEditText) self.connect(self.gui.gainClockEdit, QtCore.SIGNAL("editingFinished()"), self.gainClockEditText) self.connect(self.gui.gainPhaseEdit, QtCore.SIGNAL("editingFinished()"), self.gainPhaseEditText) self.connect(self.gui.gainFreqEdit, QtCore.SIGNAL("editingFinished()"), self.gainFreqEditText) # Build a timer to update the packet number and PER fields self.update_delay = 250 # time between updating packet rate fields self.pkt_timer = QtCore.QTimer(self) self.connect(self.pkt_timer, QtCore.SIGNAL("timeout()"), self.updatePacketInfo) self.pkt_timer.start(self.update_delay) def pauseFg(self): if (self.gui.pauseButton.text() == "Pause"): self.fg.stop() self.fg.wait() self.gui.pauseButton.setText("Unpause") else: self.fg.start() self.gui.pauseButton.setText("Pause") # Accessor functions for Gui to manipulate system parameters def set_sample_rate(self, sr): ssr = eng_notation.num_to_str(sr) self.gui.sampleRateEdit.setText(QtCore.QString("%1").arg(ssr)) def sampleRateEditText(self): try: rate = self.gui.sampleRateEdit.text().toAscii() srate = eng_notation.str_to_num(rate) #self.fg.set_sample_rate(srate) except RuntimeError: pass # Accessor functions for Gui to manipulate channel model def set_snr(self, snr): self.gui.snrEdit.setText(QtCore.QString("%1").arg(snr)) def set_frequency(self, fo): self.gui.freqEdit.setText(QtCore.QString("%1").arg(fo)) def set_time_offset(self, to): self.gui.timeEdit.setText(QtCore.QString("%1").arg(to)) def snrEditText(self): try: snr = self.gui.snrEdit.text().toDouble()[0] self.fg.set_snr(snr) except RuntimeError: pass def freqEditText(self): try: freq = self.gui.freqEdit.text().toDouble()[0] self.fg.set_frequency_offset(freq) except RuntimeError: pass def timeEditText(self): try: to = self.gui.timeEdit.text().toDouble()[0] self.fg.set_timing_offset(to) except RuntimeError: pass # Accessor functions for Gui to manipulate receiver parameters def set_gain_clock(self, gain): self.gui.gainClockEdit.setText(QtCore.QString("%1").arg(gain)) def set_gain_phase(self, gain_phase): self.gui.gainPhaseEdit.setText(QtCore.QString("%1").arg(gain_phase)) def set_gain_freq(self, gain_freq): self.gui.gainFreqEdit.setText(QtCore.QString("%1").arg(gain_freq)) def set_alpha_time(self, alpha): self.gui.alphaTimeEdit.setText(QtCore.QString("%1").arg(alpha)) def set_beta_time(self, beta): self.gui.betaTimeEdit.setText(QtCore.QString("%1").arg(beta)) def set_alpha_phase(self, alpha): self.gui.alphaPhaseEdit.setText(QtCore.QString("%1").arg(alpha)) def gainPhaseEditText(self): try: gain_phase = self.gui.gainPhaseEdit.text().toDouble()[0] self.fg.set_rx_gain_phase(gain_phase) except RuntimeError: pass def gainClockEditText(self): try: gain = self.gui.gainClockEdit.text().toDouble()[0] self.fg.set_rx_gain_clock(gain) except RuntimeError: pass def gainFreqEditText(self): try: gain = self.gui.gainFreqEdit.text().toDouble()[0] self.fg.set_rx_gain_freq(gain) except RuntimeError: pass # Accessor functions for packet error reporting def updatePacketInfo(self): # Pull these globals in from the main thread global n_rcvd, n_right, pktno if (pktno > 0): per = float(n_rcvd - n_right) / float(pktno) else: per = 0 self.gui.pktsRcvdEdit.setText(QtCore.QString("%1").arg(n_rcvd)) self.gui.pktsCorrectEdit.setText(QtCore.QString("%1").arg(n_right)) self.gui.perEdit.setText( QtCore.QString("%1").arg(float(per), 0, 'e', 4))