aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gr-qtgui/grc/qtgui_freq_sink_x.block.yml1
-rw-r--r--gr-qtgui/grc/qtgui_sink_x.block.yml4
-rw-r--r--gr-qtgui/grc/qtgui_waterfall_sink_x.block.yml4
-rw-r--r--gr-qtgui/include/gnuradio/qtgui/SpectrumGUIClass.h1
-rw-r--r--gr-qtgui/lib/SpectrumGUIClass.cc3
-rw-r--r--gr-qtgui/lib/sink_c_impl.cc14
-rw-r--r--gr-qtgui/lib/sink_f_impl.cc14
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; }