aboutsummaryrefslogtreecommitdiffstats
path: root/src/gr-fadingui/python
diff options
context:
space:
mode:
Diffstat (limited to 'src/gr-fadingui/python')
-rw-r--r--src/gr-fadingui/python/CMakeLists.txt45
-rw-r--r--src/gr-fadingui/python/__init__.py37
-rw-r--r--src/gr-fadingui/python/datasource.py68
3 files changed, 150 insertions, 0 deletions
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])
+