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()) &lt; 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()) &lt; 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

Reply via email to