We have an application which uses the uhd.usrp.sink3 block, with
io_type.COMPLEX_FLOAT32. The complex vector is converted from a
text-based I-Q file. It is then sent to the sink with the assignment
self._src = gr.vector_source_c(z, True).
As I understand the documentation, the Boolean True parameter means that
USRP should continually/repeatedly re-transmit the same signal.
Transmission is started using tb.start(), time.sleep(1), and streaming=
True statements.
Transmission (called “streaming”) is stopped with tb.stop() ,
tb.wait(), tb.set_vector(), and streaming=False statements.
(Note tb=my_top_block(), which is gr.top.block class).
-
Not sure why the time.sleep(1), or the tb.wait() statements are even
necessary. -
But more importantly, it seems that if we change the parameters which
affect the vector (including the filename used as the source), the
tb.set_vector() statement seems to have no effect on the signal when
transmission is resumed. It appears that once the vector has been sent
to the USRP (once), it cannot be reset except by a complete re-start of
the entire program/script. In other words, tb.stop is really tb.pause .
Is there a better way ? (Note: changing other parameters, such as
preamp and gain, does have the proper effect. I surmise that the stream
is buffered in USRP memory and cannotsimply be over-written. Is that
true ?
George Kinal
Lead Engineer
MITRE E531 Signal Processing and Communications Analysis
Phone (703) 983-7585