Jeon, I was talking with a co-worker and I think I got the stock HDLC framer/deframer confused with the ones available in gr-framers on the gr-vt repo: https://github.com/gr-vt/gr-framers/tree/master/lib <https://github.com/gr-vt/gr-framers/tree/master/lib>
The framers in gr-framers do produce idle flags when there are no input messages; I’m not sure about the stock ones. — Seth > On Oct 21, 2015, at 12.48, Seth Hitefield <sd...@vt.edu> wrote: > > Jeon, > > You could also possibly use the HDLC framer/deframer blocks. That block > produces an idle flag when there are no message inputs. > > -- Seth > > > On 10/21/2015 11:39 AM, Jeon wrote: >> Dear Marcus, >> >> Thank you for quick and detailed answer. >> >> I'll check that gr-eventstream as well as fundamentals of GNU Radio you've >> described. >> >> Regards, >> Jeon. >> >> 2015-10-21 22:23 GMT+09:00 Marcus Müller <marcus.muel...@ettus.com >> <mailto:marcus.muel...@ettus.com>>: >> Hi Jeon, >> >> with gr-eventstream, there's something that already does the "idle time >> padding": >> https://github.com/osh/gr-eventstream/ >> <https://github.com/osh/gr-eventstream/> >> Read Tim's articles, too: >> http://oshearesearch.com/tag/gr-eventstream/ >> <http://oshearesearch.com/tag/gr-eventstream/> >> >> To answer your question: >>> 1. Is it allowed to forecast zero item? And does it behave as I expect? >> Well, yes, and no :) >> First: your Pad Idle block is a stream source (It doesn't have a stream >> input, only a message input); you don't have to implement a forecast, just >> use a sync block type (or the source block type that gr_modtool offers you >> to generate). >> Generally, it's right to tell GNU Radio you can't produce anything with the >> current input, but: >> stream sources are a little special, as they never get input, so from GNU >> Radio's perspective, the input situation can't ever change. So telling GNU >> Radio you can't produce anything will make your flow graph stop. As a side >> note, I've never thought about whether forecast ever gets called on a source >> -- basically, what should that do? There's not ninput_required array with >> nonzero length to be filled with values on a block with no inputs! >> >>> 2. If forecasting zero item is possible, willl general_work() be called >>> extremely frequently so that other blocks are prevented from being called? >> There's no "preventing other blocks from being called". GNU Radio is >> multithreaded, and as long as there's stuff to be done, the other blocks >> will be called until all buffers have run dry. >> >> The point here is that you should just block in your work function if you're >> a source. However, with the modern message passing alone, that's impossible, >> because messages are always delivered when your work is currently not >> running. Hence, gr-eventstream takes a queue approach, and that works pretty >> well. >> >> Best regards, >> Marcus >> >> >> >> >> On 10/21/2015 02:53 PM, Jeon wrote: >>> Consider a flow graph like: >>> <http://i.imgur.com/bNa6YuQ.png>http://i.imgur.com/bNa6YuQ.png >>> <http://i.imgur.com/bNa6YuQ.png> >>> >>> >>> >>> Message source produces a short message. Period is quite long. Thus, There >>> should be a long idle time. >>> >>> I'd like to build a block 'pad idle'. The block pad a predefined sequence >>> if the upstream block gives nothing. >>> >>> I think a prototype would be: >>> <https://gist.github.com/gsongsong/d40b85a76ab8e80ae468#file-gistfile1-txt-L11>https://gist.github.com/gsongsong/d40b85a76ab8e80ae468#file-gistfile1-txt-L11 >>> >>> <https://gist.github.com/gsongsong/d40b85a76ab8e80ae468#file-gistfile1-txt-L11> >>> >>> By setting the number of required items to zero in forecast(), >>> general_work() will be called even there is no items received. And general >>> work() checks the ninput_items and if it is zero, generates some >>> idle-padding samples/patterns. Otherwise, it just handles and passess a >>> message/samples to downstream. >>> >>> But it's just my thought. There may be a couple of considerations. >>> >>> 1. Is it allowed to forecast zero item? And does it behave as I expect? >>> 2. If forecasting zero item is possible, willl general_work() be called >>> extremely frequently so that other blocks are prevented from being called? >>> >>> Regards, >>> Jeon. >>> >>> >>> _______________________________________________ >>> 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