Hi all,
I am using x310 to continuously receive on RF A RX2, process the data, and
schedule a transmit periodically on RF B TX. The issue I am running into is
when the RX is in STREAM_MODE_START_CONTINUOUS, and TX is scheduled to send at
a specific time in the future a set number of samples, I get a lot of LLLLs. I
understand L is a late packet, but I get the same LLLs even if I add more time
to the tx schedule.
After I confirm the specified number of samples are sent, I set md.end_of_burst
= true and call tx_stream->send("", 0, md). And, this when I see the LLLLs. I
used the rec_sysnc_msg and found out the LLLs are printed while it is waiting
for EVENT_CODE_BURST_ACK.
Waiting for async burst ACK... LLLLLLLLLLLLLLLLsuccess\
Waiting for async burst ACK... LLLLLLLLLLLLLLLLsuccess
I don't see this issue if RX is also scheduled or if I turn off the RX and send
data from a buffer. Below is part of the code that handles the tx schedule and
send. Any help would be greatly appreciated.
uhd::tx_metadata_t md;\
md.start_of_burst = false;\
md.end_of_burst = false;\
md.has_time_spec = true;\
md.time_spec = uhd::time_spec_t(tx_send_time)\
tx_timeout = 2.0\
\
while (mainloop)\
{\
//\*\*\
\*\*//\
while (num_tx_samps < tx_buff_size)\
{\
num_tx_samps = tx_stream->send(&txBuff\[tx_buff_index\], tx_buff_size,
md, tx_timeout);\
if (num_tx_samps < tx_buff_size)\
{\
std::cout << " TX number of sample error: " << std::endl;\
tx_buff_size -= num_tx_samps;\
tx_buff_index += num_tx_samps;\
num_tx_samps = 0;\
}\
\
md.has_time_spec = false;\
md.start_of_burst = false;\
md.end_of_burst = false;\
}\
\
// send a mini EOB packet\
md.end_of_burst = true;\
tx_stream->send("", 0, md);\
\
std::cout << std::endl\
<< "Waiting for async burst ACK... " << std::flush;\
uhd::async_metadata_t async_md;\
bool got_async_burst_ack = false;\
// loop through all messages for the ACK packet (may have underflow
messages in queue)\
while (not got_async_burst_ack and tx_stream->recv_async_msg(async_md,
tx_timeout))\
{\
got_async_burst_ack =\
(async_md.event_code ==
uhd::async_metadata_t::EVENT_CODE_BURST_ACK);\
}\
std::cout << (got_async_burst_ack ? "success" : "fail") << std::endl;\
\
//schedule the next tx\
md.has_time_spec = true;\
md.start_of_burst = false;\
md.end_of_burst = false;\
tx_time_spec += tx_time_interval;\
md.time_spec = uhd::time_spec_t(tx_time_spec);\
//\*\*\
\*\*//\
}
Thanks!
_______________________________________________
USRP-users mailing list -- [email protected]
To unsubscribe send an email to [email protected]