> Thanks for your answer Thomas! > > Our observations shows also that the usrp2 doesn't drop any samples > when an underrun occur. If we drop samples at the host, can we get a > continous stream of sample at 25Msamp/s that is synchronous? What is > your maximum continous bandwidth? >
Underflows occur on transmit, nothing can drop because this is a lack of samples. Overflow occurs on receive. The host cannot back-pressure the USRP2, so samples backup into the host and are dropped in the kernel at the packet level. Every packet has a timestamp which can be used to determine exactly what packets have gone missing in a continuous stream. See the benchmark_rx example which demonstrates this. > I've been looking in the source code and tried to find out where to > implement the sample dropping. My thoughts so far is that it should > be somewhere in vrt_packet_handler.hpp and/or io_impl.cpp in the send > functions and get_send_buffs function. > Is there something that you think the streaming API is missing please let me know. I think you can accomplish what you need with the API without modifying the underlying implementation. > The underruns are received(detected) in the pirate loop in > io_impl.cpp, correct?! It's not obvious for me how to figure out > which samples that I should dropp to get the rest of the samples > synchronized again. Can you give me some hints? > Asynchronous messages (which include transmit underflow) are received in this loop and pushed into a queue. You can retrieve these events with device::recv_async_msg(...) -Josh _______________________________________________ Discuss-gnuradio mailing list [email protected] http://lists.gnu.org/mailman/listinfo/discuss-gnuradio
