Hello everyone, I am trying to build a web API to start and stop flowgraphs remotely and autonomously.
I am having trouble gracefully shutting down one flowgraph and moving on to the next. My preferred way implement the services is by running top_block.start() from my main thread and allowing it to start its own thread. To shut it down I then call top_block.stop() followed by top_block.wait(). The threads appear to shut down gracefully but when I try to run another flowgraph (either the same flowgraph again or a different one) I start to get errors. The two error types I get are either; 1. that the second flowgraph cannot find the USRP device because it is being held by the first ($ uhd_find_devices also returns 'No Devices Found' until I exit the main thread at which point it finds my B210 again), or 2. that a socket that the second wants to bind to is in use by the first All threads I create are daemon threads, but since the main thread doesn't shut down in my software then I guess that's irrelevant while my code is running. Are there any examples of how to programmatically teardown flowgraphs so that they free all resources? Or ways that I can manually free up resources from outside of the top_block, for instance using the uhd library. Im using GNU Radio 3.7, UHD 3.14 and the USRPs we use are Ettus UHD B210s. Any help appreciated, Steven