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 -- usrp-users@lists.ettus.com To unsubscribe send an email to usrp-users-le...@lists.ettus.com