Dear Sir,
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.
Thanks in advance.
Regards,
Activecat
On 02/20/2014 01:46 PM, Activecat wrote:
The problem is, the set_output_multiple() could not be changed on the fly !
Re: [Discuss-gnuradio] call set_output_multiple() on the fly
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.
- Edit forecast()
- in general_work(), check if buffer sizes work
- produce() and consume() as required
MB
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 02/21/2014 12:38 AM, Activecat wrote:
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().
You could tweak forecast() to require more input.
Does this function work on the fly? set_min_noutput_items()
It should, that’s what it was made for.
MB