discuss-gnuradio
[Top][All Lists]
Advanced

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

Re: [Discuss-gnuradio] Question about adding your own classes


From: Tom Rondeau
Subject: Re: [Discuss-gnuradio] Question about adding your own classes
Date: Mon, 23 Sep 2013 11:20:28 -0400

On Mon, Sep 23, 2013 at 12:24 AM, Tommy Tracy II <address@hidden> wrote:
> Perfect,
>
> Thank you everyone. What I did was include the header files in my block
> source files; I needed to add them to the CMakeLists.txt in /lib under:
> list(APPEND router_sources
> to get everything to build and link correctly.
>
> I was then able to import the module and use it without error in python.
> From now on I will use 'no block'.

Great!

> ---------
>
> The next question I have is... is there any documentation on creating GNU
> Radio programs in c++ including the build instructions? I want to test my
> code in a c++ program as well. I saw the example dial_tone, but I'm not sure
> what else I need to include to build it. dial_tone also doesn't seem to work
> in my virtual machine with the following error:
>
> address@hidden:~/Src/pybombs/src/gnuradio$
> ./build/gr-audio/examples/c++/dial_tone
> audio_oss_sink: /dev/dsp: No such file or directory
> terminate called after throwing an instance of 'std::runtime_error'
>   what():  audio_oss_sink
> Aborted (core dumped)

We've always just pointed to the dial tone example for how to build
C++-only projects. I don't think that we've produced a tutorial on how
to do it, though someone else may have.

As for your problem, what you are seeing is just an audio driver
issue. In your VM, does your sound work at all? Do you know what
device or audio system you are using (OSS, ALSA, Pulseaudio, etc)? The
/dev/dsp is assuming OSS. The dial_tone.cc file is pretty light on
features. You'll have to get in there and edit it to change the device
it's using. Go to the "audio::sink::make(rate)" and change that to
"audio::sink::make(rate, device)" where 'device' is the device name
that you want to use. If you are using Ubunut, say, in your VM and
sound works fine with it, you can likely use "pulse" as your device
name. Recompile and try that.

Tom



> Sincerely,
> Tommy James Tracy II
> Ph.D Student
> High Performance Low Power Lab
> University of Virginia
> Phone: 913-775-2241
>
> On Sep 21, 2013, at 11:21 AM, Tom Rondeau <address@hidden> wrote:
>
> On Fri, Sep 20, 2013 at 7:13 PM, Martin Braun (CEL)
> <address@hidden> wrote:
>
> Hi Tommy,
>
> is this a visibility issue? Did you use modtool to add the additional
> classes? If not, do you have a FOO_API macro in your class def?
>
> MB
>
>
> Tommy,
>
> Yes, make sure that the FOO_API is declared for the classes. Also, you
> have to make sure they are being imported into the swig module
> correctly in gr-foo/swig/foo_swig.i.
>
> You can use gr_modtool with the class type "noblock" to create classes
> that are not gr::blocks for this purpose, which will set up the cmake
> and swig files correctly.
>
>
> On Fri, Sep 20, 2013 at 01:58:16PM -0400, Tommy Tracy II wrote:
>
> Dear List,
>
>
> I am using gr_modtool to create new modules and blocks, and I have a
> question
> about adding additional .cc/.h files that are not included by gr_modtool to
> the
> cmake file or otherwise importing them by hand.
>
>
> My new blocks are dependent on two new classes called
> NetworkInterface.{cc,h}
> and EthernetConnector.{cc,h}. During the make process, if there is a syntax
> error in either of these files, the compiler will alert me. I was able to
> fix
> all problems and get the cmake, make, and make install completed. The
> problem
> manifested itself when I attempted to import the module:
>
> ----------
>
> import router
>
>
> Traceback (most recent call last):
>
>  File "<stdin>", line 1, in <module>
>
>  File
> "/home/tjt7a/Src/target/lib/python2.7/dist-packages/router/__init__.py",
> line 45, in <module>
>
>    from router_swig import *
>
>  File "/home/tjt7a/Src/target/lib/python2.7/dist-packages/router/
> router_swig.py", line 26, in <module>
>
>    _router_swig = swig_import_helper()
>
>  File "/home/tjt7a/Src/target/lib/python2.7/dist-packages/router/
> router_swig.py", line 22, in swig_import_helper
>
>    _mod = imp.load_module('_router_swig', fp, pathname, description)
>
> ImportError: /home/tjt7a/Src/target/lib/libgnuradio-router.so: undefined
> symbol: _ZN16NetworkInterface7connectEPc
>
> ----------
>
> To investigate the definition of this symbol, I ran c++filt
>
> ----------
>
> $c++filt _ZN16NetworkInterface7connectEPc
>
> NetworkInterface::connect(char*)
>
> ----------
>
> This indicates, that my libgnuradio-router module cannot access the
> NetworkInterface object file, even though it was part of the compilation
> step.
>
>
> My thought process was to create the two shared object (.so) files by hand,
> and
> move them to my python path location. So I did that:
>
> ----------
>
> cc -shared -o libEthernetConnector.so -fPIC EthernetConnector.cc
>
> cc -shared -o libNetworkInterface.so -fPIC NetworkInterface.cc
>
> I then copied them to the location of my gnuradio .so files
>
> ----------
>
>
> Unfortunately, this still hasn't solved the problem. Does anyone know a
> solution to this problem?
>
>
> Tommy James Tracy II
>
> Ph.D Student
>
> High Performance Low Power Lab
>
> University of Virginia
>
> Phone: 913-775-2241
>
>
>
> _______________________________________________
> Discuss-gnuradio mailing list
> address@hidden
> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>
>
>
> --
> Karlsruhe Institute of Technology (KIT)
> Communications Engineering Lab (CEL)
>
> Dipl.-Ing. Martin Braun
> Research Associate
>
> Kaiserstraße 12
> Building 05.01
> 76131 Karlsruhe
>
> Phone: +49 721 608-43790
> Fax: +49 721 608-46071
> www.cel.kit.edu
>
> KIT -- University of the State of Baden-Württemberg and
> National Laboratory of the Helmholtz Association
>
> _______________________________________________
> Discuss-gnuradio mailing list
> address@hidden
> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>
>
>
>
> --
> Tom
> GRCon13 Oct. 1 - 4
> http://www.trondeau.com/grcon13
>
> _______________________________________________
> Discuss-gnuradio mailing list
> address@hidden
> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>
>



-- 
Tom
GRCon13 Oct. 1 - 4
http://www.trondeau.com/grcon13



reply via email to

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