[Top][All Lists]

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

Re: [Discuss-gnuradio] Problem with large number of inputs.

From: Marcus Müller
Subject: Re: [Discuss-gnuradio] Problem with large number of inputs.
Date: Sun, 27 Jul 2014 13:21:51 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.5.0

Having your complete general_work function wouldn't have hurt my
understanding much...

I really can't make out what you're trying to do without doubt.

Anyway, from the code below I think "in" *must at least* have the same
number of entries that your for loop has iterations; did you just try using

d_group * N_FS(d_normal) instead of d_N_phich_group * N_FS_phich(d_normal_cp) 
when allocating your array?
It seems to me that having two ways to determine how many inputs there is a 
likely cause for mistake. Use the size() of the input_items to determine how 
many inputs you really have, and assert(input_items.size() == 
number_of_inputs_like_I_calculate_it); to make sure things line up.

Also, the whole process seems unnecessary, since you do nothing more than 
copying the pointers from input_items to in; the typecast is nothing but 
syntactic magic and can be done by having "in = ((const gr_complex*)*) 
input_items;"; also, I encourage you to use the C++-style explicit cast 
operators (in this case, reinterpret_cast<>) for their clarity, but that's more 
a question of personal liking :)


On 26.07.2014 21:55, Mostafa Alizadeh wrote:
> Hi Marcus,
> You're right. I didn't clarify the problem.
> Actually in C++, I wrote:
> block_impl::block_impl(bool normal, int group)
>       : gr::block("phich_grouping",
>                   gr::io_signature::make(1, group * N_FS(normal), sizeof
> (gr_complex)),
>               gr::io_signature::make(1, 1, sizeof(gr_complex))),
> // N_FS function returns 8 or 4 depends on its input.
> // in the work function :
> // d_normal and d_group are defined in the .h file
> const gr_complex *in[d_N_phich_group * N_FS_phich(d_normal_cp)];
> for (int i=0; i<d_group * N_FS(d_normal); i++)
>         {
>             in[i] = (const gr_complex *) input_items[i];
> }
> when I set the "group" value to 3, the number of input ports would be 24.
> In this case, I want to access to one element of "in" like this:
> cout << " in " << in[0][0] << endl;
> I got the aforementioned error!
> But when I set "group = 1" which means 8 input ports, all things are fine.
> any idea please,
> Best

reply via email to

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