How can I reconfigure a flow graph? How do I use lock(), unlock()?¶
A running flow graph is static, and can't be changed. There are two ways to implement reconfigurability:
- Use lock() / unlock()
- Create blocks that react dynamically
Using lock() and unlock(), you will actually stop the flow graph, and can then disconnect and re-connect blocks. In the following example, the flow graph will run for a second, the stop the execution (lock), disconnect the source, connect a different one, and resume. The resulting file will first have data from the vector source, then lots of zeros.
Note that this is not meant for sample-precision timing, but rather for situations where time does not really matter.
If sample-timing is an issue, use general blocks to react to certain events. In the following example, we assume that you have written a general block which stops reading from the first sink at a given time, and then seamlessly switches over to the second input:
There are many blocks that react to input data, or incoming tags.
参考:http://gnuradio.org/redmine/projects/gnuradio/wiki/FAQ#How-can-I-reconfigure-a-flow-graph-How-do-I-use-lock-unlock