From 1d9143b0dbbaba502631326dd42d0bad1290ff93 Mon Sep 17 00:00:00 2001
From: Sebastian Koslowski <koslowski@kit.edu>
Date: Sat, 13 Feb 2016 21:45:21 +0100
Subject: grc: move blks2 code into gr-blocks and gr-digital

---
 gr-blocks/python/grc_gnuradio/blks2/tcp.py | 70 ++++++++++++++++++++++++++++++
 1 file changed, 70 insertions(+)
 create mode 100644 gr-blocks/python/grc_gnuradio/blks2/tcp.py

(limited to 'gr-blocks/python/grc_gnuradio/blks2/tcp.py')

diff --git a/gr-blocks/python/grc_gnuradio/blks2/tcp.py b/gr-blocks/python/grc_gnuradio/blks2/tcp.py
new file mode 100644
index 0000000000..aee90fad2c
--- /dev/null
+++ b/gr-blocks/python/grc_gnuradio/blks2/tcp.py
@@ -0,0 +1,70 @@
+#
+# Copyright 2009 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# 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.
+#
+
+from gnuradio import gr, blocks
+import socket
+import os
+
+def _get_sock_fd(addr, port, server):
+    """
+    Get the file descriptor for the socket.
+    As a client, block on connect, dup the socket descriptor.
+    As a server, block on accept, dup the client descriptor.
+
+    Args:
+        addr: the ip address string
+        port: the tcp port number
+        server: true for server mode, false for client mode
+
+    Returns:
+        the file descriptor number
+    """
+    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+    if server:
+        sock.bind((addr, port))
+        sock.listen(1)
+        clientsock, address = sock.accept()
+        return os.dup(clientsock.fileno())
+    else:
+        sock.connect((addr, port))
+        return os.dup(sock.fileno())
+
+class tcp_source(gr.hier_block2):
+    def __init__(self, itemsize, addr, port, server=True):
+        #init hier block
+        gr.hier_block2.__init__(
+            self, 'tcp_source',
+            gr.io_signature(0, 0, 0),
+            gr.io_signature(1, 1, itemsize),
+        )
+        fd = _get_sock_fd(addr, port, server)
+        self.connect(blocks.file_descriptor_source(itemsize, fd), self)
+
+class tcp_sink(gr.hier_block2):
+    def __init__(self, itemsize, addr, port, server=False):
+        #init hier block
+        gr.hier_block2.__init__(
+            self, 'tcp_sink',
+            gr.io_signature(1, 1, itemsize),
+            gr.io_signature(0, 0, 0),
+        )
+        fd = _get_sock_fd(addr, port, server)
+        self.connect(self, blocks.file_descriptor_sink(itemsize, fd))
-- 
cgit v1.2.3