aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorNao Pross <np@0hm.ch>2021-12-13 18:31:10 +0100
committerNao Pross <np@0hm.ch>2021-12-13 18:31:10 +0100
commit24b37dbe14c1685619961e3595c48329f7249a2c (patch)
tree21d62a5d6de3206761e9affeebfab5ba720cd739 /src
parentClean up GUI code, set up network constellation plots (diff)
parentBer block mit socket ergänzt (diff)
downloadFading-24b37dbe14c1685619961e3595c48329f7249a2c.tar.gz
Fading-24b37dbe14c1685619961e3595c48329f7249a2c.zip
Merge remote-tracking branch 'origin/master'
Diffstat (limited to 'src')
-rw-r--r--src/gr-fadingui/grc/fadingui_ber.block.yml7
-rw-r--r--src/gr-fadingui/python/ber.py41
2 files changed, 43 insertions, 5 deletions
diff --git a/src/gr-fadingui/grc/fadingui_ber.block.yml b/src/gr-fadingui/grc/fadingui_ber.block.yml
index 3070311..477f9ff 100644
--- a/src/gr-fadingui/grc/fadingui_ber.block.yml
+++ b/src/gr-fadingui/grc/fadingui_ber.block.yml
@@ -4,7 +4,7 @@ category: '[fadingui]'
templates:
imports: import fadingui
- make: fadingui.ber(vgl=${vgl}, vlen=${vlen})
+ make: fadingui.ber(vgl=${vgl}, vlen=${vlen},address=${address})
# Make one 'parameters' list entry for every parameter you want settable from the GUI.
# Keys include:
@@ -18,6 +18,11 @@ parameters:
- id: vlen
label: Vec Length
dtype: int
+- id: address
+ label: Address
+ dtype: string
+ default: "udp://localhost:31415"
+
# Make one 'inputs' list entry per input and one 'outputs' list entry per output.
# Keys include:
diff --git a/src/gr-fadingui/python/ber.py b/src/gr-fadingui/python/ber.py
index 5b71f35..205dcd4 100644
--- a/src/gr-fadingui/python/ber.py
+++ b/src/gr-fadingui/python/ber.py
@@ -19,6 +19,8 @@
# Boston, MA 02110-1301, USA.
#
+import socket
+from urllib.parse import urlparse
import numpy as np
from gnuradio import gr
@@ -32,7 +34,7 @@ class ber(gr.sync_block):
"""
docstring for block ber
"""
- def __init__(self, vgl, vlen):
+ def __init__(self, vgl, vlen, address):
gr.sync_block.__init__(self,
name="ber",
in_sig=[np.dtype(str(vlen) + "b")],
@@ -40,9 +42,34 @@ class ber(gr.sync_block):
self.vgl=vgl
self.vlen=vlen
+ # Create a socket and parse remote machine url
+ self.socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
+ self.url = urlparse(address)
+ self.srv = (self.url.hostname, self.url.port)
+
+
+ def send(self, data):
+ """
+ Send the data to self.srv
+
+ @param data Data as python bytes
+ @return Number of bytes that were actually sent
+ """
+ assert type(data) == bytes
+ return self.socket.sendto(data, self.srv)
+
+ def encode(self, data):
+ """
+ Encode the data into a dead simple format
+ """
+ # FIXME: this could be (very) slow, is there a faster way with numpy?
+ # Maybe numpy.array2string
+ return bytes(str(data) + "\n", "ascii")
+
+
def work(self, input_items, output_items):
-
inp = input_items[0]
+
log.debug(f"Length: {len(inp)}")
log.debug(f"Inp_vector:{inp}")
@@ -52,7 +79,13 @@ class ber(gr.sync_block):
ber = sum(np.unpackbits(v))
trueber = ber - 32
- log.debug(f"BER {trueber if trueber > 0 else 0} in Paket {i}")
+ if trueber < 0:
+ trueber = 0
+ log.debug(f"BER {trueber} in Paket {i}")
+
+ self.send(self.encode(trueber))
+
+ return len(inp)
- return len(input_items[0])
+ #return len(input_items[0])