discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] Calling C++ method from Python


From: Marcus Müller
Subject: Re: [Discuss-gnuradio] Calling C++ method from Python
Date: Mon, 06 Jul 2015 09:53:16 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0

Hi Patrick,

the typical problem with C++ blocks is that people add public methods to
their _impl, but forget to declare these same methods in their public
non-impl class.
Have you done the same expand magic with the header in your
include/CMakeLists.txt?

Best regards,
Marcus


On 07/06/2015 04:09 AM, Patrick Sathyanathan wrote:
> Hi,
>
> I have worked my way through the Guided Tutorials on gnuradio.org. I have 
> written OOT blocks in Python and managed to expose some set methods in the 
> block as callbacks. Now I have written an OOT C++ block sweeper_cpp_f and I 
> want to expose a couple of setter methods in my block's class as callbacks 
> that can be invoked from Python. Initially I just defined the methods in my 
> sweeper_cpp_f_impl.cc file and added the following to the matching XML file:
>
>   <callback>set_direction($direction)</callback>
>   <callback>set_trigger_level($trigger_level)</callback>
>
> This builds fine and I am able to use the block in a GRC flow-graph. But at 
> runtime when one of the above methods is invoked as a result of GUI input I 
> get an error message:
>
> File "/home/wpats/ettus/grc/new_sweep_cpp.py", line 141, in 
> set_variable_chooser_direction
>     
> self.tutorial_sweeper_cpp_f_0.set_direction(self.variable_chooser_direction)
> AttributeError: 'sweeper_cpp_f_sptr' object has no attribute 'set_direction'
>
> I looked at built in module sig_source_X_impl.h.t and sig_source_X_impl.cc.t 
> (this is the analog signal source block) in gr-analog as an example for what 
> I am trying to accomplish. I converted my sources into a similar format and 
> modified the CMakeLists.txt in the .../gr-tutorial/lib directory to add:
>
> ########################################################################
> # Invoke macro to generate various sources and headers
> ########################################################################
> include(GrMiscUtils)
> GR_EXPAND_X_CC_H(tutorial sweeper_cpp_X_impl     f)
>
> This again builds fine after I edit the generate_helper.py generated script 
> to find an import module. I assumed that the above would do the necessary 
> magic to generate the wrappers for my callback methods but no such luck. I 
> still get the attribute error when invoking my C++ method.
>
> What is the right way to do this ? Any help/suggestions/pointers would be 
> appreciated. I can't be the first one to try to do this seemingly simple 
> task...
>
> Thanks,
>
> --Patrick
>
>                                         
> _______________________________________________
> Discuss-gnuradio mailing list
> address@hidden
> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio




reply via email to

[Prev in Thread] Current Thread [Next in Thread]