> 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
Discuss-gnuradio@gnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to