Hi,
I think you're not taking into account the fact that you're working with
vectors. The line
out[i] = in[i];
Should actually be
for(j=0; j<d_blk_size; j++){
out[i*d_blk_size+j] = in[i*d_blk_size + j];
}
and you should "save" blk_size as a block's attribute (I've used it above
as d_blk_size, following GNU Radio's typical way of naming attributes).
best
Federico

El jue, 2 dic 2021 a las 7:25, Ralf Gorholt (<ralf.gorh...@gmx.de>)
escribió:

> Dear all,
>
> I am quite new to GNU Radio and in order to see how GNU Radio blocks
> work I would like to create my own block that (for the moment) just
> copies complex data from the input to the output. This works as long as
> I copy only one number but not when I want to copy packets of numbers
> that come from the preceeding block. My block takes one parameter:
> blk_size. I would like to insert it in my DVB-T receiver flowgraph to
> analyze data (in a later step).
>
> I had a look at the square_ff example and other blocks to see how they
> are built but I still don't see what I am doing wrong. It must be a
> silly mistake. Perhaps you can help me? Here is the code:
>
> myblock_impl::myblock_impl(int blk_size)
>          : gr::block("myblock",
>                  gr::io_signature::make(1, 1, blk_size *
> sizeof(gr_complex)),
>                  gr::io_signature::make(1, 1, blk_size *
> sizeof(gr_complex)))
>      {
>      }
>
> void
>      myblock_impl::forecast(int noutput_items, gr_vector_int
> &ninput_items_required)
>      {
>          ninput_items_required[0] = noutput_items;
>      }
>
> int
>      myblock_impl::general_work(int noutput_items,
>                                 gr_vector_int &ninput_items,
>                                 gr_vector_const_void_star &input_items,
>                                 gr_vector_void_star &output_items)
>      {
>          const gr_complex *in = (const gr_complex *) input_items[0];
>          gr_complex *out = (gr_complex *) output_items[0];
>
>          for (int i = 0; i < noutput_items; i++) {
>              out[i] = in[i];
>          }
>
>          consume_each(noutput_items);
>
>          return noutput_items;
>      }
>
> And the YML file:
>
> id: dl5eu_myblock
> label: myblock
> category: '[dl5eu]'
>
> templates:
>    imports: import dl5eu
>    make: dl5eu.myblock(${blk_size})
>
> parameters:
> - id: blk_size
>    label: Block size
>    dtype: int
>    default: '1'
>
> inputs:
> - label: in
>    domain: stream
>    dtype: complex
>    vlen: ${blk_size}
>    optional: '0'
>
> outputs:
> - label: out
>    domain: stream
>    dtype: complex
>    vlen: ${blk_size}
>    optional: '0'
>
> file_format: 1
>
> Thank you very much for your help!
>
> Kind regards,
>
> Ralf
>

Reply via email to