Skip to content

Commit

Permalink
SSB demod: save DNR settings in the filter bank
Browse files Browse the repository at this point in the history
  • Loading branch information
f4exb committed Nov 5, 2023
1 parent 91815cc commit 44d61e2
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 0 deletions.
12 changes: 12 additions & 0 deletions plugins/channelrx/demodssb/ssbdemodgui.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,7 @@ void SSBDemodGUI::on_agcClamping_toggled(bool checked)
void SSBDemodGUI::on_dnr_toggled(bool checked)
{
m_settings.m_dnr = checked;
m_settings.m_filterBank[m_settings.m_filterIndex].m_dnr = m_settings.m_dnr;
applySettings();
}

Expand Down Expand Up @@ -268,6 +269,12 @@ void SSBDemodGUI::on_filterIndex_valueChanged(int value)
ui->BW->setMinimum(-480);
ui->lowCut->setMaximum(480);
ui->lowCut->setMinimum(-480);
m_settings.m_dnr = m_settings.m_filterBank[m_settings.m_filterIndex].m_dnr;
m_settings.m_dnrScheme = m_settings.m_filterBank[m_settings.m_filterIndex].m_dnrScheme;
m_settings.m_dnrAboveAvgFactor = m_settings.m_filterBank[m_settings.m_filterIndex].m_dnrAboveAvgFactor;
m_settings.m_dnrSigmaFactor = m_settings.m_filterBank[m_settings.m_filterIndex].m_dnrSigmaFactor;
m_settings.m_dnrNbPeaks = m_settings.m_filterBank[m_settings.m_filterIndex].m_dnrNbPeaks;
m_settings.m_dnrAlpha = m_settings.m_filterBank[m_settings.m_filterIndex].m_dnrAlpha;
displaySettings();
applyBandwidths(m_settings.m_filterBank[m_settings.m_filterIndex].m_spanLog2, true); // does applySettings(true)
}
Expand Down Expand Up @@ -748,22 +755,27 @@ void SSBDemodGUI::dnrSetup(int32_t iValueChanged)
{
case FFTNRDialog::ValueChanged::ChangedScheme:
m_settings.m_dnrScheme = m_fftNRDialog->getScheme();
m_settings.m_filterBank[m_settings.m_filterIndex].m_dnrScheme = m_settings.m_dnrScheme;
applySettings();
break;
case FFTNRDialog::ValueChanged::ChangedAboveAvgFactor:
m_settings.m_dnrAboveAvgFactor = m_fftNRDialog->getAboveAvgFactor();
m_settings.m_filterBank[m_settings.m_filterIndex].m_dnrAboveAvgFactor = m_settings.m_dnrAboveAvgFactor;
applySettings();
break;
case FFTNRDialog::ValueChanged::ChangedSigmaFactor:
m_settings.m_dnrSigmaFactor = m_fftNRDialog->getSigmaFactor();
m_settings.m_filterBank[m_settings.m_filterIndex].m_dnrSigmaFactor = m_settings.m_dnrSigmaFactor;
applySettings();
break;
case FFTNRDialog::ValueChanged::ChangedNbPeaks:
m_settings.m_dnrNbPeaks = m_fftNRDialog->getNbPeaks();
m_settings.m_filterBank[m_settings.m_filterIndex].m_dnrNbPeaks = m_settings.m_dnrNbPeaks;
applySettings();
break;
case FFTNRDialog::ValueChanged::ChangedAlpha:
m_settings.m_dnrAlpha = m_fftNRDialog->getAlpha();
m_settings.m_filterBank[m_settings.m_filterIndex].m_dnrAlpha = m_settings.m_dnrAlpha;
applySettings();
break;
default:
Expand Down
12 changes: 12 additions & 0 deletions plugins/channelrx/demodssb/ssbdemodsettings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,12 @@ QByteArray SSBDemodSettings::serialize() const
s.writeS32(101 + 10*i, m_filterBank[i].m_rfBandwidth / 100.0);
s.writeS32(102 + 10*i, m_filterBank[i].m_lowCutoff / 100.0);
s.writeS32(103 + 10*i, (int) m_filterBank[i].m_fftWindow);
s.writeBool(104 + 10*i, m_filterBank[i].m_dnr);
s.writeS32(105 + 10*i, m_filterBank[i].m_dnrScheme);
s.writeFloat(106 + 10*i, m_filterBank[i].m_dnrAboveAvgFactor);
s.writeFloat(107 + 10*i, m_filterBank[i].m_dnrSigmaFactor);
s.writeS32(108 + 10*i, m_filterBank[i].m_dnrNbPeaks);
s.writeFloat(109 + 10*i, m_filterBank[i].m_dnrAlpha);
}

return s.final();
Expand Down Expand Up @@ -208,6 +214,12 @@ bool SSBDemodSettings::deserialize(const QByteArray& data)
d.readS32(103 + 10*i, &tmp, (int) FFTWindow::Blackman);
m_filterBank[i].m_fftWindow =
(FFTWindow::Function) (tmp < 0 ? 0 : tmp > (int) FFTWindow::BlackmanHarris7 ? (int) FFTWindow::BlackmanHarris7 : tmp);
d.readBool(104 + 10*i, &m_filterBank[i].m_dnr, false);
d.readS32(105 + 10*i, &m_filterBank[i].m_dnrScheme, 0);
d.readFloat(106 + 10*i, &m_filterBank[i].m_dnrAboveAvgFactor, 20.0f);
d.readFloat(107 + 10*i, &m_filterBank[i].m_dnrSigmaFactor, 4.0f);
d.readS32(108 + 10*i, &m_filterBank[i].m_dnrNbPeaks, 10);
d.readFloat(109 + 10*i, &m_filterBank[i].m_dnrAlpha, 0.95f);
}

return true;
Expand Down
6 changes: 6 additions & 0 deletions plugins/channelrx/demodssb/ssbdemodsettings.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,12 @@ struct SSBDemodFilterSettings
Real m_rfBandwidth;
Real m_lowCutoff;
FFTWindow::Function m_fftWindow;
bool m_dnr;
int m_dnrScheme;
float m_dnrAboveAvgFactor;
float m_dnrSigmaFactor;
int m_dnrNbPeaks;
float m_dnrAlpha;

SSBDemodFilterSettings() :
m_spanLog2(3),
Expand Down

0 comments on commit 44d61e2

Please sign in to comment.