I am trying to setup a flow graph that has 2 states, in which upon a
state change the flow graph is reconfigured.
FlowGraph 1:
[src] -> [filt] -> [modem-1]
FlowGraph 2:
[src] -> [filt] -> [modem-2]
FG-1 runs to completion, is then disconnected. Then FG-2 is connected
and executed. For both flowgraphs the src and filt are the same. The
modems are switched out and as such the requirements on the filter
output buffer size changes. The filter min_output_buffer size is
adjusted following the disconnect from FG-1 and prior to connecting
FG-2.
When FG-2 is executed I immediately get an error from the scheduler
complaining that a downstream sample requirement can’t be met. However,
when I query the min_output_buffer size from the offending upstream
blocks they appear to be correct. I also have tried locking the FG, then
disconnecting, reconfiguring, and unlocking (per the recommendation for
dynamic FG configuration in the GnuRadio FAQs). However, there is no
change in behavior. If I execute just FG-2 there is no error, so my
assumption is that I am not doing something when switching up the
configuration of the FG or it just does not work.
FG-1 runs to completion, is then disconnected. Then FG-2 is connected and
executed. For both flowgraphs the src and filt are the same. The modems are
switched out and as such the requirements on the filter output buffer size
changes. The filter min_output_buffer size is adjusted following the disconnect
from FG-1 and prior to connecting FG-2.
When FG-2 is executed I immediately get an error from the scheduler complaining
that a downstream sample requirement cant be met.
What actual block classes are you using?
I’ve recently found a bug with the same effect as you describe, which
occurs when I reuse a pfb_arb_resampler_ccf (but not involving any
explicit buffer control). See my report: http://gnuradio.org/redmine/issues/713
A workaround I found was to redesign the graph so that I could use a
rational_resampler instead, but I don’t know if this bug is truly
specific to that block or if the change avoids the problem by accident.
The source is the omsosdr-rtl block and the filter is the FIR. The
blocks in the modem are OOT modules. Both flow graphs work
independently, but when I try to dynamically switch between the modems,
I get the same error you are seeing. I do have a buffer requirement
change on the output of the FIR when I switch modems, but the querying
the FIR object tells me that the min_output_buffer is correct.
Thanks
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.