Problems when trying to make out of tree modules

Dear All,

I am trying to make an out of tree module by following the tutorial on
Gnu
radio website. I can write simple blocks in C++, compile it and install
it
to it usable in Gnuradio company.

But for some complex block, I want to implement them based on the
gnuradio
build-in blocks, for example, clock_recovery_mm_ff. So I make a new
block
in my out-of-tree module and try to first “copy” the build-in block into
my
out-of-tree module.

I changed the following 4 files in my OOT module to match the
corresponding
files of the build-in block:

lib/my_block_impl.cc
lib/my_block_impl.h
include/my_block.h
grc/my_block.xml

In each file, I changed all the “clock_recovery_mm_ff” into “my_block”.

I can successfully make and install the block without error and warring.
But when I try to run the grc graph, an error happens.

AttributeError: ‘module’ object has no attribute ‘my_block’.

Anyone can tell me what I should do to correct this error? Is there any
other files I should change?

When I make simple blocks by myself, I only change this 4 files and it
works.

Best regards,

Su Li

Hi Su Li,

have you added the new source files to the CMakeLists.txt in lib,
include and grc?
Do these block have the YOURMODULE_API property?

Best regards,
Marcus

Hi Marcus,

Thank you for your reply.

The source files are added to the CMakeLists.text files. But they are
not
added by my self, they are added when I use “gr_modtool add -t general
my_block” and “gr_modtool makexml my_block” to make a new block and xml
file.

Only the my_block.h file in include directory contains API

class MY_MODULE_API my_block : virtual public gr::block
{

}

Could you please tell me how to check the API property for the block?
Thanks in advance.

Best regards,

Su

2015-05-13 18:47 GMT+02:00 Marcus Müller [email protected]:

Hi Peter,

Thanks for your reply and suggestions.

I checked all the 4 files. I changed the original module and block names
of
build-in block into my module and block names. But unfortunately, the
error
still exists.

Could it be possibly because the build-in block, in my case
“clock_recovery_mm_ff” block, has some special dependency which is
included
in the code of the module but not in the code of the block.

The type of “clock_recovery_mm_ff” block is abnormal. It is just block,
not
gr::block nor gr::sync_block as mentioned in the OOT tutorial . Here is
the
code of declaration of this block in *.h file in “include” folder.

class DIGITAL_API clock_recovery_mm_ff : virtual public block

In my code, I change it into

class MY_MODULE_API my_block : virtual public block

Thank you for your reply again.

Best regards,

Su Li

2015-05-13 20:36 GMT+02:00 Peter M. [email protected]:

I’ve had a similar problem when I generated files for my own module
using the gr_modtool and then copied some existing code by replacing the
file(s) that gr_modtool generates. It turns out I had overlooked that
the new “my_block” name needs to be changed in several places, like the
namespace declaration, the #include compiler directive, and the
conditional #ifndef INCLUDED … directives. Once I updated that
correctly the AttributeError got resolved.

-Peter-

Hi all,

I found the problem.

In my OOT block, I try to use mmse_fir_interpolator. Thus, in the
my_block_impl.h file I use the following code to include the fir
interpolator:

#include <gnuradio/filter/mmse_fir_interpolator_ff.h>

But when I run ctest for my block, I got the following error:

ImportError:
/home/suli/gr-ctia802_15_4/build/lib/libgnuradio-ctia802_15_4.so:
undefined
symbol: _ZN2gr6filter24mmse_fir_interpolator_ffC1Ev

where ctia802_15_4 is my OOT module name. It seems that this fir filter
is
not correctly included.

Anyone can tell me how to fix it? Thanks in advance.

Best regards,

Su Li

2015-05-14 14:33 GMT+02:00 Su Li [email protected]:

There’s a GR_REQUIRED_COMPONENTS CMake variable[e.g. 1]; add FILTER.

Best regards,
Marcus
[1]

Am 15. Mai 2015 11:47:51 MESZ, schrieb Su Li [email protected]:

Hi Marcus,

Thanks a lot. It works now.

Best regards,

Su

2015-05-15 14:49 GMT+02:00 Marcus Müller [email protected]: