1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2025-05-28 21:12:26 -04:00

All concerned demods: call applyChannelSettings with force=true at construction and start.

This commit is contained in:
f4exb 2018-01-09 00:59:10 +01:00
parent 0af04cf66f
commit 6885dd1fe6
18 changed files with 42 additions and 30 deletions

View File

@ -67,6 +67,7 @@ AMDemod::AMDemod(DeviceSourceAPI *deviceAPI) :
m_deviceAPI->addThreadedSink(m_threadedChannelizer); m_deviceAPI->addThreadedSink(m_threadedChannelizer);
m_deviceAPI->addChannelAPI(this); m_deviceAPI->addChannelAPI(this);
applyChannelSettings(m_inputSampleRate, m_inputFrequencyOffset, true);
applySettings(m_settings, true); applySettings(m_settings, true);
} }
@ -133,6 +134,7 @@ void AMDemod::start()
qDebug("AMDemod::start"); qDebug("AMDemod::start");
m_squelchCount = 0; m_squelchCount = 0;
m_audioFifo.clear(); m_audioFifo.clear();
applyChannelSettings(m_inputSampleRate, m_inputFrequencyOffset, true);
} }
void AMDemod::stop() void AMDemod::stop()
@ -181,19 +183,19 @@ bool AMDemod::handleMessage(const Message& cmd)
} }
} }
void AMDemod::applyChannelSettings(int inputSampleRate, int inputFrequencyOffset) void AMDemod::applyChannelSettings(int inputSampleRate, int inputFrequencyOffset, bool force)
{ {
qDebug() << "AMDemod::applyChannelSettings:" qDebug() << "AMDemod::applyChannelSettings:"
<< " inputSampleRate: " << inputSampleRate << " inputSampleRate: " << inputSampleRate
<< " inputFrequencyOffset: " << inputFrequencyOffset; << " inputFrequencyOffset: " << inputFrequencyOffset;
if ((m_inputFrequencyOffset != inputFrequencyOffset) || if ((m_inputFrequencyOffset != inputFrequencyOffset) ||
(m_inputSampleRate != inputSampleRate)) (m_inputSampleRate != inputSampleRate) || force)
{ {
m_nco.setFreq(-inputFrequencyOffset, inputSampleRate); m_nco.setFreq(-inputFrequencyOffset, inputSampleRate);
} }
if (m_inputSampleRate != inputSampleRate) if ((m_inputSampleRate != inputSampleRate) || force)
{ {
m_settingsMutex.lock(); m_settingsMutex.lock();
m_interpolator.create(16, inputSampleRate, m_settings.m_rfBandwidth / 2.2f); m_interpolator.create(16, inputSampleRate, m_settings.m_rfBandwidth / 2.2f);

View File

@ -156,7 +156,7 @@ private:
QMutex m_settingsMutex; QMutex m_settingsMutex;
void applyChannelSettings(int inputSampleRate, int inputFrequencyOffset); void applyChannelSettings(int inputSampleRate, int inputFrequencyOffset, bool force = false);
void applySettings(const AMDemodSettings& settings, bool force = false); void applySettings(const AMDemodSettings& settings, bool force = false);
void processOneSample(Complex &ci) void processOneSample(Complex &ci)

View File

@ -8,7 +8,7 @@
const PluginDescriptor AMDemodPlugin::m_pluginDescriptor = { const PluginDescriptor AMDemodPlugin::m_pluginDescriptor = {
QString("AM Demodulator"), QString("AM Demodulator"),
QString("3.9.0"), QString("3.10.1"),
QString("(c) Edouard Griffiths, F4EXB"), QString("(c) Edouard Griffiths, F4EXB"),
QString("https://github.com/f4exb/sdrangel"), QString("https://github.com/f4exb/sdrangel"),
true, true,

View File

@ -91,6 +91,7 @@ BFMDemod::BFMDemod(DeviceSourceAPI *deviceAPI) :
m_deviceAPI->addThreadedSink(m_threadedChannelizer); m_deviceAPI->addThreadedSink(m_threadedChannelizer);
m_deviceAPI->addChannelAPI(this); m_deviceAPI->addChannelAPI(this);
applyChannelSettings(m_inputSampleRate, m_inputFrequencyOffset, true);
applySettings(m_settings, true); applySettings(m_settings, true);
} }
@ -300,6 +301,7 @@ void BFMDemod::start()
m_squelchState = 0; m_squelchState = 0;
m_audioFifo.clear(); m_audioFifo.clear();
m_phaseDiscri.reset(); m_phaseDiscri.reset();
applyChannelSettings(m_inputSampleRate, m_inputFrequencyOffset, true);
} }
void BFMDemod::stop() void BFMDemod::stop()
@ -363,19 +365,19 @@ bool BFMDemod::handleMessage(const Message& cmd)
} }
} }
void BFMDemod::applyChannelSettings(int inputSampleRate, int inputFrequencyOffset) void BFMDemod::applyChannelSettings(int inputSampleRate, int inputFrequencyOffset, bool force)
{ {
qDebug() << "BFMDemod::applyChannelSettings:" qDebug() << "BFMDemod::applyChannelSettings:"
<< " inputSampleRate: " << inputSampleRate << " inputSampleRate: " << inputSampleRate
<< " inputFrequencyOffset: " << inputFrequencyOffset; << " inputFrequencyOffset: " << inputFrequencyOffset;
if((inputFrequencyOffset != m_inputFrequencyOffset) || if((inputFrequencyOffset != m_inputFrequencyOffset) ||
(inputSampleRate != m_inputSampleRate)) (inputSampleRate != m_inputSampleRate) || force)
{ {
m_nco.setFreq(-inputFrequencyOffset, inputSampleRate); m_nco.setFreq(-inputFrequencyOffset, inputSampleRate);
} }
if (inputSampleRate != m_inputSampleRate) if ((inputSampleRate != m_inputSampleRate) || force)
{ {
m_pilotPLL.configure(19000.0/inputSampleRate, 50.0/inputSampleRate, 0.01); m_pilotPLL.configure(19000.0/inputSampleRate, 50.0/inputSampleRate, 0.01);

View File

@ -225,7 +225,7 @@ private:
static const int m_udpBlockSize; static const int m_udpBlockSize;
void applyChannelSettings(int inputSampleRate, int inputFrequencyOffset); void applyChannelSettings(int inputSampleRate, int inputFrequencyOffset, bool force = false);
void applySettings(const BFMDemodSettings& settings, bool force = false); void applySettings(const BFMDemodSettings& settings, bool force = false);
}; };

View File

@ -25,7 +25,7 @@
const PluginDescriptor BFMPlugin::m_pluginDescriptor = { const PluginDescriptor BFMPlugin::m_pluginDescriptor = {
QString("Broadcast FM Demodulator"), QString("Broadcast FM Demodulator"),
QString("3.9.0"), QString("3.10.1"),
QString("(c) Edouard Griffiths, F4EXB"), QString("(c) Edouard Griffiths, F4EXB"),
QString("https://github.com/f4exb/sdrangel"), QString("https://github.com/f4exb/sdrangel"),
true, true,

View File

@ -86,6 +86,7 @@ DSDDemod::DSDDemod(DeviceSourceAPI *deviceAPI) :
m_deviceAPI->addThreadedSink(m_threadedChannelizer); m_deviceAPI->addThreadedSink(m_threadedChannelizer);
m_deviceAPI->addChannelAPI(this); m_deviceAPI->addChannelAPI(this);
applyChannelSettings(m_inputSampleRate, m_inputFrequencyOffset, true);
applySettings(m_settings, true); applySettings(m_settings, true);
} }
@ -313,6 +314,7 @@ void DSDDemod::start()
m_audioFifo1.clear(); m_audioFifo1.clear();
m_audioFifo2.clear(); m_audioFifo2.clear();
m_phaseDiscri.reset(); m_phaseDiscri.reset();
applyChannelSettings(m_inputSampleRate, m_inputFrequencyOffset, true);
} }
void DSDDemod::stop() void DSDDemod::stop()
@ -365,19 +367,19 @@ bool DSDDemod::handleMessage(const Message& cmd)
} }
} }
void DSDDemod::applyChannelSettings(int inputSampleRate, int inputFrequencyOffset) void DSDDemod::applyChannelSettings(int inputSampleRate, int inputFrequencyOffset, bool force)
{ {
qDebug() << "DSDDemod::applyChannelSettings:" qDebug() << "DSDDemod::applyChannelSettings:"
<< " inputSampleRate: " << inputSampleRate << " inputSampleRate: " << inputSampleRate
<< " inputFrequencyOffset: " << inputFrequencyOffset; << " inputFrequencyOffset: " << inputFrequencyOffset;
if ((inputFrequencyOffset != m_inputFrequencyOffset) || if ((inputFrequencyOffset != m_inputFrequencyOffset) ||
(inputSampleRate != m_inputSampleRate)) (inputSampleRate != m_inputSampleRate) || force)
{ {
m_nco.setFreq(-inputFrequencyOffset, inputSampleRate); m_nco.setFreq(-inputFrequencyOffset, inputSampleRate);
} }
if (inputSampleRate != m_inputSampleRate) if ((inputSampleRate != m_inputSampleRate) || force)
{ {
m_settingsMutex.lock(); m_settingsMutex.lock();
m_interpolator.create(16, inputSampleRate, (m_settings.m_rfBandwidth) / 2.2); m_interpolator.create(16, inputSampleRate, (m_settings.m_rfBandwidth) / 2.2);

View File

@ -202,7 +202,7 @@ private:
static const int m_udpBlockSize; static const int m_udpBlockSize;
void applyChannelSettings(int inputSampleRate, int inputFrequencyOffset); void applyChannelSettings(int inputSampleRate, int inputFrequencyOffset, bool force = false);
void applySettings(const DSDDemodSettings& settings, bool force = false); void applySettings(const DSDDemodSettings& settings, bool force = false);
}; };

View File

@ -25,7 +25,7 @@
const PluginDescriptor DSDDemodPlugin::m_pluginDescriptor = { const PluginDescriptor DSDDemodPlugin::m_pluginDescriptor = {
QString("DSD Demodulator"), QString("DSD Demodulator"),
QString("3.9.1"), QString("3.10.1"),
QString("(c) Edouard Griffiths, F4EXB"), QString("(c) Edouard Griffiths, F4EXB"),
QString("https://github.com/f4exb/sdrangel"), QString("https://github.com/f4exb/sdrangel"),
true, true,

View File

@ -86,6 +86,7 @@ NFMDemod::NFMDemod(DeviceSourceAPI *devieAPI) :
m_deviceAPI->addThreadedSink(m_threadedChannelizer); m_deviceAPI->addThreadedSink(m_threadedChannelizer);
m_deviceAPI->addChannelAPI(this); m_deviceAPI->addChannelAPI(this);
applyChannelSettings(m_inputSampleRate, m_inputFrequencyOffset, true);
applySettings(m_settings, true); applySettings(m_settings, true);
} }
@ -315,6 +316,7 @@ void NFMDemod::start()
m_squelchCount = 0; m_squelchCount = 0;
m_audioFifo.clear(); m_audioFifo.clear();
m_phaseDiscri.reset(); m_phaseDiscri.reset();
applyChannelSettings(m_inputSampleRate, m_inputFrequencyOffset, true);
} }
void NFMDemod::stop() void NFMDemod::stop()
@ -361,19 +363,19 @@ bool NFMDemod::handleMessage(const Message& cmd)
} }
} }
void NFMDemod::applyChannelSettings(int inputSampleRate, int inputFrequencyOffset) void NFMDemod::applyChannelSettings(int inputSampleRate, int inputFrequencyOffset, bool force)
{ {
qDebug() << "NFMDemod::applyChannelSettings:" qDebug() << "NFMDemod::applyChannelSettings:"
<< " inputSampleRate: " << inputSampleRate << " inputSampleRate: " << inputSampleRate
<< " inputFrequencyOffset: " << inputFrequencyOffset; << " inputFrequencyOffset: " << inputFrequencyOffset;
if ((inputFrequencyOffset != m_inputFrequencyOffset) || if ((inputFrequencyOffset != m_inputFrequencyOffset) ||
(inputSampleRate != m_inputSampleRate)) (inputSampleRate != m_inputSampleRate) || force)
{ {
m_nco.setFreq(-inputFrequencyOffset, inputSampleRate); m_nco.setFreq(-inputFrequencyOffset, inputSampleRate);
} }
if (inputSampleRate != m_inputSampleRate) if ((inputSampleRate != m_inputSampleRate) || force)
{ {
m_settingsMutex.lock(); m_settingsMutex.lock();
m_interpolator.create(16, inputSampleRate, m_settings.m_rfBandwidth / 2.2); m_interpolator.create(16, inputSampleRate, m_settings.m_rfBandwidth / 2.2);

View File

@ -220,7 +220,7 @@ private:
static const int m_udpBlockSize; static const int m_udpBlockSize;
// void apply(bool force = false); // void apply(bool force = false);
void applyChannelSettings(int inputSampleRate, int inputFrequencyOffset); void applyChannelSettings(int inputSampleRate, int inputFrequencyOffset, bool force = false);
void applySettings(const NFMDemodSettings& settings, bool force = false); void applySettings(const NFMDemodSettings& settings, bool force = false);
void webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const NFMDemodSettings& settings); void webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const NFMDemodSettings& settings);
}; };

View File

@ -7,7 +7,7 @@
const PluginDescriptor NFMPlugin::m_pluginDescriptor = { const PluginDescriptor NFMPlugin::m_pluginDescriptor = {
QString("NFM Demodulator"), QString("NFM Demodulator"),
QString("3.9.0"), QString("3.10.1"),
QString("(c) Edouard Griffiths, F4EXB"), QString("(c) Edouard Griffiths, F4EXB"),
QString("https://github.com/f4exb/sdrangel"), QString("https://github.com/f4exb/sdrangel"),
true, true,

View File

@ -70,6 +70,7 @@ WFMDemod::WFMDemod(DeviceSourceAPI* deviceAPI) :
m_deviceAPI->addThreadedSink(m_threadedChannelizer); m_deviceAPI->addThreadedSink(m_threadedChannelizer);
m_deviceAPI->addChannelAPI(this); m_deviceAPI->addChannelAPI(this);
applyChannelSettings(m_inputSampleRate, m_inputFrequencyOffset, true);
applySettings(m_settings, true); applySettings(m_settings, true);
} }
@ -200,6 +201,7 @@ void WFMDemod::start()
m_squelchState = 0; m_squelchState = 0;
m_audioFifo.clear(); m_audioFifo.clear();
m_phaseDiscri.reset(); m_phaseDiscri.reset();
applyChannelSettings(m_inputSampleRate, m_inputFrequencyOffset, true);
} }
void WFMDemod::stop() void WFMDemod::stop()
@ -253,19 +255,19 @@ bool WFMDemod::handleMessage(const Message& cmd)
} }
} }
void WFMDemod::applyChannelSettings(int inputSampleRate, int inputFrequencyOffset) void WFMDemod::applyChannelSettings(int inputSampleRate, int inputFrequencyOffset, bool force)
{ {
qDebug() << "WFMDemod::applyChannelSettings:" qDebug() << "WFMDemod::applyChannelSettings:"
<< " inputSampleRate: " << inputSampleRate << " inputSampleRate: " << inputSampleRate
<< " inputFrequencyOffset: " << inputFrequencyOffset; << " inputFrequencyOffset: " << inputFrequencyOffset;
if((inputFrequencyOffset != m_inputFrequencyOffset) || if((inputFrequencyOffset != m_inputFrequencyOffset) ||
(inputSampleRate != m_inputSampleRate)) (inputSampleRate != m_inputSampleRate) || force)
{ {
m_nco.setFreq(-inputFrequencyOffset, inputSampleRate); m_nco.setFreq(-inputFrequencyOffset, inputSampleRate);
} }
if (inputSampleRate != m_inputSampleRate) if ((inputSampleRate != m_inputSampleRate) || force)
{ {
qDebug() << "WFMDemod::applyChannelSettings: m_interpolator.create"; qDebug() << "WFMDemod::applyChannelSettings: m_interpolator.create";
m_interpolator.create(16, inputSampleRate, m_settings.m_afBandwidth); m_interpolator.create(16, inputSampleRate, m_settings.m_afBandwidth);

View File

@ -167,7 +167,7 @@ private:
static const int m_udpBlockSize; static const int m_udpBlockSize;
void applyChannelSettings(int inputSampleRate, int inputFrequencyOffset); void applyChannelSettings(int inputSampleRate, int inputFrequencyOffset, bool force = false);
void applySettings(const WFMDemodSettings& settings, bool force = false); void applySettings(const WFMDemodSettings& settings, bool force = false);
}; };

View File

@ -8,7 +8,7 @@
const PluginDescriptor WFMPlugin::m_pluginDescriptor = { const PluginDescriptor WFMPlugin::m_pluginDescriptor = {
QString("WFM Demodulator"), QString("WFM Demodulator"),
QString("3.9.0"), QString("3.10.1"),
QString("(c) Edouard Griffiths, F4EXB"), QString("(c) Edouard Griffiths, F4EXB"),
QString("https://github.com/f4exb/sdrangel"), QString("https://github.com/f4exb/sdrangel"),
true, true,

View File

@ -102,6 +102,7 @@ UDPSrc::UDPSrc(DeviceSourceAPI *deviceAPI) :
m_deviceAPI->addThreadedSink(m_threadedChannelizer); m_deviceAPI->addThreadedSink(m_threadedChannelizer);
m_deviceAPI->addChannelAPI(this); m_deviceAPI->addChannelAPI(this);
applyChannelSettings(m_inputSampleRate, m_inputFrequencyOffset, true);
applySettings(m_settings, true); applySettings(m_settings, true);
} }
@ -313,6 +314,7 @@ void UDPSrc::feed(const SampleVector::const_iterator& begin, const SampleVector:
void UDPSrc::start() void UDPSrc::start()
{ {
m_phaseDiscri.reset(); m_phaseDiscri.reset();
applyChannelSettings(m_inputSampleRate, m_inputFrequencyOffset, true);
} }
void UDPSrc::stop() void UDPSrc::stop()
@ -445,19 +447,19 @@ void UDPSrc::audioReadyRead()
//qDebug("UDPSrc::audioReadyRead: done"); //qDebug("UDPSrc::audioReadyRead: done");
} }
void UDPSrc::applyChannelSettings(int inputSampleRate, int inputFrequencyOffset) void UDPSrc::applyChannelSettings(int inputSampleRate, int inputFrequencyOffset, bool force)
{ {
qDebug() << "UDPSrc::applyChannelSettings:" qDebug() << "UDPSrc::applyChannelSettings:"
<< " inputSampleRate: " << inputSampleRate << " inputSampleRate: " << inputSampleRate
<< " inputFrequencyOffset: " << inputFrequencyOffset; << " inputFrequencyOffset: " << inputFrequencyOffset;
if((inputFrequencyOffset != m_inputFrequencyOffset) || if((inputFrequencyOffset != m_inputFrequencyOffset) ||
(inputSampleRate != m_inputSampleRate)) (inputSampleRate != m_inputSampleRate) || force)
{ {
m_nco.setFreq(-inputFrequencyOffset, inputSampleRate); m_nco.setFreq(-inputFrequencyOffset, inputSampleRate);
} }
if (inputSampleRate != m_inputSampleRate) if ((inputSampleRate != m_inputSampleRate) || force)
{ {
m_settingsMutex.lock(); m_settingsMutex.lock();
m_interpolator.create(16, inputSampleRate, m_settings.m_rfBandwidth / 2.0); m_interpolator.create(16, inputSampleRate, m_settings.m_rfBandwidth / 2.0);

View File

@ -198,7 +198,7 @@ protected:
QMutex m_settingsMutex; QMutex m_settingsMutex;
void applyChannelSettings(int inputSampleRate, int inputFrequencyOffset); void applyChannelSettings(int inputSampleRate, int inputFrequencyOffset, bool force = true);
void applySettings(const UDPSrcSettings& settings, bool force = false); void applySettings(const UDPSrcSettings& settings, bool force = false);
inline void calculateSquelch(double value) inline void calculateSquelch(double value)

View File

@ -25,7 +25,7 @@
const PluginDescriptor UDPSrcPlugin::m_pluginDescriptor = { const PluginDescriptor UDPSrcPlugin::m_pluginDescriptor = {
QString("UDP Channel Source"), QString("UDP Channel Source"),
QString("3.9.0"), QString("3.10.1"),
QString("(c) Edouard Griffiths, F4EXB"), QString("(c) Edouard Griffiths, F4EXB"),
QString("https://github.com/f4exb/sdrangel"), QString("https://github.com/f4exb/sdrangel"),
true, true,