summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gr-blocks/examples/xmlrpc/siggen_controller_xmlrpc_client.grc91
-rw-r--r--gr-blocks/examples/xmlrpc/siggen_xmlrpc_server.grc354
-rw-r--r--gr-blocks/grc/xmlrpc_client.block.yml10
-rw-r--r--gr-blocks/grc/xmlrpc_server.block.yml4
4 files changed, 452 insertions, 7 deletions
diff --git a/gr-blocks/examples/xmlrpc/siggen_controller_xmlrpc_client.grc b/gr-blocks/examples/xmlrpc/siggen_controller_xmlrpc_client.grc
new file mode 100644
index 0000000000..5e241d31b1
--- /dev/null
+++ b/gr-blocks/examples/xmlrpc/siggen_controller_xmlrpc_client.grc
@@ -0,0 +1,91 @@
+options:
+ parameters:
+ author: muaddib
+ catch_exceptions: 'True'
+ category: '[GRC Hier Blocks]'
+ cmake_opt: ''
+ comment: ''
+ copyright: ''
+ description: ''
+ gen_cmake: 'On'
+ gen_linking: dynamic
+ generate_options: qt_gui
+ hier_block_src_path: '.:'
+ id: siggen_controller_xmlrcp_client
+ max_nouts: '0'
+ output_language: python
+ placement: (0,0)
+ qt_qss_theme: ''
+ realtime_scheduling: ''
+ run: 'True'
+ run_command: '{python} -u {filename}'
+ run_options: prompt
+ sizing_mode: fixed
+ thread_safe_setters: ''
+ title: SIGGEN Controller XMLRPC Client
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [8, 8]
+ rotation: 0
+ state: enabled
+
+blocks:
+- name: freq
+ id: variable_qtgui_range
+ parameters:
+ comment: ''
+ gui_hint: ''
+ label: Frequency
+ min_len: '200'
+ orient: QtCore.Qt.Horizontal
+ rangeType: float
+ start: '1'
+ step: '100'
+ stop: samp_rate/2
+ value: '1000'
+ widget: counter_slider
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [264, 4.0]
+ rotation: 0
+ state: true
+- name: samp_rate
+ id: variable
+ parameters:
+ comment: ''
+ value: 1e6
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [176, 4.0]
+ rotation: 0
+ state: enabled
+- name: xmlrpc_client_0
+ id: xmlrpc_client
+ parameters:
+ addr: localhost
+ alias: ''
+ callback: set_rmt_freq
+ comment: "The value used in the 'callback' field maps to a variable name in an\n\
+ \ XMLRPC Server or XMLRPC Server Flowgraph\nex: 'siggen_xmlrpc_server.grc' \n\
+ \nThe value used in the 'variable' field is a local variable in this \nflowgraph.\
+ \ Local changes to this variable will change the \nserver variable's value as\
+ \ well."
+ port: '8000'
+ variable: freq
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [384, 4.0]
+ rotation: 0
+ state: enabled
+connections: []
+
+metadata:
+ file_format: 1
diff --git a/gr-blocks/examples/xmlrpc/siggen_xmlrpc_server.grc b/gr-blocks/examples/xmlrpc/siggen_xmlrpc_server.grc
new file mode 100644
index 0000000000..e795aacc84
--- /dev/null
+++ b/gr-blocks/examples/xmlrpc/siggen_xmlrpc_server.grc
@@ -0,0 +1,354 @@
+options:
+ parameters:
+ author: muaddib
+ catch_exceptions: 'True'
+ category: '[GRC Hier Blocks]'
+ cmake_opt: ''
+ comment: ''
+ copyright: ''
+ description: ''
+ gen_cmake: 'On'
+ gen_linking: dynamic
+ generate_options: qt_gui
+ hier_block_src_path: '.:'
+ id: siggen_xmlrpc_server
+ max_nouts: '0'
+ output_language: python
+ placement: (0,0)
+ qt_qss_theme: ''
+ realtime_scheduling: ''
+ run: 'True'
+ run_command: '{python} -u {filename}'
+ run_options: prompt
+ sizing_mode: fixed
+ thread_safe_setters: ''
+ title: SIggen and XMLRPC Server
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [8, 8]
+ rotation: 0
+ state: enabled
+
+blocks:
+- name: amp
+ id: variable
+ parameters:
+ comment: ''
+ value: '1'
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [400, 12.0]
+ rotation: 0
+ state: true
+- name: rmt_freq
+ id: variable
+ parameters:
+ comment: "This variable name is used in the 'callback' field of the \nxmlrpc_client\
+ \ block in 'siggen_controller_xmlrpc_client.grc'\nwhich gives that flowgraph\
+ \ remote control over this variable via \nXMLRPC 'SET' methods. \n\nAll variables\
+ \ in this flowgraph are callable in the same way due to\nthe presence of the\
+ \ XMLRPC Server block."
+ value: '1000'
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [472, 12.0]
+ rotation: 0
+ state: true
+- name: samp_rate
+ id: variable
+ parameters:
+ comment: ''
+ value: 32e3
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [184, 12.0]
+ rotation: 0
+ state: enabled
+- name: analog_noise_source_x_0
+ id: analog_noise_source_x
+ parameters:
+ affinity: ''
+ alias: ''
+ amp: '0.1'
+ comment: ''
+ maxoutbuf: '0'
+ minoutbuf: '0'
+ noise_type: analog.GR_GAUSSIAN
+ seed: '0'
+ type: complex
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [48, 292.0]
+ rotation: 0
+ state: true
+- name: analog_sig_source_x_0
+ id: analog_sig_source_x
+ parameters:
+ affinity: ''
+ alias: ''
+ amp: amp
+ comment: ''
+ freq: rmt_freq
+ maxoutbuf: '0'
+ minoutbuf: '0'
+ offset: '0'
+ phase: '0'
+ samp_rate: samp_rate
+ type: complex
+ waveform: analog.GR_COS_WAVE
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [48, 148.0]
+ rotation: 0
+ state: true
+- name: blocks_add_xx_0
+ id: blocks_add_xx
+ parameters:
+ affinity: ''
+ alias: ''
+ comment: ''
+ maxoutbuf: '0'
+ minoutbuf: '0'
+ num_inputs: '2'
+ type: complex
+ vlen: '1'
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [328, 224.0]
+ rotation: 0
+ state: true
+- name: blocks_throttle_0
+ id: blocks_throttle
+ parameters:
+ affinity: ''
+ alias: ''
+ comment: ''
+ ignoretag: 'True'
+ maxoutbuf: '0'
+ minoutbuf: '0'
+ samples_per_second: samp_rate
+ type: complex
+ vlen: '1'
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [456, 236.0]
+ rotation: 0
+ state: true
+- name: qtgui_freq_sink_x_0
+ id: qtgui_freq_sink_x
+ parameters:
+ affinity: ''
+ alias: ''
+ alpha1: '1.0'
+ alpha10: '1.0'
+ alpha2: '1.0'
+ alpha3: '1.0'
+ alpha4: '1.0'
+ alpha5: '1.0'
+ alpha6: '1.0'
+ alpha7: '1.0'
+ alpha8: '1.0'
+ alpha9: '1.0'
+ autoscale: 'False'
+ average: '1.0'
+ axislabels: 'True'
+ bw: samp_rate
+ color1: '"blue"'
+ color10: '"dark blue"'
+ color2: '"red"'
+ color3: '"green"'
+ color4: '"black"'
+ color5: '"cyan"'
+ color6: '"magenta"'
+ color7: '"yellow"'
+ color8: '"dark red"'
+ color9: '"dark green"'
+ comment: ''
+ ctrlpanel: 'False'
+ fc: '0'
+ fftsize: '1024'
+ freqhalf: 'True'
+ grid: 'False'
+ gui_hint: ''
+ label: Relative Gain
+ label1: ''
+ label10: ''''''
+ label2: ''''''
+ label3: ''''''
+ label4: ''''''
+ label5: ''''''
+ label6: ''''''
+ label7: ''''''
+ label8: ''''''
+ label9: ''''''
+ legend: 'True'
+ maxoutbuf: '0'
+ minoutbuf: '0'
+ name: '""'
+ nconnections: '1'
+ norm_window: 'False'
+ showports: 'False'
+ tr_chan: '0'
+ tr_level: '0.0'
+ tr_mode: qtgui.TRIG_MODE_FREE
+ tr_tag: '""'
+ type: complex
+ units: dB
+ update_time: '0.10'
+ width1: '1'
+ width10: '1'
+ width2: '1'
+ width3: '1'
+ width4: '1'
+ width5: '1'
+ width6: '1'
+ width7: '1'
+ width8: '1'
+ width9: '1'
+ wintype: window.WIN_BLACKMAN_hARRIS
+ ymax: '10'
+ ymin: '-140'
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [672, 172.0]
+ rotation: 0
+ state: true
+- name: qtgui_time_sink_x_0
+ id: qtgui_time_sink_x
+ parameters:
+ affinity: ''
+ alias: ''
+ alpha1: '1.0'
+ alpha10: '1.0'
+ alpha2: '1.0'
+ alpha3: '1.0'
+ alpha4: '1.0'
+ alpha5: '1.0'
+ alpha6: '1.0'
+ alpha7: '1.0'
+ alpha8: '1.0'
+ alpha9: '1.0'
+ autoscale: 'False'
+ axislabels: 'True'
+ color1: blue
+ color10: dark blue
+ color2: red
+ color3: green
+ color4: black
+ color5: cyan
+ color6: magenta
+ color7: yellow
+ color8: dark red
+ color9: dark green
+ comment: ''
+ ctrlpanel: 'False'
+ entags: 'True'
+ grid: 'False'
+ gui_hint: ''
+ label1: Signal 1
+ label10: Signal 10
+ label2: Signal 2
+ label3: Signal 3
+ label4: Signal 4
+ label5: Signal 5
+ label6: Signal 6
+ label7: Signal 7
+ label8: Signal 8
+ label9: Signal 9
+ legend: 'True'
+ marker1: '-1'
+ marker10: '-1'
+ marker2: '-1'
+ marker3: '-1'
+ marker4: '-1'
+ marker5: '-1'
+ marker6: '-1'
+ marker7: '-1'
+ marker8: '-1'
+ marker9: '-1'
+ name: '""'
+ nconnections: '1'
+ size: '1024'
+ srate: samp_rate
+ stemplot: 'False'
+ style1: '1'
+ style10: '1'
+ style2: '1'
+ style3: '1'
+ style4: '1'
+ style5: '1'
+ style6: '1'
+ style7: '1'
+ style8: '1'
+ style9: '1'
+ tr_chan: '0'
+ tr_delay: '0'
+ tr_level: '0.0'
+ tr_mode: qtgui.TRIG_MODE_FREE
+ tr_slope: qtgui.TRIG_SLOPE_POS
+ tr_tag: '""'
+ type: complex
+ update_time: '0.10'
+ width1: '1'
+ width10: '1'
+ width2: '1'
+ width3: '1'
+ width4: '1'
+ width5: '1'
+ width6: '1'
+ width7: '1'
+ width8: '1'
+ width9: '1'
+ ylabel: Amplitude
+ ymax: '1'
+ ymin: '-1'
+ yunit: '""'
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [672, 268.0]
+ rotation: 0
+ state: true
+- name: xmlrpc_server_0
+ id: xmlrpc_server
+ parameters:
+ addr: localhost
+ alias: ''
+ comment: ''
+ port: '8000'
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [280, 12.0]
+ rotation: 0
+ state: enabled
+
+connections:
+- [analog_noise_source_x_0, '0', blocks_add_xx_0, '1']
+- [analog_sig_source_x_0, '0', blocks_add_xx_0, '0']
+- [blocks_add_xx_0, '0', blocks_throttle_0, '0']
+- [blocks_throttle_0, '0', qtgui_freq_sink_x_0, '0']
+- [blocks_throttle_0, '0', qtgui_time_sink_x_0, '0']
+
+metadata:
+ file_format: 1
diff --git a/gr-blocks/grc/xmlrpc_client.block.yml b/gr-blocks/grc/xmlrpc_client.block.yml
index ba2d45eef2..56276c33c4 100644
--- a/gr-blocks/grc/xmlrpc_client.block.yml
+++ b/gr-blocks/grc/xmlrpc_client.block.yml
@@ -5,7 +5,7 @@ flags: [ python ]
parameters:
- id: addr
label: Address
- dtype: raw
+ dtype: string
default: localhost
- id: port
label: Port
@@ -13,7 +13,7 @@ parameters:
default: '8080'
- id: callback
label: Callback
- dtype: raw
+ dtype: string
default: set_
- id: variable
label: Variable
@@ -21,11 +21,11 @@ parameters:
templates:
imports: from xmlrpc.client import ServerProxy
- make: ServerProxy('http://${addr}:${port}')
+ make: ServerProxy('http://'+${addr}+':${port}')
callbacks:
- - ${callback}(${variable})
+ - ${no_quotes(callback)}(${variable})
documentation: |-
- 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.
+ 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 the name of a function registered on the server. The variable should be an expression containing the name of a variable in the flowgraph.
file_format: 1
diff --git a/gr-blocks/grc/xmlrpc_server.block.yml b/gr-blocks/grc/xmlrpc_server.block.yml
index 8df1ae25c8..197cd829e1 100644
--- a/gr-blocks/grc/xmlrpc_server.block.yml
+++ b/gr-blocks/grc/xmlrpc_server.block.yml
@@ -28,8 +28,8 @@ documentation: |-
Example client in python:
- import xmlrpclib
- s = xmlrpclib.Server('http://localhost:8080')
+ from xmlrpc.client import ServerProxy
+ ServerProxy('http://localhost:8080')
s.set_freq(5000)
file_format: 1