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

Reply via email to