Merge pull request #1043 from vladisslav2011/store_demod_settings

Store missing demod settings to the config file and restore at startup
This commit is contained in:
Clayton Smith 2023-04-15 16:41:01 -04:00 committed by GitHub
commit 622bbaa260
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 76 additions and 4 deletions

View File

@ -1,6 +1,7 @@
2.16: In progress...
NEW: Restore AM & AM-Sync settings between sessions.
FIXED: Loading of narrow FM tau setting.
REMOVED: Support for GNU Radio 3.7.

View File

@ -1103,6 +1103,7 @@ void MainWindow::selectDemod(int mode_idx)
case DockRxOpt::MODE_AM:
rx->set_demod(receiver::RX_DEMOD_AM);
rx->set_am_dcr(uiDockRxOpt->currentAmDcr());
ui->plotter->setDemodRanges(-40000, -200, 200, 40000, true);
uiDockAudio->setFftRange(0,6000);
click_res = 100;
@ -1110,6 +1111,8 @@ void MainWindow::selectDemod(int mode_idx)
case DockRxOpt::MODE_AM_SYNC:
rx->set_demod(receiver::RX_DEMOD_AMSYNC);
rx->set_amsync_dcr(uiDockRxOpt->currentAmsyncDcr());
rx->set_amsync_pll_bw(uiDockRxOpt->currentAmsyncPll());
ui->plotter->setDemodRanges(-40000, -200, 200, 40000, true);
uiDockAudio->setFftRange(0,6000);
click_res = 100;

View File

@ -192,6 +192,26 @@ double CDemodOptions::getEmph(void) const
return tau_from_index(ui->emphSelector->currentIndex());
}
void CDemodOptions::setDcr(bool enabled)
{
ui->dcrCheckBox->setChecked(enabled);
}
bool CDemodOptions::getDcr(void) const
{
return ui->dcrCheckBox->isChecked();
}
void CDemodOptions::setSyncDcr(bool enabled)
{
ui->syncdcrCheckBox->setChecked(enabled);
}
bool CDemodOptions::getSyncDcr(void) const
{
return ui->syncdcrCheckBox->isChecked();
}
void CDemodOptions::on_maxdevSelector_activated(int index)
{
emit fmMaxdevSelected(maxdev_from_index(index));
@ -202,7 +222,7 @@ void CDemodOptions::on_emphSelector_activated(int index)
emit fmEmphSelected(tau_from_index(index));
}
void CDemodOptions::on_dcrCheckBox_toggled(bool checked)
void CDemodOptions::on_dcrCheckBox_clicked(bool checked)
{
emit amDcrToggled(checked);
}
@ -212,7 +232,7 @@ void CDemodOptions::on_cwOffsetSpin_valueChanged(int value)
emit cwOffsetChanged(value);
}
void CDemodOptions::on_syncdcrCheckBox_toggled(bool checked)
void CDemodOptions::on_syncdcrCheckBox_clicked(bool checked)
{
emit amSyncDcrToggled(checked);
}

View File

@ -70,6 +70,12 @@ public:
void setPllBw(float pll_bw);
float getPllBw(void) const;
void setDcr(bool enabled);
bool getDcr(void) const;
void setSyncDcr(bool enabled);
bool getSyncDcr(void) const;
signals:
/*! \brief Signal emitted when new FM deviation is selected. */
void fmMaxdevSelected(float max_dev);
@ -92,9 +98,9 @@ signals:
private slots:
void on_maxdevSelector_activated(int index);
void on_emphSelector_activated(int index);
void on_dcrCheckBox_toggled(bool checked);
void on_dcrCheckBox_clicked(bool checked);
void on_cwOffsetSpin_valueChanged(int value);
void on_syncdcrCheckBox_toggled(bool checked);
void on_syncdcrCheckBox_clicked(bool checked);
void on_pllBwSelector_activated(int index);
private:

View File

@ -373,6 +373,20 @@ double DockRxOpt::currentSquelchLevel() const
return ui->sqlSpinBox->value();
}
bool DockRxOpt::currentAmDcr() const
{
return demodOpt->getDcr();
}
bool DockRxOpt::currentAmsyncDcr() const
{
return demodOpt->getSyncDcr();
}
float DockRxOpt::currentAmsyncPll() const
{
return demodOpt->getPllBw();
}
/** Get filter lo/hi for a given mode and preset */
void DockRxOpt::getFilterPreset(int mode, int preset, int * lo, int * hi) const
@ -458,6 +472,14 @@ void DockRxOpt::readSettings(QSettings *settings)
if (settings->value("receiver/agc_off", false).toBool())
ui->agcPresetCombo->setCurrentIndex(4);
demodOpt->setDcr(settings->value("receiver/am_dcr", true).toBool());
demodOpt->setSyncDcr(settings->value("receiver/amsync_dcr", true).toBool());
int_val = settings->value("receiver/amsync_pllbw", 1000).toInt(&conv_ok);
if (conv_ok)
demodOpt->setPllBw(int_val / 1.0e6);
int_val = MODE_AM;
if (settings->contains("receiver/demod")) {
if (settings->value("configversion").toInt(&conv_ok) >= 3) {
@ -548,6 +570,22 @@ void DockRxOpt::saveSettings(QSettings *settings)
settings->setValue("receiver/agc_off", true);
else
settings->remove("receiver/agc_off");
if (!demodOpt->getDcr())
settings->setValue("receiver/am_dcr", false);
else
settings->remove("receiver/am_dcr");
if (!demodOpt->getSyncDcr())
settings->setValue("receiver/amsync_dcr", false);
else
settings->remove("receiver/amsync_dcr");
int_val = qRound(currentAmsyncPll() * 1.0e6);
if (int_val != 1000)
settings->setValue("receiver/amsync_pllbw", int_val);
else
settings->remove("receiver/amsync_pllbw");
}
/** RX frequency changed through spin box */

View File

@ -107,6 +107,10 @@ public:
double currentEmph() const;
double currentSquelchLevel() const;
bool currentAmDcr() const;
bool currentAmsyncDcr() const;
float currentAmsyncPll() const;
void getFilterPreset(int mode, int preset, int * lo, int * hi) const;
int getCwOffset() const;