discuss-gnuradio
[Top][All Lists]
Advanced

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

Re: [Discuss-gnuradio] Creation of a block (PSDU 29 octets) using messag


From: Jose Torres Diaz
Subject: Re: [Discuss-gnuradio] Creation of a block (PSDU 29 octets) using message passing technique
Date: Thu, 20 Sep 2012 16:58:14 +0930

Hi Josh,

I checked the code again. I am almost there, at this stage I don't get any error using gnuradio::block in my .cc file (see below):

: gnuradio::block ("test_temporal",
         gr_make_io_signature (0, 0, 0), //This is a source - no inputs
         gr_make_io_signature(0, 0, 0),
         msg_signature(false, 1))

and I changed the work function in the following way:

int asrp_test_temporal::work (const InputItems &input_items,
                                           const OutputItems &output_items)

However, when I compile this block, I am getting some errors with the swig file, which points out that my defined class has no member named 'detail' and 'set_detail'. The errors is shown below:

asrp_swig.cc: In function 'PyObject* _wrap_asrp_test_temporal_sptr_detail(PyObject*, PyObject*)':
asrp_swig.cc:8800:25: error: 'class asrp_test_temporal' has no member named 'detail'
asrp_swig.cc: In function 'PyObject* _wrap_asrp_test_temporal_sptr_set_detail(PyObject*, PyObject*, PyObject*)':
asrp_swig.cc:8852:16: error: 'class asrp_test_temporal' has no member named 'set_detail'

Do you have any suggestion in this case?.

Best Regards,

Jose.

On Thu, Sep 20, 2012 at 10:47 AM, Josh Blum <address@hidden> wrote:


On 09/19/2012 07:42 PM, Jose Torres Diaz wrote:
> Hi Josh,
>
> I modified in my .h file:
>
> #include <gnuradio/block.h>
>
> and also, I inherit from gnu radio as follows:
>
> //* This uses the preferred technique: subclassing gr_sync_block.
> //class asrp_test_temporal : public gr_sync_block
> class asrp_test_temporal : public gnuradio::block    // <--Here, I added
> the inherit
> {
> private:
> // Definition
>
> Then, in the .cc file I wrote:
>
> : gnuradio::block ("test_temporal",
>              gr_make_io_signature(0, 0, 0),
>              gr_make_io_signature(0, 0, 0),
>              msg_signature(false, 1))
>
>
> When I compile again, the complain is different. It displays:
>
> asrp_test_temporal.cc:75:26: error: cannot allocate an object of abstract
> type 'asrp_test_temporal'
> ./asrp_test_temporal.h:99:7: note:   because the following virtual
> functions are pure within 'asrp_test_temporal':
> /usr/local/include/gnuradio/block.h:236:17: note:     virtual int
> gnuradio::block::work(const InputItems&, const OutputItems&)
> make[2]: *** [asrp_test_temporal.lo] Error 1
>

Double check the error, it just wants you to create a work method with
the given definition. The signature stuff looks just fine.

-josh

> According to the instruction in block coding:
> https://github.com/guruofquality/grextras/wiki/Blocks-Coding-Guide, I only
> need to write the msg_signature(#input,#output), but I decided to use the
> gr_make_io_signature anyway, because I am reading the code for the example
> of "socket_to_blob.cc".
>
> 1. Do I need to use gr_make_io_signature or just msg_signature is enough?.
>
> Many thanks for your kind help,
>
> Regards,
>
> Jose.
>
>
>
> On Wed, Sep 19, 2012 at 3:33 PM, Josh Blum <address@hidden> wrote:
>
>>
>>
>> On 09/19/2012 01:11 AM, Jose Torres Diaz wrote:
>>> Hi,
>>>
>>> I'm trying to use "message passing" technique in order to create a block
>>> that generates 29 Octets. Currently, I'm using a block that generates 29
>>> Octets and then use tag streaming. In the .cc file, IO signature looks
>> like:
>>>
>>> gr_sync_block ("st1_pktsrc_dummy_b",
>>>            gr_make_io_signature (0, 0, 0),
>>>            gr_make_io_signature (MIN_OUT, MAX_OUT, sizeof (unsigned
>> char)))
>>>
>>> While, the stream tags looks like this:
>>>
>>> add_item_tag(0, tag_pos,
>>>              d_burst_start_key,
>>>              pmt_sob,
>>>              d_my_unique_id)
>>>
>>> Now, I want to change this approach to message passing as it is explained
>>> here: https://github.com/guruofquality/grextras/wiki/Blocks-Coding-Guide
>> .
>>> So, I changed the lines indicated above, for the following:
>>>
>>>  : gr_sync_block ("test_temporal",
>>>                    gr_make_io_signature(0, 0, 0),
>>>                    gr_make_io_signature(0, 0, 0),
>>>                    msg_signature(false, 1))
>>>
>>
>> Careful here, check the coding guide,
>> you need to  #include <gnuradio/block.h>
>> and inherit from gnuradio::block
>>
>> -josh
>>
>> _______________________________________________
>> 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]