On Fri, Mar 16, 2012 at 3:28 PM, Zhonghua <zhong...@sics.se> wrote:

> **
> On 03/16/2012 06:37 PM, Tom Rondeau wrote:
>
> On Fri, Mar 16, 2012 at 8:41 AM, Zhonghua <zhong...@sics.se> wrote:
>
>> Hi all,
>>
>> After a period of using gnu radio, I have a problem of how to understand
>> the stream. I got an information from a literature says: 'From the high
>> level point-of-view, infinite streams of data flow through the ports. At
>> the C++ level,streams are dealt with in convenient sized pieces,
>> represented as contiguous arrays of the underlying type.' In almost each
>> signal processing block we can see the definition of 'general_work' has
>> this format:
>>     general_work(int noutput_items,
>>                     gr_vector_int &ninput_items,
>>                     gr_vector_const_void_star &input_items,
>>                     gr_vector_void_star &output_items)
>> Some literatures say the 'noutput_items' variable represents the items
>> number of one piece of the stream.  So the first question is what on earth
>> the size of this variable? where dose it be specified? For example if A
>> block connects to B block, how can ensure the 'noutput_items' of A block
>> equal to the 'ninput_items' (presume B block only has one input stream).
>> In an concrete instance, in gr_squelch_base_cc.cc, we can see the last
>> program as:
>>    if (d_state != ST_MUTED)
>>       out[j++] = in[i]*gr_complex(d_envelope, 0.0);
>>    else
>>       if (!d_gate)
>>          out[j++] = 0.0;
>> If we set d_gate as False(Actually in case of high sample rate it has to
>> be set as False), when the input power is lower than the threshold(means
>> the d_state should be as ST_MUTED), the out[j] shall get nothing. That
>> means at this point there is no output data. So how the sequential block
>> recognise this point? For instance the sequential block is
>> ieee802_15_4_demod, how could it know where is this lost point? If only one
>> point lost from the squelch block, is that means the whole piece of stream
>> and even the whole package could not be demodulated correctly?
>> We can set the instance in more precise condition. If there are two
>> pieces of stream: stream A and stream B. Assume each noutput_items is 10,
>> that is to say we have A[0], A[1] ....to A[9] and B[0] to B[9]. If A[0] has
>> lost, then the stream entering into the sequential demodulation block is
>> A[0](lost),A[1]....A[9]? Or is A[1],A[2]....B[0]?
>> If A[0] is valid, A[1] has lost, dose that mean the first piece of stream
>> would not be demodulated correctly? If one package need both these two
>> pieces of stream, dose it mean this package would not be demodulated
>> correctly?
>>
>> Any answer is greatly appreciated.
>>
>> Sincerely,
>>
>> Zhonghua
>>
>
>  Zhonghua,
>
>  This is a really complicated question to answer without giving you a
> full essay. All of this happens in the scheduler, so if you want to know
> more, study the code for the thread-per-block scheduler in
> gnuradio-core/src/lib/runtime. It's the gr_block_executor that looks at the
> read/write pointers to each blocks buffer and determines how many samples
> are available to be read and how many samples a block can write.
>
>  Tom
>
>   Hi Tom,
>
> Thank you for your information. I think you have answered the first
> question that where and how dose the size be determined. To the detailed
> question, do you think if one item lost, all this package will lose? And in
> my last instance, do you think which assemblage will be sent to the
> sequential block? Thank you again!
>
> Zhonghua
>

I'm honestly not sure what you are getting at. Where/how would you lose an
item?

Tom
_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to