diff --git a/uhd_cpp/uhd_spectrum/specwidget.ui b/uhd_cpp/uhd_spectrum/specwidget.ui index e3fa71c20f0b51f04ac5d10557da7d422c762b47..a2b9c2a4bd69e4b8c4a6a8dca2d17bab4c3773a4 100644 --- a/uhd_cpp/uhd_spectrum/specwidget.ui +++ b/uhd_cpp/uhd_spectrum/specwidget.ui @@ -326,7 +326,7 @@ - 200 + 0 200000 diff --git a/uhd_cpp/uhd_spectrum/uhd_device_win32.cpp b/uhd_cpp/uhd_spectrum/uhd_device_win32.cpp index 2607668df7dba62b29e99eba4199e84643845a5e..d06a4ef88d85a88be62e0a6439da31848f12c721 100644 --- a/uhd_cpp/uhd_spectrum/uhd_device_win32.cpp +++ b/uhd_cpp/uhd_spectrum/uhd_device_win32.cpp @@ -280,8 +280,8 @@ double uhd_device::set_sample_rate(const double sprate) double bw = sprate; if (bw >56e6) bw = 56e6; - if (bw <200000) - bw = 200000; + if (bw <200000 || bw > sprate) + bw = sprate; fprintf(stderr, "Setting RX Rate: %f...\n", sprate); UHD_DO(uhd_usrp_set_rx_rate(usrp, sprate, m_channel)); @@ -323,6 +323,14 @@ double uhd_device::set_rx_bandwidth(double bw) { if (usrp) { + double srate = 0; + // See what rate actually is + UHD_DO(uhd_usrp_get_rx_rate(usrp, m_channel, &srate)); + fprintf(stderr, "Current RX Rate: %f...\n", srate); + + if (bw < 200000 || bw >=srate) + bw = srate; + fprintf(stderr, "Setting RX Bandwidth: %f MHz...\n", bw/1e6); UHD_DO(uhd_usrp_set_rx_bandwidth(usrp, bw, m_channel));