aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--notebooks/BER .ipynb171
-rw-r--r--notebooks/FIR_mehrere_V2.ipynb23
-rw-r--r--notebooks/FrameSynchronization.ipynb4
-rw-r--r--src/gr-fadingui/grc/CMakeLists.txt3
-rw-r--r--src/gr-fadingui/grc/fadingui_ber.block.yml37
-rw-r--r--src/gr-fadingui/python/CMakeLists.txt4
-rw-r--r--src/gr-fadingui/python/__init__.py1
-rw-r--r--src/gr-fadingui/python/ber.py55
-rwxr-xr-xsrc/gr-fadingui/python/qa_ber.py41
-rw-r--r--tests/BER/Bit_error.grc98
-rwxr-xr-xtests/BER/Test_Bit_Errorrate.py143
-rwxr-xr-xtests/correlator/correlator.py4
12 files changed, 577 insertions, 7 deletions
diff --git a/notebooks/BER .ipynb b/notebooks/BER .ipynb
new file mode 100644
index 0000000..8e0a6f4
--- /dev/null
+++ b/notebooks/BER .ipynb
@@ -0,0 +1,171 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "id": "ec5412d2",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import numpy as np \n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "id": "be1f0d01",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([0, 1])"
+ ]
+ },
+ "execution_count": 2,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "byte1= np.array([0x12, 0xe3, 0x9b])\n",
+ "byte2 = np.array([0x12, 0xe3, 0x9c])\n",
+ "b1 = np.array([0,0])\n",
+ "b2 = np.array([0,1])\n",
+ "b1\n",
+ "b2"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "id": "c256a3d0",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[0 0 7]\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ "array([0, 1], dtype=uint8)"
+ ]
+ },
+ "execution_count": 6,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "v = byte1^byte2\n",
+ "v1 = np.array (v,dtype = np.uint8)\n",
+ "print(v1)\n",
+ "v2 = b1^b2\n",
+ "v2 = np.array (v2,dtype = np.uint8)\n",
+ "v2"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "id": "227f0142",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1]\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ "array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], dtype=uint8)"
+ ]
+ },
+ "execution_count": 7,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "z = np.unpackbits(v1)\n",
+ "print(z)\n",
+ "z1 = np.unpackbits(v2)\n",
+ "z1"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "id": "092d8dae",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "3"
+ ]
+ },
+ "execution_count": 5,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "a = sum(z)\n",
+ "a"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "0ac2e304",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "034142b6",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "f203fbce",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3 (ipykernel)",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.9.2"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/notebooks/FIR_mehrere_V2.ipynb b/notebooks/FIR_mehrere_V2.ipynb
index 6fbcf3b..9fdea2e 100644
--- a/notebooks/FIR_mehrere_V2.ipynb
+++ b/notebooks/FIR_mehrere_V2.ipynb
@@ -2,6 +2,7 @@
"cells": [
{
"cell_type": "markdown",
+ "id": "c377e559",
"metadata": {},
"source": [
"# FIR Filter Parameters"
@@ -10,6 +11,7 @@
{
"cell_type": "code",
"execution_count": 1,
+ "id": "f14e4383",
"metadata": {},
"outputs": [],
"source": [
@@ -21,6 +23,7 @@
{
"cell_type": "code",
"execution_count": 2,
+ "id": "e8e2130b",
"metadata": {},
"outputs": [],
"source": [
@@ -31,6 +34,7 @@
},
{
"cell_type": "markdown",
+ "id": "d39d7698",
"metadata": {},
"source": [
"# Dealy Window\n"
@@ -39,6 +43,7 @@
{
"cell_type": "code",
"execution_count": 3,
+ "id": "bd005466",
"metadata": {},
"outputs": [
{
@@ -66,6 +71,7 @@
{
"cell_type": "code",
"execution_count": 4,
+ "id": "e48a4dbd",
"metadata": {},
"outputs": [
{
@@ -96,6 +102,7 @@
},
{
"cell_type": "markdown",
+ "id": "0ddadf5d",
"metadata": {},
"source": [
"# FIR"
@@ -104,6 +111,7 @@
{
"cell_type": "code",
"execution_count": 5,
+ "id": "bd6d61b3",
"metadata": {},
"outputs": [],
"source": [
@@ -119,6 +127,7 @@
{
"cell_type": "code",
"execution_count": 6,
+ "id": "ef41b7d8",
"metadata": {},
"outputs": [],
"source": [
@@ -129,6 +138,7 @@
{
"cell_type": "code",
"execution_count": 7,
+ "id": "fea2ae61",
"metadata": {},
"outputs": [
{
@@ -166,6 +176,7 @@
{
"cell_type": "code",
"execution_count": 8,
+ "id": "a65b4b37",
"metadata": {},
"outputs": [
{
@@ -186,6 +197,7 @@
{
"cell_type": "code",
"execution_count": 9,
+ "id": "ce9b4835",
"metadata": {},
"outputs": [
{
@@ -206,6 +218,7 @@
{
"cell_type": "code",
"execution_count": 10,
+ "id": "fc67f0a5",
"metadata": {},
"outputs": [
{
@@ -226,6 +239,7 @@
},
{
"cell_type": "markdown",
+ "id": "35e1aaef",
"metadata": {},
"source": [
"# FIR mit Delay \n"
@@ -234,6 +248,7 @@
{
"cell_type": "code",
"execution_count": 58,
+ "id": "d8986bc9",
"metadata": {},
"outputs": [
{
@@ -302,6 +317,7 @@
{
"cell_type": "code",
"execution_count": 25,
+ "id": "d39528be",
"metadata": {},
"outputs": [
{
@@ -356,6 +372,7 @@
{
"cell_type": "code",
"execution_count": 26,
+ "id": "b6f61760",
"metadata": {},
"outputs": [
{
@@ -429,6 +446,7 @@
{
"cell_type": "code",
"execution_count": 14,
+ "id": "52c30c0f",
"metadata": {},
"outputs": [
{
@@ -450,6 +468,7 @@
{
"cell_type": "code",
"execution_count": null,
+ "id": "356ce18c",
"metadata": {},
"outputs": [],
"source": []
@@ -457,7 +476,7 @@
],
"metadata": {
"kernelspec": {
- "display_name": "Python 3",
+ "display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
@@ -471,7 +490,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.8.5"
+ "version": "3.9.2"
}
},
"nbformat": 4,
diff --git a/notebooks/FrameSynchronization.ipynb b/notebooks/FrameSynchronization.ipynb
index 911ddd6..27e615c 100644
--- a/notebooks/FrameSynchronization.ipynb
+++ b/notebooks/FrameSynchronization.ipynb
@@ -216,7 +216,7 @@
],
"metadata": {
"kernelspec": {
- "display_name": "Python 3",
+ "display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
@@ -230,7 +230,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.8.11"
+ "version": "3.9.2"
}
},
"nbformat": 4,
diff --git a/src/gr-fadingui/grc/CMakeLists.txt b/src/gr-fadingui/grc/CMakeLists.txt
index d5f23a6..297ae8d 100644
--- a/src/gr-fadingui/grc/CMakeLists.txt
+++ b/src/gr-fadingui/grc/CMakeLists.txt
@@ -22,5 +22,6 @@ install(FILES
fadingui_dearpygui_sink.block.yml
fadingui_deframer.block.yml
fadingui_frame_obj.block.yml
- fadingui_multipath_fading.block.yml DESTINATION share/gnuradio/grc/blocks
+ fadingui_multipath_fading.block.yml
+ fadingui_ber.block.yml DESTINATION share/gnuradio/grc/blocks
)
diff --git a/src/gr-fadingui/grc/fadingui_ber.block.yml b/src/gr-fadingui/grc/fadingui_ber.block.yml
new file mode 100644
index 0000000..3383df5
--- /dev/null
+++ b/src/gr-fadingui/grc/fadingui_ber.block.yml
@@ -0,0 +1,37 @@
+id: fadingui_ber
+label: BER
+category: '[fadingui]'
+
+templates:
+ imports: import fadingui
+ make: fadingui.ber(vgl=${vgl})
+
+# Make one 'parameters' list entry for every parameter you want settable from the GUI.
+# Keys include:
+# * id (makes the value accessible as \$keyname, e.g. in the make entry)
+# * label (label shown in the GUI)
+# * dtype (e.g. int, float, complex, byte, short, xxx_vector, ...)
+parameters:
+ - id: vgl
+ label: Vergleichsparameter
+ dtype: raw
+# - id: ...
+# label: ...
+# dtype: ...
+
+# Make one 'inputs' list entry per input and one 'outputs' list entry per output.
+# Keys include:
+# * label (an identifier for the GUI)
+# * domain (optional - stream or message. Default is stream)
+# * dtype (e.g. int, float, complex, byte, short, xxx_vector, ...)
+# * vlen (optional - data stream vector length. Default is 1)
+# * optional (optional - set to 1 for optional inputs. Default is 0)
+inputs:
+- label: in
+ domain: stream
+ dtype: byte
+
+
+# 'file_format' specifies the version of the GRC yml format used in the file
+# and should usually not be changed.
+file_format: 1
diff --git a/src/gr-fadingui/python/CMakeLists.txt b/src/gr-fadingui/python/CMakeLists.txt
index eb0e7cc..e04eb5b 100644
--- a/src/gr-fadingui/python/CMakeLists.txt
+++ b/src/gr-fadingui/python/CMakeLists.txt
@@ -37,7 +37,8 @@ GR_PYTHON_INSTALL(
dearpygui_sink.py
deframer.py
frame_obj.py
- multipath_fading.py DESTINATION ${GR_PYTHON_DIR}/fadingui
+ multipath_fading.py
+ ber.py DESTINATION ${GR_PYTHON_DIR}/fadingui
)
########################################################################
@@ -48,3 +49,4 @@ include(GrTest)
set(GR_TEST_TARGET_DEPS gnuradio-fadingui)
set(GR_TEST_PYTHON_DIRS ${CMAKE_BINARY_DIR}/swig)
GR_ADD_TEST(qa_multipath_fading ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_multipath_fading.py)
+GR_ADD_TEST(qa_ber ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_ber.py)
diff --git a/src/gr-fadingui/python/__init__.py b/src/gr-fadingui/python/__init__.py
index dba999e..9fe45d5 100644
--- a/src/gr-fadingui/python/__init__.py
+++ b/src/gr-fadingui/python/__init__.py
@@ -38,5 +38,6 @@ from .dearpygui_sink import dearpygui_sink
from .deframer import deframer
from .frame_obj import frame_obj
from .multipath_fading import multipath_fading
+from .ber import ber
#
diff --git a/src/gr-fadingui/python/ber.py b/src/gr-fadingui/python/ber.py
new file mode 100644
index 0000000..387b75f
--- /dev/null
+++ b/src/gr-fadingui/python/ber.py
@@ -0,0 +1,55 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+#
+# Copyright 2021 Sara Cinzia Halter.
+#
+# This is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# This software is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this software; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+#
+
+
+import numpy as np
+from gnuradio import gr
+
+from fadingui.logger import get_logger
+log = get_logger("ber")
+
+class ber(gr.sync_block):
+ """
+ docstring for block ber
+ """
+ def __init__(self, vgl):
+ gr.sync_block.__init__(self,
+ name="ber",
+ in_sig=[np.byte, ],
+ out_sig=None)
+ self.vgl=vgl
+
+
+
+ def work(self, input_items, output_items):
+ inp = input_items[0]
+ # <+signal processing here+>
+
+ v = self.vgl^inp
+ v_array= np.array(v,dtype = np.uint8)
+
+ ber = sum(np.unpackbits(v_array))
+
+
+ log.debug(ber)
+
+ return len(input_items[0])
+
diff --git a/src/gr-fadingui/python/qa_ber.py b/src/gr-fadingui/python/qa_ber.py
new file mode 100755
index 0000000..8b6d56e
--- /dev/null
+++ b/src/gr-fadingui/python/qa_ber.py
@@ -0,0 +1,41 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+#
+# Copyright 2021 Sara Cinzia Halter.
+#
+# This is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# This software is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this software; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+#
+
+from gnuradio import gr, gr_unittest
+from gnuradio import blocks
+from ber import ber
+
+class qa_ber(gr_unittest.TestCase):
+
+ def setUp(self):
+ self.tb = gr.top_block()
+
+ def tearDown(self):
+ self.tb = None
+
+ def test_001_t(self):
+ # set up fg
+ self.tb.run()
+ # check data
+
+
+if __name__ == '__main__':
+ gr_unittest.run(qa_ber)
diff --git a/tests/BER/Bit_error.grc b/tests/BER/Bit_error.grc
new file mode 100644
index 0000000..04c624b
--- /dev/null
+++ b/tests/BER/Bit_error.grc
@@ -0,0 +1,98 @@
+options:
+ parameters:
+ author: 'Sara Halter '
+ category: '[GRC Hier Blocks]'
+ cmake_opt: ''
+ comment: ''
+ copyright: ''
+ description: ''
+ gen_cmake: 'On'
+ gen_linking: dynamic
+ generate_options: qt_gui
+ hier_block_src_path: '.:'
+ id: Test_Bit_Errorrate
+ max_nouts: '0'
+ output_language: python
+ placement: (0,0)
+ qt_qss_theme: ''
+ realtime_scheduling: ''
+ run: 'True'
+ run_command: '{python} -u {filename}'
+ run_options: prompt
+ sizing_mode: fixed
+ thread_safe_setters: ''
+ title: 'Bit Error Rate test '
+ window_size: ''
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [8, 8]
+ rotation: 0
+ state: enabled
+
+blocks:
+- name: samp_rate
+ id: variable
+ parameters:
+ comment: ''
+ value: '32000'
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [184, 12]
+ rotation: 0
+ state: enabled
+- name: testvec
+ id: variable
+ parameters:
+ comment: ''
+ value: '[31, 53] + [0x12, 0xe3, 0x9b, 0xee, 0x84, 0x23, 0x41, 0xf3]'
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [216, 396.0]
+ rotation: 0
+ state: enabled
+- name: blocks_vector_source_x_0
+ id: blocks_vector_source_x
+ parameters:
+ affinity: ''
+ alias: ''
+ comment: ''
+ maxoutbuf: '0'
+ minoutbuf: '0'
+ repeat: 'True'
+ tags: '[]'
+ type: byte
+ vector: testvec * 1600
+ vlen: '1'
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [216, 276.0]
+ rotation: 0
+ state: enabled
+- name: fadingui_ber_0
+ id: fadingui_ber
+ parameters:
+ affinity: ''
+ alias: ''
+ comment: ''
+ vgl: testvec
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [704, 296.0]
+ rotation: 0
+ state: true
+
+connections:
+- [blocks_vector_source_x_0, '0', fadingui_ber_0, '0']
+
+metadata:
+ file_format: 1
diff --git a/tests/BER/Test_Bit_Errorrate.py b/tests/BER/Test_Bit_Errorrate.py
new file mode 100755
index 0000000..4022997
--- /dev/null
+++ b/tests/BER/Test_Bit_Errorrate.py
@@ -0,0 +1,143 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+#
+# SPDX-License-Identifier: GPL-3.0
+#
+# GNU Radio Python Flow Graph
+# Title: Bit Error Rate test
+# Author: Sara Halter
+# GNU Radio version: 3.8.2.0
+
+from distutils.version import StrictVersion
+
+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 gnuradio import blocks
+from gnuradio import gr
+from gnuradio.filter import firdes
+import sys
+import signal
+from PyQt5 import Qt
+from argparse import ArgumentParser
+from gnuradio.eng_arg import eng_float, intx
+from gnuradio import eng_notation
+import fadingui
+
+from gnuradio import qtgui
+
+class Test_Bit_Errorrate(gr.top_block, Qt.QWidget):
+
+ def __init__(self):
+ gr.top_block.__init__(self, "Bit Error Rate test ")
+ Qt.QWidget.__init__(self)
+ self.setWindowTitle("Bit Error Rate test ")
+ qtgui.util.check_set_qss()
+ 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", "Test_Bit_Errorrate")
+
+ try:
+ if StrictVersion(Qt.qVersion()) < StrictVersion("5.0.0"):
+ self.restoreGeometry(self.settings.value("geometry").toByteArray())
+ else:
+ self.restoreGeometry(self.settings.value("geometry"))
+ except:
+ pass
+
+ ##################################################
+ # Variables
+ ##################################################
+ self.testvec = testvec = [31, 53] + [0x12, 0xe3, 0x9b, 0xee, 0x84, 0x23, 0x41, 0xf3]
+ self.samp_rate = samp_rate = 32000
+
+ ##################################################
+ # Blocks
+ ##################################################
+ self.fadingui_ber_0 = fadingui.ber(vgl=testvec)
+ self.blocks_vector_source_x_0 = blocks.vector_source_b(testvec * 1600, True, 1, [])
+
+
+
+ ##################################################
+ # Connections
+ ##################################################
+ self.connect((self.blocks_vector_source_x_0, 0), (self.fadingui_ber_0, 0))
+
+
+ def closeEvent(self, event):
+ self.settings = Qt.QSettings("GNU Radio", "Test_Bit_Errorrate")
+ self.settings.setValue("geometry", self.saveGeometry())
+ event.accept()
+
+ def get_testvec(self):
+ return self.testvec
+
+ def set_testvec(self, testvec):
+ self.testvec = testvec
+ self.blocks_vector_source_x_0.set_data(self.testvec * 1600, [])
+
+ def get_samp_rate(self):
+ return self.samp_rate
+
+ def set_samp_rate(self, samp_rate):
+ self.samp_rate = samp_rate
+
+
+
+
+
+def main(top_block_cls=Test_Bit_Errorrate, options=None):
+
+ if StrictVersion("4.5.0") <= StrictVersion(Qt.qVersion()) < StrictVersion("5.0.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 sig_handler(sig=None, frame=None):
+ Qt.QApplication.quit()
+
+ signal.signal(signal.SIGINT, sig_handler)
+ signal.signal(signal.SIGTERM, sig_handler)
+
+ timer = Qt.QTimer()
+ timer.start(500)
+ timer.timeout.connect(lambda: None)
+
+ def quitting():
+ tb.stop()
+ tb.wait()
+
+ qapp.aboutToQuit.connect(quitting)
+ qapp.exec_()
+
+if __name__ == '__main__':
+ main()
diff --git a/tests/correlator/correlator.py b/tests/correlator/correlator.py
index e8eaaa8..93ee8bb 100755
--- a/tests/correlator/correlator.py
+++ b/tests/correlator/correlator.py
@@ -329,6 +329,7 @@ class correlator(gr.top_block, Qt.QWidget):
self.top_grid_layout.setRowStretch(r, 1)
for c in range(1, 2):
self.top_grid_layout.setColumnStretch(c, 1)
+ self.fadingui_deframer_0 = fadingui.deframer(frame_obj=)
self.epy_block_0 = epy_block_0.blk()
self.digital_pfb_clock_sync_xxx_0 = digital.pfb_clock_sync_ccf(sps, timing_loop_bw, rrc_taps, nfilts, 16, 1.5, 1)
self.digital_corr_est_cc_0 = digital.corr_est_cc(access_code_symbols, 1, 0, .8, digital.THRESHOLD_DYNAMIC)
@@ -371,7 +372,7 @@ class correlator(gr.top_block, Qt.QWidget):
self.connect((self.channels_channel_model_0, 0), (self.blocks_throttle_0, 0))
self.connect((self.digital_cma_equalizer_cc_0, 0), (self.digital_corr_est_cc_0, 0))
self.connect((self.digital_cma_equalizer_cc_0, 0), (self.qtgui_const_sink_x_0, 0))
- self.connect((self.digital_constellation_decoder_cb_0, 0), (self.blocks_vector_sink_x_0, 0))
+ self.connect((self.digital_constellation_decoder_cb_0, 0), (self.fadingui_deframer_0, 0))
self.connect((self.digital_constellation_modulator_0, 0), (self.channels_channel_model_0, 0))
self.connect((self.digital_constellation_modulator_0, 0), (self.qtgui_time_sink_x_1_0, 0))
self.connect((self.digital_corr_est_cc_0, 1), (self.blocks_complex_to_magphase_0_0, 0))
@@ -380,6 +381,7 @@ class correlator(gr.top_block, Qt.QWidget):
self.connect((self.digital_pfb_clock_sync_xxx_0, 0), (self.digital_cma_equalizer_cc_0, 0))
self.connect((self.epy_block_0, 0), (self.digital_constellation_decoder_cb_0, 0))
self.connect((self.epy_block_0, 0), (self.qtgui_const_sink_x_0_0, 0))
+ self.connect((self.fadingui_deframer_0, 0), (self.blocks_vector_sink_x_0, 0))
def closeEvent(self, event):