@Criss Swaim<mailto:[email protected]> - you were partly right. The problem was 
in the yml file, but not because I skipped that makeyaml step. The 'gr_modtool 
add' step provides a template yml file, which is a better starting point than 
the output of  'gr_modtool makeyaml'. The output of the latter does not include 
the "templates" section.

So, I used the instructions found here
https://wiki.gnuradio.org/index.php/YAML_GRC#Templates
and here
https://wiki.gnuradio.org/index.php/Guided_Tutorial_GNU_Radio_in_C%2B%2B#Step_4_bis:_Flesh_out_the_YAML_file

That made some progress! Now I can get the module/block onto the flowgraph and 
connect the inputs & outputs.
But when I try to execute the flow graph I get this error:
Generating: '/home/gavin/GNU_Stuff/GRC/U39/U39.py'
Executing: /usr/bin/python3 -u /home/gavin/GNU_Stuff/GRC/U39/U39.py
Warning: failed to XInitThreads()
Traceback (most recent call last):
  File "/home/gavin/GNU_Stuff/GRC/U39/U39.py", line 35, in <module>
    import tooltest
ModuleNotFoundError: No module named 'tooltest'

Note: the XInitThreads happens all the time and other flowgraphs work fine 
inspite of it.

Next I compared my yml file (see below) to the in-tree ABS block and discovered 
that all the gnuradio blocks have a  new keyword "flags" and a new section 
called "cpp_templates:", so I copied those to my file. But of course, that 
didn't help because it points to the location of the gnuradio modules/blocks, 
and I need to edit it - but I don't quite see what I should put in there.

So, questions:

  *   anyone have an example yml file of an OOT module/block for 3.9?
  *   what do the "flags" mean?
  *   what should I put in the "cpp_template" section?

Thanks,
Gavin


Here is my yml file:

id: tooltest_wire
label: wire
category: '[tooltest]'
flags: [ python, cpp ]

templates:
  imports: import tooltest
  make: tooltest.wire(${k})

cpp_templates:
  includes: ['#include <gnuradio/blocks/tooltest_wire.h>']
  declarations: 'blocks::tooltest_wire:sptr ${id};'
  make: 'this->${id} = blocks::tooltest_wire::make(${k});'

#  Make one 'parameters' list entry for every parameter you want settable from 
the GUI.
#     Keys include:
#     * id (makes the value accessible as keyname, e.g. in the make entry)
#     * label (label shown in the GUI)
#     * dtype (e.g. int, float, complex, byte, short, xxx_vector, ...)
parameters:
- id: k
  label: Scale Factor
  dtype: float
  default:  '1'

#  Make one 'inputs' list entry per input and one 'outputs' list entry per 
output.
#  Keys include:
#      * label (an identifier for the GUI)
#      * domain (optional - stream or message. Default is stream)
#      * dtype (e.g. int, float, complex, byte, short, xxx_vector, ...)
#      * vlen (optional - data stream vector length. Default is 1)
#      * optional (optional - set to 1 for optional inputs. Default is 0)
inputs:
-   label: in
    domain: stream
    dtype: float

outputs:
-   label: out
    domain: stream
    dtype: float

#  'file_format' specifies the version of the GRC yml format used in the file
#  and should usually not be changed.
file_format: 1





Guided Tutorial GNU Radio in C++ - GNU 
Radio<https://wiki.gnuradio.org/index.php/Guided_Tutorial_GNU_Radio_in_C%2B%2B#Step_4_bis:_Flesh_out_the_YAML_file>
Note: the get_minimum_distances function declaration also needs to be added to 
the class header (my_qpsk_demod_cb_impl.h).The function get_minimum_distances 
is a maximum likelihood decoder for the QPSK demodulater. Theoretically, the 
function should compute the distance from each ideal QPSK symbol to the 
received symbol (It is mathematically equivalent to determining the Voronoi 
regions of the ...
wiki.gnuradio.org


YAML GRC - GNU Radio<https://wiki.gnuradio.org/index.php/YAML_GRC#Templates>
Starting with release 3.8, YAML replaces XML as the file format for GNU Radio 
Companion. This is triggered by switching from Cheetah to Mako as the 
templating engine, since Cheetah does not support Python 3.
wiki.gnuradio.org

Reply via email to