diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/gr-fadingui/grc/CMakeLists.txt | 3 | ||||
-rw-r--r-- | src/gr-fadingui/grc/fadingui_ber.block.yml | 37 | ||||
-rw-r--r-- | src/gr-fadingui/python/CMakeLists.txt | 4 | ||||
-rw-r--r-- | src/gr-fadingui/python/__init__.py | 1 | ||||
-rw-r--r-- | src/gr-fadingui/python/ber.py | 55 | ||||
-rwxr-xr-x | src/gr-fadingui/python/qa_ber.py | 41 |
6 files changed, 139 insertions, 2 deletions
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) |