aboutsummaryrefslogtreecommitdiffstats
path: root/src/gr-fadingui/python/datasource.py
diff options
context:
space:
mode:
authorNao Pross <np@0hm.ch>2021-11-12 20:16:59 +0100
committerNao Pross <np@0hm.ch>2021-11-12 20:16:59 +0100
commit96123552f8c037d683aa669c7c47ad2ebc9b1955 (patch)
tree81384d5c71fc6f5968458f6164e0038905f1c85f /src/gr-fadingui/python/datasource.py
parentMerge remote-tracking branch 'origin/master' (diff)
downloadFading-96123552f8c037d683aa669c7c47ad2ebc9b1955.tar.gz
Fading-96123552f8c037d683aa669c7c47ad2ebc9b1955.zip
Create (a new) OOT
Diffstat (limited to '')
-rw-r--r--src/gr-fadingui/python/datasource.py68
1 files changed, 68 insertions, 0 deletions
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])
+