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
_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio