diff options
author | Josh Blum <josh@joshknows.com> | 2010-09-24 16:09:38 -0700 |
---|---|---|
committer | Josh Blum <josh@joshknows.com> | 2010-09-24 16:09:38 -0700 |
commit | d2452adf306502b1f7489f49454e8814bc84c6d4 (patch) | |
tree | 7679c293f1e80d7c3402aa4290a171d34f72f0a1 /gr-uhd/lib/uhd_simple_source.cc | |
parent | 1fe3790faed05b92ca4ad3a27da6eb23632d7e57 (diff) |
uhd: handle error codes in uhd source blocks
Diffstat (limited to 'gr-uhd/lib/uhd_simple_source.cc')
-rw-r--r-- | gr-uhd/lib/uhd_simple_source.cc | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/gr-uhd/lib/uhd_simple_source.cc b/gr-uhd/lib/uhd_simple_source.cc index 2ace1da68e..c1e11e85d2 100644 --- a/gr-uhd/lib/uhd_simple_source.cc +++ b/gr-uhd/lib/uhd_simple_source.cc @@ -23,6 +23,8 @@ #include <uhd_simple_source.h> #include <gr_io_signature.h> #include <stdexcept> +#include <iostream> +#include <boost/format.hpp> #include "utils.h" /*********************************************************************** @@ -132,10 +134,25 @@ public: uhd::rx_metadata_t metadata; //not passed out of this block - return _dev->get_device()->recv( + size_t num_samps = _dev->get_device()->recv( output_items, noutput_items, metadata, _type, uhd::device::RECV_MODE_FULL_BUFF ); + + switch(metadata.error_code){ + case uhd::rx_metadata_t::ERROR_CODE_NONE: + return num_samps; + + case uhd::rx_metadata_t::ERROR_CODE_OVERFLOW: + //ignore overflows and try work again + return work(noutput_items, input_items, output_items); + + default: + std::cout << boost::format( + "UHD source block got error code 0x%x" + ) % metadata.error_code << std::endl; + return num_samps; + } } private: |