summaryrefslogtreecommitdiff
path: root/gr-blocks/grc
diff options
context:
space:
mode:
authorSebastian Koslowski <koslowski@kit.edu>2016-02-16 20:59:25 +0100
committerSebastian Koslowski <koslowski@kit.edu>2016-04-05 14:44:34 +0200
commit5ef6c0f69d1ba279da94588d80cd460acc21bae9 (patch)
treea02ecaa77c8f91ed4c7cd74b952f1c9836596f1f /gr-blocks/grc
parentafd1b036c27cce87577f129273310f64d7c66edf (diff)
grc: move xmlrpc blocks to gr-blocks
Diffstat (limited to 'gr-blocks/grc')
-rw-r--r--gr-blocks/grc/blocks_block_tree.xml7
-rw-r--r--gr-blocks/grc/xmlrpc_client.xml42
-rw-r--r--gr-blocks/grc/xmlrpc_server.xml41
3 files changed, 89 insertions, 1 deletions
diff --git a/gr-blocks/grc/blocks_block_tree.xml b/gr-blocks/grc/blocks_block_tree.xml
index f35815b4dd..bfab41aeb6 100644
--- a/gr-blocks/grc/blocks_block_tree.xml
+++ b/gr-blocks/grc/blocks_block_tree.xml
@@ -29,7 +29,7 @@
<cat>
<name></name> <!-- Blank for Root Name -->
<cat>
- <name>Audio</name>
+ <name>Audio</name>
<block>blocks_wavfile_source</block>
<block>blocks_wavfile_sink</block>
</cat>
@@ -230,4 +230,9 @@
<name>Variables</name>
<block>variable_tag_object</block>
</cat>
+ <cat>
+ <name>Misc</name>
+ <block>xmlrpc_server</block>
+ <block>xmlrpc_client</block>
+ </cat>
</cat>
diff --git a/gr-blocks/grc/xmlrpc_client.xml b/gr-blocks/grc/xmlrpc_client.xml
new file mode 100644
index 0000000000..dc4d154d14
--- /dev/null
+++ b/gr-blocks/grc/xmlrpc_client.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<!--
+###################################################
+##Simple XMLRPC Client
+###################################################
+ -->
+<block>
+ <name>XMLRPC Client</name>
+ <key>xmlrpc_client</key>
+ <import>import xmlrpclib</import>
+ <make>xmlrpclib.Server('http://$(addr()):$(port)')</make>
+ <callback>$(callback())($variable)</callback>
+ <param>
+ <name>Address</name>
+ <key>addr</key>
+ <value>localhost</value>
+ <type>string</type>
+ </param>
+ <param>
+ <name>Port</name>
+ <key>port</key>
+ <value>8080</value>
+ <type>int</type>
+ </param>
+ <param>
+ <name>Callback</name>
+ <key>callback</key>
+ <value>set_</value>
+ <type>string</type>
+ </param>
+ <param>
+ <name>Variable</name>
+ <key>variable</key>
+ <type>raw</type>
+ </param>
+ <doc>
+This block will create an XMLRPC client. \
+The client will execute the callback on the server when the variable is changed. \
+The callback should be a the name of a function registered on the server. \
+The variable should be an expression containing a the name of a variable in flow graph.
+ </doc>
+</block>
diff --git a/gr-blocks/grc/xmlrpc_server.xml b/gr-blocks/grc/xmlrpc_server.xml
new file mode 100644
index 0000000000..602d444161
--- /dev/null
+++ b/gr-blocks/grc/xmlrpc_server.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<!--
+###################################################
+##Simple XMLRPC Server
+###################################################
+ -->
+<block>
+ <name>XMLRPC Server</name>
+ <key>xmlrpc_server</key>
+ <import>import SimpleXMLRPCServer</import>
+ <import>import threading</import>
+ <make>SimpleXMLRPCServer.SimpleXMLRPCServer(($addr, $port), allow_none=True)
+self.$(id).register_instance(self)
+self.$(id)_thread = threading.Thread(target=self.$(id).serve_forever)
+self.$(id)_thread.daemon = True
+self.$(id)_thread.start()</make>
+ <param>
+ <name>Address</name>
+ <key>addr</key>
+ <value>localhost</value>
+ <type>string</type>
+ </param>
+ <param>
+ <name>Port</name>
+ <key>port</key>
+ <value>8080</value>
+ <type>int</type>
+ </param>
+ <doc>
+This block will start an XMLRPC server. \
+The server provides access to the run, start, stop, wait functions of the flow graph. \
+The server also provides access to the variable callbacks in the flow graph. \
+Ex: If the variable is called freq, the function provided by the server will be called set_freq(new_freq).
+
+Example client in python:
+
+import xmlrpclib
+s = xmlrpclib.Server('http://localhost:8080')
+s.set_freq(5000)
+ </doc>
+</block>