diff --git a/Transceiver52M/UHDDevice.cpp b/Transceiver52M/UHDDevice.cpp index cc90d73..261eabc 100644 --- a/Transceiver52M/UHDDevice.cpp +++ b/Transceiver52M/UHDDevice.cpp @@ -24,6 +24,7 @@ #include "Logger.h" #include #include +#include #ifdef HAVE_CONFIG_H #include "config.h" @@ -240,6 +241,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), @@ -352,6 +375,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 {