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

Reply via email to