1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2026-06-02 06:04:39 -04:00

Test source: Make settings assignments atomic. Part of #1329

This commit is contained in:
f4exb
2022-10-29 19:18:45 +02:00
parent cd656a1dee
commit 922cfc695e
6 changed files with 224 additions and 85 deletions
@@ -95,6 +95,7 @@ void TestSourceGui::resetToDefaults()
{
m_settings.resetToDefaults();
displaySettings();
m_forceSettings = true;
sendSettings();
}
@@ -105,12 +106,15 @@ QByteArray TestSourceGui::serialize() const
bool TestSourceGui::deserialize(const QByteArray& data)
{
if(m_settings.deserialize(data)) {
if (m_settings.deserialize(data))
{
displaySettings();
m_forceSettings = true;
sendSettings();
return true;
} else {
}
else
{
resetToDefaults();
return false;
}
@@ -134,6 +138,7 @@ void TestSourceGui::on_startStop_toggled(bool checked)
void TestSourceGui::on_centerFrequency_changed(quint64 value)
{
m_settings.m_centerFrequency = value * 1000;
m_settingsKeys.append("centerFrequency");
sendSettings();
}
@@ -144,12 +149,14 @@ void TestSourceGui::on_autoCorr_currentIndexChanged(int index)
}
m_settings.m_autoCorrOptions = (TestSourceSettings::AutoCorrOptions) index;
m_settingsKeys.append("autoCorrOptions");
sendSettings();
}
void TestSourceGui::on_frequencyShift_changed(qint64 value)
{
m_settings.m_frequencyShift = value;
m_settingsKeys.append("frequencyShift");
sendSettings();
}
@@ -160,6 +167,7 @@ void TestSourceGui::on_decimation_currentIndexChanged(int index)
}
m_settings.m_log2Decim = index;
m_settingsKeys.append("log2Decim");
sendSettings();
}
@@ -170,6 +178,7 @@ void TestSourceGui::on_fcPos_currentIndexChanged(int index)
}
m_settings.m_fcPos = (TestSourceSettings::fcPos_t) index;
m_settingsKeys.append("fcPos");
sendSettings();
}
@@ -178,6 +187,8 @@ void TestSourceGui::on_sampleRate_changed(quint64 value)
updateFrequencyShiftLimit();
m_settings.m_frequencyShift = ui->frequencyShift->getValueNew();
m_settings.m_sampleRate = value;
m_settingsKeys.append("frequencyShift");
m_settingsKeys.append("sampleRate");
sendSettings();
}
@@ -192,6 +203,8 @@ void TestSourceGui::on_sampleSize_currentIndexChanged(int index)
displayAmplitude();
m_settings.m_amplitudeBits = ui->amplitudeCoarse->value() * 100 + ui->amplitudeFine->value();
m_settings.m_sampleSizeIndex = index;
m_settingsKeys.append("amplitudeBits");
m_settingsKeys.append("sampleSizeIndex");
sendSettings();
}
@@ -201,6 +214,7 @@ void TestSourceGui::on_amplitudeCoarse_valueChanged(int value)
updateAmpFineLimit();
displayAmplitude();
m_settings.m_amplitudeBits = ui->amplitudeCoarse->value() * 100 + ui->amplitudeFine->value();
m_settingsKeys.append("amplitudeBits");
sendSettings();
}
@@ -209,6 +223,7 @@ void TestSourceGui::on_amplitudeFine_valueChanged(int value)
(void) value;
displayAmplitude();
m_settings.m_amplitudeBits = ui->amplitudeCoarse->value() * 100 + ui->amplitudeFine->value();
m_settingsKeys.append("amplitudeBits");
sendSettings();
}
@@ -219,6 +234,7 @@ void TestSourceGui::on_modulation_currentIndexChanged(int index)
}
m_settings.m_modulation = (TestSourceSettings::Modulation) index;
m_settingsKeys.append("modulation");
sendSettings();
}
@@ -226,6 +242,7 @@ void TestSourceGui::on_modulationFrequency_valueChanged(int value)
{
m_settings.m_modulationTone = value;
ui->modulationFrequencyText->setText(QString("%1").arg(m_settings.m_modulationTone / 100.0, 0, 'f', 2));
m_settingsKeys.append("modulationTone");
sendSettings();
}
@@ -233,6 +250,7 @@ void TestSourceGui::on_amModulation_valueChanged(int value)
{
m_settings.m_amModulation = value;
ui->amModulationText->setText(QString("%1").arg(m_settings.m_amModulation));
m_settingsKeys.append("amModulation");
sendSettings();
}
@@ -240,6 +258,7 @@ void TestSourceGui::on_fmDeviation_valueChanged(int value)
{
m_settings.m_fmDeviation = value;
ui->fmDeviationText->setText(QString("%1").arg(m_settings.m_fmDeviation / 10.0, 0, 'f', 1));
m_settingsKeys.append("fmDeviation");
sendSettings();
}
@@ -247,6 +266,7 @@ void TestSourceGui::on_dcBias_valueChanged(int value)
{
ui->dcBiasText->setText(QString(tr("%1 %").arg(value)));
m_settings.m_dcFactor = value / 100.0f;
m_settingsKeys.append("dcFactor");
sendSettings();
}
@@ -254,6 +274,7 @@ void TestSourceGui::on_iBias_valueChanged(int value)
{
ui->iBiasText->setText(QString(tr("%1 %").arg(value)));
m_settings.m_iFactor = value / 100.0f;
m_settingsKeys.append("iFactor");
sendSettings();
}
@@ -261,6 +282,7 @@ void TestSourceGui::on_qBias_valueChanged(int value)
{
ui->qBiasText->setText(QString(tr("%1 %").arg(value)));
m_settings.m_qFactor = value / 100.0f;
m_settingsKeys.append("qFactor");
sendSettings();
}
@@ -268,6 +290,7 @@ void TestSourceGui::on_phaseImbalance_valueChanged(int value)
{
ui->phaseImbalanceText->setText(QString(tr("%1 %").arg(value)));
m_settings.m_phaseImbalance = value / 100.0f;
m_settingsKeys.append("phaseImbalance");
sendSettings();
}
@@ -391,7 +414,7 @@ void TestSourceGui::displaySettings()
void TestSourceGui::sendSettings()
{
if(!m_updateTimer.isActive()) {
if (!m_updateTimer.isActive()) {
m_updateTimer.start(100);
}
}
@@ -400,9 +423,10 @@ void TestSourceGui::updateHardware()
{
if (m_doApplySettings)
{
TestSourceInput::MsgConfigureTestSource* message = TestSourceInput::MsgConfigureTestSource::create(m_settings, m_forceSettings);
TestSourceInput::MsgConfigureTestSource* message = TestSourceInput::MsgConfigureTestSource::create(m_settings, m_settingsKeys, m_forceSettings);
m_sampleSource->getInputMessageQueue()->push(message);
m_forceSettings = false;
m_settingsKeys.clear();
m_updateTimer.stop();
}
}
@@ -442,7 +466,13 @@ bool TestSourceGui::handleMessage(const Message& message)
{
qDebug("TestSourceGui::handleMessage: MsgConfigureTestSource");
const TestSourceInput::MsgConfigureTestSource& cfg = (TestSourceInput::MsgConfigureTestSource&) message;
m_settings = cfg.getSettings();
if (cfg.getForce()) {
m_settings = cfg.getSettings();
} else {
m_settings.applySettings(cfg.getSettingsKeys(), cfg.getSettings());
}
displaySettings();
return true;
}