Hello,

I want to be able to schedule multiple timed receives without waiting for
the rx_streamer blocking call to schedule the next receive. When the time
difference between two consecutive rx_streamer->recv() calls is below
around 400 microseconds, the  time_spec for the second call sometimes will
be in the past because of the latency of the first blocking call
for lower sample rates. Is there a way to schedule multiple receives in
advance to avoid this issue? I included a sample code below. The
next_rx_time is configured to make sure rx has enough time to collect the
number of samples specified in num_rx_samples based on the radio sample
rate. I am using X310.

For tx, the buffer and the time to send is issued with the
tx_streamer.send() call. But for rx, the time to receive has to be set
first with issue_stream_cmd before calling the rx_streamer.recv(). Why is
this implemented this way for rx?

uhd::stream_cmd_t
stream_cmd(uhd::stream_cmd_t::STREAM_MODE_NUM_SAMPS_AND_DONE);
stream_cmd.stream_now = false;
stream_cmd.num_samps = num_rx_samples;
stream_cmd.time_spec = uhd::time_spec_t(rx_time_spec);
rx_streamer->issue_stream_cmd(stream_cmd);

while (1)
{
   rx_streamer->recv(&buff.front(),  num_rx_samples , md, 1.0);
   ....
   //schedule the next recv
   rx_time_spec += next_rx_time;
   stream_cmd.time_spec = uhd::time_spec_t(rx_time_spec);
   stream_cmd.stream_now = false;
   stream_cmd.num_samps =  num_rx_samples;
   rx_streamer->issue_stream_cmd(stream_cmd);
}

Thank you in advance for your help.

Sunny
_______________________________________________
USRP-users mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to