1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2026-06-05 07:24:44 -04:00

Apply atomic settings to channel Tx plugins. Fixes #1329

This commit is contained in:
f4exb
2026-02-01 11:18:18 +01:00
parent 2a46208d37
commit 47fba8c980
163 changed files with 4500 additions and 2673 deletions
+13 -9
View File
@@ -53,7 +53,7 @@ RttyModSource::RttyModSource() :
m_interpolatorDistance = (Real)m_channelSampleRate / (Real)m_spectrumRate;
m_interpolator.create(48, m_spectrumRate, m_spectrumRate / 2.2, 3.0);
applySettings(m_settings, true);
applySettings(QStringList(), m_settings, true);
applyChannelSettings(m_channelSampleRate, m_channelFrequencyOffset, true);
}
@@ -238,20 +238,20 @@ void RttyModSource::calculateLevel(Real& sample)
}
}
void RttyModSource::applySettings(const RttyModSettings& settings, bool force)
void RttyModSource::applySettings(const QStringList& settingsKeys, const RttyModSettings& settings, bool force)
{
if ((settings.m_baud != m_settings.m_baud) || force)
if ((settingsKeys.contains("baud") && (settings.m_baud != m_settings.m_baud)) || force)
{
m_samplesPerSymbol = m_channelSampleRate / settings.m_baud;
qDebug() << "m_samplesPerSymbol: " << m_samplesPerSymbol << " (" << m_channelSampleRate << "/" << settings.m_baud << ")";
}
if ((settings.m_lpfTaps != m_settings.m_lpfTaps) || (settings.m_rfBandwidth != m_settings.m_rfBandwidth) || force)
if ((settingsKeys.contains("lpfTaps") && (settings.m_lpfTaps != m_settings.m_lpfTaps)) || (settingsKeys.contains("rfBandwidth") && (settings.m_rfBandwidth != m_settings.m_rfBandwidth)) || force)
{
qDebug() << "RttyModSource::applySettings: Creating new lpf with taps " << settings.m_lpfTaps << " rfBW " << settings.m_rfBandwidth;
m_lowpass.create(settings.m_lpfTaps, m_channelSampleRate, settings.m_rfBandwidth / 2.0);
}
if ((settings.m_beta != m_settings.m_beta) || (settings.m_symbolSpan != m_settings.m_symbolSpan) || (settings.m_baud != m_settings.m_baud) || force)
if ((settingsKeys.contains("beta") && (settings.m_beta != m_settings.m_beta)) || (settingsKeys.contains("symbolSpan") && (settings.m_symbolSpan != m_settings.m_symbolSpan)) || (settingsKeys.contains("baud") && (settings.m_baud != m_settings.m_baud)) || force)
{
qDebug() << "RttyModSource::applySettings: Recreating pulse shaping filter: "
<< " beta: " << settings.m_beta
@@ -261,17 +261,21 @@ void RttyModSource::applySettings(const RttyModSettings& settings, bool force)
m_pulseShape.create(settings.m_beta, settings.m_symbolSpan, m_channelSampleRate/settings.m_baud, true);
}
if ((settings.m_characterSet != m_settings.m_characterSet) || force) {
if ((settingsKeys.contains("characterSet") && (settings.m_characterSet != m_settings.m_characterSet)) || force) {
m_rttyEncoder.setCharacterSet(settings.m_characterSet);
}
if ((settings.m_unshiftOnSpace != m_settings.m_unshiftOnSpace) || force) {
if ((settingsKeys.contains("unshiftOnSpace") && (settings.m_unshiftOnSpace != m_settings.m_unshiftOnSpace)) || force) {
m_rttyEncoder.setUnshiftOnSpace(settings.m_unshiftOnSpace);
}
if ((settings.m_msbFirst != m_settings.m_msbFirst) || force) {
if ((settingsKeys.contains("msbFirst") && (settings.m_msbFirst != m_settings.m_msbFirst)) || force) {
m_rttyEncoder.setMsbFirst(settings.m_msbFirst);
}
m_settings = settings;
if (force) {
m_settings = settings;
} else {
m_settings.applySettings(settingsKeys, settings);
}
// Precalculate FM sensensity and linear gain to save doing it in the loop
m_phaseSensitivity = 2.0f * M_PI * (m_settings.m_frequencyShift/2.0f) / (double)m_channelSampleRate;