From 96123552f8c037d683aa669c7c47ad2ebc9b1955 Mon Sep 17 00:00:00 2001 From: Nao Pross Date: Fri, 12 Nov 2021 20:16:59 +0100 Subject: Create (a new) OOT --- src/gr-fadingui/python/CMakeLists.txt | 45 +++++++++++++++++++++++ src/gr-fadingui/python/__init__.py | 37 +++++++++++++++++++ src/gr-fadingui/python/datasource.py | 68 +++++++++++++++++++++++++++++++++++ 3 files changed, 150 insertions(+) create mode 100644 src/gr-fadingui/python/CMakeLists.txt create mode 100644 src/gr-fadingui/python/__init__.py create mode 100644 src/gr-fadingui/python/datasource.py (limited to 'src/gr-fadingui/python') diff --git a/src/gr-fadingui/python/CMakeLists.txt b/src/gr-fadingui/python/CMakeLists.txt new file mode 100644 index 0000000..4ab9bbc --- /dev/null +++ b/src/gr-fadingui/python/CMakeLists.txt @@ -0,0 +1,45 @@ +# Copyright 2011 Free Software Foundation, Inc. +# +# This file was generated by gr_modtool, a tool from the GNU Radio framework +# This file is a part of gr-fadingui +# +# GNU Radio 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. +# +# GNU Radio 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 GNU Radio; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. + +######################################################################## +# Include python install macros +######################################################################## +include(GrPython) +if(NOT PYTHONINTERP_FOUND) + return() +endif() + +######################################################################## +# Install python sources +######################################################################## +GR_PYTHON_INSTALL( + FILES + __init__.py + datasource.py + DESTINATION ${GR_PYTHON_DIR}/fadingui +) + +######################################################################## +# Handle the unit tests +######################################################################## +include(GrTest) + +set(GR_TEST_TARGET_DEPS gnuradio-fadingui) +set(GR_TEST_PYTHON_DIRS ${CMAKE_BINARY_DIR}/swig) diff --git a/src/gr-fadingui/python/__init__.py b/src/gr-fadingui/python/__init__.py new file mode 100644 index 0000000..6cfa23b --- /dev/null +++ b/src/gr-fadingui/python/__init__.py @@ -0,0 +1,37 @@ +# +# Copyright 2008,2009 Free Software Foundation, Inc. +# +# This application 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 application 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 program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# + +# The presence of this file turns this directory into a Python package + +''' +This is the GNU Radio FADINGUI module. Place your Python package +description here (python/__init__.py). +''' +from __future__ import unicode_literals + +# import swig generated symbols into the fadingui namespace +try: + # this might fail if the module is python-only + from .fadingui_swig import * +except ImportError: + pass + +# import any pure python here +from .datasource import datasource + +# diff --git a/src/gr-fadingui/python/datasource.py b/src/gr-fadingui/python/datasource.py new file mode 100644 index 0000000..ddce468 --- /dev/null +++ b/src/gr-fadingui/python/datasource.py @@ -0,0 +1,68 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# Copyright 2021 Naoki Pross, Sara 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 + +class datasource(gr.sync_block): + """ + Loads data from a file choosen in the graphical user interface. + """ + def __init__(self, vec_len, sock_addr, file_list): + gr.sync_block.__init__(self, + name="datasource", + in_sig=None, + out_sig=[np.dtype('256b')]) + + # parameters + self.vec_len = vec_len + self.sock_addr = sock_addr + self.file_list = file_list + + # file members + self.fdata = None + self.fsize = None + self.fpos = 0 + + # TODO: make it possible to choose from UI + self.load_file(file_list[0]) + + def load_file(self, fname): + self.fdata = np.fromfile(fname, np.byte) + self.fsize = len(self.data) + + # TODO: remove + print(f"datasource: loaded file size={self.fsize}, head:") + print(self.fdata[:10]) + + def work(self, input_items, output_items): + out = output_items[0] + + if self.fpos + self.vec_len > self.fsize: + # TODO: implement padding with zeroes + self.fpos = 0 + return 0 + + out[:] = self.fdata[self.fpos:self.fpos + self.vec_len] + self.fpos += self.vec_len + + return len(output_items[0]) + -- cgit v1.2.1