Hello,
I'm currently working on a
multithreaded application which needs to set the gain value of a USRP
sink at runtime. The only thing I've found that works so far is:
stop() -> wait() -> lock() -> set_gain() -> unlock() -> start()
I
tried using just lock/unlock, but this causes the SDR to freeze
completely. As it is, the current setup causes stability issues and
crashes after only a few minutes at best. I've heard about sending
commands to the USRP Sink, though I couldn't find any documentation on
the subject and the one page I found has been removed (and was never
archived). Here's the message I keep receiving from the flowgraph:
gr::log :FATAL: tagged_stream_mux0 - Missing a required length tag on port 1 at item #100
thread[thread-per-block[10]: <block tagged_stream_mux(14)>]: Missing length tag.
It
seems to happen at random with any tagged block in the flowgraph (the
point of failure typically changes every time we run it). While we could
theoretically just catch the error and restart the flowgraph, I would
rather find a more permanent solution. We're using two Ettus B200 SDRs
for our current tests.
If
anyone has any information on proper dataflow control for blocks or the
USRP sink message passing API, I'd really appreciate it.
Thanks,
Guy Marino