[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Discuss-gnuradio] PROBLEM: Understanding gr_block's implementation
From: |
Jonas |
Subject: |
Re: [Discuss-gnuradio] PROBLEM: Understanding gr_block's implementation |
Date: |
Mon, 7 Jan 2008 12:20:59 +0800 |
Yes, each "item" is supposed to be a vector of 10000 floats; and yes,
each input stream contains 10000 floats. I chose a vector type for
flexibility but I could always go back to turning it into a "plain old
data".
In that case, could I pass a multidimensional array as an input
argument to general_work? For example, I pass array_name[2][10000]
where the main index [2] in this case, represents 2 inputs streams?
I don't really intend to vary the input and output rates, but thanks
for the suggestion on using gr_sync_block! I'll try it too.
As a side note to <pedantic>, I already created functions that do just
that. It's already incorporated into the main signal processing block
that I am creating. But thanks for the suggestion! I'll see if I could
use it.
=)
On Jan 7, 2008 11:40 AM, Eric Blossom <address@hidden> wrote:
> On Mon, Jan 07, 2008 at 10:28:39AM +0800, Jonas Gacrama wrote:
> > These are some of the input parameters of gr_block::general_work() :
> >
> > input_items vector of pointers to the input items, one entry per input
> > stream
> > output_items vector of pointers to the output items, one entry per
> > output stream
> >
> > Am I correct in understanding that the input_items CAN point to a
> > vector<float> type of inputs?
>
> No, the data items must be "plain-old-data"...
> Something that can be copied safely with memcpy.
>
> > I plan to implement two input channels
> > of vector<float> type. Therefore I plan to pass TWO POINTERS of
> > vector<float> type as "input_items" to general_work.
>
> Do you mean that each "item" is conceptually a vector of 10,000
> floats? And that your block operates on two input streams, each of
> which contains "items" that are vectors of 10,000 floats?
>
> If so, you input signature should be:
>
> gr_make_io_signature(2, 2, 10000 * sizeof(float))
>
>
> Unless your block has a time varying i/o rate between input and
> output, I'd recommend that you derive your class from gr_sync_block
> instead of gr_block. It's easier that way.
>
> > Note that the discussion on this website:
> > "http://www.gnu.org/software/gnuradio/doc/howto-write-a-block.html"
> > only used one
> > "channel" of inputs since it only took values from a single stream. I
> > plan to take TWO CHANNELS of inputs wherein each channel contains
> > 10000 inputs.
>
> <pedantic>
>
> One of the joys of Free Software is that the code is available to
> inspect. There are 100's of blocks to look at, and at least 1/2 of
> them take more than a single input.
>
> In particular, you may want to look at the code for
> gr_add_vff.{h,cc} which adds streams of vectors of floats together and
> gr_add_ff.{h,cc} which adds streams of floats together.
>
> </pendantic>
>
> Eric
>