Short story - doing a Lock/Unlock on a HeirBlock2 to reconfigure its
internal flow graph stops a WavFile_Sink that is in it until a new wav
file is opened. It doesn’t affect any File_Sinks that are in the graph.
If there are multiple instances of the HeirBlock2 running, it will stop
the WavFile_Sink running in all the instances. This didn’t happen in
3.6, but started in 3.7. I have an extremely simplified sample program
that demonstrates the problem: GitHub - robotastic/multi-wav: Test out having multiple wav recorder running at once
https://github.com/robotastic/multi-wav
Long Story - I am recording multiple audio channels from my SDR to
capture my local fire departments radio system. I have to add and remove
multiple recorders at different freq offsets to catch the different
transmissions as the start and stop. To do that I have a bunch of
HeirBlock2 based graphs that I attach to the source. When they are not
being used I lock the block and connect the block source to a null sink.
When they are needed, I connect all the internal blocks together and
tune the xlating offset.
The sample program I wrote shows this. It starts up 6 recording blocks.
After 10 seconds it will randomly lock/unlock one of the recording
blocks. You will see that all of the WavFile_Sinks in each instance of
the block stops recording. However the file_sinks that are attached
inside the Block keep on recording fine. You will see the raw file size
continue to grow and the wav file size stop.
The sample program is in C++. You should be able to download, do ‘cmake
.’ and then ‘make’ and then ‘./multi-wav’ Then look in the ‘recordings’
directory.
It seems like there is a problem with GnuRadio and HeirBlock Locking in
3.7…. or wavfile_sink. Also possible I did something really dumb. Any
thoughts?