discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] on the fly set_output_multiple()


From: Activecat
Subject: Re: [Discuss-gnuradio] on the fly set_output_multiple()
Date: Fri, 21 Feb 2014 07:38:54 +0800

Dear Martin,

Thanks for the hints.
I think this function helps:  set_min_noutput_items() 

Problem:
Says, the instantaneous interpolation_factor is 3.
As inherited from gr::block, the scheduler may call the general_work() with noutput_items=2 (any number is possible).
When this happen, there is nothing to be done except to consume_each(0) and return 0 in the general_work().
But then the scheduler will repeat calling general_work() many times with noutput_items=2.  This is fatal.

Solution:
On the fly,  set_min_noutput_items(3)
Then the scheduler will not call general_work() with noutput_items equals a value less than 3.
This solves the problems !

Question:
Does this function work on the fly?    set_min_noutput_items()

Thank you very much.

Regards,
Activecat


On Fri, Feb 21, 2014 at 3:31 AM, Martin Braun <address@hidden> wrote:
On 02/20/2014 01:46 PM, Activecat wrote:
> I need to create a interpolator block which has a callback function to
> change its interpolation factor on the fly.
>
> If this block is inherited from gr::sync_interpolator, its interpolation
> factor cannot be changed on the fly because the interpolation factor is
> an argument of its constructor.
>
> The alternative is to inherit from gr::block instead.  If the
> set_output_multiple() could be called on the fly, then the problem is
> solved.
>
> The problem is, the set_output_multiple() could not be changed on the fly !
> http://lists.gnu.org/archive/html/discuss-gnuradio/2010-11/msg00504.html
>
> Any solution to this?
> The objective is to create an interpolator block that its interpolation
> factor could be changed on the fly.

Well, in a ::block you can do whatever you like with your in- and output
buffers. Also, forecast() is called all the time, and its behaviour can
by dynamic. So, between those you should be able to figure something out.

1) Edit forecast()
2) in general_work(), check if buffer sizes work
3) produce() and consume() as required

MB

_______________________________________________
Discuss-gnuradio mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio


reply via email to

[Prev in Thread] Current Thread [Next in Thread]