On Tue, Dec 20, 2016 at 8:38 AM, Sean Horton <[email protected]> wrote:

> What is the best way to change settings such as gain, taps, frequency
> values, etc of various blocks while running? The current setup I'm
> refactoring receives new configs over tcp, and a block outputs the new
> config values to probe signals, and those probe signals are used to change
> various settings. In the case of setting some usrp source parameters
> (center frequency), it appears to not properly work, so for the usrp sink
> and sources, I am going to pass messages to change the parameters. This
> isn't possible for other blocks, though, as they do not have message
> inputs.
>
> If I should stick with the current method, though, I'm really curious how
> there is mutual exclusion, as the values are being changed while the
> flowgraph is running. I have looked at the source code for some of the
> blocks I'm using, and I don't see any mutexes. This makes me think this
> isn't the best way to do what is being done.
>

Calling the setter methods is fine. Mutexes are not necessary for simple
numeric parameters, because one thread (the block work thread) is only
reading and one thread is only writing (your control thread) and there are
no particular invariants to be maintained.

The worst thing that could happen is reading a half-written large value and
producing bad data for a period, but changing parameters in many cases will
result in some kind of “glitch” in the sample stream anyway, so this is
merely “noisier”.
_______________________________________________
Discuss-gnuradio mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to