diff --git a/public-trunk/Transceiver52M/UHDDevice.cpp b/public-trunk/Transceiver52M/UHDDevice.cpp index ef5b2fc..9cdde8f 100644 --- a/public-trunk/Transceiver52M/UHDDevice.cpp +++ b/public-trunk/Transceiver52M/UHDDevice.cpp @@ -27,6 +27,7 @@ #include "Logger.h" #include #include +#include /* use_ext_ref - Enable external 10MHz clock reference @@ -233,6 +234,28 @@ void *async_event_loop(uhd_device *dev) } } +/* + Catch and drop underrun 'U' and overrun 'O' messages from stdout + since we already report using the logging facility. Direct + everything else appropriately. + */ +void uhd_msg_handler(uhd::msg::type_t type, const std::string &msg) +{ + switch (type) { + case uhd::msg::status: + LOG(INFO) << msg; + break; + case uhd::msg::warning: + LOG(WARN) << msg; + break; + case uhd::msg::error: + LOG(ERROR) << msg; + break; + case uhd::msg::fastpath: + break; + } +} + uhd_device::uhd_device(double rate, bool skip_rx) : desired_smpl_rt(rate), actual_smpl_rt(0), tx_gain(0.0), tx_gain_min(0.0), tx_gain_max(0.0), @@ -343,6 +366,9 @@ bool uhd_device::open() { LOG(INFO) << "creating USRP device..."; + // Register msg handler + uhd::msg::register_handler(&uhd_msg_handler); + // Allow all UHD devices uhd::device_addr_t dev_addr(""); try {