Hi everyone,
I'm creating a custom header format
'header_format_cognitive' derived from
'header_format_default'. I'm adding extra info to the default header, very similar to the way the child class
'header_format_counter' adds bits/symbol to the default. I'm creating my class as an OOT module named
'cognitiveSDR'.
I'm running into what appears to be a common issue, with people previously creating spin-offs of
packet_header_default,
including gr-ieee-802.11.
https://www.mail-archive.com/address@hidden/msg50789.htmlhttp://gnuradio.4.n7.nabble.com/Trouble-with-SWIG-for-packet-formatter-default-child-class-td52446.htmlI was able to compile, install and import my module in GRC, but once I try to create the class using a variable with "cognitiveSDR.header_format_cognitive(..........)", I get the message:
"Value "cognitiveSDR.header_format_cognitive(..........)" cannot be evaluated: 'module' object has no attribute 'header_format_cognitive'"
To give some context, normally when creating a standard header format object using a GRC variable I call "digital.header_format_counter(preamble_b, 3, Const_PLD.bits_per_symbol())"
Steps taken so far:1. Created my new module
cognitiveSDR with gr_modtool
2. Added
header_format_cognitive (c++) using gr_modtool as type 'noblock'
3. Fleshed out the .cc and .h files using a combination of
header_format_counter,
header_format_crc and my own functions
4. Made sure to
#include <gnuradio/digital/header_format_default.h> in the header file
5. Used
digital::header_format_default as the parent class in the class declaration since it's now in separate namespace to 'digital'
6. Modified set(GR_REQUIRED_COMPONENTS RUNTIME DIGITAL) in CMakeLists.txt
6. Modified the SWIG file as shown below
Are there any modifications that I should make to the default CMakeLists.txt file generated for the module or additional changes to the SWIG file in order to make my class accessible inside GRC? I assume the parent and child classes are linking up properly since cmake, make and install succeed.
Thanks for you help! Cheers.
Justin
cognitiveSDR_swig.i
-------------------------------------------------------------------------------------------------------------------
/* -*- c++ -*- */
#define COGNITIVESDR_API
#define DIGITAL_API
%include "gnuradio.i" // the common stuff
//load generated python docstrings
%include "cognitiveSDR_swig_doc.i"
%{
#include "cognitiveSDR/header_format_cognitive.h"
%}
%include "gnuradio/digital/header_format_base.h"
%include "gnuradio/digital/header_format_default.h"
%include "cognitiveSDR/header_format_cognitive.h"
%template(header_format_cognitive_sptr) boost::shared_ptr<gr::cognitiveSDR::header_format_cognitive>;
%pythoncode %{
header_format_cognitive_sptr.__repr__ = lambda self: "<header_format_cognitive>"
header_format_cognitive = header_format_cognitive .make;
%}