From c92909d78dd8fc632d3430e209ffae378d60570b Mon Sep 17 00:00:00 2001 From: f4exb Date: Sun, 10 May 2015 19:21:46 +0200 Subject: [PATCH] Removed useless spectrum visualizer in NFM receivers. Created a null sink class to fit corresponding parameter in NFMDemod class constructor --- CMakeLists.txt | 2 + Readme.md | 11 +++-- include-gpl/dsp/nullsink.h | 20 +++++++++ plugins/channel/nfm/nfmdemodgui.cpp | 23 ++++------- plugins/channel/nfm/nfmdemodgui.h | 4 +- plugins/channel/nfm/nfmdemodgui.ui | 64 +---------------------------- sdrbase/dsp/nullsink.cpp | 43 +++++++++++++++++++ 7 files changed, 82 insertions(+), 85 deletions(-) create mode 100644 include-gpl/dsp/nullsink.h create mode 100644 sdrbase/dsp/nullsink.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index a7486057e..dc35c3c63 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -63,6 +63,7 @@ set(sdrbase_SOURCES sdrbase/dsp/pidcontroller.cpp sdrbase/dsp/samplefifo.cpp sdrbase/dsp/samplesink.cpp + sdrbase/dsp/nullsink.cpp sdrbase/dsp/scopevis.cpp sdrbase/dsp/spectrumvis.cpp sdrbase/dsp/threadedsamplesink.cpp @@ -132,6 +133,7 @@ set(sdrbase_HEADERS sdrbase/dsp/pidcontroller.h include/dsp/samplefifo.h include/dsp/samplesink.h + include-gpl/dsp/nullsink.h include-gpl/dsp/scopevis.h include-gpl/dsp/spectrumvis.h include/dsp/threadedsamplesink.h diff --git a/Readme.md b/Readme.md index a7d258f04..4440f07df 100644 --- a/Readme.md +++ b/Readme.md @@ -46,11 +46,11 @@ There is no installation procedure the executable is at the root of the build di For Debian 8 ============ -Debian 7 "wheezy" uses Qt4. Qt5 is available from the "wheezy-backports" repo, but this will remove Qt4. +Debian 7 "wheezy" uses Qt4. Qt5 is available from the "wheezy-backports" repo, but this will remove Qt4. Debian 8 "jessie" uses Qt5. `sudo apt-get install cmake g++ pkg-config libfftw3-dev libusb-1.0-0-dev libusb-dev qt5-default qtbase5-dev qtchooser libqt5multimedia5-plugins qtmultimedia5-dev qttools5-dev qttools5-dev-tools libqt5opengl5-dev qtbase5-dev librtlsdr-dev` -`mkdir out && cd out && cmake ../ && make` +`mkdir build && cd build && cmake ../ && make` The same remarks as for Ubuntu apply... @@ -70,12 +70,15 @@ Done since the fork - Added a preset update button (the diskette with the yellow corner) to be able to save the current settings on an existing preset - Added variable decimation in log2 increments from 2^0=1 to 2^4=16 allowing to see the full 2048 kHz of spectrum if so you wish - Better handling of rtlsdr GUI display when settings change (initial load, load of presets) - + - Added display and precise control of the shift frequency from center frequency of the NFM receivers. + - Removed useless spectrum visualizer in NFM receivers. Created a null sink class to fit corresponding parameter in NFMDemod class constructor. + + ===== To Do ===== - - Display center frequency of the receiver in scope. Presently there is no way to set the frequency precisely + - AM demod. What about the air band?! - Add the possibility to change the brightness and/or color of the grid. Sometimes it is barely visible yet useful - Possibility to completely undock the receiver in a separate window. Useful when there are many receivers diff --git a/include-gpl/dsp/nullsink.h b/include-gpl/dsp/nullsink.h new file mode 100644 index 000000000..2f4ae0816 --- /dev/null +++ b/include-gpl/dsp/nullsink.h @@ -0,0 +1,20 @@ +#ifndef INCLUDE_NULLSINK_H +#define INCLUDE_NULLSINK_H + +#include "dsp/samplesink.h" +#include "util/export.h" + +class MessageQueue; + +class SDRANGELOVE_API NullSink : public SampleSink { +public: + + NullSink(); + + void feed(SampleVector::const_iterator begin, SampleVector::const_iterator end, bool positiveOnly); + void start(); + void stop(); + bool handleMessage(Message* message); +}; + +#endif // INCLUDE_NULLSINK_H diff --git a/plugins/channel/nfm/nfmdemodgui.cpp b/plugins/channel/nfm/nfmdemodgui.cpp index ecc25482b..fcdc472f0 100644 --- a/plugins/channel/nfm/nfmdemodgui.cpp +++ b/plugins/channel/nfm/nfmdemodgui.cpp @@ -5,7 +5,7 @@ #include "dsp/threadedsamplesink.h" #include "dsp/channelizer.h" #include "nfmdemod.h" -#include "dsp/spectrumvis.h" +#include "dsp/nullsink.h" #include "gui/glspectrum.h" #include "plugin/pluginapi.h" #include "util/simpleserializer.h" @@ -40,7 +40,6 @@ void NFMDemodGUI::resetToDefaults() ui->volume->setValue(20); ui->squelch->setValue(-40); ui->deltaFrequency->setValue(0); - ui->spectrumGUI->resetToDefaults(); applySettings(); } @@ -52,7 +51,7 @@ QByteArray NFMDemodGUI::serialize() const s.writeS32(3, ui->afBW->value()); s.writeS32(4, ui->volume->value()); s.writeS32(5, ui->squelch->value()); - s.writeBlob(6, ui->spectrumGUI->serialize()); + //s.writeBlob(6, ui->spectrumGUI->serialize()); s.writeU32(7, m_channelMarker->getColor().rgb()); return s.final(); } @@ -80,8 +79,8 @@ bool NFMDemodGUI::deserialize(const QByteArray& data) ui->volume->setValue(tmp); d.readS32(5, &tmp, -40); ui->squelch->setValue(tmp); - d.readBlob(6, &bytetmp); - ui->spectrumGUI->deserialize(bytetmp); + //d.readBlob(6, &bytetmp); + //ui->spectrumGUI->deserialize(bytetmp); if(d.readU32(7, &u32tmp)) m_channelMarker->setColor(u32tmp); applySettings(); @@ -177,19 +176,13 @@ NFMDemodGUI::NFMDemodGUI(PluginAPI* pluginAPI, QWidget* parent) : connect(this, SIGNAL(menuDoubleClickEvent()), this, SLOT(onMenuDoubleClicked())); m_audioFifo = new AudioFifo(4, 48000); - m_spectrumVis = new SpectrumVis(ui->glSpectrum); - m_nfmDemod = new NFMDemod(m_audioFifo, m_spectrumVis); + m_nullSink = new NullSink(); + m_nfmDemod = new NFMDemod(m_audioFifo, m_nullSink); m_channelizer = new Channelizer(m_nfmDemod); m_threadedSampleSink = new ThreadedSampleSink(m_channelizer); m_pluginAPI->addAudioSource(m_audioFifo); m_pluginAPI->addSampleSink(m_threadedSampleSink); - ui->glSpectrum->setCenterFrequency(0); - ui->glSpectrum->setSampleRate(48000); - ui->glSpectrum->setDisplayWaterfall(true); - ui->glSpectrum->setDisplayMaxHold(true); - m_spectrumVis->configure(m_threadedSampleSink->getMessageQueue(), 64, 10, FFTWindow::BlackmanHarris); - m_channelMarker = new ChannelMarker(this); m_channelMarker->setColor(Qt::red); m_channelMarker->setBandwidth(12500); @@ -198,8 +191,6 @@ NFMDemodGUI::NFMDemodGUI(PluginAPI* pluginAPI, QWidget* parent) : connect(m_channelMarker, SIGNAL(changed()), this, SLOT(viewChanged())); m_pluginAPI->addChannelMarker(m_channelMarker); - ui->spectrumGUI->setBuddies(m_threadedSampleSink->getMessageQueue(), m_spectrumVis, ui->glSpectrum); - applySettings(); } @@ -211,7 +202,7 @@ NFMDemodGUI::~NFMDemodGUI() delete m_threadedSampleSink; delete m_channelizer; delete m_nfmDemod; - delete m_spectrumVis; + delete m_nullSink; delete m_audioFifo; delete m_channelMarker; delete ui; diff --git a/plugins/channel/nfm/nfmdemodgui.h b/plugins/channel/nfm/nfmdemodgui.h index ff26c5151..66a263c72 100644 --- a/plugins/channel/nfm/nfmdemodgui.h +++ b/plugins/channel/nfm/nfmdemodgui.h @@ -11,7 +11,7 @@ class AudioFifo; class ThreadedSampleSink; class Channelizer; class NFMDemod; -class SpectrumVis; +class NullSink; namespace Ui { class NFMDemodGUI; @@ -53,7 +53,7 @@ private: ThreadedSampleSink* m_threadedSampleSink; Channelizer* m_channelizer; NFMDemod* m_nfmDemod; - SpectrumVis* m_spectrumVis; + NullSink *m_nullSink; static const int m_rfBW[]; diff --git a/plugins/channel/nfm/nfmdemodgui.ui b/plugins/channel/nfm/nfmdemodgui.ui index 381f38ecd..8380d0f3d 100644 --- a/plugins/channel/nfm/nfmdemodgui.ui +++ b/plugins/channel/nfm/nfmdemodgui.ui @@ -7,7 +7,7 @@ 0 0 302 - 410 + 138 @@ -244,70 +244,8 @@ - - - - 40 - 140 - 218 - 184 - - - - Channel Spectrum - - - - 2 - - - 3 - - - 3 - - - 3 - - - 3 - - - - - true - - - - 200 - 150 - - - - - - - - true - - - - - - - GLSpectrum - QWidget -
gui/glspectrum.h
- 1 -
- - GLSpectrumGUI - QWidget -
gui/glspectrumgui.h
- 1 -
RollupWidget QWidget diff --git a/sdrbase/dsp/nullsink.cpp b/sdrbase/dsp/nullsink.cpp new file mode 100644 index 000000000..d5c142742 --- /dev/null +++ b/sdrbase/dsp/nullsink.cpp @@ -0,0 +1,43 @@ +#include "dsp/nullsink.h" +#include "dsp/dspcommands.h" +#include "util/messagequeue.h" + +NullSink::NullSink() +{ +} + +void NullSink::feed(SampleVector::const_iterator begin, SampleVector::const_iterator end, bool positiveOnly) +{ +} + +void NullSink::start() +{ +} + +void NullSink::stop() +{ +} + +bool NullSink::handleMessage(Message* message) +{ + message->completed(); + return true; + /* + if(DSPSignalNotification::match(message)) { + DSPSignalNotification* signal = (DSPSignalNotification*)message; + m_sampleRate = signal->getSampleRate(); + message->completed(); + return true; + } else if(DSPConfigureScopeVis::match(message)) { + DSPConfigureScopeVis* conf = (DSPConfigureScopeVis*)message; + m_triggerState = Untriggered; + m_triggerChannel = (TriggerChannel)conf->getTriggerChannel(); + m_triggerLevelHigh = conf->getTriggerLevelHigh() * 32767; + m_triggerLevelLow = conf->getTriggerLevelLow() * 32767; + message->completed(); + return true; + } else { + return false; + } + */ +}