|
From: | Mostafa Alizadeh |
Subject: | Re: [Discuss-gnuradio] Problem with large number of inputs. |
Date: | Sun, 27 Jul 2014 10:21:12 -0700 |
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 :)
Greetings,
Marcus
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
>
[Prev in Thread] | Current Thread | [Next in Thread] |