diff --git a/redpitaya/client/dds_gnuradio.grc b/redpitaya/client/dds_gnuradio.grc index 44ecb46..f5b2899 100644 --- a/redpitaya/client/dds_gnuradio.grc +++ b/redpitaya/client/dds_gnuradio.grc @@ -168,7 +168,7 @@ value - "192.168.0.203" + "192.168.0.201" diff --git a/redpitaya/client/dds_gnuradio.py b/redpitaya/client/dds_gnuradio.py index 744ce4b..5d71152 100755 --- a/redpitaya/client/dds_gnuradio.py +++ b/redpitaya/client/dds_gnuradio.py @@ -3,7 +3,7 @@ ################################################## # GNU Radio Python Flow Graph # Title: Dds Gnuradio -# Generated: Fri Apr 21 12:30:52 2017 +# Generated: Fri Apr 21 17:59:20 2017 ################################################## if __name__ == '__main__': @@ -58,7 +58,7 @@ class dds_gnuradio(gr.top_block, Qt.QWidget): self.port = port = 1001 self.offset_out1 = offset_out1 = 0 self.f_dds = f_dds = 0 - self.addr = addr = "192.168.0.203" + self.addr = addr = "192.168.0.201" self.a_dds = a_dds = 0 ################################################## diff --git a/redpitaya/client/double_pid_vco.py b/redpitaya/client/double_pid_vco.py index dee0b21..3753960 100755 --- a/redpitaya/client/double_pid_vco.py +++ b/redpitaya/client/double_pid_vco.py @@ -3,7 +3,7 @@ ################################################## # GNU Radio Python Flow Graph # Title: Double Pid Vco -# Generated: Fri Apr 21 14:54:08 2017 +# Generated: Fri Apr 21 15:21:06 2017 ################################################## if __name__ == '__main__': diff --git a/redpitaya/client/iq_pid_vco.grc b/redpitaya/client/iq_pid_vco.grc new file mode 100644 index 0000000..37e5420 --- /dev/null +++ b/redpitaya/client/iq_pid_vco.grc @@ -0,0 +1,1724 @@ + + + + Thu Feb 2 22:54:58 2017 + + options + + author + + + + window_size + 2000, 2000 + + + category + [GRC Hier Blocks] + + + comment + + + + description + + + + _enabled + True + + + _coordinate + (8, 8) + + + _rotation + 0 + + + generate_options + qt_gui + + + hier_block_src_path + .: + + + id + iq_pid_vco + + + max_nouts + 0 + + + qt_qss_theme + + + + realtime_scheduling + + + + run_command + {python} -u {filename} + + + run_options + prompt + + + run + True + + + thread_safe_setters + + + + title + + + + + variable_qtgui_range + + comment + + + + value + 0 + + + _enabled + True + + + _coordinate + (216, 8) + + + gui_hint + 1, 1 + + + _rotation + 0 + + + id + adc1_offset + + + label + adc1_offset + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + -2**13 + + + step + 1 + + + stop + 2**13-1 + + + rangeType + int + + + widget + counter_slider + + + + variable + + comment + + + + _enabled + True + + + _coordinate + (8, 104) + + + _rotation + 0 + + + id + addr + + + value + "192.168.0.201" + + + + variable_qtgui_range + + comment + + + + value + 0 + + + _enabled + True + + + _coordinate + (400, 8) + + + gui_hint + 1, 2 + + + _rotation + 0 + + + id + dac2_offset + + + label + dac2_offset + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + -2**13 + + + step + 1 + + + stop + 2**13-1 + + + rangeType + int + + + widget + counter_slider + + + + variable_qtgui_range + + comment + + + + value + 0 + + + _enabled + True + + + _coordinate + (704, 8) + + + gui_hint + 1, 3 + + + _rotation + 0 + + + id + dds_ampl + + + label + dds_ampl + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + 0 + + + step + 1 + + + stop + 2**13-1 + + + rangeType + int + + + widget + counter_slider + + + + variable_qtgui_range + + comment + + + + value + 0 + + + _enabled + True + + + _coordinate + (696, 668) + + + gui_hint + 4, 3 + + + _rotation + 0 + + + id + dds_f0 + + + label + dds_f0 + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + 0 + + + step + 1 + + + stop + 60000000 + + + rangeType + int + + + widget + counter_slider + + + + variable_qtgui_range + + comment + + + + value + 0 + + + _enabled + True + + + _coordinate + (696, 236) + + + gui_hint + 2, 3 + + + _rotation + 0 + + + id + dds_nco + + + label + dds_nco + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + 0 + + + step + 1 + + + stop + 60000000 + + + rangeType + int + + + widget + counter_slider + + + + variable_qtgui_range + + comment + + + + value + 0 + + + _enabled + True + + + _coordinate + (704, 460) + + + gui_hint + 3, 3 + + + _rotation + 0 + + + id + dds_offset + + + label + dds_offset + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + -2**13 + + + step + 1 + + + stop + 2**13-1 + + + rangeType + int + + + widget + counter_slider + + + + variable_qtgui_check_box + + comment + + + + value + 1 + + + _enabled + True + + + false + 0 + + + _coordinate + (960, 12) + + + gui_hint + 1, 4 + + + _rotation + 0 + + + id + dds_pinc_sw + + + label + dds_pinc_sw + + + true + 1 + + + type + int + + + + variable_qtgui_check_box + + comment + + + + value + 1 + + + _enabled + True + + + false + 0 + + + _coordinate + (952, 204) + + + gui_hint + 2, 4 + + + _rotation + 0 + + + id + dds_poff_sw + + + label + dds_poff_sw + + + true + 1 + + + type + int + + + + variable_qtgui_range + + comment + + + + value + 0 + + + _enabled + True + + + _coordinate + (672, 908) + + + gui_hint + 5, 3 + + + _rotation + 0 + + + id + dds_range + + + label + dds_range + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + -2**13 + + + step + 1 + + + stop + 2**13-1 + + + rangeType + int + + + widget + counter_slider + + + + variable_qtgui_range + + comment + + + + value + 0 + + + _enabled + True + + + _coordinate + (952, 476) + + + gui_hint + 3, 4 + + + _rotation + 0 + + + id + demod_nco + + + label + demod_nco + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + 0 + + + step + 1 + + + stop + 60000000 + + + rangeType + int + + + widget + counter_slider + + + + variable_qtgui_range + + comment + + + + value + 0 + + + _enabled + True + + + _coordinate + (192, 668) + + + gui_hint + 4, 1 + + + _rotation + 0 + + + id + pid_kd + + + label + pid_kd + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + 0 + + + step + 1 + + + stop + 2**13-1 + + + rangeType + int + + + widget + counter_slider + + + + variable_qtgui_range + + comment + + + + value + 0 + + + _enabled + True + + + _coordinate + (192, 460) + + + gui_hint + 3, 1 + + + _rotation + 0 + + + id + pid_ki + + + label + pid_ki + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + 0 + + + step + 1 + + + stop + 2**13-1 + + + rangeType + int + + + widget + counter_slider + + + + variable_qtgui_range + + comment + + + + value + 0 + + + _enabled + True + + + _coordinate + (200, 236) + + + gui_hint + 2, 1 + + + _rotation + 0 + + + id + pid_kp + + + label + pid_kp + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + 0 + + + step + 1 + + + stop + 2**13-1 + + + rangeType + int + + + widget + counter_slider + + + + variable_qtgui_push_button + + comment + + + + value + 0 + + + _enabled + True + + + _coordinate + (392, 684) + + + gui_hint + 4, 2 + + + _rotation + 0 + + + id + pid_rst_int + + + label + pid_rst_int + + + pressed + 1 + + + released + 0 + + + type + int + + + + variable_qtgui_range + + comment + + + + value + 0 + + + _enabled + True + + + _coordinate + (400, 236) + + + gui_hint + 2, 2 + + + _rotation + 0 + + + id + pid_setpoint + + + label + pid_setpoint + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + -2**13 + + + step + 1 + + + stop + 2**13-1 + + + rangeType + int + + + widget + counter_slider + + + + variable_qtgui_check_box + + comment + + + + value + 0 + + + _enabled + True + + + false + 0 + + + _coordinate + (400, 468) + + + gui_hint + 3, 2 + + + _rotation + 0 + + + id + pid_sign + + + label + pid_sign + + + true + 1 + + + type + int + + + + variable + + comment + + + + _enabled + True + + + _coordinate + (8, 176) + + + _rotation + 0 + + + id + port + + + value + 1001 + + + + add_const_set_offset + + addr + addr + + + alias + + + + comment + + + + const + adc1_offset + + + device + /dev/adc1_offset + + + _enabled + True + + + _coordinate + (200, 144) + + + _rotation + 0 + + + id + add_const_set_offset_0_0_0 + + + port + port + + + + add_const_set_offset + + addr + addr + + + alias + + + + comment + + + + const + dac2_offset + + + device + /dev/dac2_offset + + + _enabled + True + + + _coordinate + (384, 144) + + + _rotation + 0 + + + id + add_const_set_offset_0_0_0_0 + + + port + port + + + + add_const_set_offset + + addr + addr + + + alias + + + + comment + + + + const + dds_ampl + + + device + /dev/dds_ampl + + + _enabled + True + + + _coordinate + (688, 144) + + + _rotation + 0 + + + id + add_const_set_offset_0_0_0_0_0 + + + port + port + + + + add_const_set_offset + + addr + addr + + + alias + + + + comment + + + + const + dds_offset + + + device + /dev/dds_offset + + + _enabled + True + + + _coordinate + (688, 596) + + + _rotation + 0 + + + id + add_const_set_offset_0_0_0_0_1 + + + port + port + + + + add_const_set_offset + + addr + addr + + + alias + + + + comment + + + + const + int(dds_f0/(125e6/2**32)) + + + device + /dev/dds_f0 + + + _enabled + True + + + _coordinate + (680, 804) + + + _rotation + 0 + + + id + add_const_set_offset_0_0_0_0_1_0 + + + port + port + + + + add_const_set_offset + + addr + addr + + + alias + + + + comment + + + + const + dds_range + + + device + /dev/dds_range + + + _enabled + True + + + _coordinate + (664, 1036) + + + _rotation + 0 + + + id + add_const_set_offset_0_0_0_0_1_0_0 + + + port + port + + + + add_const_set_offset + + addr + addr + + + alias + + + + comment + + + + const + pid_setpoint + + + device + /dev/pid_setpoint + + + _enabled + True + + + _coordinate + (384, 372) + + + _rotation + 0 + + + id + add_const_set_offset_0_0_0_1 + + + port + port + + + + add_const_set_offset + + addr + addr + + + alias + + + + comment + + + + const + pid_kp + + + device + /dev/pid_kp + + + _enabled + True + + + _coordinate + (184, 372) + + + _rotation + 0 + + + id + add_const_set_offset_0_0_0_1_0 + + + port + port + + + + add_const_set_offset + + addr + addr + + + alias + + + + comment + + + + const + pid_ki + + + device + /dev/pid_ki + + + _enabled + True + + + _coordinate + (176, 596) + + + _rotation + 0 + + + id + add_const_set_offset_0_0_0_1_0_0 + + + port + port + + + + add_const_set_offset + + addr + addr + + + alias + + + + comment + + + + const + pid_kd + + + device + /dev/pid_kd + + + _enabled + True + + + _coordinate + (176, 804) + + + _rotation + 0 + + + id + add_const_set_offset_0_0_0_1_0_0_0 + + + port + port + + + + add_const_set_offset + + addr + addr + + + alias + + + + comment + + + + const + pid_sign + + + device + /dev/pid_sign + + + _enabled + True + + + _coordinate + (392, 596) + + + _rotation + 0 + + + id + add_const_set_offset_0_0_0_1_0_0_0_0 + + + port + port + + + + add_const_set_offset + + addr + addr + + + alias + + + + comment + + + + const + pid_rst_int + + + device + /dev/pid_rst_int + + + _enabled + True + + + _coordinate + (392, 804) + + + _rotation + 0 + + + id + add_const_set_offset_0_0_0_1_0_0_0_0_0 + + + port + port + + + + nco_counter_send_conf + + acc_size + 32 + + + addr + addr + + + alias + + + + comment + + + + device + /dev/dds_nco + + + _enabled + True + + + freq_dds + dds_nco + + + freq_ref + 125000000 + + + _coordinate + (672, 344) + + + _rotation + 0 + + + id + nco_counter_send_conf_0 + + + offset + 0 + + + pinc_sw + dds_pinc_sw + + + poff_sw + dds_poff_sw + + + port + port + + + + nco_counter_send_conf + + acc_size + 32 + + + addr + addr + + + alias + + + + comment + + + + device + /dev/demod_nco + + + _enabled + True + + + freq_dds + demod_nco + + + freq_ref + 125000000 + + + _coordinate + (928, 576) + + + _rotation + 0 + + + id + nco_counter_send_conf_0_0 + + + offset + 0 + + + pinc_sw + 1 + + + poff_sw + 1 + + + port + port + + + diff --git a/redpitaya/client/iq_pid_vco.py b/redpitaya/client/iq_pid_vco.py new file mode 100755 index 0000000..73c1071 --- /dev/null +++ b/redpitaya/client/iq_pid_vco.py @@ -0,0 +1,404 @@ +#!/usr/bin/env python2 +# -*- coding: utf-8 -*- +################################################## +# GNU Radio Python Flow Graph +# Title: Iq Pid Vco +# Generated: Fri Apr 21 18:49:00 2017 +################################################## + +if __name__ == '__main__': + import ctypes + import sys + if sys.platform.startswith('linux'): + try: + x11 = ctypes.cdll.LoadLibrary('libX11.so') + x11.XInitThreads() + except: + print "Warning: failed to XInitThreads()" + +from PyQt4 import Qt +from gnuradio import eng_notation +from gnuradio import gr +from gnuradio.eng_option import eng_option +from gnuradio.filter import firdes +from gnuradio.qtgui import Range, RangeWidget +from optparse import OptionParser +import redpitaya_gnuradio +import sys + + +class iq_pid_vco(gr.top_block, Qt.QWidget): + + def __init__(self): + gr.top_block.__init__(self, "Iq Pid Vco") + Qt.QWidget.__init__(self) + self.setWindowTitle("Iq Pid Vco") + try: + self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc')) + except: + pass + self.top_scroll_layout = Qt.QVBoxLayout() + self.setLayout(self.top_scroll_layout) + self.top_scroll = Qt.QScrollArea() + self.top_scroll.setFrameStyle(Qt.QFrame.NoFrame) + self.top_scroll_layout.addWidget(self.top_scroll) + self.top_scroll.setWidgetResizable(True) + self.top_widget = Qt.QWidget() + self.top_scroll.setWidget(self.top_widget) + self.top_layout = Qt.QVBoxLayout(self.top_widget) + self.top_grid_layout = Qt.QGridLayout() + self.top_layout.addLayout(self.top_grid_layout) + + self.settings = Qt.QSettings("GNU Radio", "iq_pid_vco") + self.restoreGeometry(self.settings.value("geometry").toByteArray()) + + ################################################## + # Variables + ################################################## + self.port = port = 1001 + self.pid_sign = pid_sign = 0 + self.pid_setpoint = pid_setpoint = 0 + self.pid_rst_int = pid_rst_int = 0 + self.pid_kp = pid_kp = 0 + self.pid_ki = pid_ki = 0 + self.pid_kd = pid_kd = 0 + self.demod_nco = demod_nco = 0 + self.dds_range = dds_range = 0 + self.dds_poff_sw = dds_poff_sw = 1 + self.dds_pinc_sw = dds_pinc_sw = 1 + self.dds_offset = dds_offset = 0 + self.dds_nco = dds_nco = 0 + self.dds_f0 = dds_f0 = 0 + self.dds_ampl = dds_ampl = 0 + self.dac2_offset = dac2_offset = 0 + self.addr = addr = "192.168.0.201" + self.adc1_offset = adc1_offset = 0 + + ################################################## + # Blocks + ################################################## + _pid_sign_check_box = Qt.QCheckBox('pid_sign') + self._pid_sign_choices = {True: 1, False: 0} + self._pid_sign_choices_inv = dict((v,k) for k,v in self._pid_sign_choices.iteritems()) + self._pid_sign_callback = lambda i: Qt.QMetaObject.invokeMethod(_pid_sign_check_box, "setChecked", Qt.Q_ARG("bool", self._pid_sign_choices_inv[i])) + self._pid_sign_callback(self.pid_sign) + _pid_sign_check_box.stateChanged.connect(lambda i: self.set_pid_sign(self._pid_sign_choices[bool(i)])) + self.top_grid_layout.addWidget(_pid_sign_check_box, 3, 2) + self._pid_setpoint_range = Range(-2**13, 2**13-1, 1, 0, 200) + self._pid_setpoint_win = RangeWidget(self._pid_setpoint_range, self.set_pid_setpoint, 'pid_setpoint', "counter_slider", int) + self.top_grid_layout.addWidget(self._pid_setpoint_win, 2, 2) + _pid_rst_int_push_button = Qt.QPushButton('pid_rst_int') + self._pid_rst_int_choices = {'Pressed': 1, 'Released': 0} + _pid_rst_int_push_button.pressed.connect(lambda: self.set_pid_rst_int(self._pid_rst_int_choices['Pressed'])) + _pid_rst_int_push_button.released.connect(lambda: self.set_pid_rst_int(self._pid_rst_int_choices['Released'])) + self.top_grid_layout.addWidget(_pid_rst_int_push_button, 4, 2) + self._pid_kp_range = Range(0, 2**13-1, 1, 0, 200) + self._pid_kp_win = RangeWidget(self._pid_kp_range, self.set_pid_kp, 'pid_kp', "counter_slider", int) + self.top_grid_layout.addWidget(self._pid_kp_win, 2, 1) + self._pid_ki_range = Range(0, 2**13-1, 1, 0, 200) + self._pid_ki_win = RangeWidget(self._pid_ki_range, self.set_pid_ki, 'pid_ki', "counter_slider", int) + self.top_grid_layout.addWidget(self._pid_ki_win, 3, 1) + self._pid_kd_range = Range(0, 2**13-1, 1, 0, 200) + self._pid_kd_win = RangeWidget(self._pid_kd_range, self.set_pid_kd, 'pid_kd', "counter_slider", int) + self.top_grid_layout.addWidget(self._pid_kd_win, 4, 1) + self._demod_nco_range = Range(0, 60000000, 1, 0, 200) + self._demod_nco_win = RangeWidget(self._demod_nco_range, self.set_demod_nco, 'demod_nco', "counter_slider", int) + self.top_grid_layout.addWidget(self._demod_nco_win, 3, 4) + self._dds_range_range = Range(-2**13, 2**13-1, 1, 0, 200) + self._dds_range_win = RangeWidget(self._dds_range_range, self.set_dds_range, 'dds_range', "counter_slider", int) + self.top_grid_layout.addWidget(self._dds_range_win, 5, 3) + _dds_poff_sw_check_box = Qt.QCheckBox('dds_poff_sw') + self._dds_poff_sw_choices = {True: 1, False: 0} + self._dds_poff_sw_choices_inv = dict((v,k) for k,v in self._dds_poff_sw_choices.iteritems()) + self._dds_poff_sw_callback = lambda i: Qt.QMetaObject.invokeMethod(_dds_poff_sw_check_box, "setChecked", Qt.Q_ARG("bool", self._dds_poff_sw_choices_inv[i])) + self._dds_poff_sw_callback(self.dds_poff_sw) + _dds_poff_sw_check_box.stateChanged.connect(lambda i: self.set_dds_poff_sw(self._dds_poff_sw_choices[bool(i)])) + self.top_grid_layout.addWidget(_dds_poff_sw_check_box, 2, 4) + _dds_pinc_sw_check_box = Qt.QCheckBox('dds_pinc_sw') + self._dds_pinc_sw_choices = {True: 1, False: 0} + self._dds_pinc_sw_choices_inv = dict((v,k) for k,v in self._dds_pinc_sw_choices.iteritems()) + self._dds_pinc_sw_callback = lambda i: Qt.QMetaObject.invokeMethod(_dds_pinc_sw_check_box, "setChecked", Qt.Q_ARG("bool", self._dds_pinc_sw_choices_inv[i])) + self._dds_pinc_sw_callback(self.dds_pinc_sw) + _dds_pinc_sw_check_box.stateChanged.connect(lambda i: self.set_dds_pinc_sw(self._dds_pinc_sw_choices[bool(i)])) + self.top_grid_layout.addWidget(_dds_pinc_sw_check_box, 1, 4) + self._dds_offset_range = Range(-2**13, 2**13-1, 1, 0, 200) + self._dds_offset_win = RangeWidget(self._dds_offset_range, self.set_dds_offset, 'dds_offset', "counter_slider", int) + self.top_grid_layout.addWidget(self._dds_offset_win, 3, 3) + self._dds_nco_range = Range(0, 60000000, 1, 0, 200) + self._dds_nco_win = RangeWidget(self._dds_nco_range, self.set_dds_nco, 'dds_nco', "counter_slider", int) + self.top_grid_layout.addWidget(self._dds_nco_win, 2, 3) + self._dds_f0_range = Range(0, 60000000, 1, 0, 200) + self._dds_f0_win = RangeWidget(self._dds_f0_range, self.set_dds_f0, 'dds_f0', "counter_slider", int) + self.top_grid_layout.addWidget(self._dds_f0_win, 4, 3) + self._dds_ampl_range = Range(0, 2**13-1, 1, 0, 200) + self._dds_ampl_win = RangeWidget(self._dds_ampl_range, self.set_dds_ampl, 'dds_ampl', "counter_slider", int) + self.top_grid_layout.addWidget(self._dds_ampl_win, 1, 3) + self._dac2_offset_range = Range(-2**13, 2**13-1, 1, 0, 200) + self._dac2_offset_win = RangeWidget(self._dac2_offset_range, self.set_dac2_offset, 'dac2_offset', "counter_slider", int) + self.top_grid_layout.addWidget(self._dac2_offset_win, 1, 2) + self._adc1_offset_range = Range(-2**13, 2**13-1, 1, 0, 200) + self._adc1_offset_win = RangeWidget(self._adc1_offset_range, self.set_adc1_offset, 'adc1_offset', "counter_slider", int) + self.top_grid_layout.addWidget(self._adc1_offset_win, 1, 1) + self.nco_counter_send_conf_0_0 = redpitaya_gnuradio.nco_counter_send_conf( + addr=addr, + port=port, + device='/dev/demod_nco', + freq_ref=125000000, + freq_dds=demod_nco, + acc_size=32, + offset=0, + pinc_sw=1, + poff_sw=1, + ) + + self.nco_counter_send_conf_0 = redpitaya_gnuradio.nco_counter_send_conf( + addr=addr, + port=port, + device='/dev/dds_nco', + freq_ref=125000000, + freq_dds=dds_nco, + acc_size=32, + offset=0, + pinc_sw=dds_pinc_sw, + poff_sw=dds_poff_sw, + ) + + self.add_const_set_offset_0_0_0_1_0_0_0_0_0 = redpitaya_gnuradio.add_const_set_offset( + addr=addr, + port=port, + device='/dev/pid_rst_int', + const=pid_rst_int, + ) + + self.add_const_set_offset_0_0_0_1_0_0_0_0 = redpitaya_gnuradio.add_const_set_offset( + addr=addr, + port=port, + device='/dev/pid_sign', + const=pid_sign, + ) + + self.add_const_set_offset_0_0_0_1_0_0_0 = redpitaya_gnuradio.add_const_set_offset( + addr=addr, + port=port, + device='/dev/pid_kd', + const=pid_kd, + ) + + self.add_const_set_offset_0_0_0_1_0_0 = redpitaya_gnuradio.add_const_set_offset( + addr=addr, + port=port, + device='/dev/pid_ki', + const=pid_ki, + ) + + self.add_const_set_offset_0_0_0_1_0 = redpitaya_gnuradio.add_const_set_offset( + addr=addr, + port=port, + device='/dev/pid_kp', + const=pid_kp, + ) + + self.add_const_set_offset_0_0_0_1 = redpitaya_gnuradio.add_const_set_offset( + addr=addr, + port=port, + device='/dev/pid_setpoint', + const=pid_setpoint, + ) + + self.add_const_set_offset_0_0_0_0_1_0_0 = redpitaya_gnuradio.add_const_set_offset( + addr=addr, + port=port, + device='/dev/dds_range', + const=dds_range, + ) + + self.add_const_set_offset_0_0_0_0_1_0 = redpitaya_gnuradio.add_const_set_offset( + addr=addr, + port=port, + device='/dev/dds_f0', + const=int(dds_f0/(125e6/2**32)), + ) + + self.add_const_set_offset_0_0_0_0_1 = redpitaya_gnuradio.add_const_set_offset( + addr=addr, + port=port, + device='/dev/dds_offset', + const=dds_offset, + ) + + self.add_const_set_offset_0_0_0_0_0 = redpitaya_gnuradio.add_const_set_offset( + addr=addr, + port=port, + device='/dev/dds_ampl', + const=dds_ampl, + ) + + self.add_const_set_offset_0_0_0_0 = redpitaya_gnuradio.add_const_set_offset( + addr=addr, + port=port, + device='/dev/dac2_offset', + const=dac2_offset, + ) + + self.add_const_set_offset_0_0_0 = redpitaya_gnuradio.add_const_set_offset( + addr=addr, + port=port, + device='/dev/adc1_offset', + const=adc1_offset, + ) + + + def closeEvent(self, event): + self.settings = Qt.QSettings("GNU Radio", "iq_pid_vco") + self.settings.setValue("geometry", self.saveGeometry()) + event.accept() + + def get_port(self): + return self.port + + def set_port(self, port): + self.port = port + + def get_pid_sign(self): + return self.pid_sign + + def set_pid_sign(self, pid_sign): + self.pid_sign = pid_sign + self._pid_sign_callback(self.pid_sign) + self.add_const_set_offset_0_0_0_1_0_0_0_0.set_const(device='/dev/pid_sign', const=self.pid_sign) + + def get_pid_setpoint(self): + return self.pid_setpoint + + def set_pid_setpoint(self, pid_setpoint): + self.pid_setpoint = pid_setpoint + self.add_const_set_offset_0_0_0_1.set_const(device='/dev/pid_setpoint', const=self.pid_setpoint) + + def get_pid_rst_int(self): + return self.pid_rst_int + + def set_pid_rst_int(self, pid_rst_int): + self.pid_rst_int = pid_rst_int + self.add_const_set_offset_0_0_0_1_0_0_0_0_0.set_const(device='/dev/pid_rst_int', const=self.pid_rst_int) + + def get_pid_kp(self): + return self.pid_kp + + def set_pid_kp(self, pid_kp): + self.pid_kp = pid_kp + self.add_const_set_offset_0_0_0_1_0.set_const(device='/dev/pid_kp', const=self.pid_kp) + + def get_pid_ki(self): + return self.pid_ki + + def set_pid_ki(self, pid_ki): + self.pid_ki = pid_ki + self.add_const_set_offset_0_0_0_1_0_0.set_const(device='/dev/pid_ki', const=self.pid_ki) + + def get_pid_kd(self): + return self.pid_kd + + def set_pid_kd(self, pid_kd): + self.pid_kd = pid_kd + self.add_const_set_offset_0_0_0_1_0_0_0.set_const(device='/dev/pid_kd', const=self.pid_kd) + + def get_demod_nco(self): + return self.demod_nco + + def set_demod_nco(self, demod_nco): + self.demod_nco = demod_nco + self.nco_counter_send_conf_0_0.set_nco(device='/dev/demod_nco', freq_ref=125000000, freq_dds=self.demod_nco, acc_size=32, offset=0, pinc_sw=1, poff_sw=1) + + def get_dds_range(self): + return self.dds_range + + def set_dds_range(self, dds_range): + self.dds_range = dds_range + self.add_const_set_offset_0_0_0_0_1_0_0.set_const(device='/dev/dds_range', const=self.dds_range) + + def get_dds_poff_sw(self): + return self.dds_poff_sw + + def set_dds_poff_sw(self, dds_poff_sw): + self.dds_poff_sw = dds_poff_sw + self._dds_poff_sw_callback(self.dds_poff_sw) + self.nco_counter_send_conf_0.set_nco(device='/dev/dds_nco', freq_ref=125000000, freq_dds=self.dds_nco, acc_size=32, offset=0, pinc_sw=self.dds_pinc_sw, poff_sw=self.dds_poff_sw) + + def get_dds_pinc_sw(self): + return self.dds_pinc_sw + + def set_dds_pinc_sw(self, dds_pinc_sw): + self.dds_pinc_sw = dds_pinc_sw + self._dds_pinc_sw_callback(self.dds_pinc_sw) + self.nco_counter_send_conf_0.set_nco(device='/dev/dds_nco', freq_ref=125000000, freq_dds=self.dds_nco, acc_size=32, offset=0, pinc_sw=self.dds_pinc_sw, poff_sw=self.dds_poff_sw) + + def get_dds_offset(self): + return self.dds_offset + + def set_dds_offset(self, dds_offset): + self.dds_offset = dds_offset + self.add_const_set_offset_0_0_0_0_1.set_const(device='/dev/dds_offset', const=self.dds_offset) + + def get_dds_nco(self): + return self.dds_nco + + def set_dds_nco(self, dds_nco): + self.dds_nco = dds_nco + self.nco_counter_send_conf_0.set_nco(device='/dev/dds_nco', freq_ref=125000000, freq_dds=self.dds_nco, acc_size=32, offset=0, pinc_sw=self.dds_pinc_sw, poff_sw=self.dds_poff_sw) + + def get_dds_f0(self): + return self.dds_f0 + + def set_dds_f0(self, dds_f0): + self.dds_f0 = dds_f0 + self.add_const_set_offset_0_0_0_0_1_0.set_const(device='/dev/dds_f0', const=int(self.dds_f0/(125e6/2**32))) + + def get_dds_ampl(self): + return self.dds_ampl + + def set_dds_ampl(self, dds_ampl): + self.dds_ampl = dds_ampl + self.add_const_set_offset_0_0_0_0_0.set_const(device='/dev/dds_ampl', const=self.dds_ampl) + + def get_dac2_offset(self): + return self.dac2_offset + + def set_dac2_offset(self, dac2_offset): + self.dac2_offset = dac2_offset + self.add_const_set_offset_0_0_0_0.set_const(device='/dev/dac2_offset', const=self.dac2_offset) + + def get_addr(self): + return self.addr + + def set_addr(self, addr): + self.addr = addr + + def get_adc1_offset(self): + return self.adc1_offset + + def set_adc1_offset(self, adc1_offset): + self.adc1_offset = adc1_offset + self.add_const_set_offset_0_0_0.set_const(device='/dev/adc1_offset', const=self.adc1_offset) + + +def main(top_block_cls=iq_pid_vco, options=None): + + from distutils.version import StrictVersion + if StrictVersion(Qt.qVersion()) >= StrictVersion("4.5.0"): + style = gr.prefs().get_string('qtgui', 'style', 'raster') + Qt.QApplication.setGraphicsSystem(style) + qapp = Qt.QApplication(sys.argv) + + tb = top_block_cls() + tb.start() + tb.show() + + def quitting(): + tb.stop() + tb.wait() + qapp.connect(qapp, Qt.SIGNAL("aboutToQuit()"), quitting) + qapp.exec_() + + +if __name__ == '__main__': + main()