diff --git a/plugins/channelrx/demodssb/ssbdemod.h b/plugins/channelrx/demodssb/ssbdemod.h index 86e96db30..4b7d1542d 100644 --- a/plugins/channelrx/demodssb/ssbdemod.h +++ b/plugins/channelrx/demodssb/ssbdemod.h @@ -137,6 +137,7 @@ public: } uint32_t getAudioSampleRate() const { return m_audioSampleRate; } + uint32_t getInputSampleRate() const { return m_inputSampleRate; } double getMagSq() const { return m_magsq; } bool getAudioActive() const { return m_audioActive; } diff --git a/plugins/channelrx/demodssb/ssbdemodgui.cpp b/plugins/channelrx/demodssb/ssbdemodgui.cpp index decf0130d..045991ec3 100644 --- a/plugins/channelrx/demodssb/ssbdemodgui.cpp +++ b/plugins/channelrx/demodssb/ssbdemodgui.cpp @@ -371,14 +371,25 @@ void SSBDemodGUI::applySettings(bool force) } } +int SSBDemodGUI::spanLog2Limit(int spanLog2) +{ + while (((m_ssbDemod->getAudioSampleRate() / (1< m_ssbDemod->getInputSampleRate()) && (spanLog2 < 4)) { + spanLog2++; + } + + return spanLog2; +} + void SSBDemodGUI::applyBandwidths(int spanLog2, bool force) { + spanLog2 = spanLog2Limit(spanLog2); + ui->spanLog2->setMaximum(5 - spanLog2Limit(1)); bool dsb = ui->dsb->isChecked(); //int spanLog2 = ui->spanLog2->value(); m_spectrumRate = m_ssbDemod->getAudioSampleRate() / (1<BW->value(); int lw = ui->lowCut->value(); - int bwMax = m_ssbDemod->getAudioSampleRate() / (100*(1<getAudioSampleRate() / (100*(1<getInputSampleRate())/400); int tickInterval = m_spectrumRate / 1200; tickInterval = tickInterval == 0 ? 1 : tickInterval; diff --git a/plugins/channelrx/demodssb/ssbdemodgui.h b/plugins/channelrx/demodssb/ssbdemodgui.h index 20639178c..fceead47a 100644 --- a/plugins/channelrx/demodssb/ssbdemodgui.h +++ b/plugins/channelrx/demodssb/ssbdemodgui.h @@ -71,6 +71,7 @@ private: bool blockApplySettings(bool block); void applySettings(bool force = false); void applyBandwidths(int spanLog2, bool force = false); + int spanLog2Limit(int spanLog2); void displaySettings(); void displayAGCPowerThreshold(int value);