Thursday, August 7, 2014

Re: [Discuss-gnuradio] questions about get_tags_in_range

Hi:
        Thanks Marcus and Martin.So kindly of you.Thanks.
        Now I understand the command get_tags_in_range.Thank you.
        But
>>       void ofdm_chanest_vcvc_impl::forecast (int noutput_items, gr_vector_int &ninput_items_required) >>      { >>        ninput_items_required[0] = (noutput_items/d_n_data_syms) * (d_n_data_syms + d_n_sync_syms); >>      } >>      And I think ninput_items_required[0] = (1/1) * (1 + 2)=3. >If you say so?! I don't know the value of any of these variables at the >time GNU Radio calls this. Usually, the scheduler doesn't ask for a >single output item, but for more, so noutput_items >> 1.

For the block:OFDM Channel Estimation,can I say noutput_items=1?Because I know every time,the block output just one vector(item).Can you explain it to me?Thank you so much.
Best regards,
xd






At 2014-08-07 03:47:53, "Marcus Müller" <marcus.mueller@ettus.com> wrote: >Hi Xianda, > >On 07.08.2014 08:10, xianda wrote: >> Hi all: >> I'm reading the source code ofdm_chanest_vcvc_impl.cc.And I don't know this command: >> // Propagate tags >> std::vector<gr::tag_t> tags; >> get_tags_in_range(tags, 0,nitems_read(0), nitems_read(0)+framesize); >> >> I will try my best to explain my question more clearly. >> 1. I read: >> void ofdm_chanest_vcvc_impl::forecast (int noutput_items, gr_vector_int &ninput_items_required) >> { >> ninput_items_required[0] = (noutput_items/d_n_data_syms) * (d_n_data_syms + d_n_sync_syms); >> } >> And I think ninput_items_required[0] = (1/1) * (1 + 2)=3. >If you say so?! I don't know the value of any of these variables at the >time GNU Radio calls this. Usually, the scheduler doesn't ask for a >single output item, but for more, so noutput_items >> 1. >> Then nitems_read(0)=3.Is it right?(nitems_read:Return the number of items read on input stream which_input. ) >Wrong, nitems_read(0) is the number of items that have been consumed by >a block up to now. "read" is past tense, here. >> 2. const int framesize = d_n_sync_syms + d_n_data_syms; >> Then framesize=2+1=3. >this obviously depends on what your instance uses as number of sync >symbols and data symbols. >> 3.Then get_tags_in_range(tags, 0,nitems_read(0), nitems_read(0)+framesize);---->>>get_tags_in_range(tags, 0,3, 6); >> But: >> {0 1 2}--->>>blk--->>>{0} >> It don't have 3 4 5 item.Can someone explain it to me?Thank you. >> Best regards, >> xd >get_tags_in_range stores the tags in the tag vector you supply as first >argument: > >get_tags_in_range(tags, 0,nitems_read(0), nitems_read(0)+framesize); > > >The second argument is the input stream number (0), the third is the >start of the range, in this case the number of items that have already >been consumed in previous calls to work, which is the number of the >first item in the current call to work. The third argument is the end of >the range. > >Hope that cleared things up a little! > >Greetings, >Marcus > > >_______________________________________________ >Discuss-gnuradio mailing list >Discuss-gnuradio@gnu.org >https://lists.gnu.org/mailman/listinfo/discuss-gnuradio


No comments:

Post a Comment