diff options
-rw-r--r-- | gr-qtgui/grc/qtgui_freq_sink_x.block.yml | 1 | ||||
-rw-r--r-- | gr-qtgui/grc/qtgui_sink_x.block.yml | 4 | ||||
-rw-r--r-- | gr-qtgui/grc/qtgui_waterfall_sink_x.block.yml | 4 | ||||
-rw-r--r-- | gr-qtgui/include/gnuradio/qtgui/SpectrumGUIClass.h | 1 | ||||
-rw-r--r-- | gr-qtgui/lib/SpectrumGUIClass.cc | 3 | ||||
-rw-r--r-- | gr-qtgui/lib/sink_c_impl.cc | 14 | ||||
-rw-r--r-- | gr-qtgui/lib/sink_f_impl.cc | 14 |
7 files changed, 36 insertions, 5 deletions
diff --git a/gr-qtgui/grc/qtgui_freq_sink_x.block.yml b/gr-qtgui/grc/qtgui_freq_sink_x.block.yml index 1174e81bb..4043c7cc1 100644 --- a/gr-qtgui/grc/qtgui_freq_sink_x.block.yml +++ b/gr-qtgui/grc/qtgui_freq_sink_x.block.yml @@ -399,6 +399,7 @@ outputs: asserts: - ${fftsize >= 32 and fftsize <= 32768} +- ${not (fftsize & (fftsize -1))} templates: imports: |- diff --git a/gr-qtgui/grc/qtgui_sink_x.block.yml b/gr-qtgui/grc/qtgui_sink_x.block.yml index 676a70764..2a20eead9 100644 --- a/gr-qtgui/grc/qtgui_sink_x.block.yml +++ b/gr-qtgui/grc/qtgui_sink_x.block.yml @@ -103,6 +103,10 @@ outputs: optional: true hide: ${ not showports } +asserts: +- ${fftsize >= 32 and fftsize <= 32768} +- ${not (fftsize & (fftsize -1))} + templates: imports: |- from PyQt5 import Qt diff --git a/gr-qtgui/grc/qtgui_waterfall_sink_x.block.yml b/gr-qtgui/grc/qtgui_waterfall_sink_x.block.yml index 56e10bdaa..6b37af4cd 100644 --- a/gr-qtgui/grc/qtgui_waterfall_sink_x.block.yml +++ b/gr-qtgui/grc/qtgui_waterfall_sink_x.block.yml @@ -250,6 +250,10 @@ outputs: optional: true hide: ${ not showports } +asserts: +- ${fftsize >= 32 and fftsize <= 32768} +- ${not (fftsize & (fftsize -1))} + templates: imports: |- from PyQt5 import Qt diff --git a/gr-qtgui/include/gnuradio/qtgui/SpectrumGUIClass.h b/gr-qtgui/include/gnuradio/qtgui/SpectrumGUIClass.h index 1b191164c..385e6b7dc 100644 --- a/gr-qtgui/include/gnuradio/qtgui/SpectrumGUIClass.h +++ b/gr-qtgui/include/gnuradio/qtgui/SpectrumGUIClass.h @@ -94,6 +94,7 @@ public: static const long MAX_FFT_SIZE; static const long MIN_FFT_SIZE; + static const long DEFAULT_FFT_SIZE; QWidget* qwidget(); diff --git a/gr-qtgui/lib/SpectrumGUIClass.cc b/gr-qtgui/lib/SpectrumGUIClass.cc index c406ea9f3..4cd2e1cb3 100644 --- a/gr-qtgui/lib/SpectrumGUIClass.cc +++ b/gr-qtgui/lib/SpectrumGUIClass.cc @@ -18,7 +18,8 @@ #include <QEvent> const long SpectrumGUIClass::MAX_FFT_SIZE = 32768; -const long SpectrumGUIClass::MIN_FFT_SIZE = 256; +const long SpectrumGUIClass::MIN_FFT_SIZE = 32; +const long SpectrumGUIClass::DEFAULT_FFT_SIZE = 1024; SpectrumGUIClass::SpectrumGUIClass(const uint64_t maxDataSize, const uint64_t fftSize, diff --git a/gr-qtgui/lib/sink_c_impl.cc b/gr-qtgui/lib/sink_c_impl.cc index 8fe6a067c..9ecb06d9c 100644 --- a/gr-qtgui/lib/sink_c_impl.cc +++ b/gr-qtgui/lib/sink_c_impl.cc @@ -142,8 +142,18 @@ QWidget* sink_c_impl::qwidget() { return d_main_gui.qwidget(); } void sink_c_impl::set_fft_size(const int fftsize) { - d_fftsize = fftsize; - d_main_gui.setFFTSize(fftsize); + if ((fftsize >= d_main_gui.MIN_FFT_SIZE) && (fftsize <= d_main_gui.MAX_FFT_SIZE)) { + d_fftsize = fftsize; + d_main_gui.setFFTSize(fftsize); + } else { + GR_LOG_INFO( + d_logger, + fmt::format("FFT size must be >= {} and <= {}.\nSo falling back to {}.", + d_main_gui.MIN_FFT_SIZE, + d_main_gui.MAX_FFT_SIZE, + d_main_gui.DEFAULT_FFT_SIZE)); + d_main_gui.setFFTSize(d_main_gui.DEFAULT_FFT_SIZE); + } } int sink_c_impl::fft_size() const { return d_fftsize; } diff --git a/gr-qtgui/lib/sink_f_impl.cc b/gr-qtgui/lib/sink_f_impl.cc index 052e6ecd9..212e4da00 100644 --- a/gr-qtgui/lib/sink_f_impl.cc +++ b/gr-qtgui/lib/sink_f_impl.cc @@ -135,8 +135,18 @@ QWidget* sink_f_impl::qwidget() { return d_main_gui.qwidget(); } void sink_f_impl::set_fft_size(const int fftsize) { - d_fftsize = fftsize; - d_main_gui.setFFTSize(fftsize); + if ((fftsize >= d_main_gui.MIN_FFT_SIZE) && (fftsize <= d_main_gui.MAX_FFT_SIZE)) { + d_fftsize = fftsize; + d_main_gui.setFFTSize(fftsize); + } else { + GR_LOG_INFO( + d_logger, + fmt::format("FFT size must be >= {} and <= {}.\nSo falling back to {}.", + d_main_gui.MIN_FFT_SIZE, + d_main_gui.MAX_FFT_SIZE, + d_main_gui.DEFAULT_FFT_SIZE)); + d_main_gui.setFFTSize(d_main_gui.DEFAULT_FFT_SIZE); + } } int sink_f_impl::fft_size() const { return d_fftsize; } |