diff options
Diffstat (limited to 'gnuradio-runtime/python/gnuradio/ctrlport')
8 files changed, 67 insertions, 61 deletions
diff --git a/gnuradio-runtime/python/gnuradio/ctrlport/CMakeLists.txt b/gnuradio-runtime/python/gnuradio/ctrlport/CMakeLists.txt index be959467cf..4b0dbf7b8a 100644 --- a/gnuradio-runtime/python/gnuradio/ctrlport/CMakeLists.txt +++ b/gnuradio-runtime/python/gnuradio/ctrlport/CMakeLists.txt @@ -24,7 +24,6 @@ install( FILES ${CMAKE_CURRENT_SOURCE_DIR}/icon.png DESTINATION ${GR_PYTHON_DIR}/gnuradio/ctrlport - COMPONENT "runtime_python" ) @@ -36,7 +35,6 @@ GR_PYTHON_INSTALL( ${CMAKE_CURRENT_SOURCE_DIR}/GNURadioControlPortClient.py ${CMAKE_CURRENT_SOURCE_DIR}/RPCConnection.py DESTINATION ${GR_PYTHON_DIR}/gnuradio/ctrlport/ - COMPONENT "runtime_python" ) GR_PYTHON_INSTALL( @@ -45,7 +43,6 @@ GR_PYTHON_INSTALL( ${CMAKE_CURRENT_SOURCE_DIR}/gr-ctrlport-monitor DESTINATION ${GR_RUNTIME_DIR} PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE - COMPONENT "runtime_python" ) if(THRIFT_FOUND) @@ -58,25 +55,24 @@ if(THRIFT_FOUND) ${CMAKE_CURRENT_BINARY_DIR}/GNURadio/StreamReceiver.py ${CMAKE_CURRENT_BINARY_DIR}/GNURadio/StreamReceiver-remote ${CMAKE_CURRENT_BINARY_DIR}/GNURadio/ttypes.py - ) + ) + add_custom_command( DEPENDS ${CMAKE_SOURCE_DIR}/gnuradio-runtime/lib/controlport/thrift/gnuradio.thrift OUTPUT ${thrift_targets} COMMAND ${THRIFT_BIN} --gen py -out ${CMAKE_CURRENT_BINARY_DIR}/ ${CMAKE_SOURCE_DIR}/gnuradio-runtime/lib/controlport/thrift/gnuradio.thrift - ) + ) GR_PYTHON_INSTALL( FILES ${CMAKE_CURRENT_SOURCE_DIR}/RPCConnectionThrift.py DESTINATION ${GR_PYTHON_DIR}/gnuradio/ctrlport/ - COMPONENT "runtime_python" - ) + ) GR_PYTHON_INSTALL( FILES ${thrift_targets} DESTINATION ${GR_PYTHON_DIR}/gnuradio/ctrlport/GNURadio - COMPONENT "runtime_python" - ) + ) endif(THRIFT_FOUND) diff --git a/gnuradio-runtime/python/gnuradio/ctrlport/GNURadioControlPortClient.py b/gnuradio-runtime/python/gnuradio/ctrlport/GNURadioControlPortClient.py index 87d2cf5658..8b811ab9d9 100644 --- a/gnuradio-runtime/python/gnuradio/ctrlport/GNURadioControlPortClient.py +++ b/gnuradio-runtime/python/gnuradio/ctrlport/GNURadioControlPortClient.py @@ -27,8 +27,8 @@ Remote Procedure Call (RPC) transports, the Apache Thrift middle-ware RPC is currently the only supported transport. """ - -import exceptions +from __future__ import print_function +from __future__ import unicode_literals """ GNURadioControlPortClient is the main class for creating a GNU Radio @@ -38,7 +38,7 @@ Two constructors are provided for creating a connection to ControlPort. """ -class GNURadioControlPortClient(): +class GNURadioControlPortClient(object): """ Constructor for creating a ControlPort connection to a specified host / port @@ -113,7 +113,7 @@ class GNURadioControlPortClient(): self.client = None from gnuradio.ctrlport.RPCConnection import RPCMethods - if RPCMethods.has_key(rpcmethod): + if rpcmethod in RPCMethods: from gnuradio.ctrlport.RPCConnectionThrift import RPCConnectionThrift if rpcmethod == 'thrift': #print("making RPCConnectionThrift") @@ -128,5 +128,5 @@ class GNURadioControlPortClient(): if not blockingcallback is None: blockingcallback() else: - print("Unsupported RPC method: ", rpcmethod) - raise exceptions.ValueError() + print(("Unsupported RPC method: ", rpcmethod)) + raise ValueError() diff --git a/gnuradio-runtime/python/gnuradio/ctrlport/GrDataPlotter.py b/gnuradio-runtime/python/gnuradio/ctrlport/GrDataPlotter.py index e0499c5eba..cb66baebb9 100644 --- a/gnuradio-runtime/python/gnuradio/ctrlport/GrDataPlotter.py +++ b/gnuradio-runtime/python/gnuradio/ctrlport/GrDataPlotter.py @@ -20,6 +20,9 @@ # Boston, MA 02110-1301, USA. # +from __future__ import print_function +from __future__ import unicode_literals + from gnuradio import gr from gnuradio import blocks from gnuradio import filter @@ -31,7 +34,7 @@ try: from PyQt4 import QtGui, QtCore import sip except ImportError: - print "Error: Program requires PyQt4 and gr-qtgui." + print("Error: Program requires PyQt4 and gr-qtgui.") sys.exit(1) class GrDataPlotParent(gr.top_block, QtGui.QWidget): @@ -62,7 +65,7 @@ class GrDataPlotParent(gr.top_block, QtGui.QWidget): self.layout.removeWidget(self.py_window) self.disconnect(self.thr, (self.snk, 0)) self.disconnect(self.src[0], self.thr) - for n in xrange(1, self._ncons): + for n in range(1, self._ncons): self.disconnect(self.src[n], (self.snk,n)) self._ncons = nconnections @@ -75,7 +78,7 @@ class GrDataPlotParent(gr.top_block, QtGui.QWidget): self._last_data = [] self.src = [] - for n in xrange(self._ncons): + for n in range(self._ncons): self.set_line_label(n, self.knobnames[n]) self._last_data.append(int(self._npts)*[0,]) @@ -142,7 +145,7 @@ class GrDataPlotParent(gr.top_block, QtGui.QWidget): if(self._npts != npts): # Adjust buffers to accommodate new settings - for n in xrange(self._ncons): + for n in range(self._ncons): if(npts < self._npts): if(self._data_len[n] < npts): self._last_data[n] = self._last_data[n][0:npts] @@ -156,7 +159,7 @@ class GrDataPlotParent(gr.top_block, QtGui.QWidget): if(self._stripchart): # Update the plot data depending on type - for n in xrange(self._ncons): + for n in range(self._ncons): if(type(data[n]) == list): data[n] = self.data_to_complex(data[n]) if(len(data[n]) > self._npts): @@ -179,7 +182,7 @@ class GrDataPlotParent(gr.top_block, QtGui.QWidget): self._last_data[n].append(data[n]) self.src[n].set_data(self._last_data[n]) else: - for n in xrange(self._ncons): + for n in range(self._ncons): if(type(data[n]) != list): data[n] = [data[n],] data[n] = self.data_to_complex(data[n]) @@ -407,11 +410,11 @@ class GrTimeRasterB(GrDataPlotParent): self.snk.set_line_label(n, self.knobnames[n]) -class GrDataPlotterValueTable: +class GrDataPlotterValueTable(object): def __init__(self, uid, parent, x, y, xsize, ysize, headers=['Statistic Key ( Source Block :: Stat Name ) ', 'Curent Value', 'Units', 'Description']): - # must encapsulate, cuz Qt's bases are not classes + # must encapsulate, cuz Qt's bases are not classes self.uid = uid self.treeWidget = QtGui.QTreeWidget(parent) self.treeWidget.setColumnCount(len(headers)) @@ -434,7 +437,7 @@ class GrDataPlotterValueTable: # itemKey is the text in the first column of a QTreeWidgetItem itemKey = str(item.text(0)) - if itemKey in knobs.keys(): + if itemKey in list(knobs.keys()): # This key was found in the tree, update its values. foundKeys.append(itemKey) @@ -465,7 +468,7 @@ class GrDataPlotterValueTable: deleteKeys.append(itemKey) # Add items to tree that are not currently in the tree. - for k in knobs.keys(): + for k in list(knobs.keys()): if k not in foundKeys: v = knobs[k].value if(type(v) == ControlPort.complex): diff --git a/gnuradio-runtime/python/gnuradio/ctrlport/RPCConnection.py b/gnuradio-runtime/python/gnuradio/ctrlport/RPCConnection.py index 1b129534c9..0f3f27710f 100644 --- a/gnuradio-runtime/python/gnuradio/ctrlport/RPCConnection.py +++ b/gnuradio-runtime/python/gnuradio/ctrlport/RPCConnection.py @@ -17,9 +17,6 @@ # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # - -import exceptions - """ RPCMethods is a dictionary listing RPC transports currently supported by this client. @@ -30,6 +27,8 @@ Args: options: result of command argument parsing (optparse.Values) """ +from __future__ import unicode_literals + RPCMethods = {'thrift': 'Apache Thrift', #'ice': 'Zeroc ICE' } @@ -94,25 +93,25 @@ class RPCConnection(object): return self.port def newConnection(self, host=None, port=None): - raise exceptions.NotImplementedError() + raise NotImplementedError() def properties(self, *args): - raise exceptions.NotImplementedError() + raise NotImplementedError() def getKnobs(self, *args): - raise exceptions.NotImplementedError() + raise NotImplementedError() def getRe(self,*args): - raise exceptions.NotImplementedError() + raise NotImplementedError() def postMessage(self,*args): - raise exceptions.NotImplementedError() + raise NotImplementedError() def setKnobs(self,*args): - raise exceptions.NotImplementedError() + raise NotImplementedError() def shutdown(self): - raise exceptions.NotImplementedError() + raise NotImplementedError() def printProperties(self, props): - raise exceptions.NotImplementedError() + raise NotImplementedError() diff --git a/gnuradio-runtime/python/gnuradio/ctrlport/RPCConnectionThrift.py b/gnuradio-runtime/python/gnuradio/ctrlport/RPCConnectionThrift.py index 522c74117b..466fc9fc04 100644 --- a/gnuradio-runtime/python/gnuradio/ctrlport/RPCConnectionThrift.py +++ b/gnuradio-runtime/python/gnuradio/ctrlport/RPCConnectionThrift.py @@ -20,6 +20,7 @@ # Boston, MA 02110-1301, USA. # +from __future__ import unicode_literals from thrift import Thrift from thrift.transport import TSocket from thrift.transport import TTransport @@ -30,7 +31,7 @@ from gnuradio import gr import pmt import sys -class ThriftRadioClient: +class ThriftRadioClient(object): def __init__(self, host, port): self.tsocket = TSocket.TSocket(host, port) self.transport = TTransport.TBufferedTransport(self.tsocket) @@ -55,7 +56,7 @@ Args: """ class RPCConnectionThrift(RPCConnection.RPCConnection): - class Knob(): + class Knob(object): def __init__(self, key, value=None, ktype=0): (self.key, self.value, self.ktype) = (key, value, ktype) @@ -144,7 +145,7 @@ class RPCConnectionThrift(RPCConnection.RPCConnection): def properties(self, *args): knobprops = self.thriftclient.radio.properties(*args) - for key, knobprop in knobprops.iteritems(): + for key, knobprop in list(knobprops.items()): #print("key:", key, "value:", knobprop, "type:", knobprop.type) knobprops[key].min = self.unpackKnob(key, knobprop.min) knobprops[key].max = self.unpackKnob(key, knobprop.max) @@ -153,28 +154,28 @@ class RPCConnectionThrift(RPCConnection.RPCConnection): def getKnobs(self, *args): result = {} - for key, knob in self.thriftclient.radio.getKnobs(*args).iteritems(): + for key, knob in list(self.thriftclient.radio.getKnobs(*args).items()): #print("key:", key, "value:", knob, "type:", knob.type) result[key] = self.unpackKnob(key, knob) # If complex, convert to Python complex # FIXME: better list iterator way to handle this? if(knob.type == self.BaseTypes.C32VECTOR): - for i in xrange(len(result[key].value)): + for i in range(len(result[key].value)): result[key].value[i] = complex(result[key].value[i].re, result[key].value[i].im) return result def getKnobsRaw(self, *args): result = {} - for key, knob in self.thriftclient.radio.getKnobs(*args).iteritems(): + for key, knob in list(self.thriftclient.radio.getKnobs(*args).items()): #print("key:", key, "value:", knob, "type:", knob.type) result[key] = knob return result def getRe(self,*args): result = {} - for key, knob in self.thriftclient.radio.getRe(*args).iteritems(): + for key, knob in list(self.thriftclient.radio.getRe(*args).items()): result[key] = self.unpackKnob(key, knob) return result @@ -182,7 +183,7 @@ class RPCConnectionThrift(RPCConnection.RPCConnection): if(type(*args) == dict): a = dict(*args) result = {} - for key, knob in a.iteritems(): + for key, knob in list(a.items()): result[key] = self.packKnob(knob) self.thriftclient.radio.setKnobs(result) elif(type(*args) == list or type(*args) == tuple): diff --git a/gnuradio-runtime/python/gnuradio/ctrlport/__init__.py b/gnuradio-runtime/python/gnuradio/ctrlport/__init__.py index 8f33d65bbc..363d42a68e 100644 --- a/gnuradio-runtime/python/gnuradio/ctrlport/__init__.py +++ b/gnuradio-runtime/python/gnuradio/ctrlport/__init__.py @@ -1,3 +1,5 @@ +from __future__ import absolute_import +from __future__ import unicode_literals # # Copyright 2012 Free Software Foundation, Inc. # @@ -22,7 +24,7 @@ # import swig generated symbols into the ctrlport namespace #from ctrlport_swig import * -from monitor import * +from .monitor import * # import any pure python here #import GNURadio diff --git a/gnuradio-runtime/python/gnuradio/ctrlport/gr-perf-monitorx b/gnuradio-runtime/python/gnuradio/ctrlport/gr-perf-monitorx index 15a2153a0f..302275feb1 100644 --- a/gnuradio-runtime/python/gnuradio/ctrlport/gr-perf-monitorx +++ b/gnuradio-runtime/python/gnuradio/ctrlport/gr-perf-monitorx @@ -20,6 +20,8 @@ # Boston, MA 02110-1301, USA. # +from __future__ import print_function + import sys, time, re, pprint import random,math,operator try: @@ -36,14 +38,14 @@ try: try: from matplotlib.backends.backend_qt4agg import NavigationToolbar2QT as NavigationToolbar except ImportError: - print sys.argv[0], "could not load QTAgg backend." + print(sys.argv[0], "could not load QTAgg backend.") sys.exit(1) from matplotlib.figure import Figure except ImportError: - print sys.argv[0], "requires networkx and matplotlib.", \ - "Please check that they are installed and try again." + print(sys.argv[0], "requires networkx and matplotlib.", + "Please check that they are installed and try again.") sys.exit(1) from PyQt4 import QtCore,Qt @@ -282,7 +284,7 @@ class ConInfoDialog(QtGui.QDialog): class DataTable(QtGui.QWidget): def update(self): - print "update" + print("update") def closeEvent(self, event): self.timer = None @@ -498,7 +500,7 @@ class MForm(QtGui.QWidget): self.clockSel.setCurrentIndex(self.clockSelIdx) self.prevent_clock_change = False except: - print "WARNING: Failed to get current clock setting!" + print("WARNING: Failed to get current clock setting!") nodes_stream = self.G_stream.nodes() nodes_msg = self.G_msg.nodes() @@ -571,7 +573,7 @@ class MForm(QtGui.QWidget): self.parent.statusBar().showMessage("Current GNU Radio Control Port Query Latency: %f ms"%\ (latency*1000)) - except Exception, e: + except Exception as e: sys.stderr.write("gr-perf-monitorx: radio.getKnobs threw exception ({0}).\n".format(e)) if(type(self.parent) is MAINWindow): # Find window of connection @@ -625,7 +627,7 @@ class MForm(QtGui.QWidget): return; idx = self.clockSel.currentIndex(); clk = self.clocks.values()[idx] -# print "UPDATE CLOCK!!! %d -> %d"%(idx,clk); +# print("UPDATE CLOCK!!! %d -> %d"%(idx,clk);) k = self.radioclient.getKnobs([self.clockKey]); k[self.clockKey].value = clk; km = {}; diff --git a/gnuradio-runtime/python/gnuradio/ctrlport/monitor.py b/gnuradio-runtime/python/gnuradio/ctrlport/monitor.py index f651be2449..49b66e9830 100644 --- a/gnuradio-runtime/python/gnuradio/ctrlport/monitor.py +++ b/gnuradio-runtime/python/gnuradio/ctrlport/monitor.py @@ -20,12 +20,15 @@ # Boston, MA 02110-1301, USA. # +from __future__ import print_function +from __future__ import unicode_literals + import sys, subprocess, re, signal, time, atexit, os from gnuradio import gr -class monitor: +class monitor(object): def __init__(self,tool="gr-ctrlport-monitor"): - print "ControlPort Monitor running." + print("ControlPort Monitor running.") self.started = False self.tool = tool atexit.register(self.shutdown) @@ -38,35 +41,35 @@ class monitor: gr.prefs().singleton().set_bool("PerfCounters","on",True); gr.prefs().singleton().set_bool("PerfCounters","export",True); except: - print "no support for gr.prefs setting" + print("no support for gr.prefs setting") def __del__(self): if(self.started): self.stop() def start(self): - print "monitor::endpoints() = %s" % (gr.rpcmanager_get().endpoints()) + print("monitor::endpoints() = %s" % (gr.rpcmanager_get().endpoints())) try: cmd = map(lambda a: [self.tool, re.search("-h (\S+|\d+\.\d+\.\d+\.\d+)",a).group(1), re.search("-p (\d+)",a).group(1)], gr.rpcmanager_get().endpoints())[0] - print "running: %s"%(str(cmd)) + print("running: %s"%(str(cmd))) self.proc = subprocess.Popen(cmd); self.started = True except: self.proc = None - print "failed to to start ControlPort Monitor on specified port" + print("failed to to start ControlPort Monitor on specified port") def stop(self): if(self.proc): if(self.proc.returncode == None): - print "\tcalling stop on shutdown" + print("\tcalling stop on shutdown") self.proc.terminate() else: - print "\tno proc to shut down, exiting" + print("\tno proc to shut down, exiting") def shutdown(self): - print "ctrlport.monitor received shutdown signal" + print("ctrlport.monitor received shutdown signal") if(self.started): self.stop() |