From 95f9df83961947d69ddc1c013d19fc1865593509 Mon Sep 17 00:00:00 2001 From: f4exb Date: Mon, 6 Nov 2017 01:39:44 +0100 Subject: [PATCH] Moved m_deviceAPI->addThreadedSource at the end of the constructor sequence in all channel plugins --- debian/changelog | 7 ++++++ plugins/channelrx/demodam/amdemod.cpp | 16 ++++++------ plugins/channelrx/demodam/amdemodplugin.cpp | 2 +- plugins/channelrx/demodbfm/bfmdemod.cpp | 7 +++--- plugins/channelrx/demodbfm/bfmplugin.cpp | 2 +- plugins/channelrx/demodlora/lorademod.cpp | 8 +++--- plugins/channelrx/demodlora/loraplugin.cpp | 2 +- plugins/channelrx/demodnfm/nfmdemod.cpp | 14 +++++++---- plugins/channelrx/demodnfm/nfmplugin.cpp | 2 +- plugins/channelrx/demodssb/ssbdemod.cpp | 4 +-- plugins/channelrx/demodssb/ssbplugin.cpp | 2 +- plugins/channelrx/demodwfm/wfmdemod.cpp | 4 +-- plugins/channelrx/demodwfm/wfmdemodgui.cpp | 28 ++++++++++----------- plugins/channelrx/demodwfm/wfmplugin.cpp | 2 +- plugins/channelrx/tcpsrc/tcpsrc.cpp | 7 +++--- plugins/channelrx/tcpsrc/tcpsrcplugin.cpp | 2 +- plugins/channelrx/udpsrc/udpsrc.cpp | 9 ++++--- plugins/channelrx/udpsrc/udpsrcplugin.cpp | 2 +- plugins/channeltx/modatv/atvmod.cpp | 12 ++++----- plugins/channeltx/modatv/atvmodgui.cpp | 5 +++- plugins/channeltx/modatv/atvmodplugin.cpp | 2 +- plugins/channeltx/modatv/atvmodsettings.cpp | 2 +- plugins/channeltx/modssb/ssbmod.cpp | 9 ++++--- plugins/channeltx/modssb/ssbmodplugin.cpp | 2 +- plugins/channeltx/modwfm/wfmmod.cpp | 8 +++--- plugins/channeltx/modwfm/wfmmodplugin.cpp | 2 +- plugins/channeltx/udpsink/udpsink.cpp | 7 +++--- plugins/channeltx/udpsink/udpsinkplugin.cpp | 2 +- sdrgui/gui/aboutdialog.ui | 2 +- sdrgui/mainwindow.cpp | 4 +-- 30 files changed, 98 insertions(+), 79 deletions(-) diff --git a/debian/changelog b/debian/changelog index 876923a86..dea79a637 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,13 @@ +sdrangel (3.8.2-1) unstable; urgency=medium + + * WFM Demod: fixed segfault due to sequence of actions in demod constructor + + -- Edouard Griffiths, F4EXB Wed, 08 Nov 2017 18:14:18 +0100 + sdrangel (3.8.1-1) unstable; urgency=medium * SSB Mod: refactored bandwidths settings and fixed segfault + * LimeSDR: implemented external clock reference input option -- Edouard Griffiths, F4EXB Sun, 05 Nov 2017 18:14:18 +0100 diff --git a/plugins/channelrx/demodam/amdemod.cpp b/plugins/channelrx/demodam/amdemod.cpp index 46ff00415..7e4e3c0fe 100644 --- a/plugins/channelrx/demodam/amdemod.cpp +++ b/plugins/channelrx/demodam/amdemod.cpp @@ -45,11 +45,7 @@ AMDemod::AMDemod(DeviceSourceAPI *deviceAPI) : m_audioFifo(48000), m_settingsMutex(QMutex::Recursive) { - setObjectName("AMDemod"); - - m_channelizer = new DownChannelizer(this); - m_threadedChannelizer = new ThreadedBasebandSampleSink(m_channelizer, this); - m_deviceAPI->addThreadedSink(m_threadedChannelizer); + setObjectName("AMDemod"); m_audioBuffer.resize(1<<14); m_audioBufferFill = 0; @@ -61,6 +57,10 @@ AMDemod::AMDemod(DeviceSourceAPI *deviceAPI) : DSPEngine::instance()->addAudioSink(&m_audioFifo); m_udpBufferAudio = new UDPSink(this, m_udpBlockSize, m_settings.m_udpPort); + m_channelizer = new DownChannelizer(this); + m_threadedChannelizer = new ThreadedBasebandSampleSink(m_channelizer, this); + m_deviceAPI->addThreadedSink(m_threadedChannelizer); + applySettings(m_settings, true); } @@ -136,8 +136,6 @@ void AMDemod::stop() bool AMDemod::handleMessage(const Message& cmd) { - qDebug() << "AMDemod::handleMessage"; - if (DownChannelizer::MsgChannelizerNotification::match(cmd)) { DownChannelizer::MsgChannelizerNotification& notif = (DownChannelizer::MsgChannelizerNotification&) cmd; @@ -163,6 +161,10 @@ bool AMDemod::handleMessage(const Message& cmd) cfg.getSampleRate(), cfg.getCenterFrequency()); + qDebug() << "AMDemod::handleMessage: MsgConfigureChannelizer:" + << " sampleRate: " << cfg.getSampleRate() + << " inputFrequencyOffset: " << cfg.getCenterFrequency(); + return true; } else if (MsgConfigureAMDemod::match(cmd)) diff --git a/plugins/channelrx/demodam/amdemodplugin.cpp b/plugins/channelrx/demodam/amdemodplugin.cpp index 11a0166b4..ccfa48a33 100644 --- a/plugins/channelrx/demodam/amdemodplugin.cpp +++ b/plugins/channelrx/demodam/amdemodplugin.cpp @@ -7,7 +7,7 @@ const PluginDescriptor AMDemodPlugin::m_pluginDescriptor = { QString("AM Demodulator"), - QString("3.8.0"), + QString("3.8.2"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/demodbfm/bfmdemod.cpp b/plugins/channelrx/demodbfm/bfmdemod.cpp index 6d7150360..bda23fc3d 100644 --- a/plugins/channelrx/demodbfm/bfmdemod.cpp +++ b/plugins/channelrx/demodbfm/bfmdemod.cpp @@ -70,10 +70,7 @@ BFMDemod::BFMDemod(DeviceSourceAPI *deviceAPI) : m_rfFilter = new fftfilt(-50000.0 / 384000.0, 50000.0 / 384000.0, filtFftLen); - m_channelizer = new DownChannelizer(this); - m_threadedChannelizer = new ThreadedBasebandSampleSink(m_channelizer, this); connect(m_channelizer, SIGNAL(inputSampleRateChanged()), this, SLOT(channelSampleRateChanged())); - m_deviceAPI->addThreadedSink(m_threadedChannelizer); m_deemphasisFilterX.configure(default_deemphasis * m_settings.m_audioSampleRate * 1.0e-6); m_deemphasisFilterY.configure(default_deemphasis * m_settings.m_audioSampleRate * 1.0e-6); @@ -85,6 +82,10 @@ BFMDemod::BFMDemod(DeviceSourceAPI *deviceAPI) : DSPEngine::instance()->addAudioSink(&m_audioFifo); m_udpBufferAudio = new UDPSink(this, m_udpBlockSize, m_settings.m_udpPort); + m_channelizer = new DownChannelizer(this); + m_threadedChannelizer = new ThreadedBasebandSampleSink(m_channelizer, this); + m_deviceAPI->addThreadedSink(m_threadedChannelizer); + applySettings(m_settings, true); } diff --git a/plugins/channelrx/demodbfm/bfmplugin.cpp b/plugins/channelrx/demodbfm/bfmplugin.cpp index 6b860a99f..9ec9127d1 100644 --- a/plugins/channelrx/demodbfm/bfmplugin.cpp +++ b/plugins/channelrx/demodbfm/bfmplugin.cpp @@ -24,7 +24,7 @@ const PluginDescriptor BFMPlugin::m_pluginDescriptor = { QString("Broadcast FM Demodulator"), - QString("3.8.0"), + QString("3.8.2"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/demodlora/lorademod.cpp b/plugins/channelrx/demodlora/lorademod.cpp index ab64a9621..637867163 100644 --- a/plugins/channelrx/demodlora/lorademod.cpp +++ b/plugins/channelrx/demodlora/lorademod.cpp @@ -54,16 +54,16 @@ LoRaDemod::LoRaDemod(DeviceSourceAPI* deviceAPI) : m_time = 0; m_tune = 0; - m_channelizer = new DownChannelizer(this); - m_threadedChannelizer = new ThreadedBasebandSampleSink(m_channelizer); - m_deviceAPI->addThreadedSink(m_threadedChannelizer); - loraFilter = new sfft(LORA_SFFT_LEN); negaFilter = new sfft(LORA_SFFT_LEN); mov = new float[4*LORA_SFFT_LEN]; history = new short[1024]; finetune = new short[16]; + + m_channelizer = new DownChannelizer(this); + m_threadedChannelizer = new ThreadedBasebandSampleSink(m_channelizer); + m_deviceAPI->addThreadedSink(m_threadedChannelizer); } LoRaDemod::~LoRaDemod() diff --git a/plugins/channelrx/demodlora/loraplugin.cpp b/plugins/channelrx/demodlora/loraplugin.cpp index 67327edd3..73b60ffe1 100644 --- a/plugins/channelrx/demodlora/loraplugin.cpp +++ b/plugins/channelrx/demodlora/loraplugin.cpp @@ -6,7 +6,7 @@ const PluginDescriptor LoRaPlugin::m_pluginDescriptor = { QString("LoRa Demodulator"), - QString("3.8.0"), + QString("3.8.2"), QString("(c) 2015 John Greb"), QString("http://www.maintech.de"), true, diff --git a/plugins/channelrx/demodnfm/nfmdemod.cpp b/plugins/channelrx/demodnfm/nfmdemod.cpp index 6d1252a1b..e4823d28d 100644 --- a/plugins/channelrx/demodnfm/nfmdemod.cpp +++ b/plugins/channelrx/demodnfm/nfmdemod.cpp @@ -43,8 +43,9 @@ NFMDemod::NFMDemod(DeviceSourceAPI *devieAPI) : m_ctcssIndex(0), m_sampleCount(0), m_squelchCount(0), - m_squelchGate(2400), + m_squelchGate(2), m_audioMute(false), + m_squelchLevel(-990), m_squelchOpen(false), m_afSquelchOpen(false), m_magsq(0.0f), @@ -59,10 +60,6 @@ NFMDemod::NFMDemod(DeviceSourceAPI *devieAPI) : { setObjectName("NFMDemod"); - m_channelizer = new DownChannelizer(this); - m_threadedChannelizer = new ThreadedBasebandSampleSink(m_channelizer, this); - m_deviceAPI->addThreadedSink(m_threadedChannelizer); - m_audioBuffer.resize(1<<14); m_audioBufferFill = 0; @@ -75,6 +72,10 @@ NFMDemod::NFMDemod(DeviceSourceAPI *devieAPI) : DSPEngine::instance()->addAudioSink(&m_audioFifo); m_udpBufferAudio = new UDPSink(this, m_udpBlockSize, m_settings.m_udpPort); + m_channelizer = new DownChannelizer(this); + m_threadedChannelizer = new ThreadedBasebandSampleSink(m_channelizer, this); + m_deviceAPI->addThreadedSink(m_threadedChannelizer); + applySettings(m_settings, true); } @@ -455,7 +456,10 @@ void NFMDemod::applySettings(const NFMDemodSettings& settings, bool force) else { // input is a value in centi-Bels m_squelchLevel = std::pow(10.0, settings.m_squelch / 100.0); + m_movingAverage.fill(0.0); } + + m_squelchCount = 0; // reset squelch open counter //m_squelchLevel *= m_squelchLevel; //m_afSquelch.setThreshold(m_squelchLevel); } diff --git a/plugins/channelrx/demodnfm/nfmplugin.cpp b/plugins/channelrx/demodnfm/nfmplugin.cpp index 4b2369ec6..0c875099f 100644 --- a/plugins/channelrx/demodnfm/nfmplugin.cpp +++ b/plugins/channelrx/demodnfm/nfmplugin.cpp @@ -6,7 +6,7 @@ const PluginDescriptor NFMPlugin::m_pluginDescriptor = { QString("NFM Demodulator"), - QString("3.8.0"), + QString("3.8.2"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/demodssb/ssbdemod.cpp b/plugins/channelrx/demodssb/ssbdemod.cpp index 2a01da180..a6efae9e4 100644 --- a/plugins/channelrx/demodssb/ssbdemod.cpp +++ b/plugins/channelrx/demodssb/ssbdemod.cpp @@ -82,12 +82,12 @@ SSBDemod::SSBDemod(DeviceSourceAPI *deviceAPI) : SSBFilter = new fftfilt(m_LowCutoff / m_audioSampleRate, m_Bandwidth / m_audioSampleRate, ssbFftLen); DSBFilter = new fftfilt((2.0f * m_Bandwidth) / m_audioSampleRate, 2 * ssbFftLen); + DSPEngine::instance()->addAudioSink(&m_audioFifo); + m_channelizer = new DownChannelizer(this); m_threadedChannelizer = new ThreadedBasebandSampleSink(m_channelizer, this); m_deviceAPI->addThreadedSink(m_threadedChannelizer); - DSPEngine::instance()->addAudioSink(&m_audioFifo); - applySettings(m_settings, true); } diff --git a/plugins/channelrx/demodssb/ssbplugin.cpp b/plugins/channelrx/demodssb/ssbplugin.cpp index 7f950875e..a879a55b6 100644 --- a/plugins/channelrx/demodssb/ssbplugin.cpp +++ b/plugins/channelrx/demodssb/ssbplugin.cpp @@ -7,7 +7,7 @@ const PluginDescriptor SSBPlugin::m_pluginDescriptor = { QString("SSB Demodulator"), - QString("3.8.1"), + QString("3.8.2"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/demodwfm/wfmdemod.cpp b/plugins/channelrx/demodwfm/wfmdemod.cpp index 75a4d9492..4c5a672ef 100644 --- a/plugins/channelrx/demodwfm/wfmdemod.cpp +++ b/plugins/channelrx/demodwfm/wfmdemod.cpp @@ -56,12 +56,12 @@ WFMDemod::WFMDemod(DeviceSourceAPI* deviceAPI) : m_movingAverage.resize(16, 0); + DSPEngine::instance()->addAudioSink(&m_audioFifo); + m_channelizer = new DownChannelizer(this); m_threadedChannelizer = new ThreadedBasebandSampleSink(m_channelizer, this); m_deviceAPI->addThreadedSink(m_threadedChannelizer); - DSPEngine::instance()->addAudioSink(&m_audioFifo); - applySettings(m_settings, true); } diff --git a/plugins/channelrx/demodwfm/wfmdemodgui.cpp b/plugins/channelrx/demodwfm/wfmdemodgui.cpp index 144e2c5b2..11e57216c 100644 --- a/plugins/channelrx/demodwfm/wfmdemodgui.cpp +++ b/plugins/channelrx/demodwfm/wfmdemodgui.cpp @@ -154,13 +154,19 @@ WFMDemodGUI::WFMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, QWidget m_channelPowerDbAvg(20,0) { ui->setupUi(this); - ui->deltaFrequencyLabel->setText(QString("%1f").arg(QChar(0x94, 0x03))); + setAttribute(Qt::WA_DeleteOnClose, true); + connect(this, SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); + connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &))); + + m_wfmDemod = new WFMDemod(m_deviceUISet->m_deviceSourceAPI); + + connect(&MainWindow::getInstance()->getMasterTimer(), SIGNAL(timeout()), this, SLOT(tick())); + + ui->deltaFrequencyLabel->setText(QString("%1f").arg(QChar(0x94, 0x03))); ui->deltaFrequency->setColorMapper(ColorMapper(ColorMapper::GrayGold)); ui->deltaFrequency->setValueRange(false, 7, -9999999, 9999999); ui->channelPowerMeter->setColorTheme(LevelMeterSignalDB::ColorGreenAndBlue); - setAttribute(Qt::WA_DeleteOnClose, true); - blockApplySettings(true); ui->rfBW->clear(); for (int i = 0; i < WFMDemodSettings::m_nbRFBW; i++) { @@ -169,19 +175,15 @@ WFMDemodGUI::WFMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, QWidget ui->rfBW->setCurrentIndex(6); blockApplySettings(false); - connect(this, SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); - connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &))); - - m_wfmDemod = new WFMDemod(m_deviceUISet->m_deviceSourceAPI); - - connect(&MainWindow::getInstance()->getMasterTimer(), SIGNAL(timeout()), this, SLOT(tick())); - - //m_channelMarker = new ChannelMarker(this); m_channelMarker.setBandwidth(WFMDemodSettings::getRFBW(4)); m_channelMarker.setCenterFrequency(0); - m_channelMarker.setVisible(true); + m_channelMarker.setTitle("WFM Demodulator"); + m_channelMarker.setUDPAddress("127.0.0.1"); + m_channelMarker.setUDPSendPort(9999); m_channelMarker.setColor(m_settings.m_rgbColor); + m_channelMarker.setVisible(true); setTitleColor(m_channelMarker.getColor()); + m_settings.setChannelMarker(&m_channelMarker); connect(&m_channelMarker, SIGNAL(changed()), this, SLOT(channelMarkerChanged())); @@ -189,8 +191,6 @@ WFMDemodGUI::WFMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, QWidget m_deviceUISet->addChannelMarker(&m_channelMarker); m_deviceUISet->addRollupWidget(this); - m_settings.setChannelMarker(&m_channelMarker); - displaySettings(); applySettings(true); } diff --git a/plugins/channelrx/demodwfm/wfmplugin.cpp b/plugins/channelrx/demodwfm/wfmplugin.cpp index 0381cf013..5b47a8dea 100644 --- a/plugins/channelrx/demodwfm/wfmplugin.cpp +++ b/plugins/channelrx/demodwfm/wfmplugin.cpp @@ -7,7 +7,7 @@ const PluginDescriptor WFMPlugin::m_pluginDescriptor = { QString("WFM Demodulator"), - QString("3.8.0"), + QString("3.8.2"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/tcpsrc/tcpsrc.cpp b/plugins/channelrx/tcpsrc/tcpsrc.cpp index a62263f0d..0f749965b 100644 --- a/plugins/channelrx/tcpsrc/tcpsrc.cpp +++ b/plugins/channelrx/tcpsrc/tcpsrc.cpp @@ -56,13 +56,12 @@ TCPSrc::TCPSrc(DeviceSourceAPI* deviceAPI) : m_volume = 0; m_magsq = 0; + m_sampleBufferSSB.resize(tcpFftLen); + TCPFilter = new fftfilt(0.3 / 48.0, 16.0 / 48.0, tcpFftLen); + m_channelizer = new DownChannelizer(this); m_threadedChannelizer = new ThreadedBasebandSampleSink(m_channelizer, this); m_deviceAPI->addThreadedSink(m_threadedChannelizer); - - m_sampleBufferSSB.resize(tcpFftLen); - TCPFilter = new fftfilt(0.3 / 48.0, 16.0 / 48.0, tcpFftLen); - // if (!TCPFilter) segfault; } TCPSrc::~TCPSrc() diff --git a/plugins/channelrx/tcpsrc/tcpsrcplugin.cpp b/plugins/channelrx/tcpsrc/tcpsrcplugin.cpp index 8e0ba9f34..174beff7f 100644 --- a/plugins/channelrx/tcpsrc/tcpsrcplugin.cpp +++ b/plugins/channelrx/tcpsrc/tcpsrcplugin.cpp @@ -7,7 +7,7 @@ const PluginDescriptor TCPSrcPlugin::m_pluginDescriptor = { QString("TCP Channel Source"), - QString("3.8.0"), + QString("3.8.2"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/udpsrc/udpsrc.cpp b/plugins/channelrx/udpsrc/udpsrc.cpp index 93ff1074b..b601c098e 100644 --- a/plugins/channelrx/udpsrc/udpsrc.cpp +++ b/plugins/channelrx/udpsrc/udpsrc.cpp @@ -72,10 +72,6 @@ UDPSrc::UDPSrc(DeviceSourceAPI *deviceAPI) : m_magsq = 0; m_inMagsq = 0; - m_channelizer = new DownChannelizer(this); - m_threadedChannelizer = new ThreadedBasebandSampleSink(m_channelizer, this); - m_deviceAPI->addThreadedSink(m_threadedChannelizer); - UDPFilter = new fftfilt(0.0, (m_settings.m_rfBandwidth / 2.0) / m_settings.m_outputSampleRate, udpBlockSize); m_phaseDiscri.setFMScaling((float) m_settings. m_outputSampleRate / (2.0f * m_settings.m_fmDeviation)); @@ -94,6 +90,11 @@ UDPSrc::UDPSrc(DeviceSourceAPI *deviceAPI) : m_agc.setClamping(true); //DSPEngine::instance()->addAudioSink(&m_audioFifo); + + m_channelizer = new DownChannelizer(this); + m_threadedChannelizer = new ThreadedBasebandSampleSink(m_channelizer, this); + m_deviceAPI->addThreadedSink(m_threadedChannelizer); + applySettings(m_settings, true); } diff --git a/plugins/channelrx/udpsrc/udpsrcplugin.cpp b/plugins/channelrx/udpsrc/udpsrcplugin.cpp index 4dd5818d7..3c1134dbd 100644 --- a/plugins/channelrx/udpsrc/udpsrcplugin.cpp +++ b/plugins/channelrx/udpsrc/udpsrcplugin.cpp @@ -24,7 +24,7 @@ const PluginDescriptor UDPSrcPlugin::m_pluginDescriptor = { QString("UDP Channel Source"), - QString("3.8.0"), + QString("3.8.2"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channeltx/modatv/atvmod.cpp b/plugins/channeltx/modatv/atvmod.cpp index c39789cae..6c8e8e1df 100644 --- a/plugins/channeltx/modatv/atvmod.cpp +++ b/plugins/channeltx/modatv/atvmod.cpp @@ -74,10 +74,6 @@ ATVMod::ATVMod(DeviceSinkAPI *deviceAPI) : setObjectName("ATVMod"); scanCameras(); - m_channelizer = new UpChannelizer(this); - m_threadedChannelizer = new ThreadedBasebandSampleSource(m_channelizer, this); - m_deviceAPI->addThreadedSource(m_threadedChannelizer); - m_SSBFilter = new fftfilt(0, m_settings.m_rfBandwidth / m_settings.m_outputSampleRate, m_ssbFftLen); m_SSBFilterBuffer = new Complex[m_ssbFftLen>>1]; // filter returns data exactly half of its size memset(m_SSBFilterBuffer, 0, sizeof(Complex)*(m_ssbFftLen>>1)); @@ -89,9 +85,13 @@ ATVMod::ATVMod(DeviceSinkAPI *deviceAPI) : m_interpolatorDistanceRemain = 0.0f; m_interpolatorDistance = 1.0f; - applySettings(m_settings, true); // does applyStandard() too; - m_movingAverage.resize(16, 0); + + m_channelizer = new UpChannelizer(this); + m_threadedChannelizer = new ThreadedBasebandSampleSource(m_channelizer, this); + m_deviceAPI->addThreadedSource(m_threadedChannelizer); + + applySettings(m_settings, true); // does applyStandard() too; } ATVMod::~ATVMod() diff --git a/plugins/channeltx/modatv/atvmodgui.cpp b/plugins/channeltx/modatv/atvmodgui.cpp index 3e15e11a9..7365c9114 100644 --- a/plugins/channeltx/modatv/atvmodgui.cpp +++ b/plugins/channeltx/modatv/atvmodgui.cpp @@ -618,10 +618,13 @@ ATVModGUI::ATVModGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, QWidget* pa ui->deltaFrequency->setColorMapper(ColorMapper(ColorMapper::GrayGold)); ui->deltaFrequency->setValueRange(false, 7, -9999999, 9999999); - m_channelMarker.setColor(Qt::white); + m_channelMarker.setColor(m_settings.m_rgbColor); + m_channelMarker.setTitle("ATV Modulator"); m_channelMarker.setBandwidth(5000); m_channelMarker.setCenterFrequency(0); m_channelMarker.setVisible(true); + setTitleColor(m_channelMarker.getColor()); + m_settings.setChannelMarker(&m_channelMarker); connect(&m_channelMarker, SIGNAL(changed()), this, SLOT(channelMarkerChanged())); diff --git a/plugins/channeltx/modatv/atvmodplugin.cpp b/plugins/channeltx/modatv/atvmodplugin.cpp index 107948411..500a19d62 100644 --- a/plugins/channeltx/modatv/atvmodplugin.cpp +++ b/plugins/channeltx/modatv/atvmodplugin.cpp @@ -23,7 +23,7 @@ const PluginDescriptor ATVModPlugin::m_pluginDescriptor = { QString("ATV Modulator"), - QString("3.8.0"), + QString("3.8.2"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channeltx/modatv/atvmodsettings.cpp b/plugins/channeltx/modatv/atvmodsettings.cpp index 53278f67e..cc07b2c38 100644 --- a/plugins/channeltx/modatv/atvmodsettings.cpp +++ b/plugins/channeltx/modatv/atvmodsettings.cpp @@ -48,7 +48,7 @@ void ATVModSettings::resetToDefaults() m_fmExcursion = 0.5f; // half bandwidth m_forceDecimator = false; m_overlayText = "ATV"; - m_rgbColor = Qt::white; + m_rgbColor = QColor(255, 255, 255).rgb(); } QByteArray ATVModSettings::serialize() const diff --git a/plugins/channeltx/modssb/ssbmod.cpp b/plugins/channeltx/modssb/ssbmod.cpp index 53e443376..04ad4545c 100644 --- a/plugins/channeltx/modssb/ssbmod.cpp +++ b/plugins/channeltx/modssb/ssbmod.cpp @@ -63,10 +63,6 @@ SSBMod::SSBMod(DeviceSinkAPI *deviceAPI, BasebandSampleSink* sampleSink) : { setObjectName("SSBMod"); - m_channelizer = new UpChannelizer(this); - m_threadedChannelizer = new ThreadedBasebandSampleSource(m_channelizer, this); - m_deviceAPI->addThreadedSource(m_threadedChannelizer); - m_SSBFilter = new fftfilt(m_settings.m_lowCutoff / m_settings.m_audioSampleRate, m_settings.m_bandwidth / m_settings.m_audioSampleRate, m_ssbFftLen); m_DSBFilter = new fftfilt((2.0f * m_settings.m_bandwidth) / m_settings.m_audioSampleRate, 2 * m_ssbFftLen); m_SSBFilterBuffer = new Complex[m_ssbFftLen>>1]; // filter returns data exactly half of its size @@ -96,6 +92,11 @@ SSBMod::SSBMod(DeviceSinkAPI *deviceAPI, BasebandSampleSink* sampleSink) : m_inAGC.setGate(m_settings.m_agcThresholdGate); m_inAGC.setStepDownDelay(m_settings.m_agcThresholdDelay); m_inAGC.setClamping(true); + + m_channelizer = new UpChannelizer(this); + m_threadedChannelizer = new ThreadedBasebandSampleSource(m_channelizer, this); + m_deviceAPI->addThreadedSource(m_threadedChannelizer); + applySettings(m_settings, true); } diff --git a/plugins/channeltx/modssb/ssbmodplugin.cpp b/plugins/channeltx/modssb/ssbmodplugin.cpp index 1d1292c04..d3fb3ac14 100644 --- a/plugins/channeltx/modssb/ssbmodplugin.cpp +++ b/plugins/channeltx/modssb/ssbmodplugin.cpp @@ -23,7 +23,7 @@ const PluginDescriptor SSBModPlugin::m_pluginDescriptor = { QString("SSB Modulator"), - QString("3.8.1"), + QString("3.8.2"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channeltx/modwfm/wfmmod.cpp b/plugins/channeltx/modwfm/wfmmod.cpp index 62841c786..fe8725bd1 100644 --- a/plugins/channeltx/modwfm/wfmmod.cpp +++ b/plugins/channeltx/modwfm/wfmmod.cpp @@ -59,10 +59,6 @@ WFMMod::WFMMod(DeviceSinkAPI *deviceAPI) : { setObjectName("WFMod"); - m_channelizer = new UpChannelizer(this); - m_threadedChannelizer = new ThreadedBasebandSampleSource(m_channelizer, this); - m_deviceAPI->addThreadedSource(m_threadedChannelizer); - m_rfFilter = new fftfilt(-62500.0 / 384000.0, 62500.0 / 384000.0, m_rfFilterFFTLength); m_rfFilterBuffer = new Complex[m_rfFilterFFTLength]; memset(m_rfFilterBuffer, 0, sizeof(Complex)*(m_rfFilterFFTLength)); @@ -85,6 +81,10 @@ WFMMod::WFMMod(DeviceSinkAPI *deviceAPI) : m_cwKeyer.setMode(CWKeyer::CWNone); m_cwKeyer.reset(); + m_channelizer = new UpChannelizer(this); + m_threadedChannelizer = new ThreadedBasebandSampleSource(m_channelizer, this); + m_deviceAPI->addThreadedSource(m_threadedChannelizer); + applySettings(m_settings, true); } diff --git a/plugins/channeltx/modwfm/wfmmodplugin.cpp b/plugins/channeltx/modwfm/wfmmodplugin.cpp index 32f01351a..da3896429 100644 --- a/plugins/channeltx/modwfm/wfmmodplugin.cpp +++ b/plugins/channeltx/modwfm/wfmmodplugin.cpp @@ -23,7 +23,7 @@ const PluginDescriptor WFMModPlugin::m_pluginDescriptor = { QString("WFM Modulator"), - QString("3.8.0"), + QString("3.8.2"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channeltx/udpsink/udpsink.cpp b/plugins/channeltx/udpsink/udpsink.cpp index f35adccde..193776c08 100644 --- a/plugins/channeltx/udpsink/udpsink.cpp +++ b/plugins/channeltx/udpsink/udpsink.cpp @@ -55,13 +55,14 @@ UDPSink::UDPSink(DeviceSinkAPI *deviceAPI, BasebandSampleSink* spectrum) : { setObjectName("UDPSink"); + m_udpHandler.setFeedbackMessageQueue(&m_inputMessageQueue); + m_SSBFilter = new fftfilt(m_settings.m_lowCutoff / m_settings.m_inputSampleRate, m_settings.m_rfBandwidth / m_settings.m_inputSampleRate, m_ssbFftLen); + m_SSBFilterBuffer = new Complex[m_ssbFftLen>>1]; // filter returns data exactly half of its size + m_channelizer = new UpChannelizer(this); m_threadedChannelizer = new ThreadedBasebandSampleSource(m_channelizer, this); m_deviceAPI->addThreadedSource(m_threadedChannelizer); - m_udpHandler.setFeedbackMessageQueue(&m_inputMessageQueue); - m_SSBFilter = new fftfilt(m_settings.m_lowCutoff / m_settings.m_inputSampleRate, m_settings.m_rfBandwidth / m_settings.m_inputSampleRate, m_ssbFftLen); - m_SSBFilterBuffer = new Complex[m_ssbFftLen>>1]; // filter returns data exactly half of its size applySettings(m_settings, true); } diff --git a/plugins/channeltx/udpsink/udpsinkplugin.cpp b/plugins/channeltx/udpsink/udpsinkplugin.cpp index 818ea1bdf..eb9b9bbf9 100644 --- a/plugins/channeltx/udpsink/udpsinkplugin.cpp +++ b/plugins/channeltx/udpsink/udpsinkplugin.cpp @@ -24,7 +24,7 @@ const PluginDescriptor UDPSinkPlugin::m_pluginDescriptor = { QString("UDP Channel Sink"), - QString("3.8.0"), + QString("3.8.2"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/sdrgui/gui/aboutdialog.ui b/sdrgui/gui/aboutdialog.ui index 9a7bc9c49..cf5ceabf4 100644 --- a/sdrgui/gui/aboutdialog.ui +++ b/sdrgui/gui/aboutdialog.ui @@ -84,7 +84,7 @@ - <html><head/><body><p>Version 3.8.1 - Copyright (C) 2015-2017 Edouard Griffiths, F4EXB. </p><p>Code at <a href="https://github.com/f4exb/sdrangel"><span style=" text-decoration: underline; color:#0000ff;">https://github.com/f4exb/sdrangel</span></a></p><p>Many thanks to the original developers:</p><p>The osmocom developer team - especially horizon, Hoernchen &amp; tnt.</p><p>Christian Daniel from maintech GmbH.</p><p>John Greb (hexameron) for the contributions in <a href="https://github.com/hexameron/rtl-sdrangelove"><span style=" text-decoration: underline; color:#0000ff;">RTL-SDRangelove</span></a></p><p>The following rules apply to the SDRangel main application and libsdrbase:<br/>This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. You should have received a copy of the GNU General Public License along with this program. If not, see <a href="http://www.gnu.org/licenses/"><span style=" text-decoration: underline; color:#0000ff;">http://www.gnu.org/licenses/</span></a>.</p><p>For the license of installed plugins, look into the plugin list.</p></body></html> + <html><head/><body><p>Version 3.8.2 - Copyright (C) 2015-2017 Edouard Griffiths, F4EXB. </p><p>Code at <a href="https://github.com/f4exb/sdrangel"><span style=" text-decoration: underline; color:#0000ff;">https://github.com/f4exb/sdrangel</span></a></p><p>Many thanks to the original developers:</p><p>The osmocom developer team - especially horizon, Hoernchen &amp; tnt.</p><p>Christian Daniel from maintech GmbH.</p><p>John Greb (hexameron) for the contributions in <a href="https://github.com/hexameron/rtl-sdrangelove"><span style=" text-decoration: underline; color:#0000ff;">RTL-SDRangelove</span></a></p><p>The following rules apply to the SDRangel main application and libsdrbase:<br/>This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. You should have received a copy of the GNU General Public License along with this program. If not, see <a href="http://www.gnu.org/licenses/"><span style=" text-decoration: underline; color:#0000ff;">http://www.gnu.org/licenses/</span></a>.</p><p>For the license of installed plugins, look into the plugin list.</p></body></html> true diff --git a/sdrgui/mainwindow.cpp b/sdrgui/mainwindow.cpp index 1f6ebe828..13bcb7137 100644 --- a/sdrgui/mainwindow.cpp +++ b/sdrgui/mainwindow.cpp @@ -551,9 +551,9 @@ void MainWindow::createStatusBar() { QString qtVersionStr = QString("Qt %1 ").arg(QT_VERSION_STR); #if QT_VERSION >= 0x050400 - m_showSystemWidget = new QLabel("SDRangel v3.8.1 " + qtVersionStr + QSysInfo::prettyProductName(), this); + m_showSystemWidget = new QLabel("SDRangel v3.8.2 " + qtVersionStr + QSysInfo::prettyProductName(), this); #else - m_showSystemWidget = new QLabel("SDRangel v3.8.1 " + qtVersionStr, this); + m_showSystemWidget = new QLabel("SDRangel v3.8.2 " + qtVersionStr, this); #endif statusBar()->addPermanentWidget(m_showSystemWidget);