summaryrefslogtreecommitdiff
path: root/gr-uhd/lib/gr_uhd_usrp_source.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gr-uhd/lib/gr_uhd_usrp_source.cc')
-rw-r--r--gr-uhd/lib/gr_uhd_usrp_source.cc19
1 files changed, 19 insertions, 0 deletions
diff --git a/gr-uhd/lib/gr_uhd_usrp_source.cc b/gr-uhd/lib/gr_uhd_usrp_source.cc
index 62da83d96..a3369ade0 100644
--- a/gr-uhd/lib/gr_uhd_usrp_source.cc
+++ b/gr-uhd/lib/gr_uhd_usrp_source.cc
@@ -252,8 +252,27 @@ public:
return true;
}
+ void flush(void){
+ const size_t nbytes = 4096;
+ gr_vector_void_star outputs;
+ std::vector<std::vector<char> > buffs(_nchan, std::vector<char>(nbytes));
+ for (size_t i = 0; i < _nchan; i++){
+ outputs.push_back(&buffs[i].front());
+ }
+ while (true){
+ const size_t num_samps = _dev->get_device()->recv(
+ outputs, nbytes/_type.size, _metadata,
+ _type, uhd::device::RECV_MODE_FULL_BUFF, 0.0
+ );
+ if (_metadata.error_code == uhd::rx_metadata_t::ERROR_CODE_TIMEOUT) break;
+ }
+ }
+
bool stop(void){
_dev->issue_stream_cmd(uhd::stream_cmd_t::STREAM_MODE_STOP_CONTINUOUS);
+
+ this->flush();
+
return true;
}