On Mon, Jul 20, 2015 at 4:58 PM, Nowlan, Sean <[email protected]> wrote:
> First, there may be multiple tags per sample. Use “get_tags_in_range” or > “get_tags_in_window” to get all the tags you need. Using > “get_tags_in_window(0, noutput_items, …)” will get you all the tags > associated with samples passed as your inputs. (Perhaps you know this > already and were just choosing a toy example, but I wanted to make it > clear). > > > > There is a pruning routine in the scheduler that will toss out “old” tags, > i.e., tags that have been accounted for based on “nitems_read”, which is > updated when you call consume_each. So I think you will end up getting the > last 5 tags again on the next call to work. But you have already propagated > them, so you will be adding duplicates. The solution is to only propagate > tags in the range that you intend to tell the scheduler you’ve consumed. > > > > (Caveat emptor: I haven’t tested this out, but I believe this is how it > would work). > > > > Sean > Sean is (should be...) correct here. To help, you can take a look at the scheduler overview, which has info about the tag stream system: http://www.trondeau.com/blog/2013/9/15/explaining-the-gnu-radio-scheduler.html And my original presentation on them: http://www.trondeau.com/grc2011-abstracts#thursday_1700_1730 Hope these help clear things up. Tom > > > *From:* [email protected] > [mailto:[email protected]] *On > Behalf Of *Richard Bell > *Sent:* Monday, July 20, 2015 3:51 PM > *To:* [email protected] > *Subject:* [Discuss-gnuradio] Tag Propagation Question > > > > If I set_tag_propagation policy(TPP_DONT) and then re-add all tags in > range to the output, but only produce a portion of the input items to > output, what effect does this have? > > Here is a good corner case example of what I mean: > > Suppose I'm given 10 items, and every item has a tag associated with it. I > then make the following actions > > *set_tag_propagation policy(TPP_DONT)* > > > > > *for( ii = 0; ii < 9; ii++) { add_item_tag(0, tags[ii].offset, > tags[ii].key, tags[ii].value, tags[ii].srcid); }* > > *consume_each(5);* > > *return 5;* > > I'm concerned this might cause tags to be added or lost. > > Thanks, > > Rich >
_______________________________________________ Discuss-gnuradio mailing list [email protected] https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
