Thanks for the response and attached is the XML file, also the last commit is
commit 23508458f31e8b50264045ee0a34d07c7abc807d Author: Derek Kozel <derek.ko...@ettus.com> Date: Thu Jun 29 08:37:14 2017 -0700 ________________________________ From: Nicolas Cuervo <nicolas.cue...@ettus.com> Sent: Wednesday, October 4, 2017 10:39:43 PM To: Avila, Jose A Cc: usrp-users@lists.ettus.com Subject: Re: [USRP-users] Error in RFNoC grc with OOT module Hello Jose, this might be an indentation problem at the XML that is located at your_oot/grc/your_block.xml. Do you mind sharing with us that file? Also, I remember seeing this error in earlier versions of the tool, so it would be interesting to know if it still happens, and under what conditions. Could you please tell us which is the last commit that you are pointing to at "gr-ettus"? To check, please go to your gr-ettus repository and run: $ git log If it is not updated, it is always recommended to update. Regards, -N On Wed, Oct 4, 2017 at 11:02 PM, Avila, Jose A via USRP-users <usrp-users@lists.ettus.com<mailto:usrp-users@lists.ettus.com>> wrote: Hello we are developing an OOT module following the tutorial, but similar to siggen, but are currently encountering an error that comes up with ./testtwochannel.py The error that comes up is the following File "./testtwochannel.py", line 97 self.siggen2ch_twochannelsiggen_0 = Template error: siggen2ch.twochannelsiggen( ^ SyntaxError: invalid syntax The file in question is the following: #!/usr/bin/env python2 # -*- coding: utf-8 -*- ################################################## # GNU Radio Python Flow Graph # Title: Testtwochannel # Generated: Wed Oct 4 14:35:59 2017 ################################################## if __name__ == '__main__': import ctypes import sys if sys.platform.startswith('linux'): try: x11 = ctypes.cdll.LoadLibrary('libX11.so') x11.XInitThreads() except: print "Warning: failed to XInitThreads()" from PyQt4 import Qt from gnuradio import eng_notation from gnuradio import gr from gnuradio import qtgui from gnuradio import uhd from gnuradio.eng_option import eng_option from gnuradio.filter import firdes from optparse import OptionParser import SimpleXMLRPCServer import ettus import siggen2ch import sip import sys import threading from gnuradio import qtgui class testtwochannel(gr.top_block, Qt.QWidget): def __init__(self): gr.top_block.__init__(self, "Testtwochannel") Qt.QWidget.__init__(self) self.setWindowTitle("Testtwochannel") qtgui.util.check_set_qss() try: self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc')) except: pass self.top_scroll_layout = Qt.QVBoxLayout() self.setLayout(self.top_scroll_layout) self.top_scroll = Qt.QScrollArea() self.top_scroll.setFrameStyle(Qt.QFrame.NoFrame) self.top_scroll_layout.addWidget(self.top_scroll) self.top_scroll.setWidgetResizable(True) self.top_widget = Qt.QWidget() self.top_scroll.setWidget(self.top_widget) self.top_layout = Qt.QVBoxLayout(self.top_widget) self.top_grid_layout = Qt.QGridLayout() self.top_layout.addLayout(self.top_grid_layout) self.settings = Qt.QSettings("GNU Radio", "testtwochannel") self.restoreGeometry(self.settings.value("geometry").toByteArray()) ################################################## # Variables ################################################## self.samp_rate = samp_rate = 10e6 self.waveform = waveform = "SINE_WAVE" self.ip_addr = ip_addr = "192.168.10.100" self.gain = gain = 1.0 self.freq = freq = samp_rate/10 self.enable = enable = False self.device3 = device3 = ettus.device3(uhd.device_addr_t( ",".join(('type=e3x0', "")) )) self.ampl_q = ampl_q = 1 self.ampl_i = ampl_i = 1 ################################################## # Blocks ################################################## self.xmlrpc_server_0 = SimpleXMLRPCServer.SimpleXMLRPCServer(('0.0.0.0', 8080), allow_none=True) self.xmlrpc_server_0.register_instance(self) self.xmlrpc_server_0_thread = threading.Thread(target=self.xmlrpc_server_0.serve_forever) self.xmlrpc_server_0_thread.daemon = True self.xmlrpc_server_0_thread.start() self.uhd_rfnoc_streamer_fifo_0 = ettus.rfnoc_generic( self.device3, uhd.stream_args( # TX Stream Args cpu_format="fc32", otw_format="sc16", args="gr_vlen={0},{1}".format(1, "" if 1 == 1 else "spp={0}".format(1)), ), uhd.stream_args( # RX Stream Args cpu_format="fc32", otw_format="sc16", args="gr_vlen={0},{1}".format(1, "" if 1 == 1 else "spp={0}".format(1)), ), "FIFO", -1, -1, ) self.siggen2ch_twochannelsiggen_0 = Template error: siggen2ch.twochannelsiggen( self.device3, uhd.stream_args( # TX Stream Args cpu_format="fc32", otw_format="sc16", args="gr_vlen={0},{1}".format(${grvlen}, "" if $grvlen == 1 else "spp={0}".format($grvlen)), ), uhd.stream_args( # RX Stream Args cpu_format="fc32", otw_format="sc16", args="gr_vlen={0},{1}".format(${grvlen}, "" if $grvlen == 1 else "spp={0}".format($grvlen)), ), $block_index, $device_index ) self.$(id).set_arg("spp", $spp) self.$(id).set_arg("frequency1", ((2*$frequency1)/$samp_rate)) self.$(id).set_arg("cartesian1", $cartesian1) self.$(id).set_arg("frequency2", ((2*$frequency2)/$samp_rate)) self.$(id).set_arg("cartesian2", $cartesian2) self.$(id).set_arg("gain", $gain) self.$(id).set_arg("enable", $enable) cannot find 'samp_rate' self.qtgui_freq_sink_x_0 = qtgui.freq_sink_c( 1024, #size firdes.WIN_BLACKMAN_hARRIS, #wintype 0, #fc samp_rate, #bw "", #name 1 #number of inputs ) self.qtgui_freq_sink_x_0.set_update_time(0.10) self.qtgui_freq_sink_x_0.set_y_axis(-140, 10) self.qtgui_freq_sink_x_0.set_y_label('Relative Gain', 'dB') self.qtgui_freq_sink_x_0.set_trigger_mode(qtgui.TRIG_MODE_FREE, 0.0, 0, "") self.qtgui_freq_sink_x_0.enable_autoscale(False) self.qtgui_freq_sink_x_0.enable_grid(False) self.qtgui_freq_sink_x_0.set_fft_average(1.0) self.qtgui_freq_sink_x_0.enable_axis_labels(True) self.qtgui_freq_sink_x_0.enable_control_panel(False) if not True: self.qtgui_freq_sink_x_0.disable_legend() if "complex" == "float" or "complex" == "msg_float": self.qtgui_freq_sink_x_0.set_plot_pos_half(not True) labels = ['', '', '', '', '', '', '', '', '', ''] widths = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] colors = ["blue", "red", "green", "black", "cyan", "magenta", "yellow", "dark red", "dark green", "dark blue"] alphas = [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] for i in xrange(1): if len(labels[i]) == 0: self.qtgui_freq_sink_x_0.set_line_label(i, "Data {0}".format(i)) else: self.qtgui_freq_sink_x_0.set_line_label(i, labels[i]) self.qtgui_freq_sink_x_0.set_line_width(i, widths[i]) self.qtgui_freq_sink_x_0.set_line_color(i, colors[i]) self.qtgui_freq_sink_x_0.set_line_alpha(i, alphas[i]) self._qtgui_freq_sink_x_0_win = sip.wrapinstance(self.qtgui_freq_sink_x_0.pyqwidget(), Qt.QWidget) self.top_layout.addWidget(self._qtgui_freq_sink_x_0_win) ################################################## # Connections ################################################## self.connect((self.uhd_rfnoc_streamer_fifo_0, 0), (self.qtgui_freq_sink_x_0, 0)) self.device3.connect(self.siggen2ch_twochannelsiggen_0.get_block_id(), 0, self.uhd_rfnoc_streamer_fifo_0.get_block_id(), 0) def closeEvent(self, event): self.settings = Qt.QSettings("GNU Radio", "testtwochannel") self.settings.setValue("geometry", self.saveGeometry()) event.accept() def get_samp_rate(self): return self.samp_rate def set_samp_rate(self, samp_rate): self.samp_rate = samp_rate self.siggen2ch_twochannelsiggen_0.Template error: set_arg("frequency1", ((2*$frequency1)/$self.samp_rate)) cannot find 'samp_rate' self.siggen2ch_twochannelsiggen_0.Template error: set_arg("frequency2", ((2*$frequency2)/$self.samp_rate)) cannot find 'samp_rate' self.qtgui_freq_sink_x_0.set_frequency_range(0, self.samp_rate) self.set_freq(self.samp_rate/10) def get_waveform(self): return self.waveform def set_waveform(self, waveform): self.waveform = waveform def get_ip_addr(self): return self.ip_addr def set_ip_addr(self, ip_addr): self.ip_addr = ip_addr def get_gain(self): return self.gain def set_gain(self, gain): self.gain = gain def get_freq(self): return self.freq def set_freq(self, freq): self.freq = freq def get_enable(self): return self.enable def set_enable(self, enable): self.enable = enable def get_device3(self): return self.device3 def set_device3(self, device3): self.device3 = device3 def get_ampl_q(self): return self.ampl_q def set_ampl_q(self, ampl_q): self.ampl_q = ampl_q def get_ampl_i(self): return self.ampl_i def set_ampl_i(self, ampl_i): self.ampl_i = ampl_i def main(top_block_cls=testtwochannel, options=None): from distutils.version import StrictVersion if StrictVersion(Qt.qVersion()) >= StrictVersion("4.5.0"): style = gr.prefs().get_string('qtgui', 'style', 'raster') Qt.QApplication.setGraphicsSystem(style) qapp = Qt.QApplication(sys.argv) tb = top_block_cls() tb.start() tb.show() def quitting(): tb.stop() tb.wait() qapp.connect(qapp, Qt.SIGNAL("aboutToQuit()"), quitting) qapp.exec_() if __name__ == '__main__': main() Thank you _______________________________________________ USRP-users mailing list USRP-users@lists.ettus.com<mailto:USRP-users@lists.ettus.com> http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
<?xml version="1.0"?> <block> <name>RFNoC: twochannelsiggen</name> <key>siggen2ch_twochannelsiggen</key> <category>siggen2ch</category> <import>import siggen2ch</import> <make>siggen2ch.twochannelsiggen( self.device3, uhd.stream_args( # TX Stream Args cpu_format="fc32", otw_format="sc16", args="gr_vlen={0},{1}".format(${grvlen}, "" if $grvlen == 1 else "spp={0}".format($grvlen)), ), uhd.stream_args( # RX Stream Args cpu_format="fc32", otw_format="sc16", args="gr_vlen={0},{1}".format(${grvlen}, "" if $grvlen == 1 else "spp={0}".format($grvlen)), ), $block_index, $device_index ) self.$(id).set_arg("spp", $spp) self.$(id).set_arg("frequency1", ((2*$frequency1)/$samp_rate)) self.$(id).set_arg("cartesian1", $cartesian1) self.$(id).set_arg("frequency2", ((2*$frequency2)/$samp_rate)) self.$(id).set_arg("cartesian2", $cartesian2) self.$(id).set_arg("gain", $gain) self.$(id).set_arg("enable", $enable) </make> <callback>set_arg("frequency1", ((2*$frequency1)/$samp_rate))</callback> <callback>set_arg("frequency2", ((2*$frequency2)/$samp_rate))</callback> <callback>set_arg("cartesian1", $cartesian1</callback> <callback>set_arg("cartesian2", $cartesian2</callback> <callback>set_arg("gain", $gain)</callback> <callback>set_arg("enable", $enable)</callback> <callback>set_arg("spp", $spp)</callback> <param> <name>Frequency 1</name> <key>frequency1</key> <value>0.3</value> <type>real</type> </param> <param> <name>Frequency 2</name> <key>frequency2</key> <value>0.1</value> <type>real</type> </param> <param> <name>Cartesian 1</name> <key>cartesian1</key> <value>28000</value> <type>int</type> </param> <param> <name>Cartesian 2</name> <key>cartesian2</key> <value>28000</value> <type>int</type> </param> <param> <name>Packet Size</name> <key>spp</key> <value>1024</value> <type>int</type> </param> <param> <name>Enable</name> <key>enable</key> <type>int</type> <option> <name>True</name> <key>1</key> </option> <option> <name>False</name> <key>0</key> </option> </param> <param> <name>Gain</name> <key>gain</key> <value>1.0</value> <type>real</type> </param> <!-- Make one 'param' node for every Parameter you want settable from the GUI. Sub-nodes: * name * key (makes the value accessible as $keyname, e.g. in the make node) * type --> <param> <name>Host Data Type</name> <key>type</key> <type>enum</type> <option> <name>Complex float32</name> <key>fc32</key> <opt>type:complex</opt> </option> <option> <name>Complex int16</name> <key>sc16</key> <opt>type:sc16</opt> </option> <option> <name>Byte</name> <key>u8</key> <opt>type:byte</opt> </option> <option> <name>VITA word32</name> <key>item32</key> <opt>type:s32</opt> </option> </param> <!--RFNoC basic block configuration --> <param> <name>Device Select</name> <key>device_index</key> <value>-1</value> <type>int</type> <hide>#if int($device_index()) < 0 then 'part' else 'none'#</hide> <tab>RFNoC Config</tab> </param> <param> <name>twochannelsiggen Select</name> <key>block_index</key> <value>-1</value> <type>int</type> <hide>#if int($block_index()) < 0 then 'part' else 'none'#</hide> <tab>RFNoC Config</tab> </param> <param> <name>FPGA Module Name</name> <key>fpga_module_name</key> <value>noc_block_twochannelsiggen</value> <type>string</type> <hide>all</hide> <tab>RFNoC Config</tab> </param> <param> <name>Force Vector Length</name> <key>grvlen</key> <value>1</value> <type>int</type> </param> <param> <name>Device Format</name> <key>otw</key> <type>enum</type> <option> <name>Complex int16</name> <key>sc16</key> </option> <option> <name>Complex int8</name> <key>sc8</key> </option> <option> <name>Byte</name> <key>u8</key> </option> </param> <source> <name>out</name> <type>complex</type> <vlen>$grvlen</vlen> <domain>rfnoc</domain> </source> </block>
_______________________________________________ USRP-users mailing list USRP-users@lists.ettus.com http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com