diff options
author | Eric Blossom | 2009-09-04 03:32:32 -0700 |
---|---|---|
committer | Eric Blossom | 2009-09-04 03:32:32 -0700 |
commit | 985830ff0afcce7b5af2d829e70f5c440a39c52a (patch) | |
tree | b74c059844fde581b0cc549b2c181a6174f2bc49 /usrp2/host/lib/usrp2_impl.h | |
parent | e49601b4754da836fece4e869c58b0c9b3e2d8ad (diff) | |
download | gnuradio-985830ff0afcce7b5af2d829e70f5c440a39c52a.tar.gz gnuradio-985830ff0afcce7b5af2d829e70f5c440a39c52a.tar.bz2 gnuradio-985830ff0afcce7b5af2d829e70f5c440a39c52a.zip |
Fix problem with commands timing out (specifically stop_rx_streaming)
After fixing the race, this change uses Tom's idea to stop enqueuing
data when trying to stop, and adds a new flush_rx_samples method
to drop any samples that may have already been accumulated.
I ran Tom's test case 500 times with 0 failures ;-)
Diffstat (limited to 'usrp2/host/lib/usrp2_impl.h')
-rw-r--r-- | usrp2/host/lib/usrp2_impl.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/usrp2/host/lib/usrp2_impl.h b/usrp2/host/lib/usrp2_impl.h index 434e0e9b1..ed71a6ba3 100644 --- a/usrp2/host/lib/usrp2_impl.h +++ b/usrp2/host/lib/usrp2_impl.h @@ -87,6 +87,8 @@ namespace usrp2 { int d_tx_interp; // shadow tx interp int d_rx_decim; // shadow rx decim + bool d_dont_enqueue; + void inc_enqueued() { omni_mutex_lock l(d_enqueued_mutex); d_num_enqueued++; @@ -142,6 +144,7 @@ namespace usrp2 { bool read_gpio(int bank, uint16_t *value); bool start_rx_streaming(unsigned int channel, unsigned int items_per_frame); bool rx_samples(unsigned int channel, rx_sample_handler *handler); + bool flush_rx_samples(unsigned int channel); bool stop_rx_streaming(unsigned int channel); unsigned int rx_overruns() const { return d_num_rx_overruns; } unsigned int rx_missing() const { return d_num_rx_missing; } |