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:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user