Ali,

Is that really your forecast? That won't work. You'll need to implement it.
Unless you actually meant to do consume_each(noutput_items) AND
return(noutput_items), because then you shouldn't be using a general
gr::block, but gr::sync_block, which saves you the hassle of
implementing a forecast and of explicitly consuming items.

Best regards,
Marcus

On 07/21/2017 08:20 AM, Ali wrote:
> #ifdef HAVE_CONFIG_H
> #include "config.h"
> #endif
>
> #include <gnuradio/io_signature.h>
> #include "block_name_impl.h"
> #include "function.h"
>
> namespace gr {
>  namespace module {
>   
>    block_name::sptr
>    block_name::make(float parameter)
>    {
>      return gnuradio::get_initial_sptr
> (new block_name_impl(parameter));
>    }
>
>    /*
>     * The private constructor
>     */
>
> *int myints[] = {4000,4000,4000,4000,4000,4000,4000,4000};*
> *const std::vector<int> inputs (myints,
> myints+sizeof(myints)/sizeof(float));*
> *int myints2[] = {4000,4000,4,4};*
> *const std::vector<int> outputs (myints2,
> myints2+sizeof(myints2)/sizeof(float));*
>
>  block_name_impl::block_name_impl(float parameter)
>   : gr::block("block_name",
> *gr::io_signature::makev(8,8,inputs),*
> *gr::io_signature::makev(4,4,outputs)),*
> parameter2(parameter)
>  {}
>
>    /*
>     * Our virtual constructor
>     */
>    block_name::~block_name_impl()
>    {
>    }
>
>    void
>    block_name_impl::forecast(int noutput_items, gr_vector_int
> &ninput_items_required)
>    {
>      /* <+forecast+> e.g. ninput_items_required[0] = noutput_items */
>    }
>
>    int
>    block_name_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 float *in1 = (const float *) input_items[0];*
> *     const float *in2 = (const float *) input_items[1];*
> *     const float *in3 = (const float *) input_items[2];*
> *     const float *in4 = (const float *) input_items[3];*
> *     const float *in5 = (const float *) input_items[4];*
> *     const float *in6 = (const float *) input_items[5];*
> *     const float *in7 = (const float *) input_items[6];*
> *     const float *in8 = (const float *) input_items[7];*
> *     float *out1 = (float *) output_items[0];*
> *     float *out2 = (float *) output_items[1];*
> *     float *out3 = (float *) output_items[2];*
> *     float *out4 = (float *) output_items[3];*
>
>      // Do <+signal processing+>
>      // Tell runtime system how many input items we consumed on
>      // each input stream.
>
> *function(in1,in2,in3,in4,in5,in6,in7,in8,parameter2,out1,out2,out3,out4);*
>
> consume_each(noutput_items);
> return noutput_items;
>      } 
>   }
> }
>   
>
> The "function line" may be inside a for, I am not sure. I am not sure
> of the bold lines also. What is your overall comments?
>
>
>
>
>
> 2017-07-21 8:52 GMT+03:00 Ali <03do...@gmail.com
> <mailto:03do...@gmail.com>>:
>
>     Hi,
>
>     Patrick's code does not work since I think I am using c++98. I
>     dont know how to enable c++11. Anyway for c++98 I wrote the
>     followings(I found on the internet):
>
>     -->
>     int myints[] = {4000,4000,4000,4000,4000,4000,4000,4000};
>     const std::vector<int> inputs (myints,
>     myints+sizeof(myints)/sizeof(float));
>     int myints2[] = {4000,4000,4,4};
>     const std::vector<int> outputs (myints2,
>     myints2+sizeof(myints2)/sizeof(float));
>     -->
>     makev(8,8,inputs) and makev(4,4,outputs)
>
>     It is compiled after "sudo make" command.
>     But when I wrote "gr_modtool makexml function", I got the
>     following error(... means I skipped writing these lines).
>
>     ...
>     Making GRC bindings for lib/function_impl.cc...
>     tbi
>     Error: Can't parse input signature.
>     tbi
>     Error: Can't parse output signature.
>     ...
>      if iosig[inout]['max_ports'] == '-1':
>     Key error: 'in'
>
>     I will post my whole code later.
>
>
>
>
>
>
>
>
>
>
>     2017-07-21 1:14 GMT+03:00 Patrick Sathyanathan <wp...@hotmail.com
>     <mailto:wp...@hotmail.com>>:
>
>         Try this instead:
>
>
>         const std::vector<int>
>         inputs{4000,4000,4000,4000,4000,4000,4000,4000};
>
>         and make sure you compile with c++11 enabled.
>
>         --Patrick
>
>         
> ------------------------------------------------------------------------
>         *From:* Discuss-gnuradio
>         <discuss-gnuradio-bounces+wpats=hotmail....@gnu.org
>         <mailto:hotmail....@gnu.org>> on behalf of Ali
>         <03do...@gmail.com <mailto:03do...@gmail.com>>
>         *Sent:* Thursday, July 20, 2017 12:13 AM
>         *To:* discuss-gnuradio@gnu.org <mailto:discuss-gnuradio@gnu.org>
>         *Subject:* Re: [Discuss-gnuradio] GNURadio OOT vector
>         input/output with different size
>          
>         Hi,
>
>         I dont have any background about C++. So I could not generate
>         the std::vector<int> with the desired content and could not
>         fınd anything on the internet. 
>
>         const std::vector<int> inputs[]
>         = {4000,4000,4000,4000,4000,4000,4000,4000};
>
>         does not work. I am getting the following error: 
>
>         "conversion from 'int' to non-scalar type 'std::vector<int>'
>         requested"
>
>         Best,
>         Ali
>
>
>          
>
>         2017-07-18 11:51 GMT+03:00 Marcus Müller <muel...@kit.edu
>         <mailto:muel...@kit.edu>>:
>
>             Hi Ali,
>
>>             I think this should also work, shouldn't it?
>             no, that's why I explained what you need to do (use makev).
>
>>             Does this part need to be changed since I am working with
>>             the vectors?
>             No, not really. The vectors are still only consecutive
>             numbers in memory.
>
>             Best regards,
>
>             Marcus
>
>
>             On 18.07.2017 07:51, Ali wrote:
>>             Hi,
>>
>>             1- Actually I am using the followings
>>
>>             make(8,8,1000*sizeof(float))
>>             make3(4,4,1000*sizeof(float),1000*sizeof(float),4*sizeof(float))
>>
>>             I think this should also work, shouldn't it?
>>
>>             2- Under the general work function I am using the followings:
>>
>>             const float *in1 = (const float *) input_items[0]
>>             ...
>>             float *out1 = (float *) output_items[0]
>>
>>             Does this part need to be changed since I am working with
>>             the vectors?
>>
>>             Thanks,
>>             Ali
>>
>>
>>
>>
>>             2017-07-17 16:42 GMT+03:00 Marcus Müller <muel...@kit.edu
>>             <mailto:muel...@kit.edu>>:
>>
>>                 Hi Ali,
>>
>>                 So, you want one block with:
>>
>>                   * 8 inputs, itemsize0…7 = 1000*4B = 4000B
>>                   * 4 outputs, itemsize0=itemsize1=4000B,
>>                     itemsize2=itemsize3=16B
>>
>>                 Correct?
>>
>>                 You need to generate two std::vector<int> with content
>>
>>                 {4000,4000,4000,4000,4000,4000,4000,4000}
>>
>>                 and
>>
>>                 {4000,4000,16,16}
>>
>>                 respectively, and use gr::io_signature::makev(int
>>                 min_streams, int max_streams, vector) to generate the
>>                 io_signatures[1] that you use in your block's
>>                 constructor. The question whether your block should
>>                 be a general, or a sync block, is independent from
>>                 the item sizes of the in and outputs, but depends on
>>                 whether there's always a fixed ratio of produced
>>                 output items to consumed input items, as explained in
>>                 [2].
>>
>>                 Best regards,
>>
>>                 Marcus
>>
>>                 [1]
>>                 
>> https://gnuradio.org/doc/doxygen/classgr_1_1io__signature.html#a99e0f9e8de8e7ce16ed92d9f2655e66c
>>                 
>> <https://gnuradio.org/doc/doxygen/classgr_1_1io__signature.html#a99e0f9e8de8e7ce16ed92d9f2655e66c>
>>                 [2]
>>                 
>> https://wiki.gnuradio.org/index.php/Guided_Tutorial_GNU_Radio_in_C%2B%2B#4.3.2_Specific_block_categories
>>                 
>> <https://wiki.gnuradio.org/index.php/Guided_Tutorial_GNU_Radio_in_C%2B%2B#4.3.2_Specific_block_categories>
>>
>>
>>                 On 07/17/2017 03:31 PM, Ali wrote:
>>>                 Hi to all,
>>>
>>>                 I want to design my own OOT module with the
>>>                 following I/O:
>>>
>>>                 8 inputs (length of 1000 and each element is type of
>>>                 float)
>>>                 2 outputs (length of 1000 and each element is type
>>>                 of float)
>>>                 2 outputs (length of 4 and each element is type of
>>>                 float)
>>>
>>>                 I used general type block but I could not get the
>>>                 desired outputs. Do you suggest other type of
>>>                 blocks? Is there any example similar to this work
>>>                 that I can study on? Can you suggest a module name
>>>                 or a link?
>>>
>>>                 Best,
>>>                 Ali
>>>
>>>
>>>
>>>                 _______________________________________________
>>>                 Discuss-gnuradio mailing list
>>>                 Discuss-gnuradio@gnu.org
>>>                 <mailto:Discuss-gnuradio@gnu.org>
>>>                 https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>>                 <https://lists.gnu.org/mailman/listinfo/discuss-gnuradio>
>>                 _______________________________________________
>>                 Discuss-gnuradio mailing list
>>                 Discuss-gnuradio@gnu.org
>>                 <mailto:Discuss-gnuradio@gnu.org>
>>                 https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>                 <https://lists.gnu.org/mailman/listinfo/discuss-gnuradio>
>>
>>
>>             _______________________________________________
>>             Discuss-gnuradio mailing list
>>             Discuss-gnuradio@gnu.org <mailto:Discuss-gnuradio@gnu.org>
>>             https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>             <https://lists.gnu.org/mailman/listinfo/discuss-gnuradio>
>             _______________________________________________
>             Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org
>             <mailto:Discuss-gnuradio@gnu.org>
>             https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>             <https://lists.gnu.org/mailman/listinfo/discuss-gnuradio> 
>
> _______________________________________________
> Discuss-gnuradio mailing list
> Discuss-gnuradio@gnu.org
> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to